vpnmanager/manager/signals.py

88 lines
3.2 KiB
Python

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)