Beispiel #1
0
    def reported_by(self, user):
        if not self.reports:
            return False
        try:
            return ",%s," % user.pk in self.reports
        except AttributeError:
            return ",%s," % user in self.reports


def rename_user_handler(sender, **kwargs):
    Post.objects.filter(user=sender).update(user_name=sender.username, current_date=timezone.now())
    Post.objects.filter(edit_user=sender).update(edit_user_name=sender.username, edit_user_slug=sender.username_slug)


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_posts")


def delete_user_content_handler(sender, **kwargs):
    from misago.models import Thread

    threads = []
    for post in sender.post_set.distinct().values("thread_id").iterator():
        if not post["thread_id"] in threads:
            threads.append(post["thread_id"])

    sender.post_set.all().delete()

    for thread in Thread.objects.filter(id__in=threads).iterator():
        thread.sync()
        thread.save(force_update=True)
Beispiel #2
0
                    pass
        return notified


def rename_user_handler(sender, **kwargs):
    Thread.objects.filter(start_poster=sender).update(
        start_poster_name=sender.username,
        start_poster_slug=sender.username_slug,
    )
    Thread.objects.filter(last_poster=sender).update(
        last_poster_name=sender.username,
        last_poster_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_threads")


def report_update_handler(sender, **kwargs):
    if sender == Thread:
        thread = kwargs.get('instance')
        if thread.weight < 2 and thread.report_for_id:
            reported_post = thread.report_for
            if reported_post.reported:
                reported_post.reported = False
                reported_post.reports = None
                reported_post.save(force_update=True)
                reported_post.thread.replies_reported -= 1
                reported_post.thread.save(force_update=True)

Beispiel #3
0
    user = models.ForeignKey("User", null=True, blank=True, on_delete=models.SET_NULL)
    user_name = models.CharField(max_length=255, null=True, blank=True)
    user_slug = models.SlugField(max_length=255, null=True, blank=True)
    date = models.DateTimeField()
    ip = models.GenericIPAddressField()
    agent = models.CharField(max_length=255)

    class Meta:
        app_label = "misago"


def rename_user_handler(sender, **kwargs):
    PollVote.objects.filter(user=sender).update(user_name=sender.username, user_slug=sender.username_slug)


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_poll_votes")


def move_forum_content_handler(sender, **kwargs):
    PollVote.objects.filter(forum=sender).update(forum=kwargs["move_to"])


move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_polls_votes")


def move_thread_handler(sender, **kwargs):
    PollVote.objects.filter(thread=sender).update(forum=kwargs["move_to"])


move_thread.connect(move_thread_handler, dispatch_uid="move_thread_polls_votes")
Beispiel #4
0
        except IndexError:
            return None


def rename_user_handler(sender, **kwargs):
    Post.objects.filter(user=sender).update(
        user_name=sender.username,
        current_date=timezone.now(),
    )
    Post.objects.filter(edit_user=sender).update(
        edit_user_name=sender.username,
        edit_user_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_posts")


def delete_user_content_handler(sender, **kwargs):
    from misago.models import Thread

    threads = []
    for post in sender.post_set.distinct().values('thread_id').iterator():
        if not post['thread_id'] in threads:
            threads.append(post['thread_id'])

    sender.post_set.all().delete()

    for thread in Thread.objects.filter(id__in=threads):
        thread.sync()
        thread.save(force_update=True)
Beispiel #5
0
    ip = models.GenericIPAddressField()
    agent = models.CharField(max_length=255)
    score = models.IntegerField(default=0)

    class Meta:
        app_label = 'misago'


def rename_user_handler(sender, **kwargs):
    Karma.objects.filter(user=sender).update(
        user_name=sender.username,
        user_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_karmas")


def move_forum_content_handler(sender, **kwargs):
    Karma.objects.filter(forum=sender).update(forum=kwargs['move_to'])


move_forum_content.connect(move_forum_content_handler,
                           dispatch_uid="move_forum_karmas")


def move_thread_handler(sender, **kwargs):
    Karma.objects.filter(thread=sender).update(forum=kwargs['move_to'])


move_thread.connect(move_thread_handler, dispatch_uid="move_thread_karmas")
Beispiel #6
0
    given_on = models.DateTimeField()
    giver = models.ForeignKey('User', null=True, blank=True,
        on_delete=models.SET_NULL, related_name="warnings_given_set")
    giver_username = models.CharField(max_length=255)
    giver_slug = models.SlugField(max_length=255)
    giver_ip = models.GenericIPAddressField()
    giver_agent = models.CharField(max_length=255)
    canceled = models.BooleanField(default=False)
    canceled_on = models.DateTimeField(null=True, blank=True)
    canceler = models.ForeignKey('User', null=True, blank=True,
        on_delete=models.SET_NULL, related_name="warnings_canceled_set")
    canceler_username = models.CharField(max_length=255, null=True, blank=True)
    canceler_slug = models.SlugField(max_length=255, null=True, blank=True)
    canceler_ip = models.GenericIPAddressField(null=True, blank=True)
    canceler_agent = models.CharField(max_length=255, null=True, blank=True)

    class Meta:
        app_label = 'misago'


def rename_user_handler(sender, **kwargs):
    Warn.objects.filter(giver=sender).update(
                                             giver_username=sender.username,
                                             giver_slug=sender.username_slug,
                                             )
    Warn.objects.filter(canceler=sender).update(
                                             canceler_username=sender.username,
                                             canceler_slug=sender.username_slug,
                                             )
rename_user.connect(rename_user_handler, dispatch_uid="rename_user_warnings")
Beispiel #7
0
        old_forum_slug=sender.slug,
    )


rename_forum.connect(rename_forum_handler,
                     dispatch_uid="rename_forum_checkpoints")


def rename_user_handler(sender, **kwargs):
    Checkpoint.objects.filter(user=sender).update(
        user_name=sender.username,
        user_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler,
                    dispatch_uid="rename_user_checkpoints")


def move_forum_content_handler(sender, **kwargs):
    Checkpoint.objects.filter(forum=sender).update(forum=kwargs['move_to'])


move_forum_content.connect(move_forum_content_handler,
                           dispatch_uid="move_forum_checkpoints")


def move_thread_handler(sender, **kwargs):
    Checkpoint.objects.filter(thread=sender).update(forum=kwargs['move_to'])


move_thread.connect(move_thread_handler,
Beispiel #8
0
    post_content = models.TextField()
    size = models.IntegerField(default=0)
    change = models.IntegerField(default=0)

    class Meta:
        app_label = 'misago'


def rename_user_handler(sender, **kwargs):
    Change.objects.filter(user=sender).update(
        user_name=sender.username,
        user_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_changes")


def move_forum_content_handler(sender, **kwargs):
    Change.objects.filter(forum=sender).update(forum=kwargs['move_to'])


move_forum_content.connect(move_forum_content_handler,
                           dispatch_uid="move_forum_changes")


def move_thread_handler(sender, **kwargs):
    Change.objects.filter(thread=sender).update(forum=kwargs['move_to'])


move_thread.connect(move_thread_handler, dispatch_uid="move_thread_changes")
Beispiel #9
0
    date = models.DateTimeField()
    ip = models.GenericIPAddressField()
    agent = models.CharField(max_length=255)
    score = models.IntegerField(default=0)

    class Meta:
        app_label = 'misago'


def rename_user_handler(sender, **kwargs):
    Karma.objects.filter(user=sender).update(
                                             user_name=sender.username,
                                             user_slug=sender.username_slug,
                                             )

rename_user.connect(rename_user_handler, dispatch_uid="rename_user_karmas")


def move_forum_content_handler(sender, **kwargs):
    Karma.objects.filter(forum=sender).update(forum=kwargs['move_to'])

move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_karmas")


def move_thread_handler(sender, **kwargs):
    Karma.objects.filter(thread=sender).update(forum=kwargs['move_to'])

move_thread.connect(move_thread_handler, dispatch_uid="move_thread_karmas")


def merge_thread_handler(sender, **kwargs):
Beispiel #10
0
    giver_ip = models.GenericIPAddressField()
    giver_agent = models.CharField(max_length=255)
    canceled = models.BooleanField(default=False)
    canceled_on = models.DateTimeField(null=True, blank=True)
    canceler = models.ForeignKey('User',
                                 null=True,
                                 blank=True,
                                 on_delete=models.SET_NULL,
                                 related_name="warnings_canceled_set")
    canceler_username = models.CharField(max_length=255, null=True, blank=True)
    canceler_slug = models.SlugField(max_length=255, null=True, blank=True)
    canceler_ip = models.GenericIPAddressField(null=True, blank=True)
    canceler_agent = models.CharField(max_length=255, null=True, blank=True)

    class Meta:
        app_label = 'misago'


def rename_user_handler(sender, **kwargs):
    Warn.objects.filter(giver=sender).update(
        giver_username=sender.username,
        giver_slug=sender.username_slug,
    )
    Warn.objects.filter(canceler=sender).update(
        canceler_username=sender.username,
        canceler_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_warnings")
Beispiel #11
0
    date = models.DateTimeField()
    ip = models.GenericIPAddressField()
    agent = models.CharField(max_length=255)

    class Meta:
        app_label = 'misago'


def rename_user_handler(sender, **kwargs):
    PollVote.objects.filter(user=sender).update(
        user_name=sender.username,
        user_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler, dispatch_uid="rename_user_poll_votes")


def move_forum_content_handler(sender, **kwargs):
    PollVote.objects.filter(forum=sender).update(forum=kwargs['move_to'])


move_forum_content.connect(move_forum_content_handler,
                           dispatch_uid="move_forum_polls_votes")


def move_thread_handler(sender, **kwargs):
    PollVote.objects.filter(thread=sender).update(forum=kwargs['move_to'])


move_thread.connect(move_thread_handler,
Beispiel #12
0
                self.last_poster = last_thread.last_poster
            self.last_thread = last_thread
            self.last_thread_date = last_thread.last
            self.last_thread_name = last_thread.name
            self.last_thread_slug = last_thread.slug
        except (IndexError, AttributeError):
            pass

    def sync(self):
        threads_qs = self.thread_set.filter(moderated=False).filter(deleted=False)
        self.posts = self.threads = threads_qs.count()
        replies = threads_qs.aggregate(Sum('replies'))
        if replies['replies__sum']:
            self.posts += replies['replies__sum']
        self.sync_last()

    def prune(self):
        pass


"""
Signals
"""
def rename_user_handler(sender, **kwargs):
    Forum.objects.filter(last_poster=sender).update(
                                                    last_poster_name=sender.username,
                                                    last_poster_slug=sender.username_slug,
                                                    )

rename_user.connect(rename_user_handler, dispatch_uid='rename_forums_last_poster')
Beispiel #13
0
def rename_forum_handler(sender, **kwargs):
    Checkpoint.objects.filter(old_forum=sender).update(
                                                       old_forum_name=sender.name,
                                                       old_forum_slug=sender.slug,
                                                       )

rename_forum.connect(rename_forum_handler, dispatch_uid="rename_forum_checkpoints")


def rename_user_handler(sender, **kwargs):
    Checkpoint.objects.filter(user=sender).update(
                                                  user_name=sender.username,
                                                  user_slug=sender.username_slug,
                                                  )

rename_user.connect(rename_user_handler, dispatch_uid="rename_user_checkpoints")


def move_forum_content_handler(sender, **kwargs):
    Checkpoint.objects.filter(forum=sender).update(forum=kwargs['move_to'])

move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_checkpoints")


def move_thread_handler(sender, **kwargs):
    Checkpoint.objects.filter(thread=sender).update(forum=kwargs['move_to'])

move_thread.connect(move_thread_handler, dispatch_uid="move_thread_checkpoints")


def merge_thread_handler(sender, **kwargs):
Beispiel #14
0
            pass

    def generate_hash_id(self, seed):
        hash_seed = '%s:%s' % (uuid.uuid4(), seed)
        unique_hash = hashlib.sha256(hash_seed).hexdigest()
        self.hash_id = unique_hash[:8]


def rename_user_handler(sender, **kwargs):
    sender.attachment_set.update(
        user_name=sender.username,
        user_name_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler,
                    dispatch_uid="rename_user_attachments")


def delete_user_content_handler(sender, **kwargs):
    for attachment in sender.attachment_set.iterator():
        if attachment.post_id:
            attachment.delete_from_post()
        attachment.delete()


delete_user_content.connect(delete_user_content_handler,
                            dispatch_uid="delete_user_attachments")


def move_forum_content_handler(sender, **kwargs):
    sender.attachment_set.update(forum=kwargs['move_to'])
Beispiel #15
0
            pass

    def generate_hash_id(self, seed):
        unique_hash = seed
        for i in xrange(100):
            unique_hash = hashlib.sha256('%s:%s' % (settings.SECRET_KEY, unique_hash)).hexdigest()
        self.hash_id = unique_hash[:8]


def rename_user_handler(sender, **kwargs):
    sender.attachment_set.update(
                                 user_name=sender.username,
                                 user_name_slug=sender.username_slug,
                                )

rename_user.connect(rename_user_handler, dispatch_uid="rename_user_attachments")


def delete_user_content_handler(sender, **kwargs):
    for attachment in sender.attachment_set.iterator():
        if attachment.post_id:
            attachment.delete_from_post()
        attachment.delete()

delete_user_content.connect(delete_user_content_handler, dispatch_uid="delete_user_attachments")


def move_forum_content_handler(sender, **kwargs):
    sender.attachment_set.update(forum=kwargs['move_to'])

move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_attachments")
Beispiel #16
0
                except (ACLError403, ACLError404):
                    pass
        return notified


def rename_user_handler(sender, **kwargs):
    Thread.objects.filter(start_poster=sender).update(
                                                     start_poster_name=sender.username,
                                                     start_poster_slug=sender.username_slug,
                                                     )
    Thread.objects.filter(last_poster=sender).update(
                                                     last_poster_name=sender.username,
                                                     last_poster_slug=sender.username_slug,
                                                     )

rename_user.connect(rename_user_handler, dispatch_uid="rename_user_threads")


def report_update_handler(sender, **kwargs):
    if sender == Thread:
        thread = kwargs.get('instance')
        if thread.weight < 2 and thread.report_for_id:
            reported_post = thread.report_for
            if reported_post.reported:
                reported_post.reported = False
                reported_post.reports = None
                reported_post.save(force_update=True)
                reported_post.thread.replies_reported -= 1
                reported_post.thread.save(force_update=True)

pre_save.connect(report_update_handler, dispatch_uid="sync_post_reports_on_update")
Beispiel #17
0
            self.last_thread = last_thread
            self.last_thread_date = last_thread.last
            self.last_thread_name = last_thread.name
            self.last_thread_slug = last_thread.slug
        except (IndexError, AttributeError):
            pass

    def sync(self):
        self.threads = self.thread_set.filter(moderated=False).filter(
            deleted=False).count()
        self.posts = self.post_set.filter(moderated=False).count()
        self.sync_last()

    def prune(self):
        pass


"""
Signals
"""


def rename_user_handler(sender, **kwargs):
    Forum.objects.filter(last_poster=sender).update(
        last_poster_name=sender.username,
        last_poster_slug=sender.username_slug,
    )


rename_user.connect(rename_user_handler,
                    dispatch_uid='rename_forums_last_poster')
Beispiel #18
0
    thread_name_new = models.CharField(max_length=255, null=True, blank=True)
    thread_name_old = models.CharField(max_length=255, null=True, blank=True)
    post_content = models.TextField()
    size = models.IntegerField(default=0)
    change = models.IntegerField(default=0)

    class Meta:
        app_label = 'misago'


def rename_user_handler(sender, **kwargs):
    Change.objects.filter(user=sender).update(
                                              user_name=sender.username,
                                              user_slug=sender.username_slug,
                                              )
rename_user.connect(rename_user_handler, dispatch_uid="rename_user_changes")


def move_forum_content_handler(sender, **kwargs):
    Change.objects.filter(forum=sender).update(forum=kwargs['move_to'])

move_forum_content.connect(move_forum_content_handler, dispatch_uid="move_forum_changes")


def move_thread_handler(sender, **kwargs):
    Change.objects.filter(thread=sender).update(forum=kwargs['move_to'])

move_thread.connect(move_thread_handler, dispatch_uid="move_thread_changes")


def merge_thread_handler(sender, **kwargs):