# Route names may remain distinct for diagnostics while sharing an existing
# entitlement.  Values in this mapping are the only assignable permissions that
# satisfy the corresponding route.
ROUTE_PERMISSION_REQUIREMENTS = {}


# All assignable permissions
PERMISSIONS = {
    'staff;create',
    'staff;list',
    'staff;update',
    'staff;delete',
    'location;create',
    'location;list',
    'location;update',
    'location;delete',
    'suitability;create',
    'suitability;list',
    'suitability;update',
    'suitability;delete',
    'department;create',
    'department;list',
    'department;update',
    'department;delete',
    'usage_preference;create',
    'usage_preference;list',
    'usage_preference;update',
    'usage_preference;delete',
    'start_preference;create',
    'start_preference;list',
    'start_preference;update',
    'start_preference;delete',
    'availability;create',
    'availability;list',
    'availability;update',
    'availability;delete',
    'academic_term;create',
    'academic_term;list',
    'academic_term;update',
    'academic_term;delete',
    'week_pattern;create',
    'week_pattern;list',
    'week_pattern;update',
    'week_pattern;delete',
    'module;create',
    'module;list',
    'module;update',
    'module;delete',
    'module_group;create',
    'module_group;list',
    'module_group;update',
    'module_group;delete',
    'pos;create',
    'pos;list',
    'pos;update',
    'pos;delete',
    'pos;update_module',
    'pos;show_pathway',
    'student_set;create',
    'student_set;list',
    'student_set;update',
    'student_set;delete',
    'activity_type;create',
    'activity_type;list',
    'activity_type;update',
    'activity_type;delete',
    'activity_template;create',
    'activity_template;list',
    'activity_template;update',
    'activity_template;delete',
    'activity_template;allocator',
    "activity_template;allocator_rules",
    'activity;create',
    'activity;update',
    'activity;delete',
    'activity;generate',
    'activity;list',
    'activity;sequencing',
    'pathway;generate',
    'pathway;generate_by_student_choice',
    'pathway;manual_generate',
    'pathway;update',
    'pathway;delete',
    'allocation',
    'role;create',
    'role;update',
    'role;list',
    'role;delete',
    'admin;create',
    'admin;update',
    'admin;list',
    'admin;delete',
    'audit_trail;list',
    'audit_trail;details',
    'tag;create',
    'tag;update',
    'tag;delete',
    'tag;list',
    'zone;create',
    'zone;list',
    'zone;update',
    'zone;delete',
    'permission;list',
    'schedule;request',
    'schedule;list',
    'variant;create',
    'jta;create',
    'jta;split',
    'resources;update_requirement',
    'import;table',
    'swap',
    'time_block;create',
    'time_block;list',
    'time_block;update',
    'time_block;delete',
    'resource_break;create',
    'resource_break;list',
    'resource_break;update',
    'resource_break;delete',
    'free_block;list',
    'free_block;create',
    'free_block;update',
    'free_block;delete',
    'maximum_hour;list',
    'maximum_hour;create',
    'maximum_hour;update',
    'maximum_hour;delete',
    'maximum_workspan;list',
    'maximum_workspan;create',
    'maximum_workspan;update',
    'maximum_workspan;delete',
    'travel_table;create',
    'travel_table;update',
    'travel_table;delete',
    'travel_table;list',
    'constraint_profile;create',
    'constraint_profile;update',
    'constraint_profile;delete',
    'constraint_profile;list',
    'booking;create',
    'booking;update',
    'booking;delete',
    'booking;list',
    'booking;schedule',
    'booking;swap',
    'student;create',
    'student;update',
    'student;list',
    'student;delete',
    'holiday;list',
    'report;staff_utilization_report',# no api route, just for FE check allow display iFrame or not
    'report;venue_report',# no api route, just for FE check allow display iFrame or not
    'report;security_report',# no api route, just for FE check allow display iFrame or not
    'report;room_availability_report',# no api route, just for FE check allow display iFrame or not
    'report;individual_staff_utilisation',# no api route, just for FE check allow display iFrame or not
    'report;department_staff_utilisation',# no api route, just for FE check allow display iFrame or not
    'report;individual_location_utilisation',# no api route, just for FE check allow display iFrame or not
    'report;department_location_utilisation',# no api route, just for FE check allow display iFrame or not
}

# Routes that are public (no permission check needed)
NO_PERMISSION = [
    "login",
    "get_timestamp",
    "logout",
    "register",
    "info",
    "staff;rules",
    "location;rules",
    "suitability;rules",
    "department;rules",
    "zone;rules",
    "usage_preference;rules",
    "start_preference;rules",
    "availability;rules",
    "academic_term;rules",
    "week_pattern;rules",
    "module;rules",
    "module_group;rules",
    "pos;rules",
    "pos;update_module_rules",
    "student_set;rules",
    "activity_type;rules",
    "activity_template;rules",
    "activity;rules",
    "change_password",
    "pathway;generate_rules",
    "allocation_rules",
    "admin;rules",
    "tag;rules",
    "academic_term;delete_confirmation",
    "module;delete_confirmation",
    "module_group;delete_confirmation",
    "pos;delete_confirmation",
    "activity_template;delete_confirmation",
    "simulate_schedule",
    "resources;update_requirement_rules",
    "role;rules",
    "import;get_information",
    'preschedule;request',
    'preschedule_details;request',
    'swap;get_resources',
    'time_block;rules',
    'resource_break;rules',
    'free_block;rules',
    'maximum_hour;rules',
    'maximum_workspan;rules',
    'travel_table;rules',
    'constraint_profile;rules',
    'booking;rules',
    'booking;get_resources',
    'booking;preschedule',
    'booking;swap_get_resources',
    'user_constraint_setting_update',
    'user_scheduling_preference_update',
    'test_timeout',
    'schedule;list_activity',
    'unschedule',# if got permission for scheduled, then means have permission for unschedule
    'booking;unschedule',# if got permission for scheduled, then means have permission for unschedule
    'activity;sequencing_rules',
    'jta;split_rules',
    'student;rules',
    'student;rules_get_pos',
    'student;rules_get_pos_module',
    'medical;login',
    'medical;logout',
    'medical;schedule;list_academic_term',
    'medical;schedule;list_module',
    'medical;schedule;list_activity',
    'medical;get_timestamp',
    'medical;info',
    'medical;unschedule',
    'medical;slot_setting',
    'medical;user_constraint_setting_update',
    'medical;user_scheduling_preference_update',
    'medical;rotation;activity_template',
    'medical;rotation;activity',
    'medical;rotation;student_set',
    'medical;rotation;schedule',
]
