source: asadb/groups/migrations/0014_recognize_nge_perm.py

space-accessstablestage
Last change on this file was be7c915, checked in by Alex Dehnert <adehnert@…>, 14 years ago

Make the migrations work on a new install

Apparently ContentTypes? and permissions aren't created until after Django
finishes. This is fine if you installed early before we had migrations
using those. However, if you installed later, your ContentTypes? wouldn't
be created until too late. (Naive get_or_create doesn't work, because you end
up with ContentTypes? without a reasonable name.)

  • Property mode set to 100644
File size: 13.2 KB
Line 
1# encoding: utf-8
2import datetime
3from south.db import db
4from south.v2 import DataMigration
5from django.db import models
6
7import util.migrations
8
9class Migration(DataMigration):
10
11    new_perms = (
12        ('groups', 'group', 'recognize_nge', 'Recognize Non-Group Entity'),
13    )
14
15    new_auth_groups = (
16        ('mit-sao', (
17            ('groups', 'group', 'view_group_private_info', ),
18            ('groups', 'group', 'view_signatories', ),
19            ('groups', 'groupnote', 'view_note_office', ),
20            ('groups', 'group', 'recognize_nge', ),
21        )),
22    )
23
24    def forwards(self, orm):
25        "Write your forwards methods here."
26        # Create the various contenttypes and permissions and stuff
27        # Otherwise the permission stuff will fail horribly
28        # http://groups.google.com/group/south-users/browse_thread/thread/666994cabad1a185?pli=1
29        db.send_pending_create_signals()
30
31        util.migrations.migrate_perms_forwards(orm, self.new_perms, )
32        util.migrations.migrate_groups_forwards(orm, self.new_auth_groups, )
33
34    def backwards(self, orm):
35        "Write your backwards methods here."
36        util.migrations.migrate_groups_backwards(orm, self.new_auth_groups, )
37        util.migrations.migrate_perms_backwards(orm, self.new_perms, )
38
39    models = {
40        'auth.group': {
41            'Meta': {'object_name': 'Group'},
42            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
43            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
44            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
45        },
46        'auth.permission': {
47            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
48            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
49            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
50            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
51            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
52        },
53        'auth.user': {
54            'Meta': {'object_name': 'User'},
55            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
56            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
57            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
58            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
59            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
60            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
61            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
62            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
63            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
64            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
65            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
66            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
67            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
68        },
69        'contenttypes.contenttype': {
70            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
71            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
72            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
73            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
74            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
75        },
76        'groups.activitycategory': {
77            'Meta': {'object_name': 'ActivityCategory'},
78            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
79            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
80        },
81        'groups.athenamoiraaccount': {
82            'Meta': {'object_name': 'AthenaMoiraAccount'},
83            'account_class': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
84            'add_date': ('django.db.models.fields.DateField', [], {}),
85            'del_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
86            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '45'}),
87            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
88            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '45'}),
89            'mit_id': ('django.db.models.fields.CharField', [], {'max_length': '15'}),
90            'mod_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
91            'mutable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
92            'username': ('django.db.models.fields.CharField', [], {'max_length': '8'})
93        },
94        'groups.group': {
95            'Meta': {'ordering': "('name',)", 'object_name': 'Group'},
96            'abbreviation': ('django.db.models.fields.CharField', [], {'max_length': '10', 'blank': 'True'}),
97            'activity_category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.ActivityCategory']", 'null': 'True', 'blank': 'True'}),
98            'advisor_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
99            'athena_locker': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
100            'constitution_url': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
101            'description': ('django.db.models.fields.TextField', [], {}),
102            'funding_account_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
103            'group_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.GroupClass']"}),
104            'group_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
105            'group_funding': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.GroupFunding']", 'null': 'True', 'blank': 'True'}),
106            'group_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.GroupStatus']"}),
107            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
108            'main_account_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
109            'meeting_times': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
110            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
111            'num_community': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
112            'num_grads': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
113            'num_other': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
114            'num_undergrads': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
115            'officer_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
116            'recognition_date': ('django.db.models.fields.DateField', [], {}),
117            'update_date': ('django.db.models.fields.DateTimeField', [], {}),
118            'updater': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True'}),
119            'website_url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
120        },
121        'groups.groupclass': {
122            'Meta': {'object_name': 'GroupClass'},
123            'description': ('django.db.models.fields.TextField', [], {}),
124            'gets_publicity': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
125            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
126            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
127            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
128        },
129        'groups.groupfunding': {
130            'Meta': {'object_name': 'GroupFunding'},
131            'contact_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
132            'funding_list': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
133            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
134            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
135            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
136        },
137        'groups.groupnote': {
138            'Meta': {'object_name': 'GroupNote'},
139            'acl_read_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
140            'acl_read_offices': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
141            'author': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
142            'body': ('django.db.models.fields.TextField', [], {}),
143            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.Group']"}),
144            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
145            'timestamp': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
146        },
147        'groups.groupstartup': {
148            'Meta': {'object_name': 'GroupStartup'},
149            'create_athena_locker': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
150            'create_group_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
151            'create_officer_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
152            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.Group']"}),
153            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
154            'president_kerberos': ('django.db.models.fields.CharField', [], {'max_length': '8'}),
155            'president_name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
156            'stage': ('django.db.models.fields.IntegerField', [], {}),
157            'submitter': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
158            'treasurer_kerberos': ('django.db.models.fields.CharField', [], {'max_length': '8'}),
159            'treasurer_name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
160        },
161        'groups.groupstatus': {
162            'Meta': {'object_name': 'GroupStatus'},
163            'description': ('django.db.models.fields.TextField', [], {}),
164            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
165            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
166            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
167            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
168        },
169        'groups.officeholder': {
170            'Meta': {'object_name': 'OfficeHolder'},
171            'end_time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)'}),
172            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.Group']"}),
173            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
174            'person': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
175            'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.OfficerRole']"}),
176            'start_time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
177        },
178        'groups.officerrole': {
179            'Meta': {'object_name': 'OfficerRole'},
180            'description': ('django.db.models.fields.TextField', [], {}),
181            'display_name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
182            'grant_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
183            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
184            'max_count': ('django.db.models.fields.IntegerField', [], {'default': '10000'}),
185            'publicly_visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
186            'require_student': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
187            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'})
188        }
189    }
190
191    complete_apps = ['groups']
Note: See TracBrowser for help on using the repository browser.