Revision 5ce3ce4f 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.v2 import DataMigration
4 4
from django.db.models import Count
5 5

  
6

  
6 7
class Migration(DataMigration):
7 8
    def forwards(self, orm):
8
        
9

  
9 10
        def _create_groupkind(name):
10 11
            try:
11 12
                orm.GroupKind(name=name).save()
12 13
            except:
13 14
                pass
14
                                        
15

  
15 16
        t = ('default', 'course', 'project', 'laboratory', 'organization')
16 17
        map(_create_groupkind, t)
17
        
18

  
18 19
        default = orm.GroupKind.objects.get(name='default')
19
        
20

  
20 21
        groups = {}
22

  
21 23
        def _create_astakogroup(name):
22 24
            try:
23 25
                groups[name] = orm.AstakosGroup.objects.get(name=name)
24 26
            except orm.AstakosGroup.DoesNotExist:
25 27
                try:
26 28
                    g = orm['auth.Group'].objects.get(name=name)
27
                    groups[name] = extended = orm.AstakosGroup(group_ptr_id=g.pk)
29
                    groups[
30
                        name] = extended = orm.AstakosGroup(group_ptr_id=g.pk)
28 31
                    extended.__dict__.update(g.__dict__)
29 32
                    extended.kind = default
30 33
                    extended.approval_date = datetime.datetime.now()
31 34
                    extended.issue_date = datetime.datetime.now()
32 35
                    extended.moderation_enabled = False
33 36
                    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()
37
                                                ).save(),
37
                    map(lambda u: orm.Membership(group=extended,
38
                                                 person=orm.AstakosUser.objects.get(id=u.id),
39
                                                 date_joined=datetime.datetime.now()
40
                                                 ).save(),
38 41
                        g.user_set.all())
39 42
                except orm['auth.Group'].DoesNotExist:
40
                    groups[name] = orm.AstakosGroup(    name=name,
41
                                                        kind=default,
42
                                                        approval_date=datetime.datetime.now(),
43
                                                        issue_date=datetime.datetime.now(),
44
                                                        moderation_enabled=False
43
                    groups[name] = orm.AstakosGroup(name=name,
44
                                                    kind=default,
45
                                                    approval_date=datetime.datetime.now(),
46
                                                    issue_date=datetime.datetime.now(),
47
                                                    moderation_enabled=False
45 48
                                                    )
46 49
                    groups[name].save()
47
        
48
        # catch integrate 
49
        t = ('default', 'shibboleth', 'helpdesk', 'faculty', 'ugrad', 'grad', 'researcher', 'associate')
50

  
51
        # catch integrate
52
        t = ('default', 'shibboleth', 'helpdesk', 'faculty',
53
             'ugrad', 'grad', 'researcher', 'associate')
50 54
        map(_create_astakogroup, t)
51
        
52
        orphans = orm.AstakosUser.objects.annotate(num_groups=Count('astakos_groups')).filter(num_groups = 0)
53
        map ( lambda u: orm.Membership(group=groups['default'], person=u, date_joined=datetime.datetime.now()).save(), orphans )
54
        
55

  
56
        orphans = orm.AstakosUser.objects.annotate(
57
            num_groups=Count('astakos_groups')).filter(num_groups=0)
58
        map(lambda u: orm.Membership(group=groups['default'],
59
                                     person=u, date_joined=datetime.datetime.now()).save(), orphans)
60

  
55 61
    def backwards(self, orm):
56 62
        def _delete_groupkind(name):
57 63
            try:
58 64
                orm.GroupKind.objects.get(name=name).delete()
59 65
            except orm.GroupKind.DoesNotExist:
60 66
                pass
61
        
67

  
62 68
        def _delete_astakosgroup(name):
63 69
            try:
64 70
                orm.AstakosGroup.objects.get(name=name).delete()
65 71
            except orm.AstakosGroup.DoesNotExist:
66 72
                pass
67
        
68
        t = ('default', 'shibboleth', 'helpdesk', 'faculty', 'ugrad', 'grad', 'researcher', 'associate')
73

  
74
        t = ('default', 'shibboleth', 'helpdesk', 'faculty',
75
             'ugrad', 'grad', 'researcher', 'associate')
69 76
        map(_delete_astakosgroup, t)
70
        
77

  
71 78
        t = ('default', 'course', 'project', 'laboratory', 'organization')
72 79
        map(_delete_groupkind, t)
73 80

  

Also available in: Unified diff