From 98f488c134814531e6a12c987688102aa073a1df Mon Sep 17 00:00:00 2001 From: MikeS-1 <36141900+MikeS-1@users.noreply.github.com> Date: Tue, 4 Jun 2019 15:29:37 -0400 Subject: [PATCH] Book Database works --- __pycache__/bookdb.cpython-37.pyc | Bin 0 -> 1613 bytes bookapp.py | 64 +++++++++++++++++++++++++++--- wsgi_1.py | 10 ++--- 3 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 __pycache__/bookdb.cpython-37.pyc diff --git a/__pycache__/bookdb.cpython-37.pyc b/__pycache__/bookdb.cpython-37.pyc new file mode 100644 index 0000000000000000000000000000000000000000..24e85ae4a797942fb73b172920606abf24883d1a GIT binary patch literal 1613 zcmaJ>OK%%D5Z+xqB0IKIr)e4k1Sb!z$N`A?8jmVM{BdBd5vSC0~Ay7+7BD6~? z^eD=0*9mJ%+7q@%Kn!UfMSWy9Qf529fwh)(88eRkz;SZ|rLuJX5Eixn#kzsa+6=zIAQ=`s9rr zS=V+1=4${Mw*9;Fhx0lO&dw|ou_&ORIE+Xg6Vxya&gp zUykyjcGIxe14!>fR$=rTsCS)m$W;-o2Wi3 zgjhvXwz~kIbc>_ur^Wq%smK@M=l}|6DVr!;*~Gylo`@V6$t4gPl1hWHoQF=l{8<2Bht*4;+Qt+@d+8EfLn%Kxz@UA4 z6E)SR5$N~9!f^FPz}ce7qr-Sl=sq;CEIVGk8`a#N<}AW7}Ah|IJIPrV&Sj;368}^iP${R4DLPV$@`wS4d*~G&F@ln+ zAgB+jjz$6Val`~ib$UeuF$%#tUa9Qt7QBkPx$Akmo4fJT2KI*$YK*&3g#nZut)F1& z4^Y|LKqc4R$;XeH)8Gm-j*e*%(7qV!`+V9oTPw{}m$w#1i9eOCEFMGK$oO!cOixJE z6uoGIC522B>+?NyEG8%t=o|tL(a+F<2%{SG%NQC7HGQUWsd=*QR>|8bZB@3n;_Vs^ zyONPUMHd{}RVo%uQA1LtencLkgc-bZ1m3nmP|3#+s*pHGhecEu6Hcdb{<#=)7!P1a zA6wxgfJy|;gYI=YNkaGxCYj6fY#6aNNCVycLRBq3h=yE zG{*0ZASmj5SW?JlQ7HeCj)d~#$g>E Ot*kh<{$*4DfBp+3a book with id %s" % book_id + page = """ +

{title}

+ + + + +
Author{author}
Publisher{publisher}
ISBN{isbn}
+Back to the list +""" + book = DB.title_info(book_id) + if book is None: + raise NameError + return page.format(**book) def books(): - return "

a list of books

" + all_books = DB.titles() + body = ['

My Bookshelf

', '
    '] + item_template = '
  • {title}
  • ' + for book in all_books: + body.append(item_template.format(**book)) + body.append('
') + return '\n'.join(body) + + +def resolve_path(path): + funcs = { + '': books, + 'book': book, + } + + path = path.strip('/').split('/') + + func_name = path[0] + args = path[1:] + + try: + func = funcs[func_name] + except KeyError: + raise NameError + + return func, args def application(environ, start_response): - status = "200 OK" - headers = [('Content-type', 'text/html')] - start_response(status, headers) - return ["

No Progress Yet

".encode('utf8')] + headers = [("Content-type", "text/html")] + try: + path = environ.get('PATH_INFO', None) + if path is None: + raise NameError + func, args = resolve_path(path) + body = func(*args) + status = "200 OK" + except NameError: + status = "404 Not Found" + body = "

Not Found

" + except Exception: + status = "500 Internal Server Error" + body = "

Internal Server Error

" + print(traceback.format_exc()) + finally: + headers.append(('Content-length', str(len(body)))) + start_response(status, headers) + return [body.encode('utf8')] if __name__ == '__main__': diff --git a/wsgi_1.py b/wsgi_1.py index 85498d1..7805314 100644 --- a/wsgi_1.py +++ b/wsgi_1.py @@ -21,11 +21,11 @@ def application(environ, start_response): response_body = body.format( software=environ.get('SERVER_SOFTWARE', default), - path="aaaa", - month="bbbb", - date="cccc", - year="dddd", - client_ip="eeee" + path=environ.get('PATH_INFO', default), + month=datetime.datetime.now().strftime('%B'), + date=datetime.datetime.now().day, + year=datetime.datetime.now().year, + client_ip=environ.get('REMOTE_ADDR', default), ) status = '200 OK'