Files
mayan-edms/mayan/apps/linking/models.py
2014-11-11 03:01:17 -04:00

47 lines
2.4 KiB
Python

from __future__ import absolute_import
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext
from documents.models import DocumentType
from .literals import INCLUSION_AND, INCLUSION_CHOICES, OPERATOR_CHOICES
from .managers import SmartLinkManager
class SmartLink(models.Model):
title = models.CharField(max_length=96, verbose_name=_(u'Title'))
dynamic_title = models.CharField(blank=True, max_length=96, verbose_name=_(u'Dynamic title'), help_text=_(u'This expression will be evaluated against the current selected document. The document metadata is available as variables `metadata` and document properties under the variable `document`.'))
enabled = models.BooleanField(default=True, verbose_name=_(u'Enabled'))
document_types = models.ManyToManyField(DocumentType, verbose_name=_(u'Document types'))
objects = SmartLinkManager()
def get_document_types_not_selected(self):
return DocumentType.objects.exclude(pk__in=self.document_types.all())
def __unicode__(self):
return self.title
class Meta:
verbose_name = _(u'Smart link')
verbose_name_plural = _(u'Smart links')
class SmartLinkCondition(models.Model):
smart_link = models.ForeignKey(SmartLink, verbose_name=_(u'Smart link'))
inclusion = models.CharField(default=INCLUSION_AND, max_length=16, choices=INCLUSION_CHOICES, help_text=_(u'The inclusion is ignored for the first item.'))
foreign_document_data = models.CharField(max_length=128, verbose_name=_(u'Foreign document attribute'), help_text=_(u'This represents the metadata of all other documents.'))
operator = models.CharField(max_length=16, choices=OPERATOR_CHOICES)
expression = models.TextField(verbose_name=_(u'Expression'), help_text=ugettext(u'This expression will be evaluated against the current document.'))
negated = models.BooleanField(default=False, verbose_name=_(u'Negated'), help_text=_(u'Inverts the logic of the operator.'))
enabled = models.BooleanField(default=True, verbose_name=_(u'Enabled'))
def __unicode__(self):
return u'%s foreign %s %s %s %s' % (self.get_inclusion_display(), self.foreign_document_data, _(u'not') if self.negated else u'', self.get_operator_display(), self.expression)
class Meta:
verbose_name = _(u'Link condition')
verbose_name_plural = _(u'Link conditions')