1
0
mirror of https://gitlab.crans.org/bde/nk20 synced 2025-07-01 05:21:15 +02:00

Compare commits

..

2 Commits

Author SHA1 Message Date
17be896a99 [permission] Add PermissionVar model 2022-10-10 19:37:51 +02:00
a69573ccdb Fix permission that allows users to create OAuth2 apps
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2022-08-29 11:21:45 +02:00
10 changed files with 203 additions and 163 deletions

View File

@ -1,5 +0,0 @@
from rest_framework.pagination import PageNumberPagination
class CustomPagination(PageNumberPagination):
page_size_query_param = 'page_size'

View File

@ -4,7 +4,7 @@
from django.contrib import admin from django.contrib import admin
from note_kfet.admin import admin_site from note_kfet.admin import admin_site
from .models import Permission, PermissionMask, Role from .models import Permission, PermissionVar, PermissionMask, Role
@admin.register(PermissionMask, site=admin_site) @admin.register(PermissionMask, site=admin_site)
@ -15,6 +15,14 @@ class PermissionMaskAdmin(admin.ModelAdmin):
list_display = ('description', 'rank', ) list_display = ('description', 'rank', )
@admin.register(PermissionVar, site=admin_site)
class PermissionVarAdmin(admin.ModelAdmin):
"""
Admin customisation for PermissionVar
"""
list_display = ('name', 'description',)
@admin.register(Permission, site=admin_site) @admin.register(Permission, site=admin_site)
class PermissionAdmin(admin.ModelAdmin): class PermissionAdmin(admin.ModelAdmin):
""" """

View File

@ -243,7 +243,7 @@
"type": "delete", "type": "delete",
"mask": 1, "mask": 1,
"field": "", "field": "",
"permanent": true, "permanent": false,
"description": "Supprimer un alias à sa note" "description": "Supprimer un alias à sa note"
} }
}, },
@ -369,7 +369,7 @@
], ],
"query": "{}", "query": "{}",
"type": "change", "type": "change",
"mask": 2, "mask": 1,
"field": "valid", "field": "valid",
"permanent": false, "permanent": false,
"description": "Mettre à jour le statut de validation d'une transaction" "description": "Mettre à jour le statut de validation d'une transaction"
@ -705,7 +705,7 @@
], ],
"query": "{}", "query": "{}",
"type": "view", "type": "view",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Voir toutes les transactions d'invitation" "description": "Voir toutes les transactions d'invitation"
@ -737,7 +737,7 @@
], ],
"query": "{\"pk\": [\"club\", \"pk\"]}", "query": "{\"pk\": [\"club\", \"pk\"]}",
"type": "change", "type": "change",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Modifier un club" "description": "Modifier un club"
@ -865,7 +865,7 @@
], ],
"query": "{}", "query": "{}",
"type": "add", "type": "add",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Ajouter un utilisateur" "description": "Ajouter un utilisateur"
@ -881,7 +881,7 @@
], ],
"query": "{\"email_confirmed\": false, \"registration_valid\": false}", "query": "{\"email_confirmed\": false, \"registration_valid\": false}",
"type": "add", "type": "add",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Ajouter un profil" "description": "Ajouter un profil"
@ -961,7 +961,7 @@
], ],
"query": "{\"destination\": [\"club\", \"note\"]}", "query": "{\"destination\": [\"club\", \"note\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 2,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Modifier le bouton d'un club" "description": "Modifier le bouton d'un club"
@ -1105,7 +1105,7 @@
], ],
"query": "{}", "query": "{}",
"type": "add", "type": "add",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Ajouter un crédit de la Soci\u00e9t\u00e9 g\u00e9n\u00e9rale" "description": "Ajouter un crédit de la Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"
@ -1137,7 +1137,7 @@
], ],
"query": "{}", "query": "{}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Modifier un crédit de la Soci\u00e9t\u00e9 g\u00e9n\u00e9rale" "description": "Modifier un crédit de la Soci\u00e9t\u00e9 g\u00e9n\u00e9rale"
@ -1281,7 +1281,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"first_year\": true, \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"], \"membership\": null}", "query": "{\"wei\": [\"club\"], \"first_year\": true, \"wei__membership_start__lte\": [\"today\"], \"wei__membership_end__gte\": [\"today\"], \"membership\": null}",
"type": "add", "type": "add",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Inscrire un 1A au WEI" "description": "Inscrire un 1A au WEI"
@ -1297,7 +1297,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"], \"membership\": null}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"], \"membership\": null}",
"type": "add", "type": "add",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Inscrire n'importe qui au WEI" "description": "Inscrire n'importe qui au WEI"
@ -1313,7 +1313,7 @@
], ],
"query": "{\"wei\": [\"club\"]}", "query": "{\"wei\": [\"club\"]}",
"type": "delete", "type": "delete",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Supprimer une inscription WEI" "description": "Supprimer une inscription WEI"
@ -1345,9 +1345,9 @@
], ],
"query": "{\"wei\": [\"club\"]}", "query": "{\"wei\": [\"club\"]}",
"type": "view", "type": "view",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": true,
"description": "Voir toutes les inscriptions WEI" "description": "Voir toutes les inscriptions WEI"
} }
}, },
@ -1361,7 +1361,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "soge_credit", "field": "soge_credit",
"permanent": false, "permanent": false,
"description": "Indiquer si une inscription WEI est payée par la Société générale" "description": "Indiquer si une inscription WEI est payée par la Société générale"
@ -1393,7 +1393,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 2, "mask": 1,
"field": "caution_check", "field": "caution_check",
"permanent": false, "permanent": false,
"description": "Dire si un chèque de caution est donné pour une inscription WEI" "description": "Dire si un chèque de caution est donné pour une inscription WEI"
@ -1409,7 +1409,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "birth_date", "field": "birth_date",
"permanent": false, "permanent": false,
"description": "Modifier la date de naissance d'une inscription WEI" "description": "Modifier la date de naissance d'une inscription WEI"
@ -1441,7 +1441,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "gender", "field": "gender",
"permanent": false, "permanent": false,
"description": "Modifier le genre de toute inscription WEI" "description": "Modifier le genre de toute inscription WEI"
@ -1473,7 +1473,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "health_issues", "field": "health_issues",
"permanent": false, "permanent": false,
"description": "Modifier les problèmes de santé de toutes les inscriptions WEI" "description": "Modifier les problèmes de santé de toutes les inscriptions WEI"
@ -1505,7 +1505,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "emergency_contact_name", "field": "emergency_contact_name",
"permanent": false, "permanent": false,
"description": "Modifier le nom du contact en cas d'urgence de toute inscription WEI" "description": "Modifier le nom du contact en cas d'urgence de toute inscription WEI"
@ -1537,7 +1537,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "emergency_contact_phone", "field": "emergency_contact_phone",
"permanent": false, "permanent": false,
"description": "Modifier le téléphone du contact en cas d'urgence de toute inscription WEI" "description": "Modifier le téléphone du contact en cas d'urgence de toute inscription WEI"
@ -1569,7 +1569,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "information_json", "field": "information_json",
"permanent": false, "permanent": false,
"description": "Modifier les informations (sondage 1A, ...) d'une inscription WEI" "description": "Modifier les informations (sondage 1A, ...) d'une inscription WEI"
@ -1697,9 +1697,9 @@
], ],
"query": "[\"AND\", {\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}, [\"OR\", {\"registration__soge_credit\": true}, {\"user__note__balance__gte\": {\"F\": [\"F\", \"fee\"]}}]]", "query": "[\"AND\", {\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}, [\"OR\", {\"registration__soge_credit\": true}, {\"user__note__balance__gte\": {\"F\": [\"F\", \"fee\"]}}]]",
"type": "add", "type": "add",
"mask": 2, "mask": 3,
"field": "", "field": "",
"permanent": false, "permanent": true,
"description": "Créer une adhésion WEI pour le dernier WEI" "description": "Créer une adhésion WEI pour le dernier WEI"
} }
}, },
@ -1713,7 +1713,7 @@
], ],
"query": "{\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}", "query": "{\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 2, "mask": 1,
"field": "bus", "field": "bus",
"permanent": false, "permanent": false,
"description": "Modifier le bus d'une adhésion WEI" "description": "Modifier le bus d'une adhésion WEI"
@ -1729,7 +1729,7 @@
], ],
"query": "{\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}", "query": "{\"club\": [\"club\"], \"club__weiclub__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 2, "mask": 1,
"field": "team", "field": "team",
"permanent": false, "permanent": false,
"description": "Modifier l'équipe d'une adhésion WEI" "description": "Modifier l'équipe d'une adhésion WEI"
@ -1745,9 +1745,9 @@
], ],
"query": "{\"club\": [\"club\"]}", "query": "{\"club\": [\"club\"]}",
"type": "view", "type": "view",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": true,
"description": "Voir toutes les adhésions au WEI" "description": "Voir toutes les adhésions au WEI"
} }
}, },
@ -1777,9 +1777,9 @@
], ],
"query": "{\"club\": [\"club\"], \"bus\": [\"membership\", \"weimembership\", \"bus\"]}", "query": "{\"club\": [\"club\"], \"bus\": [\"membership\", \"weimembership\", \"bus\"]}",
"type": "view", "type": "view",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": true,
"description": "Voir les membres du bus" "description": "Voir les membres du bus"
} }
}, },
@ -1793,9 +1793,9 @@
], ],
"query": "{\"club\": [\"club\"], \"team\": [\"membership\", \"weimembership\", \"team\"]}", "query": "{\"club\": [\"club\"], \"team\": [\"membership\", \"weimembership\", \"team\"]}",
"type": "view", "type": "view",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": true,
"description": "Voir les membres de l'équipe" "description": "Voir les membres de l'équipe"
} }
}, },
@ -1809,7 +1809,7 @@
], ],
"query": "{\"pk\": [\"membership\", \"weimembership\", \"bus\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}", "query": "{\"pk\": [\"membership\", \"weimembership\", \"bus\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "name", "field": "name",
"permanent": false, "permanent": false,
"description": "Modifier le nom du bus" "description": "Modifier le nom du bus"
@ -1825,7 +1825,7 @@
], ],
"query": "{\"pk\": [\"membership\", \"weimembership\", \"bus\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}", "query": "{\"pk\": [\"membership\", \"weimembership\", \"bus\", \"pk\"], \"wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "description", "field": "description",
"permanent": false, "permanent": false,
"description": "Modifier la description du bus" "description": "Modifier la description du bus"
@ -1841,7 +1841,7 @@
], ],
"query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}", "query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}",
"type": "add", "type": "add",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Ajouter une équipe à mon bus" "description": "Ajouter une équipe à mon bus"
@ -1857,7 +1857,7 @@
], ],
"query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}", "query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "name", "field": "name",
"permanent": false, "permanent": false,
"description": "Modifier le nom d'une équipe de mon bus" "description": "Modifier le nom d'une équipe de mon bus"
@ -1873,7 +1873,7 @@
], ],
"query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}", "query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "color", "field": "color",
"permanent": false, "permanent": false,
"description": "Modifier la couleur d'une équipe de mon bus" "description": "Modifier la couleur d'une équipe de mon bus"
@ -1889,7 +1889,7 @@
], ],
"query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}", "query": "{\"bus\": [\"membership\", \"weimembership\", \"bus\"], \"bus__wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "description", "field": "description",
"permanent": false, "permanent": false,
"description": "Modifier la description d'une équipe de mon bus" "description": "Modifier la description d'une équipe de mon bus"
@ -1905,7 +1905,7 @@
], ],
"query": "{\"pk\": [\"membership\", \"weimembership\", \"team\", \"pk\"], \"bus__wei__date_end__gte\": [\"today\"]}", "query": "{\"pk\": [\"membership\", \"weimembership\", \"team\", \"pk\"], \"bus__wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "name", "field": "name",
"permanent": false, "permanent": false,
"description": "Modifier le nom de mon équipe" "description": "Modifier le nom de mon équipe"
@ -1921,7 +1921,7 @@
], ],
"query": "{\"pk\": [\"membership\", \"weimembership\", \"team\", \"pk\"], \"bus__wei__date_end__gte\": [\"today\"]}", "query": "{\"pk\": [\"membership\", \"weimembership\", \"team\", \"pk\"], \"bus__wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "color", "field": "color",
"permanent": false, "permanent": false,
"description": "Modifier la couleur de mon équipe" "description": "Modifier la couleur de mon équipe"
@ -1937,7 +1937,7 @@
], ],
"query": "{\"pk\": [\"membership\", \"weimembership\", \"team\", \"pk\"], \"bus__wei__date_end__gte\": [\"today\"]}", "query": "{\"pk\": [\"membership\", \"weimembership\", \"team\", \"pk\"], \"bus__wei__date_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "description", "field": "description",
"permanent": false, "permanent": false,
"description": "Modifier la description de mon équipe" "description": "Modifier la description de mon équipe"
@ -1967,7 +1967,7 @@
"note", "note",
"transaction" "transaction"
], ],
"query": "[\"AND\", [\"OR\", {\"source\": [\"club\", \"note\"]}, {\"destination\": [\"club\", \"note\"]}], [\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": false}, {\"destination__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": true}]]", "query": "[\"AND\", [\"OR\", {\"source\": [\"club\", \"note\"]}, {\"destination\": [\"club\", \"note\"]}], [\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": true}, {\"destination__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": false}]]",
"type": "change", "type": "change",
"mask": 2, "mask": 2,
"field": "valid", "field": "valid",
@ -1985,7 +1985,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "clothing_cut", "field": "clothing_cut",
"permanent": false, "permanent": false,
"description": "Modifier la coupe de vêtements d'une inscription WEI" "description": "Modifier la coupe de vêtements d'une inscription WEI"
@ -2017,7 +2017,7 @@
], ],
"query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}", "query": "{\"wei\": [\"club\"], \"wei__membership_end__gte\": [\"today\"]}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "clothing_size", "field": "clothing_size",
"permanent": false, "permanent": false,
"description": "Modifier la taille de vêtements d'une inscription WEI" "description": "Modifier la taille de vêtements d'une inscription WEI"
@ -2225,7 +2225,7 @@
], ],
"query": "{}", "query": "{}",
"type": "add", "type": "add",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Créer une note d'utilisateur" "description": "Créer une note d'utilisateur"
@ -2257,7 +2257,7 @@
], ],
"query": "{}", "query": "{}",
"type": "view", "type": "view",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Voir toutes les notes de club" "description": "Voir toutes les notes de club"
@ -2276,7 +2276,7 @@
"mask": 3, "mask": 3,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Voir tous les adhérents de tous les clubs" "description": "Voir tous les adhérents du club"
} }
}, },
{ {
@ -2564,7 +2564,7 @@
"mask": 3, "mask": 3,
"field": "inactivity_reason", "field": "inactivity_reason",
"permanent": false, "permanent": false,
"description": "(Dé)bloquer n'importe quelle note et indiquer la raison" "description": "(Dé)bloquer sa propre note et modifier la raison"
} }
}, },
{ {
@ -2607,7 +2607,7 @@
"note", "note",
"transaction" "transaction"
], ],
"query": "[\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": false}, {\"destination__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": true}]", "query": "[\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": true}, {\"destination__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": false}]",
"type": "change", "type": "change",
"mask": 2, "mask": 2,
"field": "valid", "field": "valid",
@ -2623,7 +2623,7 @@
"note", "note",
"transaction" "transaction"
], ],
"query": "[\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": false}, {\"destination__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": true}]", "query": "[\"OR\", {\"source__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": true}, {\"destination__balance__gte\": {\"F\": [\"SUB\", [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]], 5000]}, \"valid\": false}]",
"type": "change", "type": "change",
"mask": 2, "mask": 2,
"field": "invalidity_reason", "field": "invalidity_reason",
@ -2641,7 +2641,7 @@
], ],
"query": "{\"club\": [\"club\"]}", "query": "{\"club\": [\"club\"]}",
"type": "change", "type": "change",
"mask": 2, "mask": 1,
"field": "display_image", "field": "display_image",
"permanent": false, "permanent": false,
"description": "Changer l'image de la note de son club" "description": "Changer l'image de la note de son club"
@ -2657,7 +2657,7 @@
], ],
"query": "{\"note__is_active\": true}", "query": "{\"note__is_active\": true}",
"type": "add", "type": "add",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Ajouter n'importe quel alias à une note non bloquée" "description": "Ajouter n'importe quel alias à une note non bloquée"
@ -2753,7 +2753,7 @@
], ],
"query": "{\"profile__registration_valid\": false}", "query": "{\"profile__registration_valid\": false}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Modifier n'importe quel utilisateur non encore inscrit" "description": "Modifier n'importe quel utilisateur non encore inscrit"
@ -2769,7 +2769,7 @@
], ],
"query": "{\"registration_valid\": false}", "query": "{\"registration_valid\": false}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Modifier n'importe quel profil non encore inscrit" "description": "Modifier n'importe quel profil non encore inscrit"
@ -2865,7 +2865,7 @@
], ],
"query": "{}", "query": "{}",
"type": "change", "type": "change",
"mask": 3, "mask": 1,
"field": "display_image", "field": "display_image",
"permanent": false, "permanent": false,
"description": "Changer l'image de n'importe quelle note" "description": "Changer l'image de n'importe quelle note"
@ -2883,7 +2883,7 @@
"type": "change", "type": "change",
"mask": 3, "mask": 3,
"field": "is_active", "field": "is_active",
"permanent": false, "permanent": true,
"description": "(Dé)bloquer la note de son club manuellement" "description": "(Dé)bloquer la note de son club manuellement"
} }
}, },
@ -2899,7 +2899,7 @@
"type": "change", "type": "change",
"mask": 3, "mask": 3,
"field": "inactivity_reason", "field": "inactivity_reason",
"permanent": false, "permanent": true,
"description": "(Dé)bloquer la note de son club et indiquer que cela a été fait manuellement" "description": "(Dé)bloquer la note de son club et indiquer que cela a été fait manuellement"
} }
}, },
@ -2979,7 +2979,7 @@
"type": "delete", "type": "delete",
"mask": 1, "mask": 1,
"field": "", "field": "",
"permanent": true, "permanent": false,
"description": "Supprimer une amitié à sa note" "description": "Supprimer une amitié à sa note"
} }
}, },
@ -3009,7 +3009,7 @@
], ],
"query": "{\"trusting__is_active\": true}", "query": "{\"trusting__is_active\": true}",
"type": "add", "type": "add",
"mask": 3, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Ajouter une amitié à une note non bloquée" "description": "Ajouter une amitié à une note non bloquée"
@ -3073,28 +3073,12 @@
], ],
"query": "[\"AND\", {\"source__trusting__trusted\": [\"user\", \"note\"]}, [\"OR\", {\"source__balance__gte\": {\"F\": [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]]}}, {\"valid\": false}]]", "query": "[\"AND\", {\"source__trusting__trusted\": [\"user\", \"note\"]}, [\"OR\", {\"source__balance__gte\": {\"F\": [\"MUL\", [\"F\", \"amount\"], [\"F\", \"quantity\"]]}}, {\"valid\": false}]]",
"type": "add", "type": "add",
"mask": 2, "mask": 1,
"field": "", "field": "",
"permanent": false, "permanent": false,
"description": "Transférer de l'argent depuis une note amie en restant positif" "description": "Transférer de l'argent depuis une note amie en restant positif"
} }
}, },
{
"model": "permission.permission",
"pk": 197,
"fields": {
"model": [
"note",
"specialtransaction"
],
"query": "{\"source__notespecial__gte\":0}",
"type": "add",
"mask": 2,
"field": "",
"permanent": false,
"description": "Créer un crédit quelconque"
}
},
{ {
"model": "permission.role", "model": "permission.role",
"pk": 1, "pk": 1,
@ -3120,7 +3104,6 @@
16, 16,
17, 17,
22, 22,
34,
48, 48,
52, 52,
126, 126,
@ -3146,9 +3129,11 @@
"name": "Adh\u00e9rent Kfet", "name": "Adh\u00e9rent Kfet",
"permissions": [ "permissions": [
22, 22,
34,
36, 36,
39, 39,
40, 40,
70,
78, 78,
79, 79,
83, 83,
@ -3173,7 +3158,9 @@
158, 158,
159, 159,
160, 160,
179 179,
189,
190
] ]
} }
}, },
@ -3210,7 +3197,9 @@
"for_club": null, "for_club": null,
"name": "Pr\u00e9sident\u00b7e de club", "name": "Pr\u00e9sident\u00b7e de club",
"permissions": [ "permissions": [
50,
62, 62,
141,
142 142
] ]
} }
@ -3222,17 +3211,23 @@
"for_club": null, "for_club": null,
"name": "Tr\u00e9sorier\u00b7\u00e8re de club", "name": "Tr\u00e9sorier\u00b7\u00e8re de club",
"permissions": [ "permissions": [
59,
19, 19,
20, 20,
21, 21,
27, 27,
59,
60, 60,
61, 61,
62, 62,
127, 127,
133, 133,
136,
141,
142, 142,
150,
166,
167,
168,
182, 182,
184, 184,
185 185
@ -3251,16 +3246,7 @@
26, 26,
27, 27,
30, 30,
33, 33
41,
42,
63,
66,
135,
136,
137,
150,
172
] ]
} }
}, },
@ -3282,10 +3268,6 @@
31, 31,
32, 32,
33, 33,
37,
38,
41,
42,
43, 43,
51, 51,
53, 53,
@ -3301,7 +3283,6 @@
67, 67,
68, 68,
69, 69,
70,
71, 71,
72, 72,
73, 73,
@ -3316,12 +3297,12 @@
143, 143,
146, 146,
147, 147,
148,
149,
150, 150,
151, 151,
163, 163,
164, 164,
170,
171,
172, 172,
173, 173,
174, 174,
@ -3329,7 +3310,10 @@
176, 176,
177, 177,
178, 178,
183 188,
183,
186,
187
] ]
} }
}, },
@ -3541,6 +3525,12 @@
"for_club": 2, "for_club": 2,
"name": "GC Kfet", "name": "GC Kfet",
"permissions": [ "permissions": [
32,
56,
58,
55,
57,
52,
23, 23,
24, 24,
25, 25,
@ -3550,16 +3540,20 @@
29, 29,
30, 30,
31, 31,
32, 70,
37, 72,
38, 143,
41,
43,
148,
149,
166, 166,
167, 167,
168, 168,
170,
171,
176,
177,
178,
179,
180,
181,
182 182
] ]
} }
@ -3571,9 +3565,6 @@
"for_club": 2, "for_club": 2,
"name": "Res[pot]", "name": "Res[pot]",
"permissions": [ "permissions": [
19,
25,
26,
37, 37,
38, 38,
41, 41,
@ -3596,8 +3587,6 @@
"name": "GC WEI", "name": "GC WEI",
"permissions": [ "permissions": [
22, 22,
70,
72,
76, 76,
85, 85,
86, 86,
@ -3619,8 +3608,8 @@
111, 111,
112, 112,
113, 113,
128, 130,
130 131
] ]
} }
}, },
@ -3633,13 +3622,12 @@
"permissions": [ "permissions": [
22, 22,
84, 84,
115,
117, 117,
118, 118,
119,
120, 120,
121, 121,
122 122,
115
] ]
} }
}, },
@ -3700,7 +3688,18 @@
"name": "Adhérent WEI", "name": "Adhérent WEI",
"permissions": [ "permissions": [
77, 77,
114 87,
90,
93,
95,
97,
99,
101,
108,
109,
114,
128,
130
] ]
} }
}, },
@ -3711,9 +3710,6 @@
"for_club": 1, "for_club": 1,
"name": "Secrétaire BDE", "name": "Secrétaire BDE",
"permissions": [ "permissions": [
37,
41,
53,
54, 54,
55, 55,
56, 56,
@ -3722,21 +3718,15 @@
135, 135,
136, 136,
137, 137,
138,
139, 139,
140, 140,
143, 143,
145, 145,
146, 146,
147, 147,
148,
149,
150, 150,
176, 176,
177, 177
180,
181,
183
] ]
} }
}, },
@ -3748,16 +3738,20 @@
"name": "PC Kfet", "name": "PC Kfet",
"permissions": [ "permissions": [
6, 6,
22,
24, 24,
25, 25,
26,
27, 27,
30, 30,
34,
49, 49,
50, 50,
55, 55,
56, 56,
57,
58,
70, 70,
72,
135, 135,
137, 137,
143, 143,
@ -3768,7 +3762,8 @@
168, 168,
176, 176,
177, 177,
197 180,
181
] ]
} }
}, },

View File

@ -0,0 +1,22 @@
# Generated by Django 2.2.28 on 2022-10-10 17:37
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('permission', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='PermissionVar',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.SlugField(unique=True, verbose_name='name')),
('query', models.TextField(verbose_name='query')),
('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
],
),
]

View File

@ -118,6 +118,25 @@ class PermissionMask(models.Model):
verbose_name_plural = _("permission masks") verbose_name_plural = _("permission masks")
class PermissionVar(models.Model):
name = models.SlugField(
unique=True,
blank=False,
verbose_name=_("name"),
)
query = models.TextField(
verbose_name=_("query"),
)
description = models.CharField(
max_length=255,
blank=True,
verbose_name=_("description"),
)
class Permission(models.Model): class Permission(models.Model):
PERMISSION_TYPES = [ PERMISSION_TYPES = [
@ -139,6 +158,7 @@ class Permission(models.Model):
# query -> ["AND", query, …] AND multiple queries # query -> ["AND", query, …] AND multiple queries
# | ["OR", query, …] OR multiple queries # | ["OR", query, …] OR multiple queries
# | ["NOT", query] Opposite of query # | ["NOT", query] Opposite of query
# | ["VAR", query] A var name as defined in PermissionVar
# query -> {key: value, …} A list of fields and values of a Q object # query -> {key: value, …} A list of fields and values of a Q object
# key -> string A field name # key -> string A field name
# value -> int | string | bool | null Literal values # value -> int | string | bool | null Literal values
@ -150,6 +170,7 @@ class Permission(models.Model):
# | ["MUL", oper, …] Multiply F objects or literals # | ["MUL", oper, …] Multiply F objects or literals
# | int | string | bool | null Literal values # | int | string | bool | null Literal values
# | ["F", string] A field # | ["F", string] A field
# | ["VAR", string] A var name as defined in PermissionVar
# #
# Examples: # Examples:
# Q(is_superuser=True) := {"is_superuser": true} # Q(is_superuser=True) := {"is_superuser": true}
@ -215,6 +236,8 @@ class Permission(models.Model):
return functools.reduce(operator.mul, [Permission.compute_f(oper, **kwargs) for oper in oper[1:]]) return functools.reduce(operator.mul, [Permission.compute_f(oper, **kwargs) for oper in oper[1:]])
elif oper[0] == 'F': elif oper[0] == 'F':
return F(oper[1]) return F(oper[1])
elif oper[0] == 'VAR':
return compute_f(json.loads(PermissionVar.objects.get(name=oper[1]).query), **kwargs)
else: else:
field = kwargs[oper[0]] field = kwargs[oper[0]]
for i in range(1, len(oper)): for i in range(1, len(oper)):
@ -289,6 +312,8 @@ class Permission(models.Model):
return functools.reduce(operator.or_, [Permission._about(query, **kwargs) for query in query[1:]]) return functools.reduce(operator.or_, [Permission._about(query, **kwargs) for query in query[1:]])
elif query[0] == 'NOT': elif query[0] == 'NOT':
return ~Permission._about(query[1], **kwargs) return ~Permission._about(query[1], **kwargs)
elif query[0] == 'VAR':
return Permission._about(json.loads(PermissionVar.objects.get(name=query[1]).query), **kwargs)
else: else:
return Q(pk=F("pk")) if Permission.compute_param(query, **kwargs) else ~Q(pk=F("pk")) return Q(pk=F("pk")) if Permission.compute_param(query, **kwargs) else ~Q(pk=F("pk"))
elif isinstance(query, dict): elif isinstance(query, dict):
@ -339,7 +364,6 @@ class Role(models.Model):
"member.Club", "member.Club",
verbose_name=_("for club"), verbose_name=_("for club"),
on_delete=models.PROTECT, on_delete=models.PROTECT,
blank=True,
null=True, null=True,
default=None, default=None,
) )

View File

@ -310,8 +310,8 @@ class SogeCredit(models.Model):
amount = sum(transaction.total for transaction in self.transactions.all()) amount = sum(transaction.total for transaction in self.transactions.all())
if 'wei' in settings.INSTALLED_APPS: if 'wei' in settings.INSTALLED_APPS:
from wei.models import WEIMembership from wei.models import WEIMembership
if not WEIMembership.objects\ if not WEIMembership.objects.filter(club__weiclub__year=datetime.date.today().year, user=self.user)\
.filter(club__weiclub__year=self.credit_transaction.created_at.year, user=self.user).exists(): .exists():
# 80 € for people that don't go to WEI # 80 € for people that don't go to WEI
amount += 8000 amount += 8000
return amount return amount
@ -329,18 +329,17 @@ class SogeCredit(models.Model):
bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start) bde_qs = Membership.objects.filter(user=self.user, club=bde, date_start__gte=bde.membership_start)
kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start) kfet_qs = Membership.objects.filter(user=self.user, club=kfet, date_start__gte=kfet.membership_start)
## Soge do not pay BDE and kfet memberships this year (2022-2023) if bde_qs.exists():
# if bde_qs.exists(): m = bde_qs.get()
# m = bde_qs.get() if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership
# if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership if m.transaction not in self.transactions.all():
# if m.transaction not in self.transactions.all(): self.transactions.add(m.transaction)
# self.transactions.add(m.transaction)
# if kfet_qs.exists():
# if kfet_qs.exists(): m = kfet_qs.get()
# m = kfet_qs.get() if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership
# if MembershipTransaction.objects.filter(membership=m).exists(): # non-free membership if m.transaction not in self.transactions.all():
# if m.transaction not in self.transactions.all(): self.transactions.add(m.transaction)
# self.transactions.add(m.transaction)
if 'wei' in settings.INSTALLED_APPS: if 'wei' in settings.INSTALLED_APPS:
from wei.models import WEIClub from wei.models import WEIClub

View File

@ -108,7 +108,7 @@ class InvoiceListView(LoginRequiredMixin, SingleTableView):
name="", name="",
address="", address="",
) )
if not PermissionBackend.check_perm(self.request, "treasury.view_invoice", sample_invoice): if not PermissionBackend.check_perm(self.request, "treasury.add_invoice", sample_invoice):
raise PermissionDenied(_("You are not able to see the treasury interface.")) raise PermissionDenied(_("You are not able to see the treasury interface."))
return super().dispatch(request, *args, **kwargs) return super().dispatch(request, *args, **kwargs)

View File

@ -14,17 +14,14 @@ from .base import WEISurvey, WEISurveyInformation, WEISurveyAlgorithm, WEIBusInf
from ...models import WEIMembership from ...models import WEIMembership
WORDS = [ WORDS = [
'ABBA', 'After', 'Alcoolique anonyme', 'Ambiance festive', 'Années 2000', 'Apéro', 'Art', '13 organisé', '3ième mi temps', 'Années 2000', 'Apéro', 'BBQ', 'BP', 'Beauf', 'Binge drinking', 'Bon enfant',
'Baby foot billard biere pong', 'BBQ', 'Before', 'Bière pong', 'Bon enfant', 'Calme', 'Canapé', 'Cartouche', 'Catacombes', 'Chansons paillardes', 'Chansons populaires', 'Chanteur', 'Chartreuse', 'Chill',
'Chanson paillarde', 'Chanson populaire', 'Chartreuse', 'Cheerleader', 'Chill', 'Choré', 'Core', 'DJ', 'Dancefloor', 'Danse', 'David Guetta', 'Disco', 'Eau de vie', 'Électro', 'Escalade', 'Familial',
'Cinéma', 'Cocktail', 'Comédie musicle', 'Commercial', 'Copaing', 'Danse', 'Dancefloor', 'Fanfare', 'Fracassage', 'Féria', 'Hard rock', 'Hoeggarden', 'House', 'Huit-six', 'IPA', 'Inclusif', 'Inferno',
'Electro', 'Fanfare', 'Gin tonic', 'Inclusif', 'Jazz', "Jeux d'alcool", 'Jeux de carte', 'Introverti', 'Jager bomb', 'Jazz', 'Jeux d\'alcool', 'Jeux de rôles', 'Jeux vidéo', 'Jul', 'Jus de fruit',
'Jeux de rôle', 'Jeux de société', 'JUL', 'Jus de fruit', 'Kfet', 'Kleptomanie assurée', 'Karaoké', 'LGBTQI+', 'Lady Gaga', 'Loup garou', 'Morning beer', 'Métal', 'Nuit blanche', 'Ovalie', 'Psychedelic',
'LGBTQ+', 'Livre', 'Morning beer', 'Musique', 'NAPS', 'Paillettes', 'Pastis', 'Paté Hénaff', 'Pétanque', 'Rave', 'Reggae', 'Rhum', 'Ricard', 'Rock', 'Rosé', 'Rétro', 'Séducteur', 'Techno', 'Thérapie taxi',
'Peluche', 'Pena baiona', "Peu d'alcool", 'Pilier de bar', 'PMU', 'Poulpe', 'Punch', 'Rap', 'Théâtre', 'Trap', 'Turn up', 'Underground', 'Volley', 'Wati B', 'Zinédine Zidane',
'Réveil', 'Rock', 'Rugby', 'Sandwich', 'Serge', 'Shot', 'Sociable', 'Spectacle', 'Techno',
'Techno house', 'Thérapie Taxi', 'Tradition kchanaises', 'Troisième mi-temps', 'Turn up',
'Vodka', 'Vodka pomme', 'Volley', 'Vomi stratégique'
] ]

View File

@ -252,7 +252,7 @@ REST_FRAMEWORK = {
'rest_framework.authentication.TokenAuthentication', 'rest_framework.authentication.TokenAuthentication',
'oauth2_provider.contrib.rest_framework.OAuth2Authentication', 'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
], ],
'DEFAULT_PAGINATION_CLASS': 'apps.api.pagination.CustomPagination', 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 20, 'PAGE_SIZE': 20,
} }

View File

@ -23,7 +23,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% csrf_token %} {% csrf_token %}
{{ form|crispy }} {{ form|crispy }}
{{ profile_form|crispy }} {{ profile_form|crispy }}
{% comment "Soge not for membership (only WEI)" %} {{ soge_form|crispy }} {% endcomment %} {{ soge_form|crispy }}
<button class="btn btn-success" type="submit"> <button class="btn btn-success" type="submit">
{% trans "Sign up" %} {% trans "Sign up" %}
</button> </button>