Files
mayan-edms/mayan/apps/folders/models.py
2017-07-21 00:25:18 -04:00

58 lines
1.6 KiB
Python

from __future__ import absolute_import, unicode_literals
from django.db import models
from django.urls import reverse
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from acls.models import AccessControlList
from documents.models import Document
from documents.permissions import permission_document_view
from .managers import FolderManager
@python_2_unicode_compatible
class Folder(models.Model):
label = models.CharField(
db_index=True, max_length=128, verbose_name=_('Label')
)
datetime_created = models.DateTimeField(
auto_now_add=True, verbose_name=_('Datetime created')
)
documents = models.ManyToManyField(
Document, related_name='folders', verbose_name=_('Documents')
)
objects = FolderManager()
def __str__(self):
return self.label
def get_absolute_url(self):
return reverse('folders:folder_view', args=(self.pk,))
def natural_key(self):
return (self.label,) + self.user.natural_key()
natural_key.dependencies = ['auth.User']
class Meta:
ordering = ('label',)
unique_together = ('label', )
verbose_name = _('Folder')
verbose_name_plural = _('Folders')
def get_document_count(self, user):
queryset = AccessControlList.objects.filter_by_access(
permission_document_view, user, queryset=self.documents
)
return queryset.count()
class DocumentFolder(Folder):
class Meta:
proxy = True
verbose_name = _('Document folder')
verbose_name_plural = _('Document folders')