Instead of inserting the path of the apps into the Python app, the apps are now referenced by their full import path. This app name claves with external or native Python libraries. Example: Mayan statistics app vs. Python new statistics library. Every app reference is now prepended with 'mayan.apps'. Existing config.yml files need to be updated manually. Signed-off-by: Roberto Rosario <roberto.rosario.gonzalez@gmail.com>
77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
from __future__ import unicode_literals
|
|
|
|
import logging
|
|
|
|
from django.conf import settings
|
|
from django.db import models
|
|
from django.utils.encoding import python_2_unicode_compatible
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
from mayan.apps.documents.models import Document
|
|
|
|
from .events import (
|
|
event_document_comment_create, event_document_comment_delete
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class Comment(models.Model):
|
|
"""
|
|
Model to store one comment per document per user per date & time.
|
|
"""
|
|
document = models.ForeignKey(
|
|
db_index=True, on_delete=models.CASCADE, related_name='comments',
|
|
to=Document, verbose_name=_('Document')
|
|
)
|
|
user = models.ForeignKey(
|
|
editable=False, on_delete=models.CASCADE, related_name='comments',
|
|
to=settings.AUTH_USER_MODEL, verbose_name=_('User'),
|
|
)
|
|
# Translators: Comment here is a noun and refers to the actual text stored
|
|
comment = models.TextField(verbose_name=_('Comment'))
|
|
submit_date = models.DateTimeField(
|
|
auto_now_add=True, db_index=True,
|
|
verbose_name=_('Date time submitted')
|
|
)
|
|
|
|
class Meta:
|
|
get_latest_by = 'submit_date'
|
|
ordering = ('-submit_date',)
|
|
verbose_name = _('Comment')
|
|
verbose_name_plural = _('Comments')
|
|
|
|
def __str__(self):
|
|
return self.comment
|
|
|
|
def delete(self, *args, **kwargs):
|
|
user = kwargs.pop('_user', None)
|
|
super(Comment, self).delete(*args, **kwargs)
|
|
if user:
|
|
event_document_comment_delete.commit(
|
|
actor=user, target=self.document
|
|
)
|
|
else:
|
|
event_document_comment_delete.commit(target=self.document)
|
|
|
|
def save(self, *args, **kwargs):
|
|
user = kwargs.pop('_user', None) or self.user
|
|
is_new = not self.pk
|
|
super(Comment, self).save(*args, **kwargs)
|
|
if is_new:
|
|
if user:
|
|
event_document_comment_create.commit(
|
|
actor=user, target=self.document
|
|
)
|
|
logger.info(
|
|
'Comment "%s" added to document "%s" by user "%s"',
|
|
self.comment, self.document, user
|
|
)
|
|
else:
|
|
event_document_comment_create.commit(target=self.document)
|
|
logger.info(
|
|
'Comment "%s" added to document "%s"', self.comment,
|
|
self.document
|
|
)
|