diff --git a/cotisations/migrations/0031_custom_invoice.py b/cotisations/migrations/0031_custom_invoice.py index 52921739..fd5ac336 100644 --- a/cotisations/migrations/0031_custom_invoice.py +++ b/cotisations/migrations/0031_custom_invoice.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals from django.db import migrations, models import django.db.models.deletion +from django.contrib.auth.management import create_permissions import re2o.field_permissions import re2o.mixins @@ -17,6 +18,30 @@ def reattribute_ids(apps, schema_editor): f.baseinvoice_ptr = base f.save() + +def update_rights(apps, schema_editor): + Permission = apps.get_model('auth', 'Permission') + + # creates needed permissions + app = apps.get_app_config('cotisations') + app.models_module = True + create_permissions(app) + app.models_module = False + + former = Permission.objects.get(codename='change_facture_pdf') + new_1 = Permission.objects.get(codename='add_custominvoice') + new_2 = Permission.objects.get(codename='change_custominvoice') + new_3 = Permission.objects.get(codename='view_custominvoice') + new_4 = Permission.objects.get(codename='delete_custominvoice') + for group in former.group_set.all(): + group.permissions.remove(former) + group.permissions.add(new_1) + group.permissions.add(new_2) + group.permissions.add(new_3) + group.permissions.add(new_4) + group.save() + + class Migration(migrations.Migration): dependencies = [ @@ -42,7 +67,7 @@ class Migration(migrations.Migration): ('paid', models.BooleanField(verbose_name='Paid')), ], bases=('cotisations.baseinvoice',), - options={'permissions': (('view_custom_invoice', 'Can view a custom invoice'),)}, + options={'permissions': (('view_custominvoice', 'Can view a custom invoice'),)}, ), migrations.AddField( model_name='facture', @@ -68,5 +93,10 @@ class Migration(migrations.Migration): model_name='facture', name='baseinvoice_ptr', field=models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='cotisations.BaseInvoice'), - ) + ), + migrations.RunPython(update_rights), + migrations.AlterModelOptions( + name='facture', + options={'permissions': (('change_facture_control', 'Can change the "controlled" state'), ('view_facture', "Can see an invoice's details"), ('change_all_facture', 'Can edit all the previous invoices')), 'verbose_name': 'Invoice', 'verbose_name_plural': 'Invoices'}, + ), ] diff --git a/cotisations/models.py b/cotisations/models.py index c4515cc7..7ca157eb 100644 --- a/cotisations/models.py +++ b/cotisations/models.py @@ -153,10 +153,6 @@ class Facture(BaseInvoice): # TODO : change facture to invoice ('change_facture_control', _l("Can change the \"controlled\" state")), - # TODO : seems more likely to be call create_facture_pdf - # or create_invoice_pdf - ('change_facture_pdf', - _l("Can create a custom PDF invoice")), ('view_facture', _l("Can see an invoice's details")), ('change_all_facture', @@ -215,14 +211,6 @@ class Facture(BaseInvoice): _("You don't have the right to edit the \"controlled\" state.") ) - @staticmethod - def can_change_pdf(user_request, *_args, **_kwargs): - """ Returns True if the user can change this invoice """ - return ( - user_request.has_perm('cotisations.change_facture_pdf'), - _("You don't have the right to edit an invoice.") - ) - @staticmethod def can_create(user_request, *_args, **_kwargs): """Check if a user can create an invoice. @@ -271,7 +259,7 @@ def facture_post_delete(**kwargs): class CustomInvoice(BaseInvoice): class Meta: permissions = ( - ('view_custom_invoice', _l("Can view a custom invoice")), + ('view_custominvoice', _l("Can view a custom invoice")), ) recipient = models.CharField( max_length=255,