Revision 89df3638 snf-astakos-app/astakos/im/migrations/0016_populate_group_data.py
b/snf-astakos-app/astakos/im/migrations/0016_populate_group_data.py | ||
---|---|---|
3 | 3 |
from south.db import db |
4 | 4 |
from south.v2 import DataMigration |
5 | 5 |
from django.db import models |
6 |
from django.db.models import Count |
|
6 | 7 |
|
7 | 8 |
class Migration(DataMigration): |
8 | 9 |
def forwards(self, orm): |
... | ... | |
18 | 19 |
|
19 | 20 |
default = orm.GroupKind.objects.get(name='default') |
20 | 21 |
|
22 |
groups = {} |
|
21 | 23 |
def _create_astakogroup(name): |
22 | 24 |
try: |
23 |
orm.AstakosGroup.objects.get(name=name) |
|
25 |
groups[name] = orm.AstakosGroup.objects.get(name=name)
|
|
24 | 26 |
except orm.AstakosGroup.DoesNotExist: |
25 | 27 |
try: |
26 |
g = orm['auth.Group'].objects.get(name=name)
|
|
27 |
extended = orm.AstakosGroup(group_ptr_id=g.pk) |
|
28 |
g = orm['auth.Group'].objects.get(name=name) |
|
29 |
groups[name] = extended = orm.AstakosGroup(group_ptr_id=g.pk)
|
|
28 | 30 |
extended.__dict__.update(g.__dict__) |
29 | 31 |
extended.kind = default |
30 | 32 |
extended.approval_date = datetime.datetime.now() |
31 | 33 |
extended.issue_date = datetime.datetime.now() |
32 | 34 |
extended.moderation_enabled = False |
33 | 35 |
extended.save() |
34 |
map(lambda u:orm.Membership( group=extended, |
|
35 |
person=orm.AstakosUser.objects.get(id=u.id), |
|
36 |
date_joined=datetime.datetime.now()).save(), |
|
36 |
map(lambda u:orm.Membership( group=extended, |
|
37 |
person=orm.AstakosUser.objects.get(id=u.id), |
|
38 |
date_joined=datetime.datetime.now() |
|
39 |
).save(), |
|
37 | 40 |
g.user_set.all()) |
38 | 41 |
except orm['auth.Group'].DoesNotExist: |
39 |
orm.AstakosGroup( name=name, |
|
40 |
kind=default, |
|
41 |
approval_date=datetime.datetime.now(), |
|
42 |
issue_date=datetime.datetime.now(), |
|
43 |
moderation_enabled=False).save() |
|
42 |
groups[name] = orm.AstakosGroup( name=name, |
|
43 |
kind=default, |
|
44 |
approval_date=datetime.datetime.now(), |
|
45 |
issue_date=datetime.datetime.now(), |
|
46 |
moderation_enabled=False |
|
47 |
) |
|
48 |
groups[name].save() |
|
44 | 49 |
|
45 | 50 |
# catch integrate |
46 | 51 |
t = ('default', 'shibboleth', 'helpdesk', 'faculty', 'ugrad', 'grad', 'researcher', 'associate') |
47 | 52 |
map(_create_astakogroup, t) |
48 | 53 |
|
54 |
orphans = orm.AstakosUser.objects.annotate(num_groups=Count('astakos_groups')).filter(num_groups = 0) |
|
55 |
map ( lambda u: orm.Membership(group=groups['default'], person=u).save(), orphans ) |
|
56 |
|
|
49 | 57 |
def backwards(self, orm): |
50 | 58 |
def _delete_groupkind(name): |
51 | 59 |
try: |
Also available in: Unified diff