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 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():