mirror of
https://gitlab2.federez.net/re2o/re2o
synced 2024-11-27 15:12:25 +00:00
Migration des permissions
This commit is contained in:
parent
bad89ea7c2
commit
1284d9ffec
2 changed files with 33 additions and 15 deletions
|
@ -4,6 +4,7 @@ from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
from django.contrib.auth.management import create_permissions
|
||||||
import re2o.field_permissions
|
import re2o.field_permissions
|
||||||
import re2o.mixins
|
import re2o.mixins
|
||||||
|
|
||||||
|
@ -17,6 +18,30 @@ def reattribute_ids(apps, schema_editor):
|
||||||
f.baseinvoice_ptr = base
|
f.baseinvoice_ptr = base
|
||||||
f.save()
|
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):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
@ -42,7 +67,7 @@ class Migration(migrations.Migration):
|
||||||
('paid', models.BooleanField(verbose_name='Paid')),
|
('paid', models.BooleanField(verbose_name='Paid')),
|
||||||
],
|
],
|
||||||
bases=('cotisations.baseinvoice',),
|
bases=('cotisations.baseinvoice',),
|
||||||
options={'permissions': (('view_custom_invoice', 'Can view a custom invoice'),)},
|
options={'permissions': (('view_custominvoice', 'Can view a custom invoice'),)},
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='facture',
|
model_name='facture',
|
||||||
|
@ -68,5 +93,10 @@ class Migration(migrations.Migration):
|
||||||
model_name='facture',
|
model_name='facture',
|
||||||
name='baseinvoice_ptr',
|
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'),
|
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'},
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
@ -153,10 +153,6 @@ class Facture(BaseInvoice):
|
||||||
# TODO : change facture to invoice
|
# TODO : change facture to invoice
|
||||||
('change_facture_control',
|
('change_facture_control',
|
||||||
_l("Can change the \"controlled\" state")),
|
_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',
|
('view_facture',
|
||||||
_l("Can see an invoice's details")),
|
_l("Can see an invoice's details")),
|
||||||
('change_all_facture',
|
('change_all_facture',
|
||||||
|
@ -215,14 +211,6 @@ class Facture(BaseInvoice):
|
||||||
_("You don't have the right to edit the \"controlled\" state.")
|
_("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
|
@staticmethod
|
||||||
def can_create(user_request, *_args, **_kwargs):
|
def can_create(user_request, *_args, **_kwargs):
|
||||||
"""Check if a user can create an invoice.
|
"""Check if a user can create an invoice.
|
||||||
|
@ -271,7 +259,7 @@ def facture_post_delete(**kwargs):
|
||||||
class CustomInvoice(BaseInvoice):
|
class CustomInvoice(BaseInvoice):
|
||||||
class Meta:
|
class Meta:
|
||||||
permissions = (
|
permissions = (
|
||||||
('view_custom_invoice', _l("Can view a custom invoice")),
|
('view_custominvoice', _l("Can view a custom invoice")),
|
||||||
)
|
)
|
||||||
recipient = models.CharField(
|
recipient = models.CharField(
|
||||||
max_length=255,
|
max_length=255,
|
||||||
|
|
Loading…
Reference in a new issue