8
0
Fork 0
mirror of https://gitlab2.federez.net/re2o/re2o synced 2024-11-25 12:53:11 +00:00
re2o/users/migrations/0066_grouppermissions.py

384 lines
12 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-12-31 19:53
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
("users", "0065_auto_20171231_2053"),
("cotisations", "0028_auto_20171231_0007"),
("machines", "0071_auto_20171231_2100"),
("preferences", "0025_auto_20171231_2142"),
("topologie", "0033_auto_20171231_1743"),
]
2018-01-07 20:08:34 +00:00
def transfer_permissions(apps, schema_editor):
permission_groups = {
"bofh": [
"add_ban",
"change_ban",
"delete_ban",
"view_ban",
"add_club",
"change_club",
"delete_club",
"add_user",
"change_user",
"change_user_force",
"change_user_password",
"change_user_shell",
"view_user",
"add_whitelist",
"change_whitelist",
"delete_whitelist",
"view_whitelist",
],
"bureau": [
"add_logentry",
"change_logentry",
"delete_logentry",
"add_group",
"change_group",
"delete_group",
"add_permission",
"change_permission",
"delete_permission",
"add_adherent",
"change_adherent",
"delete_adherent",
"add_ban",
"change_ban",
"delete_ban",
"view_ban",
"add_club",
"change_club",
"delete_club",
"add_listright",
"change_listright",
"delete_listright",
"view_listright",
"add_school",
"change_school",
"delete_school",
"view_school",
"add_user",
"change_user",
"change_user_force",
"change_user_groups",
"change_user_password",
"change_user_shell",
"change_user_state",
"delete_user",
"view_user",
"add_whitelist",
"change_whitelist",
"delete_whitelist",
"view_whitelist",
],
"cableur": [
"add_logentry",
"view_article",
"add_banque",
"change_banque",
"delete_banque",
"view_banque",
"add_cotisation",
"change_cotisation",
"delete_cotisation",
"view_cotisation",
"add_facture",
"can_create",
"can_delete",
"can_edit",
"can_view",
"can_view_all",
"change_facture",
"delete_facture",
"view_facture",
"view_paiement",
"add_vente",
"change_vente",
"delete_vente",
"view_vente",
"add_domain",
"change_domain",
"delete_domain",
"view_domain",
"use_all_extension",
"view_extension",
"add_interface",
"change_interface",
"delete_interface",
"view_interface",
"view_iplist",
"view_iptype",
"add_machine",
"change_machine",
"view_machine",
"view_machinetype",
"view_mx",
"view_nas",
"view_ns",
"view_ouvertureportlist",
"view_service",
"view_soa",
"view_soa",
"view_txt",
"view_vlan",
"view_assooption",
"view_generaloption",
"view_mailmessageoption",
"view_optionalmachine",
"view_optionaltopologie",
"view_optionaluser",
"view_service",
"view_constructorswitch",
"view_modelswitch",
"view_port",
"view_room",
"view_stack",
"view_switch",
"add_adherent",
"change_adherent",
"view_ban",
"add_club",
"change_club",
"view_listright",
"add_school",
"change_school",
"delete_school",
"view_school",
"view_serviceuser",
"add_user",
"change_user",
"change_user_force",
"change_user_password",
"view_user",
"add_whitelist",
"change_whitelist",
"delete_whitelist",
"view_whitelist",
],
"tresorier": [
"add_article",
"change_article",
"delete_article",
"view_article",
"add_banque",
"change_banque",
"delete_banque",
"view_banque",
"add_cotisation",
"change_all_cotisation",
"change_cotisation",
"delete_cotisation",
"view_cotisation",
"add_facture",
"can_change_control",
"can_change_pdf",
"can_create",
"can_delete",
"can_edit",
"can_view",
"can_view_all",
"change_all_facture",
"change_facture",
"change_facture_control",
"change_facture_pdf",
"delete_facture",
"view_facture",
"add_paiement",
"change_paiement",
"delete_paiement",
"view_paiement",
"add_vente",
"change_all_vente",
"change_vente",
"delete_vente",
"view_vente",
],
"admin": [
"add_logentry",
"change_logentry",
"delete_logentry",
"add_assooption",
"change_assooption",
"delete_assooption",
"view_assooption",
"add_generaloption",
"change_generaloption",
"delete_generaloption",
"view_generaloption",
"add_mailmessageoption",
"change_mailmessageoption",
"delete_mailmessageoption",
"view_mailmessageoption",
"add_optionalmachine",
"change_optionalmachine",
"delete_optionalmachine",
"view_optionalmachine",
"add_optionaltopologie",
"change_optionaltopologie",
"delete_optionaltopologie",
"view_optionaltopologie",
"add_optionaluser",
"change_optionaluser",
"delete_optionaluser",
"view_optionaluser",
"add_service",
"add_services",
"change_service",
"change_services",
"delete_service",
"delete_services",
"view_service",
],
"infra": [
"add_domain",
"change_domain",
"delete_domain",
"view_domain",
"add_extension",
"change_extension",
"delete_extension",
"use_all_extension",
"view_extension",
"add_interface",
"change_interface",
"delete_interface",
"view_interface",
"add_iplist",
"change_iplist",
"delete_iplist",
"view_iplist",
"add_iptype",
"change_iptype",
"delete_iptype",
"use_all_iptype",
"view_iptype",
"add_machine",
"change_machine",
"change_machine_user",
"delete_machine",
"view_machine",
"add_machinetype",
"change_machinetype",
"delete_machinetype",
"use_all_machinetype",
"view_machinetype",
"add_mx",
"change_mx",
"delete_mx",
"view_mx",
"add_nas",
"change_nas",
"delete_nas",
"view_nas",
"add_ns",
"change_ns",
"delete_ns",
"view_ns",
"add_ouvertureport",
"change_ouvertureport",
"delete_ouvertureport",
"add_ouvertureportlist",
"change_ouvertureportlist",
"delete_ouvertureportlist",
"view_ouvertureportlist",
"add_service",
"change_service",
"delete_service",
"view_service",
"add_service_link",
"change_service_link",
"delete_service_link",
"add_soa",
"change_soa",
"delete_soa",
"view_soa",
"add_srv",
"change_srv",
"delete_srv",
"view_soa",
"add_text",
"add_txt",
"change_text",
"change_txt",
"delete_text",
"delete_txt",
"view_txt",
"add_vlan",
"change_vlan",
"delete_vlan",
"view_vlan",
"add_constructorswitch",
"change_constructorswitch",
"delete_constructorswitch",
"view_constructorswitch",
"add_modelswitch",
"change_modelswitch",
"delete_modelswitch",
"view_modelswitch",
"add_port",
"change_port",
"delete_port",
"view_port",
"add_room",
"change_room",
"delete_room",
"view_room",
"add_stack",
"change_stack",
"delete_stack",
"view_stack",
"add_switch",
"change_switch",
"delete_switch",
"view_switch",
"add_listshell",
"change_listshell",
"delete_listshell",
"add_serviceuser",
"change_serviceuser",
"delete_serviceuser",
"view_serviceuser",
"change_user",
"view_user",
],
}
rights = apps.get_model("users", "ListRight")
permissions = apps.get_model("auth", "Permission")
groups = apps.get_model("auth", "Group")
db_alias = schema_editor.connection.alias
for group in permission_groups:
lr_object = rights.objects.using(db_alias).filter(unix_name=group).first()
if not lr_object:
last = rights.objects.using(db_alias).all().order_by("gid").last()
if last:
gid = last.gid + 1
else:
gid = 501
group_object = groups.objects.using(db_alias).create(name=group)
lr_object = rights.objects.using(db_alias).create(
unix_name=group, gid=gid, group_ptr=group_object
)
lr_object = lr_object.group_ptr
for permission in permission_groups[group]:
perm = (
permissions.objects.using(db_alias)
.filter(codename=permission)
.first()
)
if perm:
lr_object.permissions.add(perm)
lr_object.save()
def untransfer_permissions(apps, schema_editor):
return
operations = [migrations.RunPython(transfer_permissions, untransfer_permissions)]