From f5e1adedfa0d4b0e0fa7e9139b1906468016b97d Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 14 Jan 2015 15:50:41 -0400 Subject: [PATCH] Add field to set validation function separately from the lookup field --- mayan/apps/metadata/admin.py | 2 +- mayan/apps/metadata/models.py | 3 +- ...auto__add_field_metadatatype_validation.py | 64 +++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 mayan/apps/metadata/south_migrations/0011_auto__add_field_metadatatype_validation.py diff --git a/mayan/apps/metadata/admin.py b/mayan/apps/metadata/admin.py index 6f8534f34e..2f2b9f2a72 100644 --- a/mayan/apps/metadata/admin.py +++ b/mayan/apps/metadata/admin.py @@ -6,7 +6,7 @@ from .models import MetadataType class MetadataTypeAdmin(admin.ModelAdmin): - list_display = ('name', 'title', 'default', 'lookup') + list_display = ('name', 'title', 'default', 'lookup', 'validation') admin.site.register(MetadataType, MetadataTypeAdmin) diff --git a/mayan/apps/metadata/models.py b/mayan/apps/metadata/models.py index a02a7ec743..6b810aed00 100644 --- a/mayan/apps/metadata/models.py +++ b/mayan/apps/metadata/models.py @@ -7,6 +7,7 @@ from django.utils.translation import ugettext_lazy as _ from documents.models import Document, DocumentType from .managers import MetadataTypeManager +from .settings import AVAILABLE_VALIDATORS class MetadataType(models.Model): @@ -24,7 +25,7 @@ class MetadataType(models.Model): lookup = models.TextField(blank=True, null=True, verbose_name=_(u'Lookup'), help_text=_(u'Enter a string to be evaluated that returns an iterable.')) - # TODO: Add datatype choice: Date, Time, String, Number + validation = models.CharField(blank=True, choices=zip(AVAILABLE_VALIDATORS, AVAILABLE_VALIDATORS), max_length=64, verbose_name=_(u'Validation function name')) # TODO: Find a different way to let users know what models and functions are # available now that we removed these from the help_text objects = MetadataTypeManager() diff --git a/mayan/apps/metadata/south_migrations/0011_auto__add_field_metadatatype_validation.py b/mayan/apps/metadata/south_migrations/0011_auto__add_field_metadatatype_validation.py new file mode 100644 index 0000000000..8bd44a7f0a --- /dev/null +++ b/mayan/apps/metadata/south_migrations/0011_auto__add_field_metadatatype_validation.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +from south.utils import datetime_utils as datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'MetadataType.validation' + db.add_column(u'metadata_metadatatype', 'validation', + self.gf('django.db.models.fields.CharField')(default='', max_length=64), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'MetadataType.validation' + db.delete_column(u'metadata_metadatatype', 'validation') + + + models = { + u'documents.document': { + 'Meta': {'ordering': "['-date_added']", 'object_name': 'Document'}, + 'date_added': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'documents'", 'to': u"orm['documents.DocumentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'default': "u'Uninitialized document'", 'max_length': '255', 'db_index': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'default': "u'eng'", 'max_length': '8'}), + 'uuid': ('django.db.models.fields.CharField', [], {'default': "u'8fd13d23-fcd0-438c-a1b3-7421a1d0eed5'", 'max_length': '48'}) + }, + u'documents.documenttype': { + 'Meta': {'ordering': "['name']", 'object_name': 'DocumentType'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '32'}), + 'ocr': ('django.db.models.fields.BooleanField', [], {'default': 'True'}) + }, + u'metadata.documentmetadata': { + 'Meta': {'unique_together': "(('document', 'metadata_type'),)", 'object_name': 'DocumentMetadata'}, + 'document': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'metadata'", 'to': u"orm['documents.Document']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'metadata_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['metadata.MetadataType']"}), + 'value': ('django.db.models.fields.CharField', [], {'db_index': 'True', 'max_length': '255', 'null': 'True', 'blank': 'True'}) + }, + u'metadata.documenttypemetadatatype': { + 'Meta': {'unique_together': "(('document_type', 'metadata_type'),)", 'object_name': 'DocumentTypeMetadataType'}, + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'metadata'", 'to': u"orm['documents.DocumentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'metadata_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['metadata.MetadataType']"}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + u'metadata.metadatatype': { + 'Meta': {'ordering': "('title',)", 'object_name': 'MetadataType'}, + 'default': ('django.db.models.fields.CharField', [], {'max_length': '128', 'null': 'True', 'blank': 'True'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'lookup': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '48'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '48'}), + 'validation': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + } + } + + complete_apps = ['metadata'] \ No newline at end of file