from . import db class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(120), nullable=False) role = db.Column(db.String(20), nullable=False) # Role: superadmin, admin, manager, worker modules = db.Column(db.Text, nullable=True) # JSON string of assigned modules: ["quality", "warehouse"] def __repr__(self): return f'' def get_modules(self): """Get user's assigned modules as a list""" if not self.modules: return [] try: import json return json.loads(self.modules) except: return [] def set_modules(self, module_list): """Set user's assigned modules from a list""" if not module_list: self.modules = None else: import json self.modules = json.dumps(module_list) def add_module(self, module): """Add a module to user's assignments""" current_modules = self.get_modules() if module not in current_modules: current_modules.append(module) self.set_modules(current_modules) def remove_module(self, module): """Remove a module from user's assignments""" current_modules = self.get_modules() if module in current_modules: current_modules.remove(module) self.set_modules(current_modules) def has_module(self, module): """Check if user has access to a specific module""" # Superadmin and admin have access to all modules if self.role in ['superadmin', 'admin']: return True return module in self.get_modules()