source: asadb/groups/migrations/0016_create_auth_groups.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: 16.0 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 django.contrib.auth.models
8
9import util.migrations
10
11auth_groups = [
12 (u'asa-ebm',
13  [(u'forms', u'fysm', u'add_fysm'),
14   (u'forms', u'fysm', u'change_fysm'),
15   (u'forms', u'fysm', u'delete_fysm'),
16   (u'forms', u'fysmcategory', u'add_fysmcategory'),
17   (u'forms', u'fysmcategory', u'change_fysmcategory'),
18   (u'forms', u'fysmcategory', u'delete_fysmcategory'),
19   (u'forms', u'groupmembershipupdate', u'add_groupmembershipupdate'),
20   (u'forms', u'groupmembershipupdate', u'change_groupmembershipupdate'),
21   (u'forms', u'groupmembershipupdate', u'delete_groupmembershipupdate'),
22   (u'forms', u'pagepreview', u'add_pagepreview'),
23   (u'forms', u'pagepreview', u'change_pagepreview'),
24   (u'forms', u'pagepreview', u'delete_pagepreview'),
25   (u'forms', u'personmembershipupdate', u'add_personmembershipupdate'),
26   (u'forms', u'personmembershipupdate', u'change_personmembershipupdate'),
27   (u'forms', u'personmembershipupdate', u'delete_personmembershipupdate'),
28   (u'groups', u'activitycategory', u'add_activitycategory'),
29   (u'groups', u'activitycategory', u'change_activitycategory'),
30   (u'groups', u'activitycategory', u'delete_activitycategory'),
31   (u'groups', u'group', u'add_group'),
32   (u'groups', u'group', u'admin_group'),
33   (u'groups', u'group', u'change_group'),
34   (u'groups', u'group', u'delete_group'),
35   (u'groups', u'group', u'view_group_private_info'),
36   (u'groups', u'group', u'view_signatories'),
37   (u'groups', u'group', u'recognize_nge'),
38   (u'groups', u'group', u'recognize_group'),
39   (u'groups', u'groupclass', u'add_groupclass'),
40   (u'groups', u'groupclass', u'change_groupclass'),
41   (u'groups', u'groupclass', u'delete_groupclass'),
42   (u'groups', u'groupfunding', u'add_groupfunding'),
43   (u'groups', u'groupfunding', u'change_groupfunding'),
44   (u'groups', u'groupfunding', u'delete_groupfunding'),
45   (u'groups', u'groupnote', u'add_groupnote'),
46   (u'groups', u'groupnote', u'change_groupnote'),
47   (u'groups', u'groupnote', u'delete_groupnote'),
48   (u'groups', u'groupnote', u'view_note_all'),
49   (u'groups', u'groupnote', u'view_note_group'),
50   (u'groups', u'groupnote', u'view_note_office'),
51   (u'groups', u'groupstatus', u'add_groupstatus'),
52   (u'groups', u'groupstatus', u'change_groupstatus'),
53   (u'groups', u'groupstatus', u'delete_groupstatus'),
54   (u'groups', u'officeholder', u'add_officeholder'),
55   (u'groups', u'officeholder', u'change_officeholder'),
56   (u'groups', u'officeholder', u'delete_officeholder'),
57   (u'groups', u'officerrole', u'add_officerrole'),
58   (u'groups', u'officerrole', u'change_officerrole'),
59   (u'groups', u'officerrole', u'delete_officerrole'),
60 ]),
61 (u'mit', []),
62 (u'autocreated', []),
63 (u'mit-offices',
64  [(u'groups', u'group', u'view_group_private_info'),
65   (u'groups', u'group', u'view_signatories'),
66   (u'groups', u'groupnote', u'view_note_office')]),
67 (u'mit-deskworker', [(u'groups', u'group', u'view_signatories')]),
68 (u'system:groupadmin',
69  [(u'groups', u'group', u'admin_group'),
70   (u'groups', u'group', u'view_group_private_info'),
71   (u'groups', u'groupnote', u'view_note_group')
72 ]),
73]
74
75class Migration(DataMigration):
76
77    depends_on = (
78        ("forms", "0001_initial", ),
79    )
80
81    def forwards(self, orm):
82        "Write your forwards methods here."
83        db.send_pending_create_signals()
84        util.migrations.migrate_groups_forwards(orm, auth_groups, )
85        user_manager = django.contrib.auth.models.User.objects
86        groupadmin_user, created = user_manager.get_or_create(username='groupadmin@SYSTEM', defaults={'password':'SYSTEM'})
87        groupadmin_group = django.contrib.auth.models.Group.objects.get(name='system:groupadmin')
88        groupadmin_user.groups.add(groupadmin_group)
89
90
91    def backwards(self, orm):
92        "Write your backwards methods here."
93        print "Warning: not trying to remove groupadmin@SYSTEM user."
94        util.migrations.migrate_groups_backwards(orm, auth_groups, )
95
96
97    models = {
98        'auth.group': {
99            'Meta': {'object_name': 'Group'},
100            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
101            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
102            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
103        },
104        'auth.permission': {
105            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
106            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
107            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
108            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
109            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
110        },
111        'auth.user': {
112            'Meta': {'object_name': 'User'},
113            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
114            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
115            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
116            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
117            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
118            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
119            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
120            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
121            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
122            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
123            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
124            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
125            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
126        },
127        'contenttypes.contenttype': {
128            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
129            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
130            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
131            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
132            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
133        },
134        'groups.activitycategory': {
135            'Meta': {'object_name': 'ActivityCategory'},
136            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
137            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
138        },
139        'groups.athenamoiraaccount': {
140            'Meta': {'object_name': 'AthenaMoiraAccount'},
141            'account_class': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
142            'add_date': ('django.db.models.fields.DateField', [], {}),
143            'del_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
144            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '45'}),
145            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
146            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '45'}),
147            'mit_id': ('django.db.models.fields.CharField', [], {'max_length': '15'}),
148            'mod_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
149            'mutable': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
150            'username': ('django.db.models.fields.CharField', [], {'max_length': '8'})
151        },
152        'groups.group': {
153            'Meta': {'ordering': "('name',)", 'object_name': 'Group'},
154            'abbreviation': ('django.db.models.fields.CharField', [], {'max_length': '10', 'blank': 'True'}),
155            'activity_category': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.ActivityCategory']", 'null': 'True', 'blank': 'True'}),
156            'advisor_name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
157            'athena_locker': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
158            'constitution_url': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
159            'description': ('django.db.models.fields.TextField', [], {}),
160            'funding_account_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
161            'group_class': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.GroupClass']"}),
162            'group_email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
163            'group_funding': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.GroupFunding']", 'null': 'True', 'blank': 'True'}),
164            'group_status': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.GroupStatus']"}),
165            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
166            'main_account_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
167            'meeting_times': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
168            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
169            'num_community': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
170            'num_grads': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
171            'num_other': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
172            'num_undergrads': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
173            'officer_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
174            'recognition_date': ('django.db.models.fields.DateField', [], {}),
175            'update_date': ('django.db.models.fields.DateTimeField', [], {}),
176            'updater': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True'}),
177            'website_url': ('django.db.models.fields.URLField', [], {'max_length': '200'})
178        },
179        'groups.groupclass': {
180            'Meta': {'object_name': 'GroupClass'},
181            'description': ('django.db.models.fields.TextField', [], {}),
182            'gets_publicity': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
183            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
184            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
185            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
186        },
187        'groups.groupfunding': {
188            'Meta': {'object_name': 'GroupFunding'},
189            'contact_email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
190            'funding_list': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
191            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
192            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
193            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
194        },
195        'groups.groupnote': {
196            'Meta': {'object_name': 'GroupNote'},
197            'acl_read_group': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
198            'acl_read_offices': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
199            'author': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
200            'body': ('django.db.models.fields.TextField', [], {}),
201            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.Group']"}),
202            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
203            'timestamp': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
204        },
205        'groups.groupstartup': {
206            'Meta': {'object_name': 'GroupStartup'},
207            'create_athena_locker': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
208            'create_group_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
209            'create_officer_list': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
210            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.Group']"}),
211            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
212            'president_kerberos': ('django.db.models.fields.CharField', [], {'max_length': '8'}),
213            'president_name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
214            'stage': ('django.db.models.fields.IntegerField', [], {}),
215            'submitter': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
216            'treasurer_kerberos': ('django.db.models.fields.CharField', [], {'max_length': '8'}),
217            'treasurer_name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
218        },
219        'groups.groupstatus': {
220            'Meta': {'object_name': 'GroupStatus'},
221            'description': ('django.db.models.fields.TextField', [], {}),
222            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
223            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
224            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
225            'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50', 'db_index': 'True'})
226        },
227        'groups.officeholder': {
228            'Meta': {'object_name': 'OfficeHolder'},
229            'end_time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)'}),
230            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.Group']"}),
231            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
232            'person': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
233            'role': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['groups.OfficerRole']"}),
234            'start_time': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'})
235        },
236        'groups.officerrole': {
237            'Meta': {'object_name': 'OfficerRole'},
238            'description': ('django.db.models.fields.TextField', [], {}),
239            'display_name': ('django.db.models.fields.CharField', [], {'max_length': '50'}),
240            'grant_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
241            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
242            'max_count': ('django.db.models.fields.IntegerField', [], {'default': '10000'}),
243            'publicly_visible': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
244            'require_student': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
245            'slug': ('django.db.models.fields.SlugField', [], {'max_length': '50', 'db_index': 'True'})
246        }
247    }
248
249    complete_apps = ['groups']
Note: See TracBrowser for help on using the repository browser.