def post_save(self, form): if form.is_valid() and self.mode != START: if self.is_pinned != form.cleaned_data.get('is_pinned'): if self.thread.is_pinned: moderation.unpin_thread(self.user, self.thread) else: moderation.pin_thread(self.user, self.thread)
def patch_weight(request, thread, value): allow_pin_thread(request.user, thread) if not thread.acl.get('can_pin_globally') and thread.weight == 2: raise PermissionDenied(_("You can't change globally pinned threads weights in this category.")) if value == 2: if thread.acl.get('can_pin_globally'): moderation.pin_thread_globally(request, thread) else: raise PermissionDenied(_("You can't pin threads globally in this category.")) elif value == 1: moderation.pin_thread_locally(request, thread) elif value == 0: moderation.unpin_thread(request, thread) return {'weight': thread.weight}
def test_unpin_globally_pinned_thread(self): """unpin_thread unpins globally pinned thread""" moderation.pin_thread_globally(self.request, self.thread) self.assertEqual(self.thread.weight, 2) self.assertTrue(moderation.unpin_thread(self.request, self.thread)) self.reload_thread() self.assertEqual(self.thread.weight, 0) event = self.thread.last_post self.assertTrue(event.is_event) self.assertEqual(event.event_type, 'unpinned')
def action_unpin(self, request, threads): changed_threads = 0 for thread in threads: if moderation.unpin_thread(request.user, thread): changed_threads += 1 if changed_threads: message = ungettext('%(changed)d thread was unpinned.', '%(changed)d threads were unpinned.', changed_threads) messages.success(request, message % {'changed': changed_threads}) else: message = _("No threads were unpinned.") messages.info(request, message)
def action_unpin(self, request, threads): changed_threads = 0 for thread in threads: if moderation.unpin_thread(request.user, thread): changed_threads += 1 if changed_threads: message = ungettext( '%(changed)d thread was unpinned.', '%(changed)d threads were unpinned.', changed_threads) messages.success(request, message % {'changed': changed_threads}) else: message = _("No threads were unpinned.") messages.info(request, message)
def test_unpin_locally_pinned_thread(self): """unpin_thread unpins locally pinned thread""" moderation.pin_thread_locally(self.user, self.thread) self.assertEqual(self.thread.weight, 1) self.assertTrue(moderation.unpin_thread(self.user, self.thread)) self.reload_thread() self.assertEqual(self.thread.weight, 0) self.assertTrue(self.thread.has_events) event = self.thread.event_set.last() self.assertIn("unpinned thread.", event.message) self.assertEqual(event.icon, "circle")
def test_unpin_thread(self): """unpin_thread defaults thread weight""" moderation.pin_thread(self.user, self.thread) self.assertTrue(self.thread.is_pinned) self.assertTrue(moderation.unpin_thread(self.user, self.thread)) self.reload_thread() self.assertFalse(self.thread.is_pinned) self.assertTrue(self.thread.has_events) event = self.thread.event_set.last() self.assertIn("unpinned thread.", event.message) self.assertEqual(event.icon, "circle")
def action_unpin(self, request, thread): moderation.unpin_thread(request.user, thread) messages.success(request, _("Thread was unpinned."))
def test_unpin_weightless_thread(self): """unpin_thread returns false for already weightless thread""" self.assertFalse(moderation.unpin_thread(self.request, self.thread)) self.assertEqual(self.thread.weight, 0)
def test_unpin_weightless_thread(self): """unpin_thread returns false for already weightless thread""" self.assertFalse(moderation.unpin_thread(self.user, self.thread)) self.assertEqual(self.thread.weight, 0)
def test_unpin_invalid_thread(self): """unpin_thread returns false for already pinned thread""" self.assertFalse(moderation.unpin_thread(self.user, self.thread)) self.assertFalse(self.thread.is_pinned)