Clean permissions objects
- Define default permissions of kfet models. - Unused default permissions are deleted. - `kfet.manage_perms` is now splitted as `kfetauth.(view|add|change)_group` permissions.
This commit is contained in:
parent
df7594a105
commit
5502c6876a
10 changed files with 453 additions and 11 deletions
189
kfet/migrations/0060_change_models_opts.py
Normal file
189
kfet/migrations/0060_change_models_opts.py
Normal file
|
@ -0,0 +1,189 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('kfet', '0059_create_generic'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='account',
|
||||
options={
|
||||
'permissions': (
|
||||
('is_team', "Membre de l'équipe"),
|
||||
('manage_addcosts', 'Gérer les majorations'),
|
||||
(
|
||||
'edit_balance_account',
|
||||
"Modifier la balance d'un compte"
|
||||
),
|
||||
(
|
||||
'change_account_password',
|
||||
"Modifier le mot de passe d'une personne de l'équipe"
|
||||
),
|
||||
(
|
||||
'special_add_account',
|
||||
'Créer un compte avec une balance initiale'
|
||||
),
|
||||
('can_force_close', 'Fermer manuellement la K-Fêt')
|
||||
),
|
||||
'default_permissions': ('add', 'change'),
|
||||
'verbose_name_plural': 'Comptes',
|
||||
'verbose_name': 'Compte',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='accountnegative',
|
||||
options={
|
||||
'default_permissions': ('view', 'change',),
|
||||
'verbose_name_plural': 'Comptes en négatif',
|
||||
'verbose_name': 'Compte en négatif',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='article',
|
||||
options={
|
||||
'default_permissions': ('add', 'change'),
|
||||
'verbose_name_plural': 'Articles',
|
||||
'verbose_name': 'Article',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='articlecategory',
|
||||
options={
|
||||
'default_permissions': ('change',),
|
||||
'verbose_name_plural': "Catégories d'articles",
|
||||
'verbose_name': "Catégorie d'articles",
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='articlerule',
|
||||
options={
|
||||
'default_permissions': (),
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='checkout',
|
||||
options={
|
||||
'default_permissions': ('add', 'change'),
|
||||
'ordering': ['-valid_to'],
|
||||
'verbose_name_plural': 'Caisses',
|
||||
'verbose_name': 'Caisse',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='checkoutstatement',
|
||||
options={
|
||||
'default_permissions': ('add', 'change'),
|
||||
'verbose_name_plural': 'Relevés de caisses',
|
||||
'verbose_name': 'Relevé de caisse',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='checkouttransfer',
|
||||
options={
|
||||
'default_permissions': (),
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='inventory',
|
||||
options={
|
||||
'permissions': (
|
||||
(
|
||||
'order_to_inventory',
|
||||
"Générer un inventaire à partir d'une commande"
|
||||
),
|
||||
),
|
||||
'ordering': ['-at'],
|
||||
'verbose_name_plural': 'Inventaires',
|
||||
'default_permissions': ('add',),
|
||||
'verbose_name': 'Inventaire',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='inventoryarticle',
|
||||
options={
|
||||
'default_permissions': (),
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='operation',
|
||||
options={
|
||||
'permissions': (
|
||||
('perform_deposit', 'Effectuer une charge'),
|
||||
(
|
||||
'perform_negative_operations',
|
||||
'Enregistrer des commandes en négatif'
|
||||
),
|
||||
(
|
||||
'override_frozen_protection',
|
||||
"Forcer le gel d'un compte"
|
||||
),
|
||||
(
|
||||
'cancel_old_operations',
|
||||
'Annuler des commandes non récentes'
|
||||
),
|
||||
(
|
||||
'perform_commented_operations',
|
||||
'Enregistrer des commandes avec commentaires'
|
||||
),
|
||||
),
|
||||
'default_permissions': (),
|
||||
'verbose_name_plural': 'Opérations',
|
||||
'verbose_name': 'Opération',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='operationgroup',
|
||||
options={
|
||||
'default_permissions': (),
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='order',
|
||||
options={
|
||||
'default_permissions': ('add',),
|
||||
'ordering': ['-at'],
|
||||
'verbose_name_plural': 'Commandes',
|
||||
'verbose_name': 'Commande',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='orderarticle',
|
||||
options={
|
||||
'default_permissions': (),
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='supplier',
|
||||
options={
|
||||
'default_permissions': ('change',),
|
||||
'verbose_name_plural': 'Fournisseurs',
|
||||
'verbose_name': 'Fournisseur',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='supplierarticle',
|
||||
options={
|
||||
'default_permissions': (),
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='transfer',
|
||||
options={
|
||||
'default_permissions': ('add',),
|
||||
'verbose_name_plural': 'Transferts',
|
||||
'verbose_name': 'Transfert',
|
||||
},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='transfergroup',
|
||||
options={
|
||||
'default_permissions': (),
|
||||
},
|
||||
),
|
||||
]
|
99
kfet/migrations/0061_update_permissions.py
Normal file
99
kfet/migrations/0061_update_permissions.py
Normal file
|
@ -0,0 +1,99 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.models import Q
|
||||
|
||||
|
||||
def update_permissions(apps, schema_editor):
|
||||
Permission = apps.get_model('auth', 'Permission')
|
||||
ContentType = apps.get_model('contenttypes', 'ContentType')
|
||||
Account = apps.get_model('kfet', 'Account')
|
||||
|
||||
# If `kfet.is_team` permission exists, rename it.
|
||||
|
||||
Permission.objects.filter(
|
||||
content_type__app_label='kfet',
|
||||
content_type__model='account',
|
||||
codename='is_team',
|
||||
).update(name="Membre de l'équipe")
|
||||
|
||||
# If `kfet.view_negs` permission exists, move it as
|
||||
# `kfet.view_accountnegative`.
|
||||
|
||||
try:
|
||||
view_negs_p = Permission.objects.get(
|
||||
content_type__app_label='kfet',
|
||||
content_type__model='accountnegative',
|
||||
codename='view_negs',
|
||||
)
|
||||
except Permission.DoesNotExist:
|
||||
pass
|
||||
else:
|
||||
# Avoid failure due to unicity constraint if migrations were partially
|
||||
# applied.
|
||||
# Because `view_negs` still exists here, it should be safe to consider
|
||||
# that nothing uses `view_accountnegative` so that it can be deleted.
|
||||
Permission.objects.filter(
|
||||
content_type__app_label='kfet',
|
||||
content_type__model='accountnegative',
|
||||
codename='view_accountnegative',
|
||||
).delete()
|
||||
|
||||
view_negs_p.codename = 'view_accountnegative'
|
||||
view_negs_p.name = 'Can view Compte en négatif'
|
||||
view_negs_p.save()
|
||||
|
||||
# Delete unused permissions.
|
||||
|
||||
to_delete = {
|
||||
'account': ['delete_account'],
|
||||
'accountnegative': [
|
||||
'add_accountnegative', 'delete_accountnegative', 'view_negs'],
|
||||
'article': ['delete_article'],
|
||||
'articlecategory': ['add_articlecategory', 'delete_articlecategory'],
|
||||
'articlerule': '__all__',
|
||||
'checkout': ['delete_checkout'],
|
||||
'checkoutstatement': ['delete_checkoutstatement'],
|
||||
'checkouttransfer': '__all__',
|
||||
'inventory': ['change_inventory', 'delete_inventory'],
|
||||
'inventoryarticle': '__all__',
|
||||
'operation': ['add_operation', 'change_operation', 'delete_operation'],
|
||||
'operationgroup': '__all__',
|
||||
'order': ['change_order', 'delete_order'],
|
||||
'orderarticle': '__all__',
|
||||
'supplier': ['add_supplier', 'delete_supplier'],
|
||||
'supplierarticle': '__all__',
|
||||
'transfer': ['change_transfer', 'delete_transfer'],
|
||||
'transfergroup': '__all__',
|
||||
}
|
||||
|
||||
to_delete_q = Q()
|
||||
|
||||
for model_name, codenames in to_delete.items():
|
||||
if codenames == '__all__':
|
||||
to_delete_q |= Q(content_type__model=model_name)
|
||||
else:
|
||||
to_delete_q |= Q(
|
||||
content_type__model=model_name,
|
||||
codename__in=codenames,
|
||||
)
|
||||
|
||||
to_delete_q &= Q(content_type__app_label='kfet')
|
||||
|
||||
Permission.objects.filter(to_delete_q).delete()
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
"""
|
||||
Data migration which performs permissions cleaning.
|
||||
"""
|
||||
dependencies = [
|
||||
('kfet', '0060_change_models_opts'),
|
||||
('auth', '0006_require_contenttypes_0002'),
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(update_permissions),
|
||||
]
|
Loading…
Add table
Add a link
Reference in a new issue