diff --git a/apps/activity/templates/activity/activity_detail.html b/apps/activity/templates/activity/activity_detail.html index 2971f46e..a94d1e37 100644 --- a/apps/activity/templates/activity/activity_detail.html +++ b/apps/activity/templates/activity/activity_detail.html @@ -10,7 +10,7 @@ SPDX-License-Identifier: GPL-3.0-or-later

{{ title }}

{% include "activity/includes/activity_info.html" %} -{% if ".change__opener"|has_perm:activity %} +{% if activity.activity_type.manage_entries and ".change__opener"|has_perm:activity %}

{% trans "Openers" %} diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json index 6c1ef7a0..d7f1a3c3 100644 --- a/apps/permission/fixtures/initial.json +++ b/apps/permission/fixtures/initial.json @@ -3119,7 +3119,7 @@ "activity", "activity" ], - "query": "{\"opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"open\": true}", + "query": "{\"opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"open\": true, \"activity_type__manage_entries\":true}", "type": "view", "mask": 2, "field": "", @@ -3135,7 +3135,7 @@ "activity", "activity" ], - "query": "{\"opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"open\": true}", + "query": "{\"opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"open\": true, \"activity_type__manage_entries\":true}", "type": "change", "mask": 2, "field": "open", @@ -3151,7 +3151,7 @@ "activity", "entry" ], - "query": "{\"activity__opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"activity__open\": true}", + "query": "{\"activity__opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"activity__open\": true, \"activity__activity_type__manage_entries\":true}", "type": "add", "mask": 2, "field": "", @@ -3167,7 +3167,7 @@ "activity", "entry" ], - "query": "{\"activity__opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"activity__open\": true}", + "query": "{\"activity__opener__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"activity__open\": true, \"activity__activity_type__manage_entries\":true}", "type": "view", "mask": 2, "field": "", @@ -3183,7 +3183,7 @@ "activity", "guest" ], - "query": "{\"activity__pk__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"activity__open\": true}", + "query": "{\"activity__pk__in\": [\"user\", \"note\", \"activity_responsible\", [\"all\"]], \"activity__open\": true, \"activity__activity_type__manage_entries\":true}", "type": "view", "mask": 2, "field": "", @@ -3199,7 +3199,7 @@ "activity", "guesttransaction" ], - "query": "[\"NOT\", {\"pk__isnull\": [\"user\", \"note\", \"activity_responsible\", [\"filter\", {\"activity__open\": true}], [\"exists\"]]}]", + "query": "[\"NOT\", {\"pk__isnull\": [\"user\", \"note\", \"activity_responsible\", [\"filter\", {\"activity__open\": true, \"activity__activity_type__manage_entries\":true}], [\"exists\"]]}]", "type": "add", "mask": 2, "field": "", @@ -3216,7 +3216,7 @@ "note", "specialtransaction" ], - "query": "[\"NOT\", {\"pk__isnull\": [\"user\", \"note\", \"activity_responsible\", [\"filter\", {\"activity__open\": true}], [\"exists\"]]}]", + "query": "[\"NOT\", {\"pk__isnull\": [\"user\", \"note\", \"activity_responsible\", [\"filter\", {\"activity__open\": true, \"activity__activity_type__manage_entries\":true}], [\"exists\"]]}]", "type": "add", "mask": 2, "field": "", @@ -3232,7 +3232,7 @@ "note", "notespecial" ], - "query": "[\"NOT\", {\"pk__isnull\": [\"user\", \"note\", \"activity_responsible\", [\"filter\", {\"activity__open\": true}], [\"exists\"]]}]", + "query": "[\"NOT\", {\"pk__isnull\": [\"user\", \"note\", \"activity_responsible\", [\"filter\", {\"activity__open\": true, \"activity__activity_type__manage_entries\":true}], [\"exists\"]]}]", "type": "view", "mask": 2, "field": "", diff --git a/docs/apps/activity.rst b/docs/apps/activity.rst index f4df6062..bdeaa865 100644 --- a/docs/apps/activity.rst +++ b/docs/apps/activity.rst @@ -8,7 +8,7 @@ peuvent être diffusées via des calendriers ou la mailing list d'événements. Modèles ------- -L'application comporte 5 modèles : activités, types d'activité, invités, entrées et transactions d'invitation. +L'application comporte 6 modèles : activités, types d'activité, invités, entrées, transactions d'invitation et les ouvreur⋅ses. Types d'activité ~~~~~~~~~~~~~~~~ @@ -71,6 +71,17 @@ comportent qu'un champ supplémentaire, de type ``OneToOneField`` vers ``Guest`` Ce modèle aurait pu appartenir à l'application ``note``, mais afin de rester modulaire et que l'application ``note`` ne dépende pas de cette application, on procède de cette manière. +Ouvreur⋅ses +~~~~~~~~~~~ + +Depuis la page d'une activité, il est possible d'ajouter des personnes en tant qu'« ouvreur⋅se ». Cela permet à une +personne sans aucun droit note de pouvoir faire les entrées d'une ``Activity``. Ce rôle n'est valable que pendant que +l'activité est ouverte et sur aucune autre activité. Les ouvreur⋅ses ont aussi accès à l'interface des transactions. + +Ce modèle regroupe : +* Activité (clé étrangère) +* Note (clé étrangère) + Graphe ~~~~~~ @@ -108,3 +119,6 @@ apparaîssent, afin de régler la taxe d'invitation : l'un prélève directement permettent un paiement par espèces ou par carte bancaire. En réalité, les deux derniers boutons enregistrent automatiquement un crédit sur la note de l'hôte, puis une transaction (de type ``GuestTransaction``) est faite depuis la note de l'hôte vers la note de l'organisateur de l'événement. + +Si une personne souhaite faire les entrées, il est possible de l'ajouter dans la liste des ouvreur⋅ses depuis la page +de l'activité.