From 9e16dc905a99e6b6ed7936f807804a7b5220cd7c Mon Sep 17 00:00:00 2001 From: seaneightysix Date: Sun, 21 Jul 2019 11:54:05 -0500 Subject: [PATCH] completed --- __pycache__/bookapp.cpython-36.pyc | Bin 0 -> 2022 bytes __pycache__/bookdb.cpython-36.pyc | Bin 0 -> 1566 bytes bookapp.py | 65 +++++++++++++++++++++++++---- wsgi_1.py | 10 ++--- 4 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 __pycache__/bookapp.cpython-36.pyc create mode 100644 __pycache__/bookdb.cpython-36.pyc diff --git a/__pycache__/bookapp.cpython-36.pyc b/__pycache__/bookapp.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c96d591f1ff56fa192a60a01ff1d60ca24dd9c5 GIT binary patch literal 2022 zcmaJ?TaVL56rLGhVmrx#O4$OfXjoMhsZ_#M;vrp?WkDd+fJ!T<1+u)EN#ew@)A3}x z33eYy`-=Jl`Um>f-{aRl@z&>k>NgI{B3jkaoH=u5&Ro9pos(n|wn!E5mPy#<;m66z4o9?GvwYCh4_lY44=zWOt`ewE>^;rrk!L zeGb8CK@}O(oUCZUa>mKTk>?b9Npm_j1|(;%^p32z{M&2c>yEB$zfh5iMbYg*UmI1p z7mKxCEmCs3t47$eQHIicR)mCR~dnfEqS}JX+k!ay;)$N4qd$rAy?e3Ib_1Yjx25IT` z!l}3;WhzU1kjiPO+D2L11I9tbeRCELMQQ5cA4Ix9_wY*R`%K8JlZh}4mD|I?`xC(G`lRcDvtM{=oqd@ zfp~H@WCi6$!4A&nWS2bOEDXdFv9021yrL^g$&crr5N+kA9&u}I=CC8uc5iuF2l<;t zOLGUYhzC`qmu7b!Z!g>3INCnOPhY(ABI3o?F)cy_7mJoww*!xodTmQ;;+1vQPMVjH;m&zZdY5|+2j*J#zzD#V^aQAANre+O1M0S;^hzH3>KoN(hTK{gO>a`G#KZY&x(&9!De zA;}q&D0AY;Zz(d45@o%lKahkyCApa!0|peWUYnJqy7M9JNS%JKwP@Sbt*VLA%9M;| z=w@-GO6P%CRMe9Cs%@(Toz%#;2J@t!`L6DQ1oSJ-P!55SHoT8VLy9bo_eG#xx3Eq2 zAp~KJI>t%n&<3;y-Jl+m=V0$MJ&R9sPOq%M`4bAS4^a-5`Qkdj0UVsH7-)nZ4XjriK}(u$8H- zvAseGqGS!^6O>927UfSl%FXQ+$T>i8C`g;va<*d7?6Jqa6&-5YHhPDR+i9XiqP|p% znK*QnI8dFDn#R8S=+<}lg8RL@5101U%a>aZA1s^KFJEuOCkUotlmr3(g6h+7A_7!F;ODz>+7IJVnyKiw zPl3Zm$)u1Mw2!TGneR!>$*NqeGhQcg1(7`3Stmgd_@{N@L=nG~MW_%*C&(|b-ZwJ2 x?>DP617Ig`^gA!q)m2vY!|6^_KF42|&dqES05zc*G^%2d9%U`QV0}5SO3l_k|d> z_d^$4%`ve?4nWjHP-&cYesM3IwsYyecQ0Is%p89fk_XRI6M{euoD1jeqxY_ME?f=n zs{k3q{oVV+dzXb^Z=TakM-&W?5oz*)nI$aL^8&#d_pq{$6<=oH@lQwIf$NiBeXXce zRYft^Sm6^ic46b*cue+5=3aR~gSf6?Y@1bSUES9(2V~CRN@^9;c`) zwhC3*jYNnewFkzvcgd3`V4fY(nKH#G8ujP-G{9DqsscF4MNp#6PX|LP zWU_x%OkYTJD*AegC51{98}J=;D5gjYbOs4W=w~*f2%`g-mx-p} z9WsMUT@~wZ)`G3tX0x%GG!AgwlZ*@~dd=B6OeNDZbRwxzKcWCp!Ytk^1VO_hXqJ+D zEhwC${R(P}DW|if^h``R%sjB8kmz3%cTDwE$Ps)|3?zIb1VC$&GIfk~MQ?5b@{H~)mK8G1-sSpMv zsh-Zm)}qo zQNy(81J}SBj?mi6PzwXP?ysYu*#w?fTbxKbMTZl9Q_tB@#8{PboeU#^Q8lCLMr|0i mY4*=dwq5;OOJH}xY{I;-n=a6vU57RJYkApo%`cz%^8GIY43+W# literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..b277b59 100644 --- a/bookapp.py +++ b/bookapp.py @@ -1,4 +1,5 @@ import re +import traceback from bookdb import BookDB @@ -6,19 +7,69 @@ 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, + } -def application(environ, start_response): - status = "200 OK" - headers = [('Content-type', 'text/html')] - start_response(status, headers) - return ["

No Progress Yet

".encode('utf8')] + 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): + 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__': from wsgiref.simple_server import make_server 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'