diff --git a/apps/documents/conf/__init__.py b/apps/documents/conf/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apps/documents/conf/settings.py b/apps/documents/conf/settings.py new file mode 100644 index 0000000000..8bba9e0284 --- /dev/null +++ b/apps/documents/conf/settings.py @@ -0,0 +1,9 @@ +import datetime + +from django.conf import settings + +default_available_functions = { + 'current_date':datetime.datetime.now().date, +} + +AVAILABLE_FUNCTIONS = getattr(settings, 'DOCUMENTS_METADATA_AVAILABLE_FUNCTIONS', default_available_functions) diff --git a/apps/documents/forms.py b/apps/documents/forms.py index ea69118c95..276b1298c1 100644 --- a/apps/documents/forms.py +++ b/apps/documents/forms.py @@ -10,6 +10,8 @@ from common.utils import urlquote from models import Document, DocumentType, DocumentTypeMetadataType +from documents.conf.settings import AVAILABLE_FUNCTIONS + class DocumentForm(forms.ModelForm): class Meta: model = Document @@ -29,8 +31,14 @@ class MetadataForm(forms.Form): required=False, widget=forms.TextInput(attrs={'readonly':'readonly'})) self.fields['value'] = forms.CharField(label=_(u'Value')) if hasattr(self, 'metadata_type'): - self.fields['name'].initial=self.metadata_type.name - self.fields['id'].initial=self.metadata_type.id + self.fields['name'].initial=self.metadata_type.name + self.fields['id'].initial=self.metadata_type.id + if self.metadata_type.default: + try: + self.fields['value'].initial = eval(self.metadata_type.default, AVAILABLE_FUNCTIONS) + except Exception, err: + self.fields['value'].initial = err + class DocumentCreateWizard(BoundFormWizard): diff --git a/apps/documents/models.py b/apps/documents/models.py index 59d031c46f..0bf4989650 100644 --- a/apps/documents/models.py +++ b/apps/documents/models.py @@ -6,6 +6,8 @@ from datetime import datetime from django.db import models from django.utils.translation import ugettext_lazy as _ +from documents.conf.settings import AVAILABLE_FUNCTIONS + def get_filename_from_uuid(instance, filename, directory='documents'): populate_file_extension_and_mimetype(instance, filename) @@ -46,9 +48,12 @@ class Document(models.Model): return self.uuid +available_functions_string = (_(u' Available functions: %s') % ','.join(['%s()' % name for name, function in AVAILABLE_FUNCTIONS.items()])) if AVAILABLE_FUNCTIONS else '' + class MetadataType(models.Model): name = models.CharField(max_length=32, verbose_name=_(u'name')) - default = models.CharField(max_length=64, blank=True, null=True, verbose_name=_(u'default')) + default = models.CharField(max_length=64, blank=True, null=True, + verbose_name=_(u'default'), help_text=_(u'Enter a string to be evaluated.%s') % available_functions_string) lookup = models.CharField(max_length=64, blank=True, null=True, verbose_name=_(u'lookup')) #datatype = models.