From e84da842bea211b660a7f9ed26d51ca91a9cb6d1 Mon Sep 17 00:00:00 2001 From: paradizelost Date: Wed, 22 Nov 2023 14:51:39 -0600 Subject: [PATCH] Update pythonbookdef.py --- pythonbookdef.py | 75 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 10 deletions(-) diff --git a/pythonbookdef.py b/pythonbookdef.py index 93730d4..65c2655 100644 --- a/pythonbookdef.py +++ b/pythonbookdef.py @@ -1,8 +1,18 @@ -class libaccount(): +import requests +import datetime +from tabulate import tabulate +import boto3 +import json +from json import JSONEncoder + +class libaccount(dict): def __init__(self,name,barcode,pin): + dict.__init__(self,name=name, barcode=barcode, pin=pin) self.name=name self.barcode=barcode self.pin=pin + def toJson(self): + return json.dumps(self,default=lambda o: o.__dict__) class book(): def __init__(self,itemid,renewalcount,checkoutdate,duedate,vendor,resourceid,resourceinstanceid,title,materialtype,coverurl,person,authsession,renewresult,overdue): self.id=itemid @@ -37,7 +47,7 @@ class book(): print(e.json()) finally: pass - + #print(renewresult.json()) def sendemail(body,subject): print("Sending Email") boto3.setup_default_session(profile_name='hamik') @@ -61,10 +71,29 @@ def sendemail(body,subject): }, Source='librarynotices@hamik.net' ) +upcomingdays=5 +autorenewaldays=3 +alwayssendemail=False +returndata=False +recipients=['dan@hamik.net','allisonmhamik@gmail.com','danalli@hamik.net'] +uri = "https://auth.na2.iiivega.com/auth/realms/sioux/protocol/openid-connect/token" +checkoutsuri='https://sioux.na2.iiivega.com/api/search-result/patrons/me/checkouts' +with open('libaccounts.json') as accountfile: + accountsjson= json.load(accountfile) + +accounts=[] +for account in accountsjson: + accounts.append( + libaccount( + accountsjson[account]['name'], + str(accountsjson[account]['barcode']), + str(accountsjson[account]['pin'])) + ) + allbooks=[] mediatypes=[] for myaccount in accounts: - account=accounts[myaccount] + account=myaccount print(account.name) # Create a session session = requests.Session() @@ -123,33 +152,59 @@ for myaccount in accounts: mediatypes.append(thisbook.materialtype) allbooks.append(thisbook) -duesoon = [d for d in allbooks if d.duedate < datetime.date.today() + datetime.timedelta(days=10)] - for book in allbooks: #print(datetime.date.today(),book.duedate) if datetime.date.today() > book.duedate: book.renew() + +#sendemail() +tablestart=""" + + + + +""" +tableend="
" + +htmltable="Last Updated" + str(datetime.datetime.now()) +htmltable+='
Click Here to be able to refresh the list.' +htmltable += """
+ +
+""" + +#print(htmltable) +td="" +th="" + +duesoon = [d for d in allbooks if d.duedate < datetime.date.today() + datetime.timedelta(days=10)] if len(duesoon) >=1: #print(htmltable) htmltable += tablestart + "Name"+th+"Count" for type in mediatypes: typecount = sum(b.materialtype == type for b in duesoon) htmltable += "" + type + td + str(typecount) + "" - htmltable += "
" + tablestart + "Name"+th+"Type"+th+"Times Renewed"+th+"Checked Out"+th+"Due Date"+th+"Renewal Status" + th + "Title"+ th + "Thumbnail" + htmltable += tableend + "
" + tablestart + "Name"+th+"Type"+th+"Times Renewed"+th+"Checked Out"+th+"Due Date"+th+"Renewal Status" + th + "Title"+ th + "Thumbnail" for item in duesoon: htmltable +="" + td + item.person + td + item.materialtype + td + str(item.renewalcount) + td + str(item.checkoutdate) + td + str(item.duedate) + td + item.renewresult+ td + item.title + td + '' +"\n" - htmltable += "" + htmltable += tableend htmltable += "
" htmltable += tablestart + "Name"+th+"Count" for type in mediatypes: typecount = sum(b.materialtype == type for b in allbooks) htmltable += "" + type + td + str(typecount) + "" -htmltable += "
" +htmltable += tableend + "
" htmltable += tablestart + "Name"+th+"Type"+th+"Times Renewed"+th+"Checked Out"+th+"Due Date"+th+"Title" + th + "Thumbnail" for item in allbooks: htmltable += ""+td + item.person + td + item.materialtype + td + str(item.renewalcount) + td + str(item.checkoutdate) + td + str(item.duedate) + td + item.title + td + '' +"\n" -htmltable += "" +htmltable += tableend with open("out.html","w",encoding='utf-8') as outhtml: outhtml.write(htmltable) -sendemail(htmltable,"Library books due in the next " + str(upcomingdays) + " days " + str(datetime.date.today())) \ No newline at end of file +sendemail(htmltable,"Library books due in the next " + str(upcomingdays) + " days " + str(datetime.date.today())) +#for item in duesoon: +# item.print() \ No newline at end of file