| changeset 504 | b2e0186daa5b |
| parent 435 | 96c16cc6408b |
| child 605 | 830993bdf983 |
| 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 # |