Skip to content

Commit f72b0a1

Browse files
committed
Add log functionality to migrations. Close ietf-tools#1424
- Legacy-Id: 8048
1 parent 6c927f1 commit f72b0a1

12 files changed

Lines changed: 227 additions & 18 deletions

ietf/liaisons/migrations/0003_add_new_fields.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ def forwards(self, orm):
3030
))
3131
db.create_unique(m2m_table_name, ['liaisonstatement_id', 'group_id'])
3232

33+
# Adding field 'LiaisonStatement.state'
34+
db.add_column(u'liaisons_liaisonstatement', 'state',
35+
self.gf('django.db.models.fields.related.ForeignKey')(default='pending', to=orm['name.LiaisonStatementState']),
36+
keep_default=False)
37+
3338
def backwards(self, orm):
3439
# Deleting field 'LiaisonStatement.other_identifiers'
3540
db.delete_column(u'liaisons_liaisonstatement', 'other_identifiers')
@@ -40,6 +45,9 @@ def backwards(self, orm):
4045
# Removing M2M table for field to_groups on 'LiaisonStatement'
4146
db.delete_table(db.shorten_name(u'liaisons_liaisonstatement_to_groups'))
4247

48+
# Deleting field 'LiaisonStatement.state'
49+
db.delete_column(u'liaisons_liaisonstatement', 'state_id')
50+
4351
models = {
4452
u'auth.group': {
4553
'Meta': {'object_name': 'Group'},
@@ -163,6 +171,7 @@ def backwards(self, orm):
163171
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
164172
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
165173
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
174+
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
166175
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
167176
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
168177
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -235,6 +244,14 @@ def backwards(self, orm):
235244
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
236245
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
237246
},
247+
u'name.liaisonstatementstate': {
248+
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
249+
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
250+
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
251+
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
252+
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
253+
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
254+
},
238255
u'person.email': {
239256
'Meta': {'object_name': 'Email'},
240257
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

ietf/liaisons/migrations/0004_refactor_attachments.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ def backwards(self, orm):
139139
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
140140
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
141141
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
142+
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
142143
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
143144
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
144145
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -218,6 +219,14 @@ def backwards(self, orm):
218219
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
219220
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
220221
},
222+
u'name.liaisonstatementstate': {
223+
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
224+
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
225+
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
226+
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
227+
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
228+
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
229+
},
221230
u'person.email': {
222231
'Meta': {'object_name': 'Email'},
223232
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

ietf/liaisons/migrations/0005_add_new_models.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ def backwards(self, orm):
167167
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
168168
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
169169
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
170+
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
170171
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
171172
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
172173
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -285,6 +286,14 @@ def backwards(self, orm):
285286
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
286287
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
287288
},
289+
u'name.liaisonstatementstate': {
290+
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
291+
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
292+
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
293+
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
294+
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
295+
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
296+
},
288297
u'person.email': {
289298
'Meta': {'object_name': 'Email'},
290299
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

ietf/liaisons/migrations/0006_migrate_relatedliaisonstatements.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,45 @@
11
# -*- coding: utf-8 -*-
2+
import os
3+
import syslog
4+
import datetime
25
from south.v2 import DataMigration
36

47

58
class Migration(DataMigration):
69

10+
def log(self, obj, created):
11+
if created:
12+
self.logger.write('New %s created with pk %s\n' % (obj.__class__.__name__, obj.pk))
13+
else:
14+
self.logger.write('%s with pk %s already exists\n' % (obj.__class__.__name__, obj.pk))
15+
16+
def create_logger(self):
17+
migration_file = os.path.abspath(__file__)
18+
self.logger_filename = '%s.txt' % os.path.splitext(migration_file)[0]
19+
self.logger = open(self.logger_filename, "a")
20+
self.logger.write("\n\n%s\n--------------------\n" % datetime.datetime.now())
21+
22+
def close_logger(self):
23+
self.logger.close()
24+
print '%s:' % self.logger_filename
25+
syslog.syslog('%s:' % self.logger_filename)
26+
for line in open(self.logger_filename, "r"):
27+
print line,
28+
syslog.syslog(line)
29+
730
def forwards(self, orm):
31+
self.create_logger()
32+
833
default_relation = orm['name.DocRelationshipName'].objects.get(slug='refold')
9-
for liaison in orm['liaisons.LiaisonStatement'].objects.filter(related_to__isnull=False):
10-
orm['liaisons.RelatedLiaisonStatement'].objects.get_or_create(
34+
liaison_list = orm['liaisons.LiaisonStatement'].objects.filter(related_to__isnull=False)
35+
self.logger.write("Migrating %s liaisons that have a related liaison\n" % liaison_list.count())
36+
for liaison in liaison_list:
37+
self.log(*orm['liaisons.RelatedLiaisonStatement'].objects.get_or_create(
1138
source=liaison,
1239
target=liaison.related_to,
13-
relationship=default_relation)
40+
relationship=default_relation))
41+
self.close_logger()
42+
1443

1544
def backwards(self, orm):
1645
"Write your backwards methods here."
@@ -138,6 +167,7 @@ def backwards(self, orm):
138167
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
139168
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
140169
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
170+
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
141171
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
142172
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
143173
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -256,6 +286,14 @@ def backwards(self, orm):
256286
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
257287
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
258288
},
289+
u'name.liaisonstatementstate': {
290+
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
291+
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
292+
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
293+
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
294+
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
295+
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
296+
},
259297
u'person.email': {
260298
'Meta': {'object_name': 'Email'},
261299
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

ietf/liaisons/migrations/0007_synthesize_events.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,32 @@
11
# -*- coding: utf-8 -*-
2+
import os
3+
import datetime
4+
import syslog
25
from south.v2 import DataMigration
36

47

58
class Migration(DataMigration):
69

10+
def create_logger(self):
11+
migration_file = os.path.abspath(__file__)
12+
self.logger_filename = '%s.txt' % os.path.splitext(migration_file)[0]
13+
self.logger = open(self.logger_filename, "a")
14+
self.logger.write("\n\n%s\n--------------------\n" % datetime.datetime.now())
15+
16+
def close_logger(self):
17+
self.logger.close()
18+
print '%s:' % self.logger_filename
19+
syslog.syslog('%s:' % self.logger_filename)
20+
for line in open(self.logger_filename, "r"):
21+
print line,
22+
syslog.syslog(line)
23+
724
def forwards(self, orm):
25+
self.create_logger()
826
submitted = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='submit')
927
modified = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='modified')
1028
approved = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='approved')
29+
approved_state = orm['name.LiaisonStatementState'].objects.get(slug='approved')
1130
system_user = orm['person.Person'].objects.get(name="(System)")
1231
for liaison in orm['liaisons.LiaisonStatement'].objects.all():
1332
if liaison.submitted:
@@ -18,6 +37,7 @@ def forwards(self, orm):
1837
by=system_user)
1938
event.time = liaison.submitted
2039
event.save()
40+
self.logger.write("Created a liaison submitted event with date: %s\n" % liaison.submitted)
2141
if liaison.modified:
2242
event, _ = orm['liaisons.LiaisonStatementEvent'].objects.get_or_create(
2343
time=liaison.modified,
@@ -27,6 +47,7 @@ def forwards(self, orm):
2747
by=system_user)
2848
event.time = liaison.modified
2949
event.save()
50+
self.logger.write("Created a liaison modified event with date: %s\n" % liaison.submitted)
3051
if liaison.approved:
3152
event, _ = orm['liaisons.LiaisonStatementEvent'].objects.get_or_create(
3253
time=liaison.approved,
@@ -36,6 +57,10 @@ def forwards(self, orm):
3657
by=system_user)
3758
event.time = liaison.approved
3859
event.save()
60+
liaison.state = approved_state
61+
liaison.save()
62+
self.logger.write("Created a liaison approved event with date: %s\n" % liaison.submitted)
63+
self.close_logger()
3964

4065
def backwards(self, orm):
4166
"Write your backwards methods here."
@@ -163,6 +188,7 @@ def backwards(self, orm):
163188
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
164189
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
165190
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
191+
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
166192
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
167193
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
168194
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -281,6 +307,14 @@ def backwards(self, orm):
281307
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
282308
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
283309
},
310+
u'name.liaisonstatementstate': {
311+
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
312+
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
313+
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
314+
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
315+
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
316+
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
317+
},
284318
u'person.email': {
285319
'Meta': {'object_name': 'Email'},
286320
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

ietf/liaisons/migrations/0008_merge_to_with_response_contact.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,33 @@
11
# -*- coding: utf-8 -*-
2+
import syslog
3+
import os
4+
import datetime
25
from south.v2 import DataMigration
36

47

58
class Migration(DataMigration):
69

10+
def create_logger(self):
11+
migration_file = os.path.abspath(__file__)
12+
self.logger_filename = '%s.txt' % os.path.splitext(migration_file)[0]
13+
self.logger = open(self.logger_filename, "a")
14+
self.logger.write("\n\n%s\n--------------------\n" % datetime.datetime.now())
15+
16+
def close_logger(self):
17+
self.logger.close()
18+
print '%s:' % self.logger_filename
19+
syslog.syslog('%s:' % self.logger_filename)
20+
for line in open(self.logger_filename, "r"):
21+
print line,
22+
syslog.syslog(line)
23+
724
def forwards(self, orm):
25+
self.create_logger()
826
comment = orm['name.LiaisonStatementEventTypeName'].objects.get(slug='comment')
927
system_user = orm['person.Person'].objects.get(name="(System)")
10-
for liaison in orm['liaisons.LiaisonStatement'].objects.exclude(reply_to=''):
28+
liaison_list = orm['liaisons.LiaisonStatement'].objects.exclude(reply_to='')
29+
self.logger.write("Migrating %s liaisons that contains reply_to values\n" % liaison_list.count())
30+
for liaison in liaison_list:
1131
if liaison.reply_to in liaison.response_contacts:
1232
continue
1333
orm['liaisons.LiaisonStatementEvent'].objects.get_or_create(
@@ -17,6 +37,8 @@ def forwards(self, orm):
1737
by=system_user)
1838
liaison.response_contacts += ',%s' % liaison.reply_to
1939
liaison.save()
40+
self.logger.write('Liaison %s modified. Merged reply_to into response_contacts\n' % liaison.pk)
41+
self.close_logger()
2042

2143
def backwards(self, orm):
2244
"Write your backwards methods here."
@@ -144,6 +166,7 @@ def backwards(self, orm):
144166
'related_to': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['liaisons.LiaisonStatement']", 'null': 'True', 'blank': 'True'}),
145167
'reply_to': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
146168
'response_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
169+
'state': ('django.db.models.fields.related.ForeignKey', [], {'default': "'pending'", 'to': u"orm['name.LiaisonStatementState']"}),
147170
'submitted': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
148171
'technical_contacts': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
149172
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
@@ -262,6 +285,14 @@ def backwards(self, orm):
262285
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
263286
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
264287
},
288+
u'name.liaisonstatementstate': {
289+
'Meta': {'ordering': "['order']", 'object_name': 'LiaisonStatementState'},
290+
'desc': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
291+
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
292+
'order': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
293+
'slug': ('django.db.models.fields.CharField', [], {'max_length': '8', 'primary_key': 'True'}),
294+
'used': ('django.db.models.fields.BooleanField', [], {'default': 'True'})
295+
},
265296
u'person.email': {
266297
'Meta': {'object_name': 'Email'},
267298
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),

0 commit comments

Comments
 (0)