Commit 5e7b5b9790da01192dee4187fcea7f70a1de66ca
1 parent
534d7f70
Exists in
master
and in
3 other branches
Updating mural notifications
Showing
2 changed files
with
187 additions
and
231 deletions
Show diff stats
amadeus/static/js/socket.js
@@ -10,102 +10,38 @@ socket.onmessage = function(e) { | @@ -10,102 +10,38 @@ socket.onmessage = function(e) { | ||
10 | content = JSON.parse(e.data); | 10 | content = JSON.parse(e.data); |
11 | 11 | ||
12 | if (content.type == "mural") { | 12 | if (content.type == "mural") { |
13 | - if (content.subtype == "create") { | ||
14 | - muralNotificationCreate(content); | ||
15 | - } else if (content.subtype == "update") { | ||
16 | - muralNotificationUpdate(content); | ||
17 | - } else if (content.subtype == "delete") { | ||
18 | - muralNotificationDelete(content); | 13 | + if (content.subtype == "post") { |
14 | + muralNotificationPost(content); | ||
15 | + } else if (content.subtype == "mural_update") { | ||
16 | + muralNotificationMuralUpdate(content); | ||
17 | + } else if (content.subtype == "mural_delete") { | ||
18 | + muralNotificationMuralDelete(content); | ||
19 | } else if (content.subtype == "create_comment") { | 19 | } else if (content.subtype == "create_comment") { |
20 | muralNotificationComment(content); | 20 | muralNotificationComment(content); |
21 | - } else if (content.subtype == "update_comment") { | ||
22 | - muralNotificationCommentUpdate(content); | ||
23 | - } else if (content.subtype == "delete_comment") { | ||
24 | - muralNotificationCommentDelete(content); | ||
25 | - } else if (content.subtype == "create_cat") { | ||
26 | - muralNotificationCategory(content); | ||
27 | - } else if (content.subtype == "update_cat") { | ||
28 | - muralNotificationCategoryUpdate(content); | ||
29 | - } else if (content.subtype == "delete_cat") { | ||
30 | - muralNotificationCategoryDelete(content); | ||
31 | - } else if (content.subtype == "create_sub") { | ||
32 | - muralNotificationSubject(content); | ||
33 | - } else if (content.subtype == "update_sub") { | ||
34 | - muralNotificationSubjectUpdate(content); | ||
35 | - } else if (content.subtype == "delete_sub") { | ||
36 | - muralNotificationSubjectDelete(content); | ||
37 | } | 21 | } |
38 | } | 22 | } |
39 | } | 23 | } |
40 | // Call onopen directly if socket is already open | 24 | // Call onopen directly if socket is already open |
41 | if (socket.readyState == WebSocket.OPEN) socket.onopen(); | 25 | if (socket.readyState == WebSocket.OPEN) socket.onopen(); |
42 | 26 | ||
43 | -function muralNotificationCreate(content) { | ||
44 | - if (window.location.pathname == content.pathname) { | ||
45 | - $('.posts').prepend(content.complete); | ||
46 | - | ||
47 | - $('.no-subjects').attr('style', 'display:none'); | ||
48 | - } else { | ||
49 | - $('.mural_badge').each(function () { | ||
50 | - var actual = $(this).text(); | ||
51 | - | ||
52 | - if (actual != "+99") { | ||
53 | - actual = parseInt(actual, 10) + 1; | ||
54 | - | ||
55 | - if (actual > 99) { | ||
56 | - actual = "+99"; | ||
57 | - } | ||
58 | - | ||
59 | - $(this).text(actual); | ||
60 | - } | ||
61 | - | ||
62 | - $(this).show(); | ||
63 | - }); | ||
64 | - } | ||
65 | - | ||
66 | - if (("Notification" in window)) { | ||
67 | - var options = { | ||
68 | - icon: content.user_icon, | ||
69 | - body: content.simple | ||
70 | - } | ||
71 | - | ||
72 | - if (Notification.permission === "granted") { | ||
73 | - var notification = new Notification("", options); | 27 | +function muralNotificationPost(content) { |
28 | + var page = window.location.pathname, | ||
29 | + render = (content.paths.indexOf(page) != -1); | ||
74 | 30 | ||
75 | - setTimeout(notification.close.bind(notification), 3000); | ||
76 | - } | ||
77 | - } | ||
78 | -} | ||
79 | - | ||
80 | -function muralNotificationUpdate(content) { | ||
81 | - if (window.location.pathname == content.pathname) { | ||
82 | - var post = $("#post-" + content.post_id); | ||
83 | - | ||
84 | - if (post.is(":visible")) { | ||
85 | - post.before(content.complete); | 31 | + if (render) { |
32 | + if (content.accordion) { | ||
33 | + var section = $(content.container); | ||
86 | 34 | ||
87 | - post.remove(); | ||
88 | - } | ||
89 | - } | ||
90 | -} | ||
91 | - | ||
92 | -function muralNotificationDelete(content) { | ||
93 | - if (window.location.pathname == content.pathname) { | ||
94 | - var post = $("#post-" + content.post_id); | ||
95 | - | ||
96 | - if (post.is(":visible")) { | ||
97 | - post.remove(); | ||
98 | - } | ||
99 | - } | ||
100 | -} | 35 | + if (section.is(':visible')) { |
36 | + section.find('.posts').prepend(content.complete); | ||
101 | 37 | ||
102 | -function muralNotificationComment(content) { | ||
103 | - if (window.location.pathname == content.pathname) { | ||
104 | - if ($("#post-" + content.post_id).is(":visible")) { | ||
105 | - var section = $("#post-" + content.post_id).find('.comment-section'); | 38 | + section.find('.no-subjects').hide(); |
39 | + } | ||
40 | + } else { | ||
41 | + $(content.container).prepend(content.complete); | ||
106 | 42 | ||
107 | - section.append(content.complete); | ||
108 | - } | 43 | + $('.no-subjects').attr('style', 'display:none'); |
44 | + } | ||
109 | } else { | 45 | } else { |
110 | $('.mural_badge').each(function () { | 46 | $('.mural_badge').each(function () { |
111 | var actual = $(this).text(); | 47 | var actual = $(this).text(); |
@@ -127,7 +63,7 @@ function muralNotificationComment(content) { | @@ -127,7 +63,7 @@ function muralNotificationComment(content) { | ||
127 | if (("Notification" in window)) { | 63 | if (("Notification" in window)) { |
128 | var options = { | 64 | var options = { |
129 | icon: content.user_icon, | 65 | icon: content.user_icon, |
130 | - body: content.simple | 66 | + body: content.simple_notify |
131 | } | 67 | } |
132 | 68 | ||
133 | if (Notification.permission === "granted") { | 69 | if (Notification.permission === "granted") { |
@@ -138,98 +74,41 @@ function muralNotificationComment(content) { | @@ -138,98 +74,41 @@ function muralNotificationComment(content) { | ||
138 | } | 74 | } |
139 | } | 75 | } |
140 | 76 | ||
141 | -function muralNotificationCommentUpdate(content) { | ||
142 | - if (window.location.pathname == content.pathname) { | ||
143 | - var comment = $("#comment-" + content.comment_id); | ||
144 | - | ||
145 | - if (comment.is(":visible")) { | ||
146 | - comment.before(content.complete); | 77 | +function muralNotificationMuralUpdate(content) { |
78 | + var page = window.location.pathname, | ||
79 | + render = (content.paths.indexOf(page) != -1); | ||
147 | 80 | ||
148 | - comment.remove(); | ||
149 | - } | ||
150 | - } | ||
151 | -} | 81 | + if (render) { |
82 | + var mural_item = $(content.container); | ||
152 | 83 | ||
153 | -function muralNotificationCommentDelete(content) { | ||
154 | - if (window.location.pathname == content.pathname) { | ||
155 | - var comment = $("#comment-" + content.comment_id); | 84 | + if (mural_item.is(":visible") || mural_item.is(":hidden")) { |
85 | + mural_item.before(content.complete); | ||
156 | 86 | ||
157 | - if (comment.is(":visible")) { | ||
158 | - comment.remove(); | 87 | + mural_item.remove(); |
159 | } | 88 | } |
160 | } | 89 | } |
161 | } | 90 | } |
162 | 91 | ||
163 | -function muralNotificationCategory(content) { | ||
164 | - var cat_section = $("#" + content.cat); | ||
165 | - | ||
166 | - if (window.location.pathname == content.pathname && cat_section.is(':visible')) { | ||
167 | - | ||
168 | - cat_section.find('.posts').prepend(content.complete); | ||
169 | - | ||
170 | - cat_section.find('.no-subjects').hide(); | ||
171 | - } else { | ||
172 | - $('.mural_badge').each(function () { | ||
173 | - var actual = $(this).text(); | ||
174 | - | ||
175 | - if (actual != "+99") { | ||
176 | - actual = parseInt(actual, 10) + 1; | ||
177 | - | ||
178 | - if (actual > 99) { | ||
179 | - actual = "+99"; | ||
180 | - } | ||
181 | - | ||
182 | - $(this).text(actual); | ||
183 | - } | ||
184 | - | ||
185 | - $(this).show(); | ||
186 | - }); | ||
187 | - } | ||
188 | - | ||
189 | - if (("Notification" in window)) { | ||
190 | - var options = { | ||
191 | - icon: content.user_icon, | ||
192 | - body: content.simple | ||
193 | - } | ||
194 | - | ||
195 | - if (Notification.permission === "granted") { | ||
196 | - var notification = new Notification("", options); | ||
197 | - | ||
198 | - setTimeout(notification.close.bind(notification), 3000); | ||
199 | - } | ||
200 | - } | ||
201 | -} | ||
202 | - | ||
203 | -function muralNotificationCategoryUpdate(content) { | ||
204 | - if (window.location.pathname == content.pathname) { | ||
205 | - var post = $("#post-" + content.post_id); | 92 | +function muralNotificationMuralDelete(content) { |
93 | + var page = window.location.pathname, | ||
94 | + render = (content.paths.indexOf(page) != -1); | ||
206 | 95 | ||
207 | - if (post.is(":visible") || post.is(":hidden")) { | ||
208 | - post.before(content.complete); | 96 | + if (render) { |
97 | + var mural_item = $(content.container); | ||
209 | 98 | ||
210 | - post.remove(); | 99 | + if (mural_item.is(":visible") || mural_item.is(":hidden")) { |
100 | + mural_item.remove(); | ||
211 | } | 101 | } |
212 | } | 102 | } |
213 | } | 103 | } |
214 | 104 | ||
215 | -function muralNotificationCategoryDelete(content) { | 105 | +function muralNotificationComment(content) { |
216 | if (window.location.pathname == content.pathname) { | 106 | if (window.location.pathname == content.pathname) { |
217 | - var post = $("#post-" + content.post_id); | 107 | + if ($("#post-" + content.post_id).is(":visible")) { |
108 | + var section = $("#post-" + content.post_id).find('.comment-section'); | ||
218 | 109 | ||
219 | - if (post.is(":visible") || post.is(":hidden")) { | ||
220 | - post.remove(); | 110 | + section.append(content.complete); |
221 | } | 111 | } |
222 | - } | ||
223 | -} | ||
224 | - | ||
225 | -function muralNotificationSubject(content) { | ||
226 | - var sub_section = $("#" + content.sub); | ||
227 | - | ||
228 | - if (window.location.pathname == content.pathname && sub_section.is(':visible')) { | ||
229 | - | ||
230 | - sub_section.find('.posts').prepend(content.complete); | ||
231 | - | ||
232 | - sub_section.find('.no-subjects').hide(); | ||
233 | } else { | 112 | } else { |
234 | $('.mural_badge').each(function () { | 113 | $('.mural_badge').each(function () { |
235 | var actual = $(this).text(); | 114 | var actual = $(this).text(); |
@@ -260,26 +139,4 @@ function muralNotificationSubject(content) { | @@ -260,26 +139,4 @@ function muralNotificationSubject(content) { | ||
260 | setTimeout(notification.close.bind(notification), 3000); | 139 | setTimeout(notification.close.bind(notification), 3000); |
261 | } | 140 | } |
262 | } | 141 | } |
263 | -} | ||
264 | - | ||
265 | -function muralNotificationSubjectUpdate(content) { | ||
266 | - if (window.location.pathname == content.pathname) { | ||
267 | - var post = $("#post-" + content.post_id); | ||
268 | - | ||
269 | - if (post.is(":visible") || post.is(":hidden")) { | ||
270 | - post.before(content.complete); | ||
271 | - | ||
272 | - post.remove(); | ||
273 | - } | ||
274 | - } | ||
275 | -} | ||
276 | - | ||
277 | -function muralNotificationSubjectDelete(content) { | ||
278 | - if (window.location.pathname == content.pathname) { | ||
279 | - var post = $("#post-" + content.post_id); | ||
280 | - | ||
281 | - if (post.is(":visible") || post.is(":hidden")) { | ||
282 | - post.remove(); | ||
283 | - } | ||
284 | - } | ||
285 | } | 142 | } |
286 | \ No newline at end of file | 143 | \ No newline at end of file |
mural/views.py
@@ -119,15 +119,24 @@ class GeneralCreate(LoginRequiredMixin, generic.edit.CreateView): | @@ -119,15 +119,24 @@ class GeneralCreate(LoginRequiredMixin, generic.edit.CreateView): | ||
119 | users = User.objects.all().exclude(id = self.request.user.id) | 119 | users = User.objects.all().exclude(id = self.request.user.id) |
120 | entries = [] | 120 | entries = [] |
121 | 121 | ||
122 | - notify_type = "mural" | ||
123 | - user_icon = self.object.user.image_url | ||
124 | - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request) | ||
125 | - simple_notify = _("%s has made a post in General")%(str(self.object.user)) | ||
126 | - pathname = reverse("mural:manage_general") | 122 | + paths = [reverse("mural:manage_general")] |
123 | + | ||
124 | + notification = { | ||
125 | + "type": "mural", | ||
126 | + "subtype": "post", | ||
127 | + "paths": paths, | ||
128 | + "user_icon": self.object.user.image_url, | ||
129 | + "simple_notify": _("%s has made a post in General")%(str(self.object.user)), | ||
130 | + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request), | ||
131 | + "container": ".post", | ||
132 | + "accordion": False | ||
133 | + } | ||
134 | + | ||
135 | + notification = json.dumps(notification) | ||
127 | 136 | ||
128 | for user in users: | 137 | for user in users: |
129 | entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) | 138 | entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) |
130 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "create", "user_icon": user_icon, "pathname": pathname, "simple": simple_notify, "complete": _view})}) | 139 | + Group("user-%s" % user.id).send({'text': notification}) |
131 | 140 | ||
132 | MuralVisualizations.objects.bulk_create(entries) | 141 | MuralVisualizations.objects.bulk_create(entries) |
133 | 142 | ||
@@ -166,12 +175,20 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView): | @@ -166,12 +175,20 @@ class GeneralUpdate(LoginRequiredMixin, generic.UpdateView): | ||
166 | 175 | ||
167 | users = User.objects.all().exclude(id = self.request.user.id) | 176 | users = User.objects.all().exclude(id = self.request.user.id) |
168 | 177 | ||
169 | - notify_type = "mural" | ||
170 | - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request) | ||
171 | - pathname = reverse("mural:manage_general") | 178 | + paths = [reverse("mural:manage_general")] |
179 | + | ||
180 | + notification = { | ||
181 | + "type": "mural", | ||
182 | + "subtype": "mural_update", | ||
183 | + "paths": paths, | ||
184 | + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request), | ||
185 | + "container": "#post-" + str(self.object.id), | ||
186 | + } | ||
187 | + | ||
188 | + notification = json.dumps(notification) | ||
172 | 189 | ||
173 | for user in users: | 190 | for user in users: |
174 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update", "pathname": pathname, "complete": _view, "post_id": self.object.id})}) | 191 | + Group("user-%s" % user.id).send({'text': notification}) |
175 | 192 | ||
176 | return super(GeneralUpdate, self).form_valid(form) | 193 | return super(GeneralUpdate, self).form_valid(form) |
177 | 194 | ||
@@ -202,12 +219,20 @@ class GeneralDelete(LoginRequiredMixin, generic.DeleteView): | @@ -202,12 +219,20 @@ class GeneralDelete(LoginRequiredMixin, generic.DeleteView): | ||
202 | 219 | ||
203 | def get_success_url(self): | 220 | def get_success_url(self): |
204 | users = User.objects.all().exclude(id = self.request.user.id) | 221 | users = User.objects.all().exclude(id = self.request.user.id) |
205 | - | ||
206 | - notify_type = "mural" | ||
207 | - pathname = reverse("mural:manage_general") | 222 | + |
223 | + paths = [reverse("mural:manage_general")] | ||
224 | + | ||
225 | + notification = { | ||
226 | + "type": "mural", | ||
227 | + "subtype": "mural_delete", | ||
228 | + "paths": paths, | ||
229 | + "container": "#post-" + str(self.object.id), | ||
230 | + } | ||
231 | + | ||
232 | + notification = json.dumps(notification) | ||
208 | 233 | ||
209 | for user in users: | 234 | for user in users: |
210 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete", "pathname": pathname, "post_id": self.object.id})}) | 235 | + Group("user-%s" % user.id).send({'text': notification}) |
211 | 236 | ||
212 | return reverse_lazy('mural:deleted_post') | 237 | return reverse_lazy('mural:deleted_post') |
213 | 238 | ||
@@ -324,16 +349,25 @@ class CategoryCreate(LoginRequiredMixin, generic.edit.CreateView): | @@ -324,16 +349,25 @@ class CategoryCreate(LoginRequiredMixin, generic.edit.CreateView): | ||
324 | 349 | ||
325 | users = getSpaceUsers(self.request.user.id, self.object) | 350 | users = getSpaceUsers(self.request.user.id, self.object) |
326 | entries = [] | 351 | entries = [] |
352 | + | ||
353 | + paths = [reverse("mural:manage_category")] | ||
327 | 354 | ||
328 | - notify_type = "mural" | ||
329 | - user_icon = self.object.user.image_url | ||
330 | - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request) | ||
331 | - simple_notify = _("%s has made a post in %s")%(str(self.object.user), str(self.object.space)) | ||
332 | - pathname = reverse("mural:manage_category") | 355 | + notification = { |
356 | + "type": "mural", | ||
357 | + "subtype": "post", | ||
358 | + "paths": paths, | ||
359 | + "user_icon": self.object.user.image_url, | ||
360 | + "simple_notify": _("%s has made a post in %s")%(str(self.object.user), str(self.object.space)), | ||
361 | + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request), | ||
362 | + "container": "#" + slug, | ||
363 | + "accordion": True | ||
364 | + } | ||
365 | + | ||
366 | + notification = json.dumps(notification) | ||
333 | 367 | ||
334 | for user in users: | 368 | for user in users: |
335 | entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) | 369 | entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) |
336 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "create_cat", "user_icon": user_icon, "pathname": pathname, "simple": simple_notify, "complete": _view, "cat": slug})}) | 370 | + Group("user-%s" % user.id).send({'text': notification}) |
337 | 371 | ||
338 | MuralVisualizations.objects.bulk_create(entries) | 372 | MuralVisualizations.objects.bulk_create(entries) |
339 | 373 | ||
@@ -372,12 +406,20 @@ class CategoryUpdate(LoginRequiredMixin, generic.UpdateView): | @@ -372,12 +406,20 @@ class CategoryUpdate(LoginRequiredMixin, generic.UpdateView): | ||
372 | 406 | ||
373 | users = getSpaceUsers(self.request.user.id, self.object) | 407 | users = getSpaceUsers(self.request.user.id, self.object) |
374 | 408 | ||
375 | - notify_type = "mural" | ||
376 | - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request) | ||
377 | - pathname = reverse("mural:manage_category") | 409 | + paths = [reverse("mural:manage_category")] |
410 | + | ||
411 | + notification = { | ||
412 | + "type": "mural", | ||
413 | + "subtype": "mural_update", | ||
414 | + "paths": paths, | ||
415 | + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request), | ||
416 | + "container": "#post-" + str(self.object.id), | ||
417 | + } | ||
418 | + | ||
419 | + notification = json.dumps(notification) | ||
378 | 420 | ||
379 | for user in users: | 421 | for user in users: |
380 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update_cat", "pathname": pathname, "complete": _view, "post_id": self.object.id})}) | 422 | + Group("user-%s" % user.id).send({'text': notification}) |
381 | 423 | ||
382 | return super(CategoryUpdate, self).form_valid(form) | 424 | return super(CategoryUpdate, self).form_valid(form) |
383 | 425 | ||
@@ -409,11 +451,19 @@ class CategoryDelete(LoginRequiredMixin, generic.DeleteView): | @@ -409,11 +451,19 @@ class CategoryDelete(LoginRequiredMixin, generic.DeleteView): | ||
409 | def get_success_url(self): | 451 | def get_success_url(self): |
410 | users = getSpaceUsers(self.request.user.id, self.object) | 452 | users = getSpaceUsers(self.request.user.id, self.object) |
411 | 453 | ||
412 | - notify_type = "mural" | ||
413 | - pathname = reverse("mural:manage_category") | 454 | + paths = [reverse("mural:manage_category")] |
455 | + | ||
456 | + notification = { | ||
457 | + "type": "mural", | ||
458 | + "subtype": "mural_delete", | ||
459 | + "paths": paths, | ||
460 | + "container": "#post-" + str(self.object.id), | ||
461 | + } | ||
462 | + | ||
463 | + notification = json.dumps(notification) | ||
414 | 464 | ||
415 | for user in users: | 465 | for user in users: |
416 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete_cat", "pathname": pathname, "post_id": self.object.id})}) | 466 | + Group("user-%s" % user.id).send({'text': notification}) |
417 | 467 | ||
418 | return reverse_lazy('mural:deleted_post') | 468 | return reverse_lazy('mural:deleted_post') |
419 | 469 | ||
@@ -542,15 +592,24 @@ class SubjectCreate(LoginRequiredMixin, generic.edit.CreateView): | @@ -542,15 +592,24 @@ class SubjectCreate(LoginRequiredMixin, generic.edit.CreateView): | ||
542 | users = getSpaceUsers(self.request.user.id, self.object) | 592 | users = getSpaceUsers(self.request.user.id, self.object) |
543 | entries = [] | 593 | entries = [] |
544 | 594 | ||
545 | - notify_type = "mural" | ||
546 | - user_icon = self.object.user.image_url | ||
547 | - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request) | ||
548 | - simple_notify = _("%s has made a post in %s")%(str(self.object.user), str(self.object.space)) | ||
549 | - pathname = reverse("mural:manage_subject") | 595 | + paths = [reverse("mural:manage_subject")] |
596 | + | ||
597 | + notification = { | ||
598 | + "type": "mural", | ||
599 | + "subtype": "post", | ||
600 | + "paths": paths, | ||
601 | + "user_icon": self.object.user.image_url, | ||
602 | + "simple_notify": _("%s has made a post in %s")%(str(self.object.user), str(self.object.space)), | ||
603 | + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request), | ||
604 | + "container": "#" + slug, | ||
605 | + "accordion": True | ||
606 | + } | ||
607 | + | ||
608 | + notification = json.dumps(notification) | ||
550 | 609 | ||
551 | for user in users: | 610 | for user in users: |
552 | entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) | 611 | entries.append(MuralVisualizations(viewed = False, user = user, post = self.object)) |
553 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "create_sub", "user_icon": user_icon, "pathname": pathname, "simple": simple_notify, "complete": _view, "sub": slug})}) | 612 | + Group("user-%s" % user.id).send({'text': notification}) |
554 | 613 | ||
555 | MuralVisualizations.objects.bulk_create(entries) | 614 | MuralVisualizations.objects.bulk_create(entries) |
556 | 615 | ||
@@ -596,12 +655,20 @@ class SubjectUpdate(LoginRequiredMixin, generic.UpdateView): | @@ -596,12 +655,20 @@ class SubjectUpdate(LoginRequiredMixin, generic.UpdateView): | ||
596 | 655 | ||
597 | users = getSpaceUsers(self.request.user.id, self.object) | 656 | users = getSpaceUsers(self.request.user.id, self.object) |
598 | 657 | ||
599 | - notify_type = "mural" | ||
600 | - _view = render_to_string("mural/_view.html", {"post": self.object}, self.request) | ||
601 | - pathname = reverse("mural:manage_subject") | 658 | + paths = [reverse("mural:manage_subject")] |
659 | + | ||
660 | + notification = { | ||
661 | + "type": "mural", | ||
662 | + "subtype": "mural_update", | ||
663 | + "paths": paths, | ||
664 | + "complete": render_to_string("mural/_view.html", {"post": self.object}, self.request), | ||
665 | + "container": "#post-" + str(self.object.id), | ||
666 | + } | ||
667 | + | ||
668 | + notification = json.dumps(notification) | ||
602 | 669 | ||
603 | for user in users: | 670 | for user in users: |
604 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update_sub", "pathname": pathname, "complete": _view, "post_id": self.object.id})}) | 671 | + Group("user-%s" % user.id).send({'text': notification}) |
605 | 672 | ||
606 | return super(SubjectUpdate, self).form_valid(form) | 673 | return super(SubjectUpdate, self).form_valid(form) |
607 | 674 | ||
@@ -633,11 +700,19 @@ class SubjectDelete(LoginRequiredMixin, generic.DeleteView): | @@ -633,11 +700,19 @@ class SubjectDelete(LoginRequiredMixin, generic.DeleteView): | ||
633 | def get_success_url(self): | 700 | def get_success_url(self): |
634 | users = getSpaceUsers(self.request.user.id, self.object) | 701 | users = getSpaceUsers(self.request.user.id, self.object) |
635 | 702 | ||
636 | - notify_type = "mural" | ||
637 | - pathname = reverse("mural:manage_subject") | 703 | + paths = [reverse("mural:manage_subject")] |
704 | + | ||
705 | + notification = { | ||
706 | + "type": "mural", | ||
707 | + "subtype": "mural_delete", | ||
708 | + "paths": paths, | ||
709 | + "container": "#post-" + str(self.object.id), | ||
710 | + } | ||
711 | + | ||
712 | + notification = json.dumps(notification) | ||
638 | 713 | ||
639 | for user in users: | 714 | for user in users: |
640 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete_sub", "pathname": pathname, "post_id": self.object.id})}) | 715 | + Group("user-%s" % user.id).send({'text': notification}) |
641 | 716 | ||
642 | return reverse_lazy('mural:deleted_post') | 717 | return reverse_lazy('mural:deleted_post') |
643 | 718 | ||
@@ -762,12 +837,24 @@ class CommentUpdate(LoginRequiredMixin, generic.UpdateView): | @@ -762,12 +837,24 @@ class CommentUpdate(LoginRequiredMixin, generic.UpdateView): | ||
762 | 837 | ||
763 | users = getSpaceUsers(self.request.user.id, self.object.post) | 838 | users = getSpaceUsers(self.request.user.id, self.object.post) |
764 | 839 | ||
765 | - notify_type = "mural" | ||
766 | - _view = render_to_string("mural/_view_comment.html", {"comment": self.object}, self.request) | ||
767 | - pathname = reverse("mural:manage_general") | 840 | + paths = [ |
841 | + reverse("mural:manage_general"), | ||
842 | + reverse("mural:manage_category"), | ||
843 | + reverse("mural:manage_subject") | ||
844 | + ] | ||
845 | + | ||
846 | + notification = { | ||
847 | + "type": "mural", | ||
848 | + "subtype": "mural_update", | ||
849 | + "paths": paths, | ||
850 | + "complete": render_to_string("mural/_view_comment.html", {"comment": self.object}, self.request), | ||
851 | + "container": "#comment-" + str(self.object.id), | ||
852 | + } | ||
853 | + | ||
854 | + notification = json.dumps(notification) | ||
768 | 855 | ||
769 | for user in users: | 856 | for user in users: |
770 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "update_comment", "pathname": pathname, "complete": _view, "comment_id": self.object.id})}) | 857 | + Group("user-%s" % user.id).send({'text': notification}) |
771 | 858 | ||
772 | return super(CommentUpdate, self).form_valid(form) | 859 | return super(CommentUpdate, self).form_valid(form) |
773 | 860 | ||
@@ -798,12 +885,24 @@ class CommentDelete(LoginRequiredMixin, generic.DeleteView): | @@ -798,12 +885,24 @@ class CommentDelete(LoginRequiredMixin, generic.DeleteView): | ||
798 | 885 | ||
799 | def get_success_url(self): | 886 | def get_success_url(self): |
800 | users = getSpaceUsers(self.request.user.id, self.object.post) | 887 | users = getSpaceUsers(self.request.user.id, self.object.post) |
801 | - | ||
802 | - notify_type = "mural" | ||
803 | - pathname = reverse("mural:manage_general") | 888 | + |
889 | + paths = [ | ||
890 | + reverse("mural:manage_general"), | ||
891 | + reverse("mural:manage_category"), | ||
892 | + reverse("mural:manage_subject") | ||
893 | + ] | ||
894 | + | ||
895 | + notification = { | ||
896 | + "type": "mural", | ||
897 | + "subtype": "mural_delete", | ||
898 | + "paths": paths, | ||
899 | + "container": "#comment-" + str(self.object.id), | ||
900 | + } | ||
901 | + | ||
902 | + notification = json.dumps(notification) | ||
804 | 903 | ||
805 | for user in users: | 904 | for user in users: |
806 | - Group("user-%s" % user.id).send({'text': json.dumps({"type": notify_type, "subtype": "delete_comment", "pathname": pathname, "comment_id": self.object.id})}) | 905 | + Group("user-%s" % user.id).send({'text': notification}) |
807 | 906 | ||
808 | return reverse_lazy('mural:deleted_comment') | 907 | return reverse_lazy('mural:deleted_comment') |
809 | 908 |