| author | cavaliet |
| Mon, 18 Mar 2013 16:15:46 +0100 | |
| changeset 1132 | 026d510a3dc3 |
| parent 549 | 0313c23ffe7e |
| child 1190 | 129d45eec68c |
| permissions | -rw-r--r-- |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
1 |
from django.conf import settings |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
2 |
from django.contrib.auth.models import Group, User |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
3 |
from ldt.ldt_utils.models import Project, Content |
| 549 | 4 |
from guardian.shortcuts import assign, remove_perm |
| 510 | 5 |
from ldt.management.utils import show_progress |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
6 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
7 |
def set_default_permissions(verbose=False, is_migration=False, orm=None): |
| 510 | 8 |
writer = None |
9 |
||
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
10 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
11 |
if is_migration: |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
12 |
list_model = {'User': orm['auth.user'], |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
13 |
'Group': orm['auth.group'], |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
14 |
'Project': orm.Project, |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
15 |
'Content': orm.Content |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
16 |
} |
|
334
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
17 |
else: |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
18 |
list_model = {'Project': Project, |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
19 |
'Content': Content, |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
20 |
'User': User, |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
21 |
'Group': Group |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
22 |
} |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
23 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
24 |
everyone, created = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME) |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
25 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
26 |
if verbose: |
| 510 | 27 |
total = list_model['Project'].objects.count() |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
28 |
|
| 549 | 29 |
for i, proj in enumerate(list_model['Project'].objects.all()): |
| 515 | 30 |
|
31 |
if proj.state == 2: |
|
| 549 | 32 |
assign('ldt_utils.view_project', everyone, proj) |
| 515 | 33 |
else: |
| 549 | 34 |
remove_perm('ldt_utils.view_project', everyone, proj) |
35 |
||
36 |
assign('ldt_utils.view_project', proj.owner, proj) |
|
37 |
assign('ldt_utils.change_project', proj.owner, proj) |
|
| 515 | 38 |
|
| 510 | 39 |
if verbose: |
| 549 | 40 |
writer = show_progress(i, total, "Assign permissions to projects", 40, writer) |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
41 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
42 |
for published_proj in list_model['Project'].objects.filter(state=2): |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
43 |
assign('ldt_utils.view_project', everyone, published_proj) |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
44 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
45 |
if verbose: |
| 510 | 46 |
writer = None |
47 |
total = list_model['User'].objects.count() |
|
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
48 |
|
| 549 | 49 |
for i, user in enumerate(list_model['User'].objects.all()): |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
50 |
everyone.user_set.add(user) |
| 510 | 51 |
if verbose: |
| 549 | 52 |
writer = show_progress(i, total, "Assign permissions to groups", 40, writer) |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
53 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
54 |
for group in user.groups.exclude(name=settings.PUBLIC_GROUP_NAME): |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
55 |
for proj in list_model['Project'].objects.filter(owner=user): |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
56 |
assign('ldt_utils.view_project', group, proj) |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
57 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
58 |
for content in list_model['Content'].objects.all(): |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
59 |
if user.has_perm('view_content', content): |
|
334
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
60 |
assign('ldt_utils.view_media', user, content.media_obj) |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
61 |
|
| 503 | 62 |
|
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
63 |
for admin in list_model['User'].objects.filter(is_superuser=True): |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
64 |
for g in list_model['Group'].objects.all(): |
| 549 | 65 |
g.user_set.add(admin) |
66 |