diff options
| -rw-r--r-- | chimere/main/admin.py | 7 | ||||
| -rw-r--r-- | chimere/main/forms.py | 2 | ||||
| -rwxr-xr-x | chimere/scripts/upgrade.py | 43 | 
3 files changed, 39 insertions, 13 deletions
| diff --git a/chimere/main/admin.py b/chimere/main/admin.py index 38bb2b8..30ea716 100644 --- a/chimere/main/admin.py +++ b/chimere/main/admin.py @@ -56,10 +56,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/main/forms.py b/chimere/main/forms.py index 1bc197f..ef13dc8 100644 --- a/chimere/main/forms.py +++ b/chimere/main/forms.py @@ -247,10 +247,8 @@ class AreaAdminForm(forms.ModelForm):          """          Custom save method in order to manage area          """ -        print 1          new_area = super(AreaAdminForm, self).save(*args, **keys)          area = self.cleaned_data['area'] -        print 2          new_area.upper_left_corner = 'POINT(%s %s)' % (area[0][0], area[0][1])          new_area.lower_right_corner = 'POINT(%s %s)' % (area[1][0],                                                           area[1][1]) diff --git a/chimere/scripts/upgrade.py b/chimere/scripts/upgrade.py index 0649a52..4c1cdc0 100755 --- a/chimere/scripts/upgrade.py +++ b/chimere/scripts/upgrade.py @@ -62,17 +62,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, @@ -80,9 +109,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 | 
