# coding: utf-8
from common.navigator import navigatorsParts
from ru.curs.celesta.syscursors import RolesCursor
from security.functions import Settings
from security.navigator import authentificationNavigator
from security.setForeignKeys import setForeignKeys as setConstraint
from security.xform.users import employeesSubjectsPostInsert, employeesSubjectsPostUpdate, employeesSubjectsPreDelete
from common.sysfunctions import tableCursorImport
from security.securityInit import securityInit
from ru.curs.celesta import ConnectionPool
from ru.curs.celesta import CallContext
from ru.curs.celesta import SessionContext
from ru.curs.celesta import Celesta
import initcontext

settings = Settings()
if not settings.loginIsSubject() and settings.isEmployees():
    #Если роли привязываются к сотруднику и таблица сотрудников настроена (нужные настройки есть в grainSettings.xml),
    #привязываем к ней триггеры. 
    employeesGrain = settings.getEmployeesParam("employeesGrain")
    employeesTable = settings.getEmployeesParam("employeesTable")
    employeesCursor = tableCursorImport(employeesGrain, employeesTable)

    employeesCursor.onPostInsert.append(employeesSubjectsPostInsert)
    employeesCursor.onPostUpdate.append(employeesSubjectsPostUpdate)
    employeesCursor.onPreDelete.append(employeesSubjectsPreDelete)

if not settings.isSystemInitialised():
    context = initcontext()
    setConstraint(context) #функция устанавливает внешний ключ в таблицу subjects и меняет значение параметра isSystemInitialised на True
    securityInit(context) # добавление в базу необходимых для работы гранулы данных

navigatorsParts['securityNavigator'] = authentificationNavigator