/usr/share/pyshared/threadedcomments/models.py is in python-django-threadedcomments 0.9.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | from django.db import models
from django.contrib.comments.models import Comment
from django.contrib.comments.managers import CommentManager
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
PATH_SEPARATOR = getattr(settings, 'COMMENT_PATH_SEPARATOR', '/')
PATH_DIGITS = getattr(settings, 'COMMENT_PATH_DIGITS', 10)
class ThreadedComment(Comment):
title = models.TextField(_('Title'), blank=True)
parent = models.ForeignKey('self', null=True, blank=True, default=None, related_name='children', verbose_name=_('Parent'))
last_child = models.ForeignKey('self', null=True, blank=True, on_delete=models.SET_NULL, verbose_name=_('Last child'))
tree_path = models.TextField(_('Tree path'), editable=False, db_index=True)
objects = CommentManager()
@property
def depth(self):
return len(self.tree_path.split(PATH_SEPARATOR))
@property
def root_id(self):
return int(self.tree_path.split(PATH_SEPARATOR)[0])
@property
def root_path(self):
return ThreadedComment.objects.filter(pk__in=self.tree_path.split(PATH_SEPARATOR)[:-1])
def save(self, *args, **kwargs):
skip_tree_path = kwargs.pop('skip_tree_path', False)
super(ThreadedComment, self).save(*args, **kwargs)
if skip_tree_path:
return None
tree_path = unicode(self.pk).zfill(PATH_DIGITS)
if self.parent:
tree_path = PATH_SEPARATOR.join((self.parent.tree_path, tree_path))
self.parent.last_child = self
ThreadedComment.objects.filter(pk=self.parent_id).update(last_child=self)
self.tree_path = tree_path
ThreadedComment.objects.filter(pk=self.pk).update(tree_path=self.tree_path)
def delete(self, *args, **kwargs):
# Fix last child on deletion.
if self.parent_id:
prev_child_id = ThreadedComment.objects.filter(parent=self.parent_id).exclude(pk=self.pk).order_by('-submit_date').values_list('pk', flat=True)[0]
ThreadedComment.objects.filter(pk=self.parent_id).update(last_child=prev_child_id)
super(ThreadedComment, self).delete(*args, **kwargs)
class Meta(object):
ordering = ('tree_path',)
db_table = 'threadedcomments_comment'
verbose_name = _('Threaded comment')
verbose_name_plural = _('Threaded comments')
|