class Comment(models.Model):
related_article = models.ForeignKey(Article, verbose_name=u"Связанная запись")
user_name = models.CharField(max_length=50, verbose_name=u"Имя")
user_email = models.EmailField(blank=True, verbose_name=u"Email")
user_url = models.URLField(blank=True, verbose_name=u"Сайт")
content = MarkupField(max_length=1000, verbose_name=u"Комментарий")
date_create = models.DateTimeField(auto_now_add=True, verbose_name=u"Время создания")
is_approved = models.BooleanField(default=False, verbose_name=u"Комментарий одобрен")
# user_avatar - see below
class Meta:
verbose_name = u"комментарий"
verbose_name_plural = u"комментарии"
def __unicode__(self):
text = [
self.user_name,
': ',
strip_tags(self.content.rendered)[:30],
'...',
]
return ''.join(text)
# user_avatar
def _get_gravatar(self, size=50):
gravatar = ''.join([
"http://www.gravatar.com/avatar/",
hashlib.md5(self.user_email).hexdigest(),
"?",
urllib.urlencode({'d':"mm", 's':str(size)})
])
return gravatar
user_avatar = property(_get_gravatar)
def get_absolute_url(self):
article_url = Article.objects.only('slug') \
.get(pk=self.related_article_id) \
.get_absolute_url()
return ''.join([article_url, '#comment-', str(self.pk)])
def clean(self):
article = Article.objects.only('is_comment_allowed') \
.get(pk=self.related_article_id)
if not article.is_comment_allowed:
raise PermissionDenied()
class CommentAdmin(admin.ModelAdmin):
list_display = ('user_name', 'content', 'is_approved', )
list_filter = ('is_approved', )
list_editable = ('is_approved', )