diff --git a/docs/releases/1.1.rst b/docs/releases/1.1.rst index a1791b7c6a..be974a13b2 100644 --- a/docs/releases/1.1.rst +++ b/docs/releases/1.1.rst @@ -59,6 +59,7 @@ Next upgrade/add the new requirements:: Migrate existing database schema with:: $ mayan-edms.py migrate dynamic_search 0001 --fake + $ mayan-edms.py migrate history 0001 --fake $ mayan-edms.py migrate lock_manager 0001 --fake $ mayan-edms.py migrate tags 0001 --fake $ mayan-edms.py migrate diff --git a/mayan/apps/history/migrations/0001_initial.py b/mayan/apps/history/migrations/0001_initial.py new file mode 100644 index 0000000000..5774d664a9 --- /dev/null +++ b/mayan/apps/history/migrations/0001_initial.py @@ -0,0 +1,70 @@ +# -*- 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 'HistoryType' + db.create_table(u'history_historytype', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('namespace', self.gf('django.db.models.fields.CharField')(max_length=64)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=64)), + )) + db.send_create_signal(u'history', ['HistoryType']) + + # Adding unique constraint on 'HistoryType', fields ['namespace', 'name'] + db.create_unique(u'history_historytype', ['namespace', 'name']) + + # Adding model 'History' + db.create_table(u'history_history', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('datetime', self.gf('django.db.models.fields.DateTimeField')()), + ('content_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['contenttypes.ContentType'], null=True, blank=True)), + ('object_id', self.gf('django.db.models.fields.PositiveIntegerField')(null=True, blank=True)), + ('history_type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['history.HistoryType'])), + ('dictionary', self.gf('django.db.models.fields.TextField')(blank=True)), + )) + db.send_create_signal(u'history', ['History']) + + + def backwards(self, orm): + # Removing unique constraint on 'HistoryType', fields ['namespace', 'name'] + db.delete_unique(u'history_historytype', ['namespace', 'name']) + + # Deleting model 'HistoryType' + db.delete_table(u'history_historytype') + + # Deleting model 'History' + db.delete_table(u'history_history') + + + models = { + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'history.history': { + 'Meta': {'ordering': "('-datetime',)", 'object_name': 'History'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}), + 'datetime': ('django.db.models.fields.DateTimeField', [], {}), + 'dictionary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'history_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['history.HistoryType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}) + }, + u'history.historytype': { + 'Meta': {'ordering': "('namespace', 'name')", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'HistoryType'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + } + } + + complete_apps = ['history'] \ No newline at end of file diff --git a/mayan/apps/history/migrations/0002_auto__chg_field_history_datetime.py b/mayan/apps/history/migrations/0002_auto__chg_field_history_datetime.py new file mode 100644 index 0000000000..b17104b605 --- /dev/null +++ b/mayan/apps/history/migrations/0002_auto__chg_field_history_datetime.py @@ -0,0 +1,45 @@ +# -*- 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): + + # Changing field 'History.datetime' + db.alter_column(u'history_history', 'datetime', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True)) + + def backwards(self, orm): + + # Changing field 'History.datetime' + db.alter_column(u'history_history', 'datetime', self.gf('django.db.models.fields.DateTimeField')()) + + models = { + u'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + u'history.history': { + 'Meta': {'ordering': "('-datetime',)", 'object_name': 'History'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['contenttypes.ContentType']", 'null': 'True', 'blank': 'True'}), + 'datetime': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'dictionary': ('django.db.models.fields.TextField', [], {'blank': 'True'}), + 'history_type': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['history.HistoryType']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True', 'blank': 'True'}) + }, + u'history.historytype': { + 'Meta': {'ordering': "('namespace', 'name')", 'unique_together': "(('namespace', 'name'),)", 'object_name': 'HistoryType'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '64'}), + 'namespace': ('django.db.models.fields.CharField', [], {'max_length': '64'}) + } + } + + complete_apps = ['history'] \ No newline at end of file diff --git a/mayan/apps/history/migrations/__init__.py b/mayan/apps/history/migrations/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/mayan/apps/history/models.py b/mayan/apps/history/models.py index 73694da5e9..a19bced3f1 100644 --- a/mayan/apps/history/models.py +++ b/mayan/apps/history/models.py @@ -35,7 +35,7 @@ class HistoryType(models.Model): class History(models.Model): - datetime = models.DateTimeField(verbose_name=_(u'Date time')) + datetime = models.DateTimeField(verbose_name=_(u'Date time'), auto_now_add=True) content_type = models.ForeignKey(ContentType, blank=True, null=True) object_id = models.PositiveIntegerField(blank=True, null=True) content_object = generic.GenericForeignKey('content_type', 'object_id') @@ -45,11 +45,6 @@ class History(models.Model): def __unicode__(self): return u'%s - %s - %s' % (self.datetime, self.content_object, self.history_type) - def save(self, *args, **kwargs): - if not self.pk: - self.datetime = now() - super(History, self).save(*args, **kwargs) - def get_label(self): return history_types_dict[self.history_type.namespace][self.history_type.name]['label']