diff --git a/hid/DoorController.py b/hid/DoorController.py index f2a8f69..2b72b89 100644 --- a/hid/DoorController.py +++ b/hid/DoorController.py @@ -1,4 +1,3 @@ -import sys from lxml import etree from lxml.builder import ElementMaker import requests @@ -10,6 +9,11 @@ ROOT = E_plain.VertXMessage fieldnames = "CardNumber,CardFormat,PinRequired,PinCode,ExtendedAccess,ExpiryDate,Forename,Initial,Surname,Email,Phone,Custom1,Custom2,Schedule1,Schedule2,Schedule3,Schedule4,Schedule5,Schedule6,Schedule7,Schedule8".split(",") +class RemoteError(Exception): + def __init__(self, r): + super().__init__( + f"Door Updating Error: {r.status_code} {r.reason}\n{r.text}") + class DoorController(): def __init__(self, ip, username, password, name="", access=""): self.ip = ip @@ -30,9 +34,7 @@ class DoorController(): xml = etree.XML(r.content) if r.status_code != 200 \ or len(xml.findall("{http://www.hidglobal.com/VertX}Error")) > 0: - print("Door Updating Error: ", r.status_code, r.reason) - print(r.text) - sys.exit(1) + raise RemoteError(r) def doCSVImport(self, csv): """Do the CSV import procedure on a door control""" @@ -52,9 +54,7 @@ class DoorController(): # probably meed to be more sane about this if r.status_code != 200 \ or len(resp_xml.findall("{*}Error")) > 0: - print("Door Updating Error: ", r.status_code, r.reason) - print(r.text) - sys.exit(1) + raise RemoteError(r) return resp_xml def sendSchedules(self):