mirror of
https://github.com/lucaspalomodevelop/eventcally.git
synced 2026-03-13 00:07:22 +00:00
67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
from project import db
|
|
from project.models import AdminUnit, AdminUnitMember, AdminUnitMemberRole
|
|
|
|
|
|
def upsert_admin_unit(unit_name, short_name=None):
|
|
admin_unit = AdminUnit.query.filter_by(name=unit_name).first()
|
|
if admin_unit is None:
|
|
admin_unit = AdminUnit(name=unit_name)
|
|
db.session.add(admin_unit)
|
|
|
|
admin_unit.short_name = short_name
|
|
return admin_unit
|
|
|
|
|
|
def get_admin_unit(unit_name):
|
|
return AdminUnit.query.filter_by(name=unit_name).first()
|
|
|
|
|
|
def get_admin_unit_member_role(role_name):
|
|
return AdminUnitMemberRole.query.filter_by(name=role_name).first()
|
|
|
|
|
|
def upsert_admin_unit_member_role(role_name, role_title, permissions):
|
|
result = AdminUnitMemberRole.query.filter_by(name=role_name).first()
|
|
if result is None:
|
|
result = AdminUnitMemberRole(name=role_name)
|
|
db.session.add(result)
|
|
|
|
result.title = role_title
|
|
result.remove_permissions(result.get_permissions())
|
|
result.add_permissions(permissions)
|
|
return result
|
|
|
|
|
|
def add_user_to_admin_unit(user, admin_unit):
|
|
result = (
|
|
AdminUnitMember.query.with_parent(admin_unit).filter_by(user_id=user.id).first()
|
|
)
|
|
if result is None:
|
|
result = AdminUnitMember(user=user, admin_unit_id=admin_unit.id)
|
|
admin_unit.members.append(result)
|
|
db.session.add(result)
|
|
return result
|
|
|
|
|
|
def add_user_to_admin_unit_with_roles(user, admin_unit, role_names):
|
|
member = add_user_to_admin_unit(user, admin_unit)
|
|
add_roles_to_admin_unit_member(member, role_names)
|
|
|
|
return member
|
|
|
|
|
|
def add_roles_to_admin_unit_member(member, role_names):
|
|
for role_name in role_names:
|
|
role = get_admin_unit_member_role(role_name)
|
|
add_role_to_admin_unit_member(member, role)
|
|
|
|
|
|
def add_role_to_admin_unit_member(admin_unit_member, role):
|
|
if (
|
|
AdminUnitMemberRole.query.with_parent(admin_unit_member)
|
|
.filter_by(name=role.name)
|
|
.first()
|
|
is None
|
|
):
|
|
admin_unit_member.roles.append(role)
|