diff options
| -rw-r--r-- | chimere/main/admin.py | 7 | ||||
| -rwxr-xr-x | chimere/scripts/upgrade.py | 43 |
2 files changed, 39 insertions, 11 deletions
diff --git a/chimere/main/admin.py b/chimere/main/admin.py index 31c9d5c..f63daa1 100644 --- a/chimere/main/admin.py +++ b/chimere/main/admin.py @@ -55,10 +55,9 @@ class MarkerAdmin(admin.ModelAdmin): qs = self.model._default_manager.get_query_set() if not request.user.is_superuser: areas = get_areas_for_user(request.user) - if not areas: - return self.model.objects.extra(where=['1=0']) - in_areas = " or ".join([area.getIncludeSql() for area in areas]) - qs = qs.extra(where=[in_areas]) + if areas: + in_areas = " or ".join([area.getIncludeSql() for area in areas]) + qs = qs.extra(where=[in_areas]) ordering = self.ordering or () if ordering: qs = qs.order_by(*ordering) diff --git a/chimere/scripts/upgrade.py b/chimere/scripts/upgrade.py index 463834d..5b6b04a 100755 --- a/chimere/scripts/upgrade.py +++ b/chimere/scripts/upgrade.py @@ -57,17 +57,46 @@ UNIQUE" transaction.commit_unless_managed() print " * urn field has now the constraint NOT NULL" +from django.contrib.auth.models import Permission, ContentType + +# check if permission have been correctly set for each areas +areas = Area.objects.all() +for area in areas: + content_type = ContentType.objects.get(app_label="main", + model="area") + mnemo = 'change_area_' + area.urn + perm = Permission.objects.filter(codename=mnemo) + if not perm: + lbl = "Can change " + area.name + perm = Permission(name=lbl, content_type_id=content_type.id, + codename=mnemo) + perm.save() + print ' * permission "' + lbl + '" has been created' + print " WARNING: don't forget to update administrator's rights with \ +this new permission" + # early versions before 0.1: subcategory_areas table doesn't exist +# version 1.0 subcategory_areas renamed to main_subcategory_areas -query = """SELECT c.relname FROM pg_class c -WHERE c.relname = 'subcategory_areas';""" +query = QUERY_CHECK_TABLE % 'main_subcategory_areas' cursor.execute(query) transaction.commit_unless_managed() row = cursor.fetchone() if not row: - query_create = """ -CREATE TABLE "subcategory_areas" ( + query = QUERY_CHECK_TABLE % 'subcategory_areas' + cursor.execute(query) + transaction.commit_unless_managed() + + row = cursor.fetchone() + if row: + query_rename = """ALTER TABLE subcategory_areas RENAME TO main_subcategory_areas;""" + cursor.execute(query_rename) + transaction.commit_unless_managed() + print " * subcategory_areas renamed to main_subcategory_areas" + else: + query_create = """ +CREATE TABLE "main_subcategory_areas" ( "id" serial NOT NULL PRIMARY KEY, "subcategory_id" integer NOT NULL REFERENCES "main_subcategory" ("id") DEFERRABLE INITIALLY DEFERRED, @@ -75,9 +104,9 @@ CREATE TABLE "subcategory_areas" ( DEFERRABLE INITIALLY DEFERRED, UNIQUE ("subcategory_id", "area_id")); """ - cursor.execute(query_create) - transaction.commit_unless_managed() - print " * subcategory_areas created" + cursor.execute(query_create) + transaction.commit_unless_managed() + print " * main_subcategory_areas created" # early versions before 0.1: main_tinyurl table doesn't exist |
