src/cm/models.py
changeset 478 b9772b94b624
parent 460 2fdb7d095d5c
child 504 b2e0186daa5b
equal deleted inserted replaced
477:504f199062df 478:b9772b94b624
   150 CHOICES_INPUT_FORMATS = getattr(settings, 'CHOICES_INPUT_FORMATS', CHOICES_INPUT_FORMATS_PANDOC)
   150 CHOICES_INPUT_FORMATS = getattr(settings, 'CHOICES_INPUT_FORMATS', CHOICES_INPUT_FORMATS_PANDOC)
   151 
   151 
   152 class TextVersionManager(KeyManager):
   152 class TextVersionManager(KeyManager):
   153 
   153 
   154     def duplicate(self, text_version, duplicate_comments=True):
   154     def duplicate(self, text_version, duplicate_comments=True):
   155         #import pdb;pdb.set_trace()
       
   156         old_comment_set = set(text_version.comment_set.all())
   155         old_comment_set = set(text_version.comment_set.all())
   157         text_version.id = None
   156         text_version.id = None
   158         
   157         
   159         # generate new key
   158         # generate new key
   160         text_version.key = self._gen_key()
   159         text_version.key = self._gen_key()
   197 
   196 
   198     objects = TextVersionManager()
   197     objects = TextVersionManager()
   199     
   198     
   200     def get_content(self, format='html'):
   199     def get_content(self, format='html'):
   201         return pandoc_convert(self.content, self.format, format)
   200         return pandoc_convert(self.content, self.format, format)
   202 #    def _get_comments(self, user = None, filter_reply = 0):        
   201 
   203 #        """
       
   204 #        get comments viewable by this user (user = None or user = AnonymousUser => everyone)
       
   205 #        filter_reply = 0: comments and replies
       
   206 #                       1: comments
       
   207 #                       2: replies
       
   208 #        """        
       
   209 #        from cm.security import has_perm_on_text # should stay here to avoid circular dependencies
       
   210 #        
       
   211 #        if has_perm(user, 'can_view_unapproved_comment', self.text):
       
   212 #            comments = self.comment_set.all()
       
   213 #        elif has_perm(user, 'can_view_approved_comment', self.text):
       
   214 #            comments = self.comment_set.filter(visible=True)
       
   215 #        elif has_perm(user, 'can_view_comment_own', self.text):
       
   216 #            comments = self.comment_set.filter(user=user)
       
   217 #        else:
       
   218 #            return Comment.objects.none() # empty queryset
       
   219 #        if filter_reply:
       
   220 #            comments = comments.filter)
       
   221 #        return comments
       
   222 #
       
   223 #    def get_comments_as_json(self, user = None):
       
   224 #        return simplejson.dumps(self._get_comments(user, filter_reply=0))
       
   225 #
       
   226 #    def get_comments_and_replies(self, user = None):
       
   227 #        return (self.get_comments(user),
       
   228 #                self.get_replies(user))
       
   229 #
       
   230     def get_comments(self):
   202     def get_comments(self):
   231         "Warning: data access without security"
   203         "Warning: data access without security"
   232         return self.comment_set.filter(reply_to=None, deleted=False)
   204         return self.comment_set.filter(reply_to=None, deleted=False)
   233 
   205 
   234     def get_replies(self):
   206     def get_replies(self):
   243         if not keep_comments :
   215         if not keep_comments :
   244             self.comment_set.all().delete()
   216             self.comment_set.all().delete()
   245         elif self.content != new_content or new_format != self.format:
   217         elif self.content != new_content or new_format != self.format:
   246             comments = self.get_comments() ;
   218             comments = self.get_comments() ;
   247             tomodify_comments, toremove_comments = compute_new_comment_positions(self.content, self.format, new_content, new_format, comments)
   219             tomodify_comments, toremove_comments = compute_new_comment_positions(self.content, self.format, new_content, new_format, comments)
   248             #print "tomodify_comments"
       
   249             #print tomodify_comments
       
   250             #print "toremove_comments",len(toremove_comments)
       
   251             [comment.save(keep_dates=True) for comment in tomodify_comments]
   220             [comment.save(keep_dates=True) for comment in tomodify_comments]
   252             if cancel_modified_scopes :
   221             if cancel_modified_scopes :
   253                 [comment.remove_scope() for comment in toremove_comments]
   222                 [comment.remove_scope() for comment in toremove_comments]
   254             else :
   223             else :
   255                 [comment.delete() for comment in toremove_comments]
   224                 [comment.delete() for comment in toremove_comments]
   381 from cm.role_models import change_role_model
   350 from cm.role_models import change_role_model
   382 
   351 
   383 class ConfigurationManager(models.Manager):
   352 class ConfigurationManager(models.Manager):
   384     def set_workspace_name(self, workspace_name):
   353     def set_workspace_name(self, workspace_name):
   385         if workspace_name:
   354         if workspace_name:
   386             #self.set_key('workspace_name', _(u"%(workspace_name)s's workspace") %{'workspace_name':workspace_name})
       
   387             self.set_key('workspace_name', workspace_name)
   355             self.set_key('workspace_name', workspace_name)
   388 
   356 
   389     def get_key(self, key, default_value=None):
   357     def get_key(self, key, default_value=None):
   390         try:
   358         try:
   391             return self.get(key=key).value
   359             return self.get(key=key).value
   545     """
   513     """
   546     'Static' application roles 
   514     'Static' application roles 
   547     """
   515     """
   548     name = models.CharField(ugettext_lazy('name'), max_length=50, unique=True)
   516     name = models.CharField(ugettext_lazy('name'), max_length=50, unique=True)
   549     description = models.TextField(ugettext_lazy('description'))
   517     description = models.TextField(ugettext_lazy('description'))
   550     #order = models.IntegerField(unique=True)
       
   551     permissions = models.ManyToManyField(Permission, related_name="roles")
   518     permissions = models.ManyToManyField(Permission, related_name="roles")
   552 
   519 
   553     global_scope = models.BooleanField('global scope', default=False) # applies to global scope only
   520     global_scope = models.BooleanField('global scope', default=False) # applies to global scope only
   554     anon = models.BooleanField('anonymous', default=False) # role possible for anonymous users?
   521     anon = models.BooleanField('anonymous', default=False) # role possible for anonymous users?
   555     
   522     
   700     
   667     
   701         send_mail(subject, message, ApplicationConfiguration['email_from'], [self.user.email])
   668         send_mail(subject, message, ApplicationConfiguration['email_from'], [self.user.email])
   702         
   669         
   703 from django.db.models import signals
   670 from django.db.models import signals
   704 
   671 
   705 #def create_profile(sender, **kwargs):
       
   706 #    created = kwargs['created']
       
   707 #    if created:
       
   708 #        user = kwargs['instance']
       
   709 #        UserProfile.objects.create(user = user)
       
   710 
       
   711 def delete_profile(sender, **kwargs):
   672 def delete_profile(sender, **kwargs):
   712     user_profile = kwargs['instance']
   673     user_profile = kwargs['instance']
   713     user = user_profile.user
   674     user = user_profile.user
   714     user.delete()
   675     user.delete()
   715     
   676     
   716 #signals.post_save.connect(create_profile, sender=User)
       
   717 signals.post_delete.connect(delete_profile, sender=UserProfile)
   677 signals.post_delete.connect(delete_profile, sender=UserProfile)
   718 
   678 
   719 class ActivityManager(models.Manager):
   679 class ActivityManager(models.Manager):
   720     pass
   680     pass
   721 
   681