Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / migrations / 0023_populate_resource_data.py @ 670de92a

History | View | Annotate | Download (14.9 kB)

1
# encoding: utf-8
2

    
3
from south.v2 import DataMigration
4

    
5
from astakos.im.settings import SERVICES
6

    
7

    
8
class Migration(DataMigration):
9

    
10
    def forwards(self, orm):
11
        "Write your forwards methods here."
12

    
13
        try:
14
            default = orm.AstakosGroup.objects.get(name='default')
15
        except orm.AstakosGroup.DoesNotExist:
16
            return
17

    
18
        def create_policies(args):
19
            sn, dict = args
20
            url = dict.get('url') 
21
            policy = dict.get('quota') or ()
22
            s, created = orm.Service.objects.get_or_create(name=sn, url=url)
23
            if not created and not s.url:
24
                s.url = url
25
                s.save()
26

    
27
            for rn, l in policy.iteritems():
28
                try:
29
                    r, created = orm.Resource.objects.get_or_create(
30
                        service=s,
31
                        name=rn)
32
                except Exception, e:
33
                    print "Cannot create policy ", policy
34
                    continue
35

    
36
                q, created = orm.AstakosGroupQuota.objects.get_or_create(
37
                    group=default,
38
                    resource=r,
39
                    uplimit=l)
40
        map(create_policies, SERVICES.iteritems())
41

    
42
    def backwards(self, orm):
43
        try:
44
            default = orm.AstakosGroup.objects.get(name='default')
45
        except orm.AstakosGroup.DoesNotExist:
46
            return
47

    
48
        def destroy_policies(args):
49
            sn, dict = args
50
            url = dict.get('url') 
51
            policy = dict.get('quota') or ()
52
            for rn, l in policy.iteritems():
53
                try:
54
                    q = orm.AstakosGroupQuota.objects.get(
55
                        group=default,
56
                        resource__name=rn)
57
                    q.delete()
58
                except orm.AstakosGroupQuota.DoesNotExist:
59
                    continue
60
        
61
        map(destroy_policies, SERVICES.iteritems())
62
    
63
    models = {
64
        'auth.group': {
65
            'Meta': {'object_name': 'Group'},
66
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
67
            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
68
            'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
69
        },
70
        'auth.permission': {
71
            'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
72
            'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
73
            'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
74
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
75
            'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
76
        },
77
        'auth.user': {
78
            'Meta': {'object_name': 'User'},
79
            'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
80
            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
81
            'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
82
            'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
83
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
84
            'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
85
            'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
86
            'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
87
            'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
88
            'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
89
            'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
90
            'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
91
            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
92
        },
93
        'contenttypes.contenttype': {
94
            'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
95
            'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
96
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
97
            'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
98
            'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
99
        },
100
        'im.additionalmail': {
101
            'Meta': {'object_name': 'AdditionalMail'},
102
            'email': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
103
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
104
            'owner': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.AstakosUser']"})
105
        },
106
        'im.approvalterms': {
107
            'Meta': {'object_name': 'ApprovalTerms'},
108
            'date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 9, 11, 14, 9, 289091)', 'db_index': 'True'}),
109
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
110
            'location': ('django.db.models.fields.CharField', [], {'max_length': '255'})
111
        },
112
        'im.astakosgroup': {
113
            'Meta': {'object_name': 'AstakosGroup', '_ormbases': ['auth.Group']},
114
            'approval_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
115
            'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 9, 11, 14, 9, 283154)'}),
116
            'desc': ('django.db.models.fields.TextField', [], {'null': 'True'}),
117
            'estimated_participants': ('django.db.models.fields.PositiveIntegerField', [], {'null': 'True'}),
118
            'expiration_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
119
            'group_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.Group']", 'unique': 'True', 'primary_key': 'True'}),
120
            'issue_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
121
            'kind': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.GroupKind']"}),
122
            'moderation_enabled': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
123
            'policy': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['im.Resource']", 'null': 'True', 'through': "orm['im.AstakosGroupQuota']", 'blank': 'True'})
124
        },
125
        'im.astakosgroupquota': {
126
            'Meta': {'unique_together': "(('resource', 'group'),)", 'object_name': 'AstakosGroupQuota'},
127
            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.AstakosGroup']", 'blank': 'True'}),
128
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
129
            'limit': ('django.db.models.fields.PositiveIntegerField', [], {}),
130
            'resource': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.Resource']"}),
131
            'uplimit': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'})
132
        },
133
        'im.astakosuser': {
134
            'Meta': {'unique_together': "(('provider', 'third_party_identifier'),)", 'object_name': 'AstakosUser', '_ormbases': ['auth.User']},
135
            'activation_sent': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
136
            'affiliation': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
137
            'astakos_groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['im.AstakosGroup']", 'symmetrical': 'False', 'through': "orm['im.Membership']", 'blank': 'True'}),
138
            'auth_token': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
139
            'auth_token_created': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
140
            'auth_token_expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
141
            'date_signed_terms': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
142
            'email_verified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
143
            'has_credits': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
144
            'has_signed_terms': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
145
            'invitations': ('django.db.models.fields.IntegerField', [], {'default': '100'}),
146
            'is_verified': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
147
            'level': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
148
            'owner': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'related_name': "'owner'", 'null': 'True', 'to': "orm['im.AstakosGroup']"}),
149
            'policy': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['im.Resource']", 'null': 'True', 'through': "orm['im.AstakosUserQuota']", 'symmetrical': 'False'}),
150
            'provider': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
151
            'third_party_identifier': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
152
            'updated': ('django.db.models.fields.DateTimeField', [], {}),
153
            'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'})
154
        },
155
        'im.astakosuserquota': {
156
            'Meta': {'unique_together': "(('resource', 'user'),)", 'object_name': 'AstakosUserQuota'},
157
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
158
            'limit': ('django.db.models.fields.PositiveIntegerField', [], {}),
159
            'resource': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.Resource']"}),
160
            'uplimit': ('django.db.models.fields.BigIntegerField', [], {'null': 'True'}),
161
            'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.AstakosUser']"})
162
        },
163
        'im.emailchange': {
164
            'Meta': {'object_name': 'EmailChange'},
165
            'activation_key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '40', 'db_index': 'True'}),
166
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
167
            'new_email_address': ('django.db.models.fields.EmailField', [], {'max_length': '75'}),
168
            'requested_at': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2012, 8, 9, 11, 14, 9, 290713)'}),
169
            'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'emailchange_user'", 'unique': 'True', 'to': "orm['im.AstakosUser']"})
170
        },
171
        'im.groupkind': {
172
            'Meta': {'object_name': 'GroupKind'},
173
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
174
            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'})
175
        },
176
        'im.invitation': {
177
            'Meta': {'object_name': 'Invitation'},
178
            'code': ('django.db.models.fields.BigIntegerField', [], {'db_index': 'True'}),
179
            'consumed': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
180
            'created': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
181
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
182
            'inviter': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'invitations_sent'", 'null': 'True', 'to': "orm['im.AstakosUser']"}),
183
            'is_consumed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
184
            'realname': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
185
            'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
186
        },
187
        'im.membership': {
188
            'Meta': {'unique_together': "(('person', 'group'),)", 'object_name': 'Membership'},
189
            'date_joined': ('django.db.models.fields.DateField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
190
            'date_requested': ('django.db.models.fields.DateField', [], {'default': 'datetime.datetime(2012, 8, 9, 11, 14, 9, 286925)', 'blank': 'True'}),
191
            'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.AstakosGroup']"}),
192
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
193
            'person': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.AstakosUser']"})
194
        },
195
        'im.resource': {
196
            'Meta': {'object_name': 'Resource'},
197
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
198
            'meta': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['im.ResourceMetadata']", 'symmetrical': 'False'}),
199
            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
200
            'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['im.Service']"})
201
        },
202
        'im.resourcemetadata': {
203
            'Meta': {'object_name': 'ResourceMetadata'},
204
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
205
            'key': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
206
            'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
207
        },
208
        'im.service': {
209
            'Meta': {'object_name': 'Service'},
210
            'auth_token': ('django.db.models.fields.CharField', [], {'max_length': '32', 'null': 'True', 'blank': 'True'}),
211
            'auth_token_created': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
212
            'auth_token_expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
213
            'icon': ('django.db.models.fields.FilePathField', [], {'max_length': '100', 'blank': 'True'}),
214
            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
215
            'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255', 'db_index': 'True'}),
216
            'url': ('django.db.models.fields.FilePathField', [], {'max_length': '100'})
217
        }
218
    }
219

    
220
    complete_apps = ['im']