From ce18f6c4ca41c9e73dc90df8a7d5ac306cef42bc Mon Sep 17 00:00:00 2001 From: Laura Denney Date: Mon, 30 Nov 2020 23:05:08 -0800 Subject: [PATCH] worked on bookapp.py as part of lesson4 --- __pycache__/bookdb.cpython-39.pyc | Bin 0 -> 1602 bytes bookapp.py | 68 +++++++++++++++++++++++++++--- wsgi_1.py | 12 +++--- 3 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 __pycache__/bookdb.cpython-39.pyc diff --git a/__pycache__/bookdb.cpython-39.pyc b/__pycache__/bookdb.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3dc7183a47ee9085b6bf3b8fbe22c2b8a40890f2 GIT binary patch literal 1602 zcma)6&2HO95GJV~%Z}~TZJNeFfo={3B0v&IO8$}S8j+?1^(n92} zvP)SN;hd6d554Em9QzKv_9b-fp@+UfQJ|e&+NslCy21`;xig&kzL^nTSy{4R{r>YW zfm5`sU-jYUT7<(x*y6q|@ zxZqoy7x#r2b@oFWOs|*r&%tiPR(C;UzKQjt{m$xGukBa%r48P>qyM-81=fjnLm&p$ zrS=GXGze97b! zFy0rs*$h0(PSW=1V~k3o?ncz8nNECpgM(3=+Aj!)dZ_2!m5M zicVeW+)H+;DD|84>-LaJIXj-AM@mtiFyL|ry})BeP*x;#Mti6=9!D(12@@Q3=mm|$ zI0ox7Gf5~|hfL#ASIN2?zPIIXG&eWW%{GpEl92&L-*9$8rDDkp9ZRaz zSI9$@FoX9BfwyT8G|TDj79`HmehqcRl+#&Sek>*&`X1O(Nc69XJEF-{$Ps)|3?z4P7=!u{*r9A!Oii|eQik_DW zI-#N91U<@9PS?x4p~#OSG*NMItyTo>XHD_}mu3ghi< zdYiuANNX)Zm=e5tMpZ;L)1nVt18X=!51xmK(4gyX1$oUT@VwsQMA9ibnDF=coDM~d zRk_g3G2&_AYf;ytp~Z%tKi%2pFW|-yn3>R%FfZ+91GHzxp#iT}R~_5@{>(4@PwltA E0VN`v1ONa4 literal 0 HcmV?d00001 diff --git a/bookapp.py b/bookapp.py index d2284c6..8d89c23 100644 --- a/bookapp.py +++ b/bookapp.py @@ -1,4 +1,5 @@ import re +import traceback from bookdb import BookDB @@ -6,18 +7,75 @@ def book(book_id): - return "

a book with id %s

" % book_id + #return "

A book with id {}

".format(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

" + #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 application(environ, start_response): - status = "200 OK" + #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')] + + +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 if __name__ == '__main__': diff --git a/wsgi_1.py b/wsgi_1.py index 85498d1..59ac5ed 100644 --- a/wsgi_1.py +++ b/wsgi_1.py @@ -14,6 +14,8 @@ """ +today = datetime.datetime.now() + def application(environ, start_response): import pprint @@ -21,11 +23,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=today.strftime('%B'), + date=today.day, + year=today.year, + client_ip=environ.get('REMOTE_ADDR', default) ) status = '200 OK'