src/cm/client.py
changeset 504 b2e0186daa5b
parent 435 96c16cc6408b
child 605 830993bdf983
equal deleted inserted replaced
502:8ec189cc214d 504:b2e0186daa5b
    73                    'logged_author' : (comment.user != None), 
    73                    'logged_author' : (comment.user != None), 
    74                    'title':comment.title,
    74                    'title':comment.title,
    75                    'content':comment.content, 
    75                    'content':comment.content, 
    76                    'content_html':comment.content_html, 
    76                    'content_html':comment.content_html, 
    77                    'tags': ', '.join(parse_tag_input(comment.tags)), 
    77                    'tags': ', '.join(parse_tag_input(comment.tags)), 
       
    78                    'category': comment.category,
    78                    'format': comment.format, 
    79                    'format': comment.format, 
    79                    'start_wrapper' : comment.start_wrapper, 
    80                    'start_wrapper' : comment.start_wrapper, 
    80                    'end_wrapper' : comment.end_wrapper,
    81                    'end_wrapper' : comment.end_wrapper,
    81                    'start_offset' : comment.start_offset, 
    82                    'start_offset' : comment.start_offset, 
    82                    'end_offset' : comment.end_offset,
    83                    'end_offset' : comment.end_offset,
   111     title = request.POST['title'].strip()
   112     title = request.POST['title'].strip()
   112     content = request.POST['content'].strip() 
   113     content = request.POST['content'].strip() 
   113     
   114     
   114     tags = request.POST['tags']
   115     tags = request.POST['tags']
   115 
   116 
       
   117     category = request.POST.get('category', 0);
       
   118 
   116     reply_to_id = request.POST.get('reply_to_id', None)
   119     reply_to_id = request.POST.get('reply_to_id', None)
   117     
   120     
   118     format = request.POST['format'] 
   121     format = request.POST['format'] 
   119 
   122 
   120     start_wrapper = request.POST.get('start_wrapper', None)
   123     start_wrapper = request.POST.get('start_wrapper', None)
   129     if start_offset :
   132     if start_offset :
   130         start_offset = int(start_offset.strip())
   133         start_offset = int(start_offset.strip())
   131     if end_offset :
   134     if end_offset :
   132         end_offset = int(end_offset.strip())
   135         end_offset = int(end_offset.strip())
   133     
   136     
   134     return name, email, title, content, tags, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset
   137     return name, email, title, content, tags, category, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset
   135 
   138 
   136 def validate_comment_args(name, email, title, content, tags):
   139 def validate_comment_args(name, email, title, content, tags):
   137     errors = {}
   140     errors = {}
   138     if name != None : 
   141     if name != None : 
   139         if name == "" :
   142         if name == "" :
   174     
   177     
   175     errors = {}
   178     errors = {}
   176     if not change_state : # moderation action
   179     if not change_state : # moderation action
   177         change_scope = request.POST.get('change_scope', None)
   180         change_scope = request.POST.get('change_scope', None)
   178     
   181     
   179         name, email, title, content, tags, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request)
   182         name, email, title, content, tags, category, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request)
   180     
   183     
   181         errors = validate_comment_args(name, email, title, content, tags)
   184         errors = validate_comment_args(name, email, title, content, tags)
   182          
   185          
   183         if (change_scope) and start_wrapper=="" :
   186         if (change_scope) and start_wrapper=="" :
   184             errors['selection_place'] = selection_place_error_msg   
   187             errors['selection_place'] = selection_place_error_msg   
   200             comment.email = email
   203             comment.email = email
   201             comment.title = title
   204             comment.title = title
   202             comment.content = content
   205             comment.content = content
   203             comment.content_html = content_html
   206             comment.content_html = content_html
   204             comment.tags = tags
   207             comment.tags = tags
       
   208             comment.category = category
   205 
   209 
   206             if change_scope :
   210             if change_scope :
   207                 comment.start_wrapper = start_wrapper
   211                 comment.start_wrapper = start_wrapper
   208                 comment.start_offset = start_offset
   212                 comment.start_offset = start_offset
   209                 comment.end_wrapper = end_wrapper
   213                 comment.end_wrapper = end_wrapper
   235 def add_comment(request, key, version_key):
   239 def add_comment(request, key, version_key):
   236 #    if edit_comment_id : #
   240 #    if edit_comment_id : #
   237 #    if self.request.user.is_anonymous() : # accessing via an admin url ?
   241 #    if self.request.user.is_anonymous() : # accessing via an admin url ?
   238 #    and comment.user == self.request.user
   242 #    and comment.user == self.request.user
   239     user = None if request.user.is_anonymous() else request.user 
   243     user = None if request.user.is_anonymous() else request.user 
   240     name, email, title, content, tags, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request)
   244     name, email, title, content, tags, category, reply_to_id, format, start_wrapper, end_wrapper, start_offset, end_offset = read_comment_args(request)
   241     errors = {} 
   245     errors = {} 
   242     errors = validate_comment_args(name, email, title, content, tags)
   246     errors = validate_comment_args(name, email, title, content, tags)
   243 
   247 
   244     if start_wrapper == "" :
   248     if start_wrapper == "" :
   245         errors['selection_place'] = selection_place_error_msg   
   249         errors['selection_place'] = selection_place_error_msg   
   259             
   263             
   260         text = Text.objects.get(key=key)
   264         text = Text.objects.get(key=key)
   261         text_version = TextVersion.objects.get(key=version_key)
   265         text_version = TextVersion.objects.get(key=version_key)
   262         
   266         
   263         comment_state = 'approved' if text_version.mod_posteriori else 'pending'
   267         comment_state = 'approved' if text_version.mod_posteriori else 'pending'
   264         comment = Comment.objects.create(state=comment_state, text_version=text_version, user=user, name=name, email=email, title=title, content=content, content_html=content_html, tags = tags, start_wrapper = start_wrapper, end_wrapper = end_wrapper, start_offset = start_offset, end_offset = end_offset, reply_to=reply_to)
   268         comment = Comment.objects.create(state=comment_state, text_version=text_version, user=user, name=name, email=email, title=title, content=content, content_html=content_html, tags = tags, category = category, start_wrapper = start_wrapper, end_wrapper = end_wrapper, start_offset = start_offset, end_offset = end_offset, reply_to=reply_to)
   265         
   269         
   266         ask_for_notification = True
   270         ask_for_notification = True
   267         if user : 
   271         if user : 
   268             workspace_notify_count = Notification.objects.filter(text=None,type='workspace',user=user, active=True).count()
   272             workspace_notify_count = Notification.objects.filter(text=None,type='workspace',user=user, active=True).count()
   269             text_notify_count = Notification.objects.filter(text=text,type='text',user=user, active=True).count()
   273             text_notify_count = Notification.objects.filter(text=text,type='text',user=user, active=True).count()
   345     
   349     
   346     # tags
   350     # tags
   347     comment_ids = [c.id for c in allowed_comments]
   351     comment_ids = [c.id for c in allowed_comments]
   348     tags = list(Tag.objects.filter(items__content_type = ContentType.objects.get_for_model(Comment),items__object_id__in=comment_ids).values("name").annotate(nb_comments=Count('id')).distinct().order_by('name'))
   352     tags = list(Tag.objects.filter(items__content_type = ContentType.objects.get_for_model(Comment),items__object_id__in=comment_ids).values("name").annotate(nb_comments=Count('id')).distinct().order_by('name'))
   349 
   353 
       
   354     # categories
       
   355     categories = []
       
   356     for category in [0, 1, 2, 3, 4, 5] :
       
   357         categories.append({'cat' : category, 'nb_comments':allowed_comments.filter(category = category).count()})
       
   358     
   350     # states
   359     # states
   351     states = []
   360     states = []
   352     for state in comment_states :
   361     for state in comment_states :
   353         states.append({'state' : state, 'nb_comments':allowed_comments.filter(state = state).count()})
   362         states.append({'state' : state, 'nb_comments':allowed_comments.filter(state = state).count()})
   354     
   363     
   355     return {'names':names, 'dates':dates, 'tags':tags, 'states':states}
   364     return {'names':names, 'dates':dates, 'tags':tags, 'categories':categories, 'states':states}
   356 
   365 
   357 #def get_ordered_ids(text_version_id):
   366 #def get_ordered_ids(text_version_id):
   358 #    comments_and_replies = Comment.objects.filter(text_version__id=text_version_id)
   367 #    comments_and_replies = Comment.objects.filter(text_version__id=text_version_id)
   359 #    comments = comments_and_replies.filter(reply_to__isnull=True)
   368 #    comments = comments_and_replies.filter(reply_to__isnull=True)
   360 #    
   369 #