Move CSV update functions into common.py

This commit is contained in:
Adam Goldsmith 2018-05-12 09:49:51 -04:00
parent f3556f74a4
commit 33c0857e1b
2 changed files with 36 additions and 34 deletions

34
common.py Normal file
View 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"})

View File

@ -3,17 +3,10 @@ import sys
import requests import requests
import csv import csv
from io import StringIO from io import StringIO
import urllib3
from hashlib import md5 from hashlib import md5
from xml.etree import ElementTree as ET
import os import os
from passwords import * from common 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(",")
# mapping of member levels to schedules # mapping of member levels to schedules
memberLevels = {"CMS Staff": "7x24", memberLevels = {"CMS Staff": "7x24",
@ -108,31 +101,6 @@ def makeMember(member, doorAuth):
return out 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): def makeDoor(doorName, doorIPs, members):
"""Create a CSV for the given door""" """Create a CSV for the given door"""
outString = StringIO() outString = StringIO()
@ -146,7 +114,7 @@ def makeDoor(doorName, doorIPs, members):
print(outString.getvalue()) print(outString.getvalue())
for doorIP in doorIPs: for doorIP in doorIPs:
outString.seek(0) outString.seek(0)
updateDoor(doorIP, outString) doCSVImport(doorIP, outString)
pass pass
def main(): def main():