Optimizing code phase 1
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
"""
|
||||
Validation Utilities for QR Attendance Management System
|
||||
========================================================
|
||||
|
||||
Role validation and permissions checking functions.
|
||||
Extracted from app.py for better code organization.
|
||||
"""
|
||||
|
||||
# Valid user roles
|
||||
VALID_ROLES = ['admin', 'staff', 'payroll', 'project_manager']
|
||||
STAFF_LEVEL_ROLES = ['staff', 'payroll', 'project_manager']
|
||||
|
||||
def is_valid_role(role):
|
||||
"""
|
||||
Check if role is valid
|
||||
|
||||
Args:
|
||||
role (str): User role to validate
|
||||
|
||||
Returns:
|
||||
bool: True if role is valid
|
||||
"""
|
||||
return role in VALID_ROLES
|
||||
|
||||
def has_admin_privileges(role):
|
||||
"""
|
||||
Check if role has admin privileges
|
||||
|
||||
Args:
|
||||
role (str): User role to check
|
||||
|
||||
Returns:
|
||||
bool: True if role is admin
|
||||
"""
|
||||
return role == 'admin'
|
||||
|
||||
def has_staff_level_access(role):
|
||||
"""
|
||||
Check if role has staff-level access (includes payroll, project_manager)
|
||||
|
||||
Args:
|
||||
role (str): User role to check
|
||||
|
||||
Returns:
|
||||
bool: True if role has staff-level permissions
|
||||
"""
|
||||
return role in STAFF_LEVEL_ROLES
|
||||
|
||||
def has_export_permissions(role):
|
||||
"""
|
||||
Check if user role has export permissions
|
||||
|
||||
Args:
|
||||
role (str): User role to check
|
||||
|
||||
Returns:
|
||||
bool: True if role can export data
|
||||
"""
|
||||
return role in ['admin', 'payroll']
|
||||
|
||||
def get_role_permissions(role):
|
||||
"""
|
||||
Get permissions description for a role
|
||||
|
||||
Args:
|
||||
role (str): User role
|
||||
|
||||
Returns:
|
||||
dict: Role permissions with title, permissions list, and restrictions
|
||||
"""
|
||||
permissions = {
|
||||
'admin': {
|
||||
'title': 'Administrator Permissions',
|
||||
'permissions': [
|
||||
'Full QR code management (create, edit, delete)',
|
||||
'Complete user management capabilities',
|
||||
'System configuration access',
|
||||
'View all system analytics',
|
||||
'Bulk operations and data export',
|
||||
'Access to all admin features'
|
||||
],
|
||||
'restrictions': ['With great power comes great responsibility!']
|
||||
},
|
||||
'staff': {
|
||||
'title': 'Staff User Permissions',
|
||||
'permissions': [
|
||||
'View QR codes and attendance records',
|
||||
'Check-in to attendance',
|
||||
'View own attendance history'
|
||||
],
|
||||
'restrictions': [
|
||||
'Cannot create or modify QR codes',
|
||||
'Cannot manage users',
|
||||
'Limited export capabilities'
|
||||
]
|
||||
},
|
||||
'payroll': {
|
||||
'title': 'Payroll Specialist Permissions',
|
||||
'permissions': [
|
||||
'Full payroll processing access',
|
||||
'Export attendance and payroll data',
|
||||
'View all attendance records',
|
||||
'Generate payroll reports'
|
||||
],
|
||||
'restrictions': [
|
||||
'Cannot manage QR codes',
|
||||
'Cannot manage users',
|
||||
'Read-only access to configurations'
|
||||
]
|
||||
},
|
||||
'project_manager': {
|
||||
'title': 'Project Manager Permissions',
|
||||
'permissions': [
|
||||
'View assigned project data',
|
||||
'View assigned location data',
|
||||
'Generate project reports',
|
||||
'Monitor project attendance'
|
||||
],
|
||||
'restrictions': [
|
||||
'Access limited to assigned projects/locations',
|
||||
'Cannot modify QR codes',
|
||||
'Cannot manage users',
|
||||
'Read-only access'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
return permissions.get(role, {
|
||||
'title': 'Unknown Role',
|
||||
'permissions': [],
|
||||
'restrictions': ['Invalid role specified']
|
||||
})
|
||||
Reference in New Issue
Block a user