From b720a3bfdf4b0cea6ba312f05d897e1cb7b88bb0 Mon Sep 17 00:00:00 2001 From: Erica Edwards Date: Sun, 10 Jan 2021 18:42:27 -0800 Subject: [PATCH] added code to finish project --- __pycache__/bookdb.cpython-37.pyc | Bin 0 -> 1569 bytes bookapp.py | 63 +++++++++++++++++++++++++++--- wsgi_1.py | 12 +++--- 3 files changed, 64 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..2e79c5985f6429f46a614ae3164e3e22021e7619 GIT binary patch literal 1569 zcmaJ=&2Aev5azCaB0IKIr)e4k1Sb(MOO8%4U8j-CeMo>FO>>z-kLZFtEL}-^( zNXn`f&MCR}(0dNeu`kgF(Y0^kQ-_r8Iz5B}hoj{TXTEP{_7@lD5v;$1%eJ3K=pXy% zdd-3I1hzf{@f=Y^y$`V8`%OfBnxR>mqxp|ndWRP19G!RiUAjOQ>5|j$(XZ$-z3=p| z=>z%=edzRWKjxYqeRPV7D-pbWvwYB=z}DY^U!Wv`K^L9@ z^A&&$+xy-B!+)CvXMdVA+{6qNpHpRHf|{i~GSdPjhIEK_m*qg&Wd1_x4jh+1Mmw$7 znkn64ibtf?V0vKWur-{Rz7&;e&>HI=Z*>3??UaX;%lX}yYZJ+2xR-+mw2hQU>Ejvb zvP(jjcViimSnq*yZC&)0b(m%cY@%&$n#J8|e&*nknTY}zsRa-=O`QdS{QG{o_*sC+ zhPBI{*2a-*y)3O4P@Yddu;LwGN6qw@0sSsmIQ;($IGuNSw7KX?+glD6^3vtoQQhrv zF*hx=+kzyl-JZ_3+li#3*y;=I_S+GOXEzRkTC(9R&$oobXM4k@?(h}7LSES~>CXp! zrqtwQf}d*5gyF#94t_<3oZ=H#5&VXAaD6z8p;(4Xfg9|c#d4T{b-GmB+Af8)V0}9b zx7WAR$0sBj7<@A7Ko$C2^ziBtQBfaP!!=w9f~{iu;B*q76E5%}i(}T4BYR)Wx&~@y zx$cPO+;Ha4R5MRT&=xA)ze=Vn6+V?+GbV~bCYtxe4nCA)Y$QH|fCKysA23Yt0rbnr zFtCoe#ig&34K^y_R%N5Mxsh%jkfftH?J@jX@N;NMZYKCdF|B{XA!d|2yjKXqO^2XX zOz+hpae?>CxFN@aP152sITFzFz>dbUdrjOiGh?X+@S^M~k|aRK6=Cbu02)20Zl^!g zhqHK<|Kc@R#F7rAUU8&_K`~u;A^QS9mrSKhq~BkWaR4)7=VT3^vPcSwpUzTFmu*>s z5}+&r=e4a;HC=r9it#v};3L3A(o#KUzhS72fhzDdTo-~s+0U8Kkph0#aD$vf57c!8 z4U$&R`V4T8UIHki8$?X);AcuE_=OxPU?L&H7UGC#V19-*s086=xLK*Jr{y}OTuV`U z!*t9n)3OU(18XG4t1lxXE$C{nhQnG7cwVUss@NDGj>JtqXMLFvUCcEzoQ76Ztf*SC oZpDV3Kik=E^luG;n+ZD!)57j-fcD%ttiq?ICEv5ZeCEsNzkQgNKL7v# literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..8123c0b 100644 --- a/bookapp.py +++ b/bookapp.py @@ -1,23 +1,76 @@ import re - +import traceback from bookdb import BookDB DB = BookDB() def book(book_id): - return "

a 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')] + 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..c7e7fda 100644 --- a/wsgi_1.py +++ b/wsgi_1.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -import datetime +from datetime import datetime default = "No Value Set" @@ -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("SERVER_PATH", default), + month=datetime.today().strftime("%B"), + date=datetime.today().strftime("%#d"), + year=datetime.today().strftime("%Y"), + client_ip=environ.get("REMOTE_ADDR", default) ) status = '200 OK'