from django.dispatch import Signal from .models import Device, Wifi, DeviceLog, UserLog, WifiLog from django.contrib.auth.models import User siglog = Signal( providing_args=[ "id", "user", "action", "oldvalue", "newvalue"] ) # Device Signals def sigDevice(device_id, user, action, oldvalue=None, newvalue=None): siglog.send( sender=Device, id=device_id, user=user, action=action, oldvalue=oldvalue, newvalue=newvalue ) def sigDeleteDevice(device_id, user): sigDevice( device_id, user, DeviceLog.REMOVE ) def sigAddDevice(device_id, user): sigDevice( device_id, user, DeviceLog.ADD ) def sigRenameDevice(device_id, user, oldname, newname): sigDevice( device_id, user, DeviceLog.NAME, oldname, newname ) def sigNetDevice(device_id, user, oldnet, newnet): sigDevice( device_id, user, DeviceLog.NET, oldnet, newnet ) def sigWifiDevice(device_id, user, oldwifis, newwifis): for old in oldwifis: if old not in newwifis: sigDevice( device_id, user, DeviceLog.WIFI, str(old) ) for new in newwifis: if new not in oldwifis: sigDevice( device_id, user, DeviceLog.WIFI, None, str(new) ) def sigRebootDevice(device_id, user, newstate): sigDevice( device_id, user, DeviceLog.REBOOT, str(not newstate), str(newstate) ) def sigUpdateDevice(device_id, user, newstate): sigDevice( device_id, user, DeviceLog.UPDATE, str(not newstate), str(newstate) ) def sigOrgaDevice(device_id, user, oldorga, neworga): sigDevice( device_id, user, DeviceLog.ORGA, oldorga, neworga ) # User Signals def sigUser(target, source, action, oldvalue=None, newvalue=None): siglog.send( sender=User, id=target, user=source, action=action, oldvalue=oldvalue, newvalue=newvalue ) def sigAddUser(newuser, source): sigUser( newuser, source, UserLog.ADD ) def sigDeleteUser(target, source): sigUser( target, source, UserLog.REMOVE ) def sigRenameUser(target, source, oldname, newname): sigUser( target, source, UserLog.NAME, oldname, newname ) def sigMailUser(target, source, oldmail, newmail): sigUser( target, source, UserLog.MAIL, oldmail, newmail ) def sigStaffUser(target, source, newstatus): sigUser( target, source, UserLog.STAFF, str(not newstatus), str(newstatus) ) def sigSuperUser(target, source, newstatus): sigUser( target, source, UserLog.SUPERUSER, str(not newstatus), str(newstatus) ) def sigOrgaUser(target, source, oldorga, neworga): sigUser( target, source, UserLog.ORGA, ", ".join(str(x) for x in oldorga), ", ".join(str(x) for x in neworga) ) # WiFi Signals def sigWifi(wifi, user, action, oldvalue=None, newvalue=None): siglog.send( sender=Wifi, id=wifi, user=user, action=action, oldvalue=oldvalue, newvalue=newvalue ) def sigAddWifi(wifi, user): sigWifi( wifi, user, WifiLog.ADD ) def sigDeleteWifi(wifi, user): sigWifi( wifi, user, WifiLog.REMOVE ) def sigRenameWifi(wifi, user, oldname, newname): sigWifi( wifi, user, WifiLog.NAME, oldname, newname ) def sigSSIDWifi(wifi, user, oldssid, newssid): sigWifi( wifi, user, WifiLog.SSID, oldssid, newssid ) def sigKeyWifi(wifi, user, oldkey, newkey): sigWifi( wifi, user, WifiLog.KEY, oldkey, newkey ) def sigOrgaWifi(wifi, user, oldorga, neworga): sigWifi( wifi, user, WifiLog.ORGA, oldorga, neworga )