diff --git a/mayan/apps/metadata/models.py b/mayan/apps/metadata/models.py index 81abc3c651..94214e0d66 100644 --- a/mayan/apps/metadata/models.py +++ b/mayan/apps/metadata/models.py @@ -63,16 +63,12 @@ class DocumentMetadata(models.Model): verbose_name_plural = _(u'Document metadata') -class DocumentTypeDefaults(models.Model): - """ - Default preselected metadata types per document type - """ +class DocumentTypeMetadataType(models.Model): document_type = models.ForeignKey(DocumentType, verbose_name=_(u'Document type')) - default_metadata = models.ManyToManyField(MetadataType, blank=True, verbose_name=_(u'Metadata')) - - def __unicode__(self): - return unicode(self.document_type) + metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'Metadata type')) + required = models.BooleanField(default=False, verbose_name=_('Required')) class Meta: - verbose_name = _(u'Document type defaults') - verbose_name_plural = _(u'Document types defaults') + unique_together = ('document_type', 'metadata_type') + verbose_name = _(u'Document type metadata type options') + verbose_name_plural = _(u'Document type metadata types options') diff --git a/mayan/apps/metadata/south_migrations/0006_auto__add_documenttypemetadatatypeoptions.py b/mayan/apps/metadata/south_migrations/0006_auto__add_documenttypemetadatatypeoptions.py new file mode 100644 index 0000000000..0f2d0c2421 --- /dev/null +++ b/mayan/apps/metadata/south_migrations/0006_auto__add_documenttypemetadatatypeoptions.py @@ -0,0 +1,85 @@ +# -*- 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 model 'DocumentTypeMetadataTypeOptions' + db.create_table(u'metadata_documenttypemetadatatypeoptions', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('document_type_defaults', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['metadata.DocumentTypeDefaults'])), + ('metadata_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['metadata.MetadataType'])), + ('required', self.gf('django.db.models.fields.BooleanField')(default=False)), + )) + db.send_create_signal(u'metadata', ['DocumentTypeMetadataTypeOptions']) + + # Removing M2M table for field default_metadata on 'DocumentTypeDefaults' + db.delete_table(db.shorten_name(u'metadata_documenttypedefaults_default_metadata')) + + + def backwards(self, orm): + # Deleting model 'DocumentTypeMetadataTypeOptions' + db.delete_table(u'metadata_documenttypemetadatatypeoptions') + + # Adding M2M table for field default_metadata on 'DocumentTypeDefaults' + m2m_table_name = db.shorten_name(u'metadata_documenttypedefaults_default_metadata') + db.create_table(m2m_table_name, ( + ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)), + ('documenttypedefaults', models.ForeignKey(orm[u'metadata.documenttypedefaults'], null=False)), + ('metadatatype', models.ForeignKey(orm[u'metadata.metadatatype'], null=False)) + )) + db.create_unique(m2m_table_name, ['documenttypedefaults_id', 'metadatatype_id']) + + + 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'e432f139-04cf-49e3-a9d1-3644dda3026e'", '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': {'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.documenttypedefaults': { + 'Meta': {'object_name': 'DocumentTypeDefaults'}, + 'default_metadata': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['metadata.MetadataType']", 'symmetrical': 'False', 'through': u"orm['metadata.DocumentTypeMetadataTypeOptions']", 'blank': 'True'}), + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['documents.DocumentType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + u'metadata.documenttypemetadatatypeoptions': { + 'Meta': {'object_name': 'DocumentTypeMetadataTypeOptions'}, + 'document_type_defaults': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['metadata.DocumentTypeDefaults']"}), + 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', 'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['metadata'] \ No newline at end of file diff --git a/mayan/apps/metadata/south_migrations/0007_auto__del_documenttypedefaults__del_documenttypemetadatatypeoptions__a.py b/mayan/apps/metadata/south_migrations/0007_auto__del_documenttypedefaults__del_documenttypemetadatatypeoptions__a.py new file mode 100644 index 0000000000..f84d116968 --- /dev/null +++ b/mayan/apps/metadata/south_migrations/0007_auto__del_documenttypedefaults__del_documenttypemetadatatypeoptions__a.py @@ -0,0 +1,89 @@ +# -*- 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): + # Deleting model 'DocumentTypeDefaults' + db.delete_table(u'metadata_documenttypedefaults') + + # Deleting model 'DocumentTypeMetadataTypeOptions' + db.delete_table(u'metadata_documenttypemetadatatypeoptions') + + # Adding model 'DocumentTypeMetadataType' + db.create_table(u'metadata_documenttypemetadatatype', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('document_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['documents.DocumentType'])), + ('metadata_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['metadata.MetadataType'])), + ('required', self.gf('django.db.models.fields.BooleanField')(default=False)), + )) + db.send_create_signal(u'metadata', ['DocumentTypeMetadataType']) + + + def backwards(self, orm): + # Adding model 'DocumentTypeDefaults' + db.create_table(u'metadata_documenttypedefaults', ( + ('document_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['documents.DocumentType'])), + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + )) + db.send_create_signal(u'metadata', ['DocumentTypeDefaults']) + + # Adding model 'DocumentTypeMetadataTypeOptions' + db.create_table(u'metadata_documenttypemetadatatypeoptions', ( + ('required', self.gf('django.db.models.fields.BooleanField')(default=False)), + ('metadata_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['metadata.MetadataType'])), + ('document_type_defaults', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['metadata.DocumentTypeDefaults'])), + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + )) + db.send_create_signal(u'metadata', ['DocumentTypeMetadataTypeOptions']) + + # Deleting model 'DocumentTypeMetadataType' + db.delete_table(u'metadata_documenttypemetadatatype') + + + 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'7f0e4ea9-c307-4395-ab9e-63979ea1c4ae'", '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': {'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': {'object_name': 'DocumentTypeMetadataType'}, + 'document_type': ('django.db.models.fields.related.ForeignKey', [], {'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', 'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['metadata'] \ No newline at end of file diff --git a/mayan/apps/metadata/south_migrations/0008_auto__add_unique_documenttypemetadatatype_document_type_metadata_type.py b/mayan/apps/metadata/south_migrations/0008_auto__add_unique_documenttypemetadatatype_document_type_metadata_type.py new file mode 100644 index 0000000000..76582cdd2d --- /dev/null +++ b/mayan/apps/metadata/south_migrations/0008_auto__add_unique_documenttypemetadatatype_document_type_metadata_type.py @@ -0,0 +1,61 @@ +# -*- 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 unique constraint on 'DocumentTypeMetadataType', fields ['document_type', 'metadata_type'] + db.create_unique(u'metadata_documenttypemetadatatype', ['document_type_id', 'metadata_type_id']) + + + def backwards(self, orm): + # Removing unique constraint on 'DocumentTypeMetadataType', fields ['document_type', 'metadata_type'] + db.delete_unique(u'metadata_documenttypemetadatatype', ['document_type_id', 'metadata_type_id']) + + + 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'709ad67d-4f71-4901-ba6d-a5b3cc0632d0'", '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': {'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', [], {'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', 'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['metadata'] \ No newline at end of file