| author | cavaliet |
| Mon, 24 Jun 2013 10:59:11 +0200 | |
| changeset 1215 | 125ea12cce61 |
| parent 1191 | b6e0b1811723 |
| child 1238 | ffa5e70f643f |
| 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 |
| 1191 | 2 |
from django.contrib.auth import get_user_model |
3 |
from django.contrib.auth.models import Group |
|
|
1190
129d45eec68c
Clean warning and errors for Django 1.5
ymh <ymh.work@gmail.com>
parents:
549
diff
changeset
|
4 |
from guardian.shortcuts import assign, remove_perm |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
5 |
from ldt.ldt_utils.models import Project, Content |
| 510 | 6 |
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
|
7 |
|
| 1191 | 8 |
User = get_user_model() |
9 |
||
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
10 |
def set_default_permissions(verbose=False, is_migration=False, orm=None): |
| 510 | 11 |
writer = None |
12 |
||
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
13 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
14 |
if is_migration: |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
15 |
list_model = {'User': orm['auth.user'], |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
16 |
'Group': orm['auth.group'], |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
17 |
'Project': orm.Project, |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
18 |
'Content': orm.Content |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
19 |
} |
|
334
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
20 |
else: |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
21 |
list_model = {'Project': Project, |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
22 |
'Content': Content, |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
23 |
'User': User, |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
24 |
'Group': Group |
|
b4b11979cd4a
Specify explicit app name when assigning permissions when using comand assignpermissions
verrierj
parents:
331
diff
changeset
|
25 |
} |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
26 |
|
|
1190
129d45eec68c
Clean warning and errors for Django 1.5
ymh <ymh.work@gmail.com>
parents:
549
diff
changeset
|
27 |
everyone, _ = Group.objects.get_or_create(name=settings.PUBLIC_GROUP_NAME) |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
28 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
29 |
if verbose: |
| 510 | 30 |
total = list_model['Project'].objects.count() |
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
31 |
|
| 549 | 32 |
for i, proj in enumerate(list_model['Project'].objects.all()): |
| 515 | 33 |
|
34 |
if proj.state == 2: |
|
| 549 | 35 |
assign('ldt_utils.view_project', everyone, proj) |
| 515 | 36 |
else: |
| 549 | 37 |
remove_perm('ldt_utils.view_project', everyone, proj) |
38 |
||
39 |
assign('ldt_utils.view_project', proj.owner, proj) |
|
40 |
assign('ldt_utils.change_project', proj.owner, proj) |
|
| 515 | 41 |
|
| 510 | 42 |
if verbose: |
| 549 | 43 |
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
|
44 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
45 |
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
|
46 |
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
|
47 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
48 |
if verbose: |
| 510 | 49 |
writer = None |
50 |
total = list_model['User'].objects.count() |
|
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
51 |
|
| 549 | 52 |
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
|
53 |
everyone.user_set.add(user) |
| 510 | 54 |
if verbose: |
| 549 | 55 |
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
|
56 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
57 |
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
|
58 |
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
|
59 |
assign('ldt_utils.view_project', group, proj) |
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
60 |
|
|
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
61 |
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
|
62 |
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
|
63 |
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
|
64 |
|
| 503 | 65 |
|
|
331
9978257745a5
Add command to set default permission (./manage.py assignpermissions) + corrected migration order
verrierj
parents:
diff
changeset
|
66 |
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
|
67 |
for g in list_model['Group'].objects.all(): |
| 549 | 68 |
g.user_set.add(admin) |
69 |