forked from CMS/memberPlumbing
Move CSV update functions into common.py
This commit is contained in:
parent
f3556f74a4
commit
33c0857e1b
34
common.py
Normal file
34
common.py
Normal file
@ -0,0 +1,34 @@
|
||||
import urllib3
|
||||
from xml.etree import ElementTree as ET
|
||||
import requests
|
||||
|
||||
from passwords import *
|
||||
|
||||
# it's fine, ssl certs are for losers anyway
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
|
||||
fieldnames = "CardNumber,CardFormat,PinRequired,PinCode,ExtendedAccess,ExpiryDate,Forename,Initial,Surname,Email,Phone,Custom1,Custom2,Schedule1,Schedule2,Schedule3,Schedule4,Schedule5,Schedule6,Schedule7,Schedule8".split(",")
|
||||
|
||||
def doImportRequest(ip, params=None, files=None):
|
||||
"""Send a request to the door control import script"""
|
||||
r = requests.post(
|
||||
'https://' + ip + '/cgi-bin/import.cgi',
|
||||
params=params,
|
||||
files=files,
|
||||
auth=requests.auth.HTTPDigestAuth(DOOR_USERNAME, DOOR_PASSWORD),
|
||||
timeout=10,
|
||||
verify=False) # ignore insecure SSL
|
||||
xml = ET.XML(r.text)
|
||||
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)
|
||||
|
||||
def doCSVImport(doorIP, csv):
|
||||
"""Do the CSV import procedure on a door control"""
|
||||
doImportRequest(doorIP, {"task": "importInit"})
|
||||
doImportRequest(doorIP,
|
||||
{"task": "importCardsPeople", "name": "cardspeopleschedule.csv"},
|
||||
{"importCardsPeopleButton": ("cardspeopleschedule.csv", csv, 'text/csv')})
|
||||
doImportRequest(doorIP, {"task": "importDone"})
|
@ -3,17 +3,10 @@ import sys
|
||||
import requests
|
||||
import csv
|
||||
from io import StringIO
|
||||
import urllib3
|
||||
from hashlib import md5
|
||||
from xml.etree import ElementTree as ET
|
||||
import os
|
||||
|
||||
from passwords import *
|
||||
|
||||
# it's fine, ssl certs are for losers anyway
|
||||
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
||||
|
||||
fieldnames = "CardNumber,CardFormat,PinRequired,PinCode,ExtendedAccess,ExpiryDate,Forename,Initial,Surname,Email,Phone,Custom1,Custom2,Schedule1,Schedule2,Schedule3,Schedule4,Schedule5,Schedule6,Schedule7,Schedule8".split(",")
|
||||
from common import *
|
||||
|
||||
# mapping of member levels to schedules
|
||||
memberLevels = {"CMS Staff": "7x24",
|
||||
@ -108,31 +101,6 @@ def makeMember(member, doorAuth):
|
||||
|
||||
return out
|
||||
|
||||
def doRequest(ip, params=None, files=None):
|
||||
"""Send a request to the door control import script"""
|
||||
r = requests.post(
|
||||
'https://' + ip + '/cgi-bin/import.cgi',
|
||||
params=params,
|
||||
files=files,
|
||||
auth=requests.auth.HTTPDigestAuth(DOOR_USERNAME, DOOR_PASSWORD),
|
||||
timeout=10,
|
||||
verify=False) # ignore insecure SSL
|
||||
xml = ET.XML(r.text)
|
||||
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)
|
||||
|
||||
def updateDoor(doorIP, csv):
|
||||
"""Do the update import procedure on a door control"""
|
||||
|
||||
doRequest(doorIP, {"task": "importInit"})
|
||||
doRequest(doorIP,
|
||||
{"task": "importCardsPeople", "name": "cardspeopleschedule.csv"},
|
||||
{"importCardsPeopleButton": ("cardspeopleschedule.csv", csv, 'text/csv')})
|
||||
doRequest(doorIP, {"task": "importDone"})
|
||||
|
||||
def makeDoor(doorName, doorIPs, members):
|
||||
"""Create a CSV for the given door"""
|
||||
outString = StringIO()
|
||||
@ -146,7 +114,7 @@ def makeDoor(doorName, doorIPs, members):
|
||||
print(outString.getvalue())
|
||||
for doorIP in doorIPs:
|
||||
outString.seek(0)
|
||||
updateDoor(doorIP, outString)
|
||||
doCSVImport(doorIP, outString)
|
||||
pass
|
||||
|
||||
def main():
|
||||
|
Loading…
Reference in New Issue
Block a user