wag-managment-api-service-v.../service_app_init/initialize_app/event_initator.py

136 lines
4.9 KiB
Python

from databases import (
Events,
Services,
Service2Events,
Employees,
Staff,
)
from databases.sql_models.event.event import Event2Employee
from api_events.events.events.events_bind_modules import ModulesBindEmployeeEventMethods
active_confirmed = dict(
created_by="System",
confirmed_by="System",
is_confirmed=True,
active=True,
deleted=False,
is_notification_send=True,
)
def create_all_events_from_actions():
import api_events.events as events
from databases import EndpointRestriction
an_empty_list, duplicate_list = [], []
for event in events.__all__:
event_selected = getattr(events, event)
for (
event_selected_key,
event_selected_one,
) in event_selected.__event_keys__.items():
an_empty_list.append(event_selected_key)
event_selected_function = getattr(event_selected, event_selected_one, None)
if not event_selected.action.endpoint:
raise Exception(
f"Endpoint not found in {event_selected.__name__} class"
)
endpoint_restriction = EndpointRestriction.filter_one(
EndpointRestriction.endpoint_name.ilike(
f"%{event_selected.action.endpoint}%"
),
system=True,
).data
if endpoint_restriction:
if event_selected_function:
selected_event = Events.filter_one(
Events.event_type == event_selected.event_type,
Events.function_class == event,
Events.function_code == event_selected_key,
Events.endpoint_id == endpoint_restriction.id,
Events.endpoint_uu_id == str(endpoint_restriction.uu_id),
system=True,
).data
if not selected_event:
created_event = Events.find_or_create(
event_type=event_selected.event_type,
function_class=event,
function_code=event_selected_key,
endpoint_id=endpoint_restriction.id,
endpoint_uu_id=str(endpoint_restriction.uu_id),
**active_confirmed,
)
created_event.save()
created_event.update(is_confirmed=True)
created_event.save()
print(f"Event created: {created_event.uu_id}")
for item in an_empty_list:
if an_empty_list.count(item) > 1:
if item not in duplicate_list:
duplicate_list.append(item)
if duplicate_list:
raise Exception(
f"Duplicate events found: {duplicate_list}. Check events folder look for given uu-ids."
)
return True
def add_events_all_services_and_occupant_types():
import api_events.tasks2events as tasks2events
for event_block in tasks2events.__all__:
event_block_class = getattr(tasks2events, event_block)
service_selected = Services.filter_one(
Services.service_code == getattr(event_block_class, "service_code", None),
system=True,
).data
if not service_selected:
raise Exception(f"{event_block_class.service_code} service is not found")
service_selected.update(
related_responsibility=getattr(event_block_class, "related_code", None)
)
for event_id, event_uu_id in event_block_class():
if Service2Events.filter_by_one(
service_id=service_selected.id, event_id=event_id, system=True
).data:
continue
service_events = Service2Events.find_or_create(
service_id=service_selected.id,
service_uu_id=str(service_selected.uu_id),
event_id=event_id,
event_uu_id=event_uu_id,
)
service_events.save_and_confirm()
return
def add_events_to_system_super_user():
add_service = Services.filter_by_one(system=True, service_code="SRE-SUE").data
if not add_service:
raise Exception("Service not found")
find_staff = Staff.filter_by_one(system=True, staff_code="SUE").data
if not find_staff:
raise Exception("Super User not found")
add_employee = Employees.filter_by_one(system=True, staff_id=find_staff.id).data
if not add_employee:
raise Exception("Super User Employee not found")
ModulesBindEmployeeEventMethods.bind_default_module_for_first_init_occupant(
employee_id=add_employee.id
)
event_employee = Event2Employee.find_or_create(
event_service_id=add_service.id,
event_service_uu_id=str(add_service.uu_id),
employee_id=add_employee.id,
employee_uu_id=str(add_employee.uu_id),
)
event_employee.save_and_confirm()