summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2024-11-12 17:27:25 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-02-19 14:43:49 +0100
commited6d2a764fcc76a0feba1c586acb9afddbecd16b (patch)
treea81b0bbfc3a45e6f895fc7e70652b94a97abd116 /ishtar_common
parentce7d642318f4e4c57dd552915b12eef360d33d70 (diff)
downloadIshtar-ed6d2a764fcc76a0feba1c586acb9afddbecd16b.tar.bz2
Ishtar-ed6d2a764fcc76a0feba1c586acb9afddbecd16b.zip
♻️ clean all "add_own"
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/fixtures/initial_data-fr.json63
-rw-r--r--ishtar_common/ishtar_menu.py17
-rw-r--r--ishtar_common/migrations/0201_squashed.py8
-rw-r--r--ishtar_common/migrations/0217_auto_20220328_1222.py2
-rw-r--r--ishtar_common/migrations/0220_auto_20220707_1633.py2
-rw-r--r--ishtar_common/migrations/0232_auto_20231115_1616.py4
-rw-r--r--ishtar_common/migrations/0243_default_biographicalnote_permissions.json24
-rw-r--r--ishtar_common/migrations/0244_imports_media_link.py2
-rw-r--r--ishtar_common/migrations/0256_clean_add_own_permissions.py31
-rw-r--r--ishtar_common/models.py5
-rw-r--r--ishtar_common/models_common.py1
-rw-r--r--ishtar_common/models_imports.py1
-rw-r--r--ishtar_common/urls.py6
-rw-r--r--ishtar_common/views.py20
14 files changed, 62 insertions, 124 deletions
diff --git a/ishtar_common/fixtures/initial_data-fr.json b/ishtar_common/fixtures/initial_data-fr.json
index 980ed3d1a..bff92b4ed 100644
--- a/ishtar_common/fixtures/initial_data-fr.json
+++ b/ishtar_common/fixtures/initial_data-fr.json
@@ -184,90 +184,60 @@
"Personnes : lecture"
],
[
- "Actes administratifs rattach\u00e9s : ajout"
- ],
- [
"Actes administratifs rattach\u00e9s : modification/suppression"
],
[
"Actes administratifs rattach\u00e9s : lecture"
],
[
- "D\u00e9p\u00f4ts rattach\u00e9s : ajout"
- ],
- [
"D\u00e9p\u00f4ts rattach\u00e9s : modification/suppression"
],
[
"D\u00e9p\u00f4ts rattach\u00e9s : lecture"
],
[
- "Documents rattach\u00e9s : ajout"
- ],
- [
"Documents rattach\u00e9s : modification/suppression"
],
[
"Documents rattach\u00e9s : lecture"
],
[
- "Dossiers rattach\u00e9s : ajout"
- ],
- [
"Dossiers rattach\u00e9s : modification/suppression"
],
[
"Dossiers rattach\u00e9s : lecture"
],
[
- "Mobilier rattach\u00e9 : ajout"
- ],
- [
"Mobilier rattach\u00e9 : modification/suppression"
],
[
"Mobilier rattach\u00e9 : lecture"
],
[
- "Op\u00e9rations rattach\u00e9es : ajout"
- ],
- [
"Op\u00e9rations rattach\u00e9es : modification/suppression"
],
[
"Op\u00e9rations rattach\u00e9es : lecture"
],
[
- "Organisations rattach\u00e9es : ajout"
- ],
- [
"Organisations rattach\u00e9es : modification/suppression"
],
[
"Organisations rattach\u00e9es : lecture"
],
[
- "Traitements rattach\u00e9s : ajout"
- ],
- [
"Traitements rattach\u00e9s : modification/suppression"
],
[
"Traitements rattach\u00e9s : lecture"
],
[
- "UE rattach\u00e9es : ajout"
- ],
- [
"UE rattach\u00e9es : modification/suppression"
],
[
"UE rattach\u00e9es : lecture"
],
[
- "Personnes rattach\u00e9es : ajout"
- ],
- [
"Personnes rattach\u00e9es : modification/suppression"
],
[
@@ -283,9 +253,6 @@
"Demandes de traitement : lecture"
],
[
- "Demandes de traitement rattach\u00e9es : ajout"
- ],
- [
"Demandes de traitement rattach\u00e9es : lecture"
],
[
@@ -353,18 +320,12 @@
"D\u00e9p\u00f4ts rattach\u00e9s : lecture"
],
[
- "Documents rattach\u00e9s : ajout"
- ],
- [
"Documents rattach\u00e9s : modification/suppression"
],
[
"Documents rattach\u00e9s : lecture"
],
[
- "Mobilier rattach\u00e9 : ajout"
- ],
- [
"Mobilier rattach\u00e9 : modification/suppression"
],
[
@@ -374,24 +335,15 @@
"Op\u00e9rations rattach\u00e9es : lecture"
],
[
- "Organisations rattach\u00e9es : ajout"
- ],
- [
"Traitements rattach\u00e9s : lecture"
],
[
- "UE rattach\u00e9es : ajout"
- ],
- [
"UE rattach\u00e9es : modification/suppression"
],
[
"UE rattach\u00e9es : lecture"
],
[
- "Personnes rattach\u00e9es : ajout"
- ],
- [
"Demandes de traitement rattach\u00e9es : lecture"
],
[
@@ -621,9 +573,6 @@
"D\u00e9p\u00f4ts rattach\u00e9s : lecture"
],
[
- "Documents rattach\u00e9s : ajout"
- ],
- [
"Documents rattach\u00e9s : modification/suppression"
],
[
@@ -633,9 +582,6 @@
"Dossiers rattach\u00e9s : lecture"
],
[
- "Mobilier rattach\u00e9 : ajout"
- ],
- [
"Mobilier rattach\u00e9 : modification/suppression"
],
[
@@ -648,24 +594,15 @@
"Op\u00e9rations rattach\u00e9es : lecture"
],
[
- "Organisations rattach\u00e9es : ajout"
- ],
- [
"Traitements rattach\u00e9s : lecture"
],
[
- "UE rattach\u00e9es : ajout"
- ],
- [
"UE rattach\u00e9es : modification/suppression"
],
[
"UE rattach\u00e9es : lecture"
],
[
- "Personnes rattach\u00e9es : ajout"
- ],
- [
"Demandes de traitement rattach\u00e9es : lecture"
],
[
diff --git a/ishtar_common/ishtar_menu.py b/ishtar_common/ishtar_menu.py
index 8cf047d51..9b18c9fd4 100644
--- a/ishtar_common/ishtar_menu.py
+++ b/ishtar_common/ishtar_menu.py
@@ -109,7 +109,6 @@ MENU_SECTIONS = [
model=models.Organization,
access_controls=[
"ishtar_common.add_organization",
- "ishtar_common.add_own_organization",
],
),
MenuItem(
@@ -118,7 +117,6 @@ MENU_SECTIONS = [
model=models.Organization,
access_controls=[
"ishtar_common.add_organization",
- "ishtar_common.add_own_organization",
],
),
MenuItem(
@@ -166,15 +164,19 @@ MENU_SECTIONS = [
"import-list",
_("Current imports"),
model=models.Import,
- access_controls=["ishtar_common.view_import",
- "ishtar_common.change_import"],
+ access_controls=[
+ "ishtar_common.view_import",
+ "ishtar_common.view_own_import",
+ ],
),
MenuItem(
"import-list-old",
_("Old imports"),
model=models.Import,
- access_controls=["ishtar_common.view_import",
- "ishtar_common.change_import"],
+ access_controls=[
+ "ishtar_common.view_import",
+ "ishtar_common.view_own_import",
+ ],
),
],
),
@@ -196,8 +198,7 @@ MENU_SECTIONS = [
"document/create",
_("Creation"),
model=models.Document,
- access_controls=["ishtar_common.add_document",
- "ishtar_common.add_own_document"],
+ access_controls=["ishtar_common.add_document"],
),
MenuItem(
"document/edit",
diff --git a/ishtar_common/migrations/0201_squashed.py b/ishtar_common/migrations/0201_squashed.py
index aa5582f9a..6a21afd2f 100644
--- a/ishtar_common/migrations/0201_squashed.py
+++ b/ishtar_common/migrations/0201_squashed.py
@@ -91,7 +91,7 @@ class Migration(migrations.Migration):
'verbose_name': 'Author',
'verbose_name_plural': 'Authors',
'ordering': ('author_type__order', 'person__name'),
- 'permissions': (('view_own_author', 'Can view own Author'), ('add_own_author', 'Can add own Author'), ('change_own_author', 'Can change own Author'), ('delete_own_author', 'Can delete own Author')),
+ 'permissions': (('view_own_author', 'Can view own Author'), ('change_own_author', 'Can change own Author'), ('delete_own_author', 'Can delete own Author')),
},
),
migrations.CreateModel(
@@ -200,7 +200,7 @@ class Migration(migrations.Migration):
'verbose_name': 'Document',
'verbose_name_plural': 'Documents',
'ordering': ('title',),
- 'permissions': (('view_own_document', 'Peut voir ses propres Documents'), ('add_own_document', 'Peut ajouter son propre Document'), ('change_own_document', 'Peut modifier ses propres Documents'), ('delete_own_document', 'Peut supprimer ses propres Documents')),
+ 'permissions': (('view_own_document', 'Peut voir ses propres Documents'), ('change_own_document', 'Peut modifier ses propres Documents'), ('delete_own_document', 'Peut supprimer ses propres Documents')),
},
bases=(ishtar_common.models.StatisticItem,
ishtar_common.models.TemplateItem,
@@ -749,7 +749,7 @@ class Migration(migrations.Migration):
options={
'verbose_name': 'Organization',
'verbose_name_plural': 'Organizations',
- 'permissions': (('view_own_organization', 'Can view own Organization'), ('add_own_organization', 'Can add own Organization'), ('change_own_organization', 'Can change own Organization'), ('delete_own_organization', 'Can delete own Organization')),
+ 'permissions': (('view_own_organization', 'Can view own Organization'), ('change_own_organization', 'Can change own Organization'), ('delete_own_organization', 'Can delete own Organization')),
},
bases=(ishtar_common.models.StatisticItem,
ishtar_common.models.TemplateItem, models.Model,
@@ -825,7 +825,7 @@ class Migration(migrations.Migration):
options={
'verbose_name': 'Person',
'verbose_name_plural': 'Persons',
- 'permissions': (('view_own_person', 'Can view own Person'), ('add_own_person', 'Can add own Person'), ('change_own_person', 'Can change own Person'), ('delete_own_person', 'Can delete own Person')),
+ 'permissions': (('view_own_person', 'Can view own Person'), ('change_own_person', 'Can change own Person'), ('delete_own_person', 'Can delete own Person')),
},
bases=(ishtar_common.models.StatisticItem,
ishtar_common.models.TemplateItem, models.Model,
diff --git a/ishtar_common/migrations/0217_auto_20220328_1222.py b/ishtar_common/migrations/0217_auto_20220328_1222.py
index 68135361d..7aba9fe95 100644
--- a/ishtar_common/migrations/0217_auto_20220328_1222.py
+++ b/ishtar_common/migrations/0217_auto_20220328_1222.py
@@ -119,7 +119,7 @@ class Migration(migrations.Migration):
),
migrations.AlterModelOptions(
name='person',
- options={'ordering': ['name', 'surname'], 'permissions': (('view_own_person', 'Can view own Person'), ('add_own_person', 'Can add own Person'), ('change_own_person', 'Can change own Person'), ('delete_own_person', 'Can delete own Person')), 'verbose_name': 'Person', 'verbose_name_plural': 'Persons'},
+ options={'ordering': ['name', 'surname'], 'permissions': (('view_own_person', 'Can view own Person'), ('change_own_person', 'Can change own Person'), ('delete_own_person', 'Can delete own Person')), 'verbose_name': 'Person', 'verbose_name_plural': 'Persons'},
),
migrations.AlterModelOptions(
name='spatialreferencesystem',
diff --git a/ishtar_common/migrations/0220_auto_20220707_1633.py b/ishtar_common/migrations/0220_auto_20220707_1633.py
index 600adc6a1..48fca1a68 100644
--- a/ishtar_common/migrations/0220_auto_20220707_1633.py
+++ b/ishtar_common/migrations/0220_auto_20220707_1633.py
@@ -14,7 +14,7 @@ class Migration(migrations.Migration):
operations = [
migrations.AlterModelOptions(
name='geovectordata',
- options={'permissions': (('view_own_geovectordata', 'Can view own Geographic - Vector data'), ('add_own_geovectordata', 'Can add own Geographic - Vector data'), ('change_own_geovectordata', 'Can change own Geographic - Vector data'), ('delete_own_geovectordata', 'Can delete own Geographic - Vector data')), 'verbose_name': 'Geographic - Vector data', 'verbose_name_plural': 'Geographic - Vector data'},
+ options={'permissions': (('view_own_geovectordata', 'Can view own Geographic - Vector data'), ('change_own_geovectordata', 'Can change own Geographic - Vector data'), ('delete_own_geovectordata', 'Can delete own Geographic - Vector data')), 'verbose_name': 'Geographic - Vector data', 'verbose_name_plural': 'Geographic - Vector data'},
),
migrations.AlterField(
model_name='document',
diff --git a/ishtar_common/migrations/0232_auto_20231115_1616.py b/ishtar_common/migrations/0232_auto_20231115_1616.py
index 0ddcf1b9b..e0cf37411 100644
--- a/ishtar_common/migrations/0232_auto_20231115_1616.py
+++ b/ishtar_common/migrations/0232_auto_20231115_1616.py
@@ -31,7 +31,7 @@ class Migration(migrations.Migration):
),
migrations.AlterModelOptions(
name='import',
- options={'permissions': (('view_own_import', 'Can view own Import'), ('add_own_import', 'Can add own Import'), ('change_own_import', 'Can change own Import'), ('delete_own_import', 'Can delete own Import')), 'verbose_name': 'Import - Import', 'verbose_name_plural': 'Import - Imports'},
+ options={'permissions': (('view_own_import', 'Can view own Import'), ('change_own_import', 'Can change own Import'), ('delete_own_import', 'Can delete own Import')), 'verbose_name': 'Import - Import', 'verbose_name_plural': 'Import - Imports'},
),
migrations.AlterModelOptions(
name='itemkey',
@@ -138,7 +138,7 @@ class Migration(migrations.Migration):
options={
'verbose_name': 'Import - Group',
'verbose_name_plural': 'Import - Groups',
- 'permissions': (('view_own_importgroup', 'Can view own Import Group'), ('add_own_importgroup', 'Can add own Import Group'), ('change_own_importgroup', 'Can change own Import Group'), ('delete_own_importgroup', 'Can delete own Import Group')),
+ 'permissions': (('view_own_importgroup', 'Can view own Import Group'), ('change_own_importgroup', 'Can change own Import Group'), ('delete_own_importgroup', 'Can delete own Import Group')),
},
bases=(models.Model, ishtar_common.utils.OwnPerms, ishtar_common.utils.SheetItem),
),
diff --git a/ishtar_common/migrations/0243_default_biographicalnote_permissions.json b/ishtar_common/migrations/0243_default_biographicalnote_permissions.json
index c2144a855..09238d92a 100644
--- a/ishtar_common/migrations/0243_default_biographicalnote_permissions.json
+++ b/ishtar_common/migrations/0243_default_biographicalnote_permissions.json
@@ -64,17 +64,6 @@
{
"model": "auth.permission",
"fields": {
- "name": "Can add own Biographical note",
- "content_type": [
- "ishtar_common",
- "biographicalnote"
- ],
- "codename": "add_own_biographicalnote"
- }
- },
- {
- "model": "auth.permission",
- "fields": {
"name": "Can change own Biographical note",
"content_type": [
"ishtar_common",
@@ -149,19 +138,6 @@
{
"model": "auth.group",
"fields": {
- "name": "Notices biographiques rattach\u00e9es : ajout",
- "permissions": [
- [
- "add_own_biographicalnote",
- "ishtar_common",
- "biographicalnote"
- ]
- ]
- }
- },
- {
- "model": "auth.group",
- "fields": {
"name": "Notices biographiques rattach\u00e9es : lecture",
"permissions": [
[
diff --git a/ishtar_common/migrations/0244_imports_media_link.py b/ishtar_common/migrations/0244_imports_media_link.py
index 88a36049f..f2437ceda 100644
--- a/ishtar_common/migrations/0244_imports_media_link.py
+++ b/ishtar_common/migrations/0244_imports_media_link.py
@@ -12,7 +12,7 @@ class Migration(migrations.Migration):
operations = [
migrations.AlterModelOptions(
name='biographicalnote',
- options={'permissions': (('view_own_biographicalnote', 'Can view own Biographical note'), ('add_own_biographicalnote', 'Can add own Biographical note'), ('change_own_biographicalnote', 'Can change own Biographical note'), ('delete_own_biographicalnote', 'Can delete own Biographical note')), 'verbose_name': 'Biographical note', 'verbose_name_plural': 'Biographical notes'},
+ options={'permissions': (('view_own_biographicalnote', 'Can view own Biographical note'), ('change_own_biographicalnote', 'Can change own Biographical note'), ('delete_own_biographicalnote', 'Can delete own Biographical note')), 'verbose_name': 'Biographical note', 'verbose_name_plural': 'Biographical notes'},
),
migrations.AddField(
model_name='import',
diff --git a/ishtar_common/migrations/0256_clean_add_own_permissions.py b/ishtar_common/migrations/0256_clean_add_own_permissions.py
new file mode 100644
index 000000000..6ad695dca
--- /dev/null
+++ b/ishtar_common/migrations/0256_clean_add_own_permissions.py
@@ -0,0 +1,31 @@
+# Generated by Django 2.2.28 on 2024-11-12 17:12
+
+from django.db import migrations
+
+
+def clean_permissions(app, __):
+ Group = app.get_model("auth", "group")
+ for group in Group.objects.filter(permissions__codename__startswith="add_own_").all():
+ if group.permissions.exclude(
+ codename__startswith="add_own_").count():
+ # other groups, only remove "own"
+ for own_grp in group.permissions.filter(
+ codename__startswith="add_own_").all():
+ group.permissions.remove(own_grp)
+ continue
+ for user in group.user_set.all():
+ user.groups.remove(group)
+ for pt in group.profile_types.all():
+ pt.groups.remove(group)
+ group.delete()
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0255_migrate_delete_perm_clean_groups'),
+ ]
+
+ operations = [
+ migrations.RunPython(clean_permissions)
+ ]
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index eb9e73150..ab79f4baa 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -2701,7 +2701,6 @@ class Organization(Address, Merge, OwnPerms, BaseGenderedType, ValueGetter, Main
verbose_name_plural = _("Organizations")
permissions = (
("view_own_organization", "Can view own Organization"),
- ("add_own_organization", "Can add own Organization"),
("change_own_organization", "Can change own Organization"),
("delete_own_organization", "Can delete own Organization"),
)
@@ -3008,7 +3007,6 @@ class Person(Address, Merge, OwnPerms, ValueGetter, MainItem):
]
permissions = (
("view_own_person", "Can view own Person"),
- ("add_own_person", "Can add own Person"),
("change_own_person", "Can change own Person"),
("delete_own_person", "Can delete own Person"),
)
@@ -3276,7 +3274,6 @@ class BiographicalNote(BaseHistorizedItem, ValueGetter, MainItem):
verbose_name_plural = _("Biographical notes")
permissions = (
("view_own_biographicalnote", "Can view own Biographical note"),
- ("add_own_biographicalnote", "Can add own Biographical note"),
("change_own_biographicalnote", "Can change own Biographical note"),
("delete_own_biographicalnote", "Can delete own Biographical note"),
)
@@ -4308,7 +4305,6 @@ class Author(FullSearch):
ordering = ("author_type__order", "person__name")
permissions = (
("view_own_author", "Can view own Author"),
- ("add_own_author", "Can add own Author"),
("change_own_author", "Can change own Author"),
("delete_own_author", "Can delete own Author"),
)
@@ -5053,7 +5049,6 @@ class Document(
ordering = ("title",)
permissions = (
("view_own_document", ugettext("Can view own Document")),
- ("add_own_document", ugettext("Can add own Document")),
("change_own_document", ugettext("Can change own Document")),
("delete_own_document", ugettext("Can delete own Document")),
)
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index aa52d82c7..9ad73f314 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -2358,7 +2358,6 @@ class GeoVectorData(Imported, OwnPerms):
unique_together = ("source_content_type", "source_id", "import_key")
permissions = (
("view_own_geovectordata", "Can view own Geographic - Vector data"),
- ("add_own_geovectordata", "Can add own Geographic - Vector data"),
("change_own_geovectordata", "Can change own Geographic - Vector data"),
("delete_own_geovectordata", "Can delete own Geographic - Vector data"),
)
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index 8f4686666..a33b599c7 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -1576,7 +1576,6 @@ class ImportGroup(BaseImport):
verbose_name_plural = _("Import - Groups")
permissions = (
("view_own_importgroup", "Can view own Import Group"),
- ("add_own_importgroup", "Can add own Import Group"),
("change_own_importgroup", "Can change own Import Group"),
("delete_own_importgroup", "Can delete own Import Group"),
)
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index e0e93a071..09790dda6 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -622,7 +622,7 @@ urlpatterns += [
url(
r"document/create/$",
check_permissions(
- ["ishtar_common.add_document", "ishtar_common.add_own_document"]
+ ["ishtar_common.add_document"]
)(views.DocumentCreateView.as_view()),
name="create-document",
),
@@ -699,14 +699,14 @@ urlpatterns += [
url(
r"geo/create/(?P<app_source>[-\w]+)/(?P<model_source>[-\w]+)/(?P<source_pk>\d+)/$",
check_permissions(
- ["ishtar_common.add_geovectordata", "ishtar_common.add_own_geovectordata"]
+ ["ishtar_common.add_geovectordata"]
)(views.GeoPreCreateView.as_view()),
name="create-pre-geo",
),
url(
r"geo/create/(?P<app_source>[-\w]+)/(?P<model_source>[-\w]+)/(?P<source_pk>\d+)/(?P<geom_type>[-\w]+)/$",
check_permissions(
- ["ishtar_common.add_geovectordata", "ishtar_common.add_own_geovectordata"]
+ ["ishtar_common.add_geovectordata"]
)(views.GeoCreateView.as_view()),
name="create-geo",
),
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index b3f062c8d..21b563bfc 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -3521,17 +3521,17 @@ class GeoCreateView(GeoFormMixin, CreateView):
obj = model.objects.get(pk=self.kwargs.get("source_pk"))
except model.DoesNotExist:
raise Http404()
+
+ # check permission to add and view attached item
+ attached_meta = model._meta
+ perm_attached = f"{attached_meta.app_label}.view_{attached_meta.model_name}"
+ perm_own_attached = f"{attached_meta.app_label}.view_own_{attached_meta.model_name}"
if not ishtaruser.has_permission(
- "ishtar_common.add_geovectordata"):
- # -> add_own_geovectordata
- # check permission to view attached item
- meta = model._meta
- perm = f"{meta.app_label}.view_{meta.model_name}"
- perm_own = f"{meta.app_label}.view_own_{meta.model_name}"
- if not ishtaruser.has_permission(perm) \
- and not ishtaruser.has_permission(perm_own, obj=obj):
- # check permission to view own attached item
- raise Http404()
+ "ishtar_common.add_geovectordata") or (
+ not ishtaruser.has_permission(perm_attached)
+ and not ishtaruser.has_permission(perm_own_attached, obj=obj)):
+ # check permission to view own attached item
+ raise Http404()
kwargs["main_items_fields"] = {}
for k in models.GeoVectorData.RELATED_MODELS:
kwargs["main_items_fields"][k] = []