Files
mayan-edms/mayan/apps/documents/managers.py
2015-07-12 02:58:31 -04:00

60 lines
1.8 KiB
Python

from __future__ import unicode_literals
import logging
from django.apps import apps
from django.db import models
from .settings import setting_recent_count
logger = logging.getLogger(__name__)
class RecentDocumentManager(models.Manager):
def add_document_for_user(self, user, document):
if user.is_authenticated():
new_recent, created = self.model.objects.get_or_create(user=user, document=document)
if not created:
# document already in the recent list, just save to force
# accessed date and time update
new_recent.save()
for recent_to_delete in self.model.objects.filter(user=user)[setting_recent_count.value:]:
recent_to_delete.delete()
def get_for_user(self, user):
document_model = apps.get_model('documents', 'document')
if user.is_authenticated():
return document_model.objects.filter(recentdocument__user=user).order_by('-recentdocument__datetime_accessed')
else:
return document_model.objects.none()
class DocumentTypeManager(models.Manager):
def get_by_natural_key(self, name):
return self.get(name=name)
class DocumentManager(models.Manager):
def get_queryset(self):
return TrashCanQuerySet(self.model, using=self._db).filter(in_trash=False)
def invalidate_cache(self):
for document in self.model.objects.all():
document.invalidate_cache()
class PassthroughManager(models.Manager):
pass
class TrashCanManager(models.Manager):
def get_queryset(self):
return super(TrashCanManager, self).get_queryset().filter(in_trash=True)
class TrashCanQuerySet(models.QuerySet):
def delete(self, to_trash=True):
for instance in self:
instance.delete(to_trash=to_trash)