Change the way metadata types are associated to a document type, add required boolean field to the association

This commit is contained in:
Roberto Rosario
2014-10-30 02:24:12 -04:00
parent da97aab168
commit 95a27df1e3
4 changed files with 241 additions and 10 deletions

View File

@@ -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')

View File

@@ -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']

View File

@@ -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']

View File

@@ -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']