1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
from six import python_2_unicode_compatible
from django.conf import settings
from django.db import models
from django.utils import timezone
from .abstracts import (
COMMENT_MAX_LENGTH, BaseCommentAbstractModel, CommentAbstractModel,
)
class Comment(CommentAbstractModel):
class Meta(CommentAbstractModel.Meta):
db_table = "django_comments"
@python_2_unicode_compatible
class CommentFlag(models.Model):
"""
Records a flag on a comment. This is intentionally flexible; right now, a
flag could be:
* A "removal suggestion" -- where a user suggests a comment for (potential) removal.
* A "moderator deletion" -- used when a moderator deletes a comment.
You can (ab)use this model to add other flags, if needed. However, by
design users are only allowed to flag a comment with a given flag once;
if you want rating look elsewhere.
"""
user = models.ForeignKey(
settings.AUTH_USER_MODEL, verbose_name=('user'), related_name="comment_flags",
on_delete=models.CASCADE,
)
comment = models.ForeignKey(
# Translators: 'comment' is a noun here.
Comment, verbose_name=('comment'), related_name="flags", on_delete=models.CASCADE,
)
# Translators: 'flag' is a noun here.
flag = models.CharField(('flag'), max_length=30, db_index=True)
flag_date = models.DateTimeField(('date'), default=None)
# Constants for flag types
SUGGEST_REMOVAL = "removal suggestion"
MODERATOR_DELETION = "moderator deletion"
MODERATOR_APPROVAL = "moderator approval"
class Meta:
db_table = 'django_comment_flags'
unique_together = [('user', 'comment', 'flag')]
verbose_name = ('comment flag')
verbose_name_plural = ('comment flags')
def __str__(self):
return "%s flag of comment ID %s by %s" % (
self.flag, self.comment_id, self.user.get_username()
)
def save(self, *args, **kwargs):
if self.flag_date is None:
self.flag_date = timezone.now()
super(CommentFlag, self).save(*args, **kwargs)
|