Add log functionality to migrations. Close #1424

- Legacy-Id: 8048
This commit is contained in:
Emilio A. Sánchez López 2014-07-04 09:42:29 +00:00
parent 6c927f11a1
commit f72b0a1c93
12 changed files with 227 additions and 18 deletions

View file

@ -30,6 +30,11 @@ class Migration(SchemaMigration):
))
db.create_unique(m2m_table_name, ['liaisonstatement_id', 'group_id'])
# Adding field 'LiaisonStatement.state'
db.add_column(u'liaisons_liaisonstatement', 'state',
self.gf('django.db.models.fields.related.ForeignKey')(default='pending', to=orm['name.LiaisonStatementState']),
keep_default=False)
def backwards(self, orm):
# Deleting field 'LiaisonStatement.other_identifiers'
db.delete_column(u'liaisons_liaisonstatement', 'other_identifiers')
@ -40,6 +45,9 @@ class Migration(SchemaMigration):
# Removing M2M table for field to_groups on 'LiaisonStatement'
db.delete_table(db.shorten_name(u'liaisons_liaisonstatement_to_groups'))
# Deleting field 'LiaisonStatement.state'
db.delete_column(u'liaisons_liaisonstatement', 'state_id')
models = {
u'auth.group': {
'Meta': {'object_name': 'Group'},
@ -163,6 +171,7 @@ class Migration(SchemaMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -235,6 +244,14 @@ class Migration(SchemaMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -139,6 +139,7 @@ class Migration(SchemaMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -218,6 +219,14 @@ class Migration(SchemaMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -167,6 +167,7 @@ class Migration(SchemaMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -285,6 +286,14 @@ class Migration(SchemaMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -1,16 +1,45 @@
# -*- coding: utf-8 -*-
import os
import syslog
import datetime
from south.v2 import DataMigration
class Migration(DataMigration):
def log(self, obj, created):
if created:
self.logger.write('New %s created with pk %s\n' % (obj.__class__.__name__, obj.pk))
else:
self.logger.write('%s with pk %s already exists\n' % (obj.__class__.__name__, obj.pk))
def create_logger(self):
migration_file = os.path.abspath(__file__)
self.logger_filename = '%s.txt' % os.path.splitext(migration_file)[0]
self.logger = open(self.logger_filename, "a")
self.logger.write("\n\n%s\n--------------------\n" % datetime.datetime.now())
def close_logger(self):
self.logger.close()
print '%s:' % self.logger_filename
syslog.syslog('%s:' % self.logger_filename)
for line in open(self.logger_filename, "r"):
print line,
syslog.syslog(line)
def forwards(self, orm):
self.create_logger()
default_relation = orm['name.DocRelationshipName'].objects.get(slug='refold')
for liaison in orm['liaisons.LiaisonStatement'].objects.filter(related_to__isnull=False):
orm['liaisons.RelatedLiaisonStatement'].objects.get_or_create(
liaison_list = orm['liaisons.LiaisonStatement'].objects.filter(related_to__isnull=False)
self.logger.write("Migrating %s liaisons that have a related liaison\n" % liaison_list.count())
for liaison in liaison_list:
self.log(*orm['liaisons.RelatedLiaisonStatement'].objects.get_or_create(
source=liaison,
target=liaison.related_to,
relationship=default_relation)
relationship=default_relation))
self.close_logger()
def backwards(self, orm):
"Write your backwards methods here."
@ -138,6 +167,7 @@ class Migration(DataMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -256,6 +286,14 @@ class Migration(DataMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -1,13 +1,32 @@
# -*- coding: utf-8 -*-
import os
import datetime
import syslog
from south.v2 import DataMigration
class Migration(DataMigration):
def create_logger(self):
migration_file = os.path.abspath(__file__)
self.logger_filename = '%s.txt' % os.path.splitext(migration_file)[0]
self.logger = open(self.logger_filename, "a")
self.logger.write("\n\n%s\n--------------------\n" % datetime.datetime.now())
def close_logger(self):
self.logger.close()
print '%s:' % self.logger_filename
syslog.syslog('%s:' % self.logger_filename)
for line in open(self.logger_filename, "r"):
print line,
syslog.syslog(line)
def forwards(self, orm):
self.create_logger()
submitted = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='submit')
modified = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='modified')
approved = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='approved')
approved_state = orm['name.LiaisonStatementState'].objects.get(slug='approved')
system_user = orm['person.Person'].objects.get(name="(System)")
for liaison in orm['liaisons.LiaisonStatement'].objects.all():
if liaison.submitted:
@ -18,6 +37,7 @@ class Migration(DataMigration):
by=system_user)
event.time = liaison.submitted
event.save()
self.logger.write("Created a liaison submitted event with date: %s\n" % liaison.submitted)
if liaison.modified:
event, _ = orm['liaisons.LiaisonStatementEvent'].objects.get_or_create(
time=liaison.modified,
@ -27,6 +47,7 @@ class Migration(DataMigration):
by=system_user)
event.time = liaison.modified
event.save()
self.logger.write("Created a liaison modified event with date: %s\n" % liaison.submitted)
if liaison.approved:
event, _ = orm['liaisons.LiaisonStatementEvent'].objects.get_or_create(
time=liaison.approved,
@ -36,6 +57,10 @@ class Migration(DataMigration):
by=system_user)
event.time = liaison.approved
event.save()
liaison.state = approved_state
liaison.save()
self.logger.write("Created a liaison approved event with date: %s\n" % liaison.submitted)
self.close_logger()
def backwards(self, orm):
"Write your backwards methods here."
@ -163,6 +188,7 @@ class Migration(DataMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -281,6 +307,14 @@ class Migration(DataMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -1,13 +1,33 @@
# -*- coding: utf-8 -*-
import syslog
import os
import datetime
from south.v2 import DataMigration
class Migration(DataMigration):
def create_logger(self):
migration_file = os.path.abspath(__file__)
self.logger_filename = '%s.txt' % os.path.splitext(migration_file)[0]
self.logger = open(self.logger_filename, "a")
self.logger.write("\n\n%s\n--------------------\n" % datetime.datetime.now())
def close_logger(self):
self.logger.close()
print '%s:' % self.logger_filename
syslog.syslog('%s:' % self.logger_filename)
for line in open(self.logger_filename, "r"):
print line,
syslog.syslog(line)
def forwards(self, orm):
self.create_logger()
comment = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='comment')
system_user = orm['person.Person'].objects.get(name="(System)")
for liaison in orm['liaisons.LiaisonStatement'].objects.exclude(reply_to=''):
liaison_list = orm['liaisons.LiaisonStatement'].objects.exclude(reply_to='')
self.logger.write("Migrating %s liaisons that contains reply_to values\n" % liaison_list.count())
for liaison in liaison_list:
if liaison.reply_to in liaison.response_contacts:
continue
orm['liaisons.LiaisonStatementEvent'].objects.get_or_create(
@ -17,6 +37,8 @@ class Migration(DataMigration):
by=system_user)
liaison.response_contacts += ',%s' % liaison.reply_to
liaison.save()
self.logger.write('Liaison %s modified. Merged reply_to into response_contacts\n' % liaison.pk)
self.close_logger()
def backwards(self, orm):
"Write your backwards methods here."
@ -144,6 +166,7 @@ class Migration(DataMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -262,6 +285,14 @@ class Migration(DataMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -222,6 +222,7 @@ class Migration(DataMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -340,6 +341,14 @@ class Migration(DataMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -406,6 +406,7 @@ class Migration(DataMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -524,6 +525,14 @@ class Migration(DataMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -143,6 +143,7 @@ class Migration(SchemaMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['name.LiaisonStatementTagName']", 'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -270,6 +271,14 @@ class Migration(SchemaMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -140,6 +140,7 @@ class Migration(DataMigration):
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['name.LiaisonStatementTagName']", 'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -267,6 +268,14 @@ class Migration(DataMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -188,6 +188,7 @@ class Migration(SchemaMigration):
'other_identifiers': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
'purpose': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['name.LiaisonStatementPurposeName']"}),
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
'tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['name.LiaisonStatementTagName']", 'null': 'True', 'blank': 'True'}),
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@ -313,6 +314,14 @@ class Migration(SchemaMigration):
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'name.liaisonstatementstate': {
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
},
u'person.email': {
'Meta': {'object_name': 'Email'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

View file

@ -1,29 +1,55 @@
# -*- coding: utf-8 -*-
import os
import syslog
import datetime
from south.v2 import DataMigration
class Migration(DataMigration):
def log(self, obj, created):
if created:
self.logger.write('New %s created with pk %s\n' % (obj.__class__.__name__, obj.pk))
else:
self.logger.write('%s with pk %s already exists\n' % (obj.__class__.__name__, obj.pk))
def create_logger(self):
migration_file = os.path.abspath(__file__)
self.logger_filename = '%s.txt' % os.path.splitext(migration_file)[0]
self.logger = open(self.logger_filename, "a")
self.logger.write("\n\n%s\n--------------------\n" % datetime.datetime.now())
def close_logger(self):
self.logger.close()
print '%s:' % self.logger_filename
syslog.syslog('%s:' % self.logger_filename)
for line in open(self.logger_filename, "r"):
print line,
syslog.syslog(line)
def forwards(self, orm):
self.create_logger()
# LiaisonStatementState: Pending, Approved, Dead
orm.LiaisonStatementState.objects.get_or_create(slug="pending", order=1, name="Pending")
orm.LiaisonStatementState.objects.get_or_create(slug="approved", order=2, name="Approved")
orm.LiaisonStatementState.objects.get_or_create(slug="dead", order=3, name="Dead")
self.log(*orm.LiaisonStatementState.objects.get_or_create(slug="pending", order=1, name="Pending"))
self.log(*orm.LiaisonStatementState.objects.get_or_create(slug="approved", order=2, name="Approved"))
self.log(*orm.LiaisonStatementState.objects.get_or_create(slug="dead", order=3, name="Dead"))
# LiaisonStatementEventTypeName: Submitted, Modified, Approved, Posted, Killed, Resurrected, MsgIn, MsgOut, Comment
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="submit", order=1, name="Submitted")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="modified", order=2, name="Modified")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="approved", order=3, name="Approved")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="posted", order=4, name="Posted")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="killed", order=5, name="Killed")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="resurrec", order=6, name="Resurrected")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="msgin", order=7, name="MsgIn")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="msgout", order=8, name="MsgOut")
orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="comment", order=9, name="Comment")
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="submit", order=1, name="Submitted"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="modified", order=2, name="Modified"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="approved", order=3, name="Approved"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="posted", order=4, name="Posted"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="killed", order=5, name="Killed"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="resurrec", order=6, name="Resurrected"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="msgin", order=7, name="MsgIn"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="msgout", order=8, name="MsgOut"))
self.log(*orm.LiaisonStatementEventTypeName.objects.get_or_create(slug="comment", order=9, name="Comment"))
#LiaisonStatementTagName: Action Required, Action Taken
orm.LiaisonStatementTagName.objects.get_or_create(slug="required", order=1, name="Action Required")
orm.LiaisonStatementTagName.objects.get_or_create(slug="taken", order=2, name="Action Taken")
self.log(*orm.LiaisonStatementTagName.objects.get_or_create(slug="required", order=1, name="Action Required"))
self.log(*orm.LiaisonStatementTagName.objects.get_or_create(slug="taken", order=2, name="Action Taken"))
self.close_logger()
def backwards(self, orm):
"Write your backwards methods here."