From 42e63fb15423f06d9207fda74eaf242ae1305465 Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Thu, 10 Jan 2013 21:50:24 -0800 Subject: [PATCH 1/8] Internet Programming in Ptython - Week1 Assignment --- assignments/week01/athome/add_client.py | 33 +++++++++++++++++++ assignments/week01/athome/add_server.py | 38 ++++++++++++++++++++++ assignments/week01/lab/echo_client.py | 36 ++++++++++++--------- assignments/week01/lab/echo_server.py | 43 ++++++++++++++----------- 4 files changed, 115 insertions(+), 35 deletions(-) create mode 100644 assignments/week01/athome/add_client.py create mode 100644 assignments/week01/athome/add_server.py diff --git a/assignments/week01/athome/add_client.py b/assignments/week01/athome/add_client.py new file mode 100644 index 00000000..ea3bf247 --- /dev/null +++ b/assignments/week01/athome/add_client.py @@ -0,0 +1,33 @@ +#------------------------------------------------------------------------------- +# Name: add_client.py +# Purpose: +# +# Author: Allen Su +# +# Created: 10/01/2013 +# Copyright: (c) allsu 2013 +# Licence: +#------------------------------------------------------------------------------- + +import socket +import sys + +client = socket.socket() # Create a TCP/IP socket + +# Connect the socket to the port where the server is listening +server_address = ('localhost', 50000) +client.connect(server_address) + +try: + # Send data + num1 = raw_input('Please input the 1st integer number: ') + num2 = raw_input('Please input the 2nd integer number: ') + message = '%s,%s' % (num1, num2) + client.sendall(message) + + # print the response + print('%s + %s = %s') % (num1, num2, client.recv(4096)) + +finally: + # close the socket to clean up + client.close() diff --git a/assignments/week01/athome/add_server.py b/assignments/week01/athome/add_server.py new file mode 100644 index 00000000..bc31d9f1 --- /dev/null +++ b/assignments/week01/athome/add_server.py @@ -0,0 +1,38 @@ +#------------------------------------------------------------------------------- +# Name: add_server.py +# Purpose: +# +# Author: Allen Su +# +# Created: 10/01/2013 +# Copyright: (c) allsu 2013 +# Licence: +#------------------------------------------------------------------------------- + +import socket +import sys + +# Create a TCP/IP socket +server = socket.socket() + +# Bind the socket to the port +server_address = ('localhost', 50000) +server.bind(server_address) + +# Listen for incoming connections +server.listen(100) + +while True: + # Wait for a connection + con, addr = server.accept() + try: + # Receive the data and send it back + message = con.recv(4096) + delimiter = ',' + num = message.split(delimiter) + total = int(num[0]) + int(num[1]) + con.sendall(str(total)) + + finally: + # Clean up the connection + con.close() \ No newline at end of file diff --git a/assignments/week01/lab/echo_client.py b/assignments/week01/lab/echo_client.py index b8898436..70707625 100644 --- a/assignments/week01/lab/echo_client.py +++ b/assignments/week01/lab/echo_client.py @@ -1,16 +1,20 @@ -import socket -import sys - -# Create a TCP/IP socket - -# Connect the socket to the port where the server is listening -server_address = ('localhost', 50000) - -try: - # Send data - message = 'This is the message. It will be repeated.' - - # print the response - -finally: - # close the socket to clean up +import socket +import sys + +client = socket.socket() # Create a TCP/IP socket + +# Connect the socket to the port where the server is listening +server_address = ('localhost', 50000) +client.connect(server_address) + +try: + # Send data + message = 'This is the message. It will be repeated.' + client.sendall(message) + + # print the response + print(client.recv(4096)) + +finally: + # close the socket to clean up + client.close() diff --git a/assignments/week01/lab/echo_server.py b/assignments/week01/lab/echo_server.py index e2c52fc6..198da36b 100644 --- a/assignments/week01/lab/echo_server.py +++ b/assignments/week01/lab/echo_server.py @@ -1,19 +1,24 @@ -import socket -import sys - -# Create a TCP/IP socket - -# Bind the socket to the port -server_address = ('localhost', 50000) - -# Listen for incoming connections - -while True: - # Wait for a connection - - try: - # Receive the data and send it back - - - finally: - # Clean up the connection +import socket +import sys + +# Create a TCP/IP socket +server = socket.socket() + +# Bind the socket to the port +server_address = ('localhost', 50000) +server.bind(server_address) + +# Listen for incoming connections +server.listen(100) + +while True: + # Wait for a connection + con, addr = server.accept() + try: + # Receive the data and send it back + message = con.recv(4096) + con.sendall(message) + + finally: + # Clean up the connection + con.close() From 5adac4ce3ca6d2538fc608d77fc522b1e6c4d07a Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Tue, 15 Jan 2013 19:12:23 -0800 Subject: [PATCH 2/8] added the keyboardinterrupt section --- assignments/week01/athome/add_server.py | 34 +++++++++++++++---------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/assignments/week01/athome/add_server.py b/assignments/week01/athome/add_server.py index bc31d9f1..d14117c8 100644 --- a/assignments/week01/athome/add_server.py +++ b/assignments/week01/athome/add_server.py @@ -22,17 +22,23 @@ # Listen for incoming connections server.listen(100) -while True: - # Wait for a connection - con, addr = server.accept() - try: - # Receive the data and send it back - message = con.recv(4096) - delimiter = ',' - num = message.split(delimiter) - total = int(num[0]) + int(num[1]) - con.sendall(str(total)) - - finally: - # Clean up the connection - con.close() \ No newline at end of file +try: + + while True: + # Wait for a connection + con, addr = server.accept() + try: + # Receive the data and send it back + message = con.recv(4096) + delimiter = ',' + num = message.split(delimiter) + total = int(num[0]) + int(num[1]) + con.sendall(str(total)) + + finally: + # Clean up the connection + con.close() + +except KeyboardInterrupt: + server.close() + sys.exit() From 4178bb4fccceb8470f47da43530d21e70be8046d Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Tue, 22 Jan 2013 11:31:00 -0800 Subject: [PATCH 3/8] Week02 Assignment - Allen Su --- .../week02/athome/Assignment - Allen Su.txt | 12 ++ assignments/week02/athome/http_server.py | 28 +++ assignments/week02/athome/http_server2.py | 50 +++++ assignments/week02/athome/http_server3.py | 87 ++++++++ assignments/week02/athome/http_server4.py | 146 +++++++++++++ assignments/week02/athome/http_server5.py | 147 ++++++++++++++ assignments/week02/athome/http_server6.py | 164 +++++++++++++++ assignments/week02/athome/http_server7.py | 191 ++++++++++++++++++ assignments/week02/athome/test_client.py | 20 ++ assignments/week02/athome/tiny_html.html | 11 + assignments/week02/athome/web/a_web_page.html | 11 + assignments/week02/athome/web/favicon.ico | Bin 0 -> 205334 bytes .../week02/athome/web/images/JPEG_example.jpg | Bin 0 -> 15138 bytes .../athome/web/images/Sample_Scene_Balls.jpg | Bin 0 -> 146534 bytes .../week02/athome/web/images/sample_1.png | Bin 0 -> 8760 bytes .../week02/athome/web/images/test/test.txt | 1 + assignments/week02/athome/web/make_time.py | 25 +++ assignments/week02/athome/web/sample.txt | 3 + assignments/week02/lab/http_server.py | 28 +++ assignments/week02/lab/http_server2.py | 50 +++++ assignments/week02/lab/http_server3.py | 87 ++++++++ assignments/week02/lab/http_server4.py | 146 +++++++++++++ assignments/week02/lab/http_server5.py | 147 ++++++++++++++ assignments/week02/lab/http_server6.py | 164 +++++++++++++++ assignments/week02/lab/http_server7.py | 191 ++++++++++++++++++ assignments/week02/lab/test_client.py | 20 ++ assignments/week02/lab/web/favicon.ico | Bin 0 -> 205334 bytes .../week02/lab/web/images/test/test.txt | 1 + 28 files changed, 1730 insertions(+) create mode 100644 assignments/week02/athome/Assignment - Allen Su.txt create mode 100644 assignments/week02/athome/http_server.py create mode 100644 assignments/week02/athome/http_server2.py create mode 100644 assignments/week02/athome/http_server3.py create mode 100644 assignments/week02/athome/http_server4.py create mode 100644 assignments/week02/athome/http_server5.py create mode 100644 assignments/week02/athome/http_server6.py create mode 100644 assignments/week02/athome/http_server7.py create mode 100644 assignments/week02/athome/test_client.py create mode 100644 assignments/week02/athome/tiny_html.html create mode 100644 assignments/week02/athome/web/a_web_page.html create mode 100644 assignments/week02/athome/web/favicon.ico create mode 100644 assignments/week02/athome/web/images/JPEG_example.jpg create mode 100644 assignments/week02/athome/web/images/Sample_Scene_Balls.jpg create mode 100644 assignments/week02/athome/web/images/sample_1.png create mode 100644 assignments/week02/athome/web/images/test/test.txt create mode 100644 assignments/week02/athome/web/make_time.py create mode 100644 assignments/week02/athome/web/sample.txt create mode 100644 assignments/week02/lab/http_server.py create mode 100644 assignments/week02/lab/http_server2.py create mode 100644 assignments/week02/lab/http_server3.py create mode 100644 assignments/week02/lab/http_server4.py create mode 100644 assignments/week02/lab/http_server5.py create mode 100644 assignments/week02/lab/http_server6.py create mode 100644 assignments/week02/lab/http_server7.py create mode 100644 assignments/week02/lab/test_client.py create mode 100644 assignments/week02/lab/web/favicon.ico create mode 100644 assignments/week02/lab/web/images/test/test.txt diff --git a/assignments/week02/athome/Assignment - Allen Su.txt b/assignments/week02/athome/Assignment - Allen Su.txt new file mode 100644 index 00000000..3e4fc3a2 --- /dev/null +++ b/assignments/week02/athome/Assignment - Allen Su.txt @@ -0,0 +1,12 @@ +hi Chris, sorry for the late submission. I stunbled across several challenges that took me a long time to resolve. + +I was able to finish the labs and the assignment up to the "dynamic time-page" point, without the bonus (running it on the VM). + +However, in I ran into an issue that I can't figure out. I added another directory (web/images/test), and a file inside that directory (web/images/test/test.txt). + +the URI works fine until the test.txt file. For some reason, when I click the link on that file, the URI being passed with the request becomes /images/images/test/test.txt, +which then resulted a 404 error. + +Thanks, + +Allen Su \ No newline at end of file diff --git a/assignments/week02/athome/http_server.py b/assignments/week02/athome/http_server.py new file mode 100644 index 00000000..db7a498b --- /dev/null +++ b/assignments/week02/athome/http_server.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python + +import socket + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +html = open('tiny_html.html', 'r').read() + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + client.send(html) + client.close() diff --git a/assignments/week02/athome/http_server2.py b/assignments/week02/athome/http_server2.py new file mode 100644 index 00000000..3f23d695 --- /dev/null +++ b/assignments/week02/athome/http_server2.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + r.append('Content Type: text/html') + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +html = open('tiny_html.html', 'r').read() + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + response = ok_response(html) + if request: # if the connection was closed there would be no data + print "received: " + print request + print 'sending: ' + print response + client.send(response) + client.close() diff --git a/assignments/week02/athome/http_server3.py b/assignments/week02/athome/http_server3.py new file mode 100644 index 00000000..9fe6e52e --- /dev/null +++ b/assignments/week02/athome/http_server3.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + r.append('Content Type: text/html') + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(method, protocol): + msg = '400 Error: Bad Request. Either %s or %s is not a supported request' % (method, protocol.split('/')[0]) + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/html') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def parse_request(r, h): + """Parse a request and returns a URL""" + lines = r.split('\r\n') + + method, URI, protocol = lines[0].split() + + print('URI requested is: %s') % URI + + if method != 'GET': + response = client_error_response(method, protocol) + print 'sending: ' + print response + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response(method, protocol) + print 'sending: ' + print response + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + return ok_response(h) + +html = open('tiny_html.html', 'r').read() + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + response = parse_request(request, html) + print 'sending: ' + print response + client.send(response) + client.close() diff --git a/assignments/week02/athome/http_server4.py b/assignments/week02/athome/http_server4.py new file mode 100644 index 00000000..6c9ee91c --- /dev/null +++ b/assignments/week02/athome/http_server4.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(dir_list): + msg = ["Directory Listing:"] + for d in dir_list: + msg.append(d) + return "\n".join(msg) + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + root_dir = 'web' + URI = u.lstrip('/') + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + response = client_error_response() + '\r\nFile Access is not supported yet!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise NotImplementedError('File Access is not supported yet!') + elif os.path.isdir(filename): + data, ext = format_dir_list(os.listdir(filename)), 'txt' + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/athome/http_server5.py b/assignments/week02/athome/http_server5.py new file mode 100644 index 00000000..1140bfa8 --- /dev/null +++ b/assignments/week02/athome/http_server5.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(dir_list): + msg = ["Directory Listing:"] + for d in dir_list: + msg.append(d) + return "\n".join(msg) + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + root_dir = 'web' + URI = u.lstrip('/') + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + data = open(filename, 'rb').read() + ext = os.path.splitext(filename)[1].strip('.') + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + elif os.path.isdir(filename): + data, ext = format_dir_list(os.listdir(filename)), 'txt' + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/athome/http_server6.py b/assignments/week02/athome/http_server6.py new file mode 100644 index 00000000..e7e09eec --- /dev/null +++ b/assignments/week02/athome/http_server6.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(dir_list): + """Format the Directory Listing as HTML""" + html = [' '] + html.append('

Directory Listing

') + + for d in dir_list: + html.append('

%s

' % d) + html.append(' ') + return "\n".join(html) + +def get_time_page(u): + """Return a HTML page with current time listed in GMT format""" + time = httpdate() + html = "

%s

" % time + return html + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + root_dir = 'web' + URI = u.lstrip('/') + if URI.lower() == 'time-page': + response = ok_response(get_time_page(URI), 'html') + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + data = open(filename, 'rb').read() + ext = os.path.splitext(filename)[1].strip('.') + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + elif os.path.isdir(filename): + data, ext = format_dir_list(os.listdir(filename)), 'htm' + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/athome/http_server7.py b/assignments/week02/athome/http_server7.py new file mode 100644 index 00000000..9a8febff --- /dev/null +++ b/assignments/week02/athome/http_server7.py @@ -0,0 +1,191 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +root_dir = 'web' + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(u): + """Format the Directory Listing as HTML with links""" + + dir = os.path.join(root_dir, u) + names = os.listdir(dir) + + dirs = [] + files = [] + + for d in names: + if os.path.isdir(os.path.join(dir, d)): + dirs.append(d) + elif os.path.isfile(os.path.join(dir, d)): + files.append(d) + + html =[] + html.append(" ") + html.append("

%s

" % u) + print "URI:", u + if u: # don't need the parent dir at the root + html.append('Parent' ) + html.append("

Directories:

") + html.append("
    ") + for d in dirs: + path = u + '/' + d + html.append('
  • %s
  • ' % (path, d)) + html.append("
") + html.append("

Files:

") + html.append("
    ") + for f in files: + path = u + '/' + f + html.append('
  • %s
  • ' % (path, f)) + html.append("
") + html.append(" ") + return "\n".join(html) + +def get_time_page(u): + """Return a HTML page with current time listed in GMT format""" + time = httpdate() + html = "

%s

" % time + return html + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + URI = u.lstrip('/') + if URI.lower() == 'time-page': + response = ok_response(get_time_page(URI), 'html') + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + data = open(filename, 'rb').read() + ext = os.path.splitext(filename)[1].strip('.') + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + elif os.path.isdir(filename): + data = format_dir_list(URI) + response = ok_response(data, 'html') + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/athome/test_client.py b/assignments/week02/athome/test_client.py new file mode 100644 index 00000000..210ec545 --- /dev/null +++ b/assignments/week02/athome/test_client.py @@ -0,0 +1,20 @@ +import socket +import sys + +client = socket.socket() # Create a TCP/IP socket + +# Connect the socket to the port where the server is listening +server_address = ('localhost', 50000) +client.connect(server_address) + +try: + # Send data + message = 'GET / FTP/1.1\r\n\r\n' + client.sendall(message) + + # print the response + print(client.recv(4096)) + +finally: + # close the socket to clean up + client.close() diff --git a/assignments/week02/athome/tiny_html.html b/assignments/week02/athome/tiny_html.html new file mode 100644 index 00000000..c5dd01dc --- /dev/null +++ b/assignments/week02/athome/tiny_html.html @@ -0,0 +1,11 @@ + + +

This is a header

+

+ and this is some regular text +

+

+ and some more +

+ + diff --git a/assignments/week02/athome/web/a_web_page.html b/assignments/week02/athome/web/a_web_page.html new file mode 100644 index 00000000..e7c3c777 --- /dev/null +++ b/assignments/week02/athome/web/a_web_page.html @@ -0,0 +1,11 @@ + + + + +

My First Heading

+ +

My first paragraph.

+ + + + diff --git a/assignments/week02/athome/web/favicon.ico b/assignments/week02/athome/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4e8c2d614efeb3ab530eff66ebb2d6fbe2046637 GIT binary patch literal 205334 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�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�htB2`sgeI+D(v5bW1HynZ-Ww_@BcWsD}09y*%!WmKm0hN z*MI2#Lgd>3DG5o$A(b%18}UnQ0kH+d77$xNYyq(a#1;@+Kx_fA1;iE*TR?09u?2o& z0WiXpkW`TtBmJ-SXGAuokiXeT+DOZgBbF=zEGrxJU_^@kXN2h&P?KLz{%huf&Ig; z-vzMECjFzlz)r@vu8%msj+cGMjve4z)q@3cjKK8*XD6C;5!a`PV}mWk>%{NDmiSd| zP*|8R14i3VI6W`RH@I~9oYja}VWEtO@dqQQmcW|>pR9&_ynF~e1R9UJ%h_}&+ei5R zEAt9F;c`y=20Sj}?7&tq%sAuk^2LjP0S^u#`R8w(K6&!ViQ|1>sALQFS-fN^sZ3J2 zFvW1W^~GZFW%1a{p&?FaAImNOzGI=m<&J?%jWm|5WY{1HryoUE+O*`o5} ze@c;&5evXY*vVOboYA*x)hg;ed<5*N>vZMvrN`H2UpN z;lhP9ZN(y+(RH>d0(;~pVqiI&<%;iPFl@eoEj|YC=XHq-UKbI&eGK~t5uaKImS3UN zInSgKXS_mZ_62$x7yF;RHgJu8|NBo7XMLMK`sgm0iWkAZ%6lr2sJCQVw_b^n%qyJ)K>oqpdBlBEaIiAu6|Mi}LG(;Ue@OmE{#+rp5m;H!G(o zCp-UXT59T5OH0cyEiE^Hl%AgP`oZ>&9}e!{pOT!A^c3|`U_@>(F%dX4V-A5U!>|9) zvSVNBjHeK@j&oCdY%Bp#N9E166k3=>lMR+pL0KVv`spXckH?upsbJ0En!gP`Q54u< zzvK0x@Ay%HeN|Ik2^Lo%QV>{;`Dmw2;8u2mRaXZFToPDfzTf)#cpWJ%E;-Y%x32x@ zk;5ICVBw)p0mEcAfy2TUFIn;v7U8T}vv#i5))D&4@{%$N4hX7Sa^M9UAeMM|wKW+; z?*#j|{*MX)uMl$DW#z1>q6XXjPmdVbAq0|r?K7?wx& z*4MJ5y@#o$x&n+j&LE56w)#_SOw{Adj1=&R^1uj8Mtq|;m|mP6m-S|DR^}7f0(@8% z0%wTUuQ$>bU3qh)+!0v~d$PH#C81m&IfA?iLmm zH|?$8Yv$$V@m6(JCHlWfWNKzElz(0m;<BRJPF@MNlCmt0B&^D7jLJ@5!!BO^ke_k-vc zjCuJL7009Pm4ZPP@j+T@T6}(f5d;7BO)%ho1kZ|MV>Q{eK7!nyZ()$D{n*9Pnu7 zkmc5GLiuO4c?s+VnFec80f%Blnblw$AB-gz;_k=ailm;i#{}*h=aH3{mC{FdKSVzr zCa`lV@SZc@z#0N?t5B#LwKdh?rXCTvOndA0{K#2VysczsWe9bivjg+d4}^yX3FYQ2 zr;@^=cfCB^E4)42J}Cmb>*!(dTu%0Zhj!H3|v2|OXr%;TJ%i|6}seQPNhe8l9$SRwiOc%Z!}J!+`0`?RF6_}f7L z0CL0lz}d->ax>HE@E|X!CM+y0J2WIj;0b^)b&zwuIB%vJJfPsfKycscpMsm{pOK!C z6cikE3tSo8e<~jB_VW|?ZT$XcY+_2@xM#Sh$EXA|@Z8Yv zKTqB?&TbX?czbb%k%7kEF$$0}g?fVWmc``cPDW;yuBu#ljYi1qFY z@bRWLlpFjke5VNa)fDpg_ajF~dt>m|PVxR49Ieazc%m1^GOjCDYBG(Lnlx+XEZ*k| zW64~M_p-pQssk^VGhVlXJ;qr}yWHF;Cntw?)@^lOZ&@IRTqG%_m@?; zr}MFTHSUR5F-|A}-^&@}B6n98wBaD~!}W7_bq0^HL0~;rRutoYko}mm+;HuG3=9m^ z6qQ}HRaaMc*3ek-gYH^A0{c-IKTn%Bl_pG_KwHqyHKPAGf@@S-T86%)iDIg9N&YJ8 z{#$>~$&x(lN#nqv;XG;1Neez%DKL#V*GNc+_YXZ%CiHdu-X}`D{{#1ta8JXvEyDSF zu+1l5A5Xu(L{}ocp4kb%m{7zKE@O^V7_u{*R$5@SHgv*5fS z_FS?PTr?!PZfCM>hy&Luo{YfI6n&p>-P}DWGBOsj{O+veN8Q`Bj)Djd9}5*jW=)Je01i_8T1kR!7t1@ zo|KsMvvG&uWUU5UurfC%_mjrPM&dlfLzwgI?b=W459iQ)&L2DXLiurzm+5vTC2&wg zbqRpCh*3lJumxs6IGHv={fj+&ZZht{t;DMX#)6gBt7*Os+U{lz8t$z_(r8B#U{n8uSp?<`XL!k64Isr6{xrWckcBr6uYKNg4W%J6yPH(m(Z*>~^>&(eFXS4o8qK`li}* z7m0J_eYy(3O!B3%xR)y#s|sc3tj$r;#)E7eQJ*L(Ke(i$b2gFk7Im;tc9LA5i@@^$ zcZd|5wsGDIEe3aLg{lUvUb%|2G*;3)%vr`MjwQL3GibOc#?=+uFwS^p4?eEs#~$Fk zDbz2_KP7Pv#nXOdd@_X`y0b30wWM=5AmQa57~*SfAAWC}ZIP zzZCH4@GAiV+n95#Fqa1(!Jp*8{u)_jO(Ve38VxSAe2OW_fQj>W_X6Y*40=+C1Si)* zokpMW5*R_8Ei{UAIba7clW21M22x$L?0NauY7a7{jMrhFt)@DzU0MsI+tW!R43x;@oYSotloGxVARNUft$)Xd#ImMmwibIZCTk&RbZ@5zZ@a3j%;q!(01^TR$t8k z%LZH@j13jg4wP%b=J#HM`}Zo+U8OB>p*R~#;6WJ}&?el|>};%Qhdu7`7^`x|7`MfE zJmY%Kf|{XB!@Y3NIfSx{SWx?|X+rC+53LaKfS$9PR3m`~1NJ~@N=8FgJf>hdF@N)~#f^!C0`5`f^p8k7syOF(+46R3wF&6GuFZzH( zP9#?jwo{Zo$vUc$gwb3Y8KOgD!A}~~oLA+Ge{QvH>v%A_KTQVrJ1Qca0(^Zj$8#ZWlTGGk1bdO@3JqGk zXdx+ZmJ=_3%QhNa=0wX}^0)uou|@yebU0P3qNR?#$ytmSQfT4TL@LJfA<YkHBp*73JaQw!Yq8I>CXv_ak-j6ci9}1RSDUNYGOVAk6=TcCvZ9 zCCQ@?*@s4s94YW)z-hWaZ;hJl zW~)u_ConTgdH=%mde~S}2G|%8M4Fku@I3q2!9a;=51mP{dZ0kKl23NCb{^>{>sW6(C|Ho1CqqX?&%q&cu;}W7ND?8)6u(06L z!lL{u%OdnjF_w9@f~oIJ-)HkH zwmjf`E`h&w%#CLBdegLa=SNB{R;MQJv$Y0G==t-wm*wH#{h9XVRLP}R%#u>$?_qAmoLroq1cillg=fTV*jXAPW!kt~ zdO@S(Y~>c~H4_dx>QC-)UN*gR*U!#F{@rDM+4-0DM{nBncKO#P=Q3&fy5+?~zXMIG zl(e+eypXW4lJKYqv!Va{zqGH~88ms#`J}!@MNVP=m&*0emStJTZXUKFeu*t0wt(0I zVhe~ZAhv+m0%8k@Eg-gl*aBh;h%F$tz<+=RM3{sB=`EYV&zMTzN@K$$67O+X%SR5^SjQ>{-JI(K83Z&lUd?ZAJbJqOHI^kT4kJA4sT4NcQvN zjFphQ$G0jH(n)+fRzkX;Z*iPwObZ2pHv!BAXF%X}^%=WD`r+Vv(N^Kv=fV~r4(IRj zXE^`80)0E20j4p7*l>OveH0Bm3;|I=pIqeci0%(==;^cVziGo4h}Do>kVKq_q6O;5Vtr=h~Y$-?Qd}Se|Sioe>Bd&2r-f~kbdzRG`?$& z-(5fqz!M%Ti7i76-G}%r4Ev%n=|4RGfA6@s`RR3{41Z&m_D7KKON`)5nBd7 zFSf;U3mF+2ajjp*efp8F&yWZ8mz@XY41mu&gI+ZJrVp@dSFiqn7|k~>^!I;-*iU8) zJ-6vIX0Rz!r<|C$dByPI)!V1T7j7Kl5M^F=yca)?4zyA4^OP9Xuf|jt4w>QCd46$y1fKSlGp~r`9 z$HK;c;_;>Xnp+U_(DR_Bxuv1Dwk~Z??Vi}y=9WJnMl9nt_;f8?w3y}_Yweah=6O%h zT;=gI*ZjUmjLDaXGyDMlw6~xy+7DmMBa#=q_Q_uKt(tx^sHn8N@d1yQ<2u_nZ(OGX z`&*wzMueZOuB!N^tFuFhnRDKW7`v1d=ykVISLdM&p2wD^rcsUc4WD&)c0LV7oXecK z^SEYw#nAktJodBa%wh07X9YQV56X(m?iAz~z7-J}^(OqP`wkp9_;JU6ZI4`05U7MGxw(Ga2}cjkRCJmZdtfjXlYve=LEGF51p~;lDdDaE&4Ml@;XY zA*M0$!@`36Z+VPNfB#ulTT_L&w@TJ|sGTRopcXCwK*t@iO6(@$_zd%4OuibizSdOly#=Sr6YiVRj32`hcA`I~@aS!rxvsgi1HpNDVGiZL_ zN1R%3QGWi9Teny;oi%F-?Ng|K{5s5?H!q#XXvIdyP*A|`@R;b>K6iKbPwH#y$koM_ zx@9b=U(1dkEHuN{^pwt-%N|sS;XV1&YU`l*y(C|>&-WW zILRu+V(}O_p#j{+`EHF&=k_xC++O-NhOa51E^t!7|fRSVUM5 zVnX5{78e$ri3|(784((SYm&ntg@)LaW`=9z7#$S}(=VKec;CM+Te^&8a^3jSvaew8 z_Po6OX2i#RUs7EB$He$}#ECiz*A8)EOrs%yq0REd<02S*0k`)WW8oN82Lq;Eh#07H9bozScAJ>0|4 zu32n!#8>I5$*j4tjujQ;Al9*f$G9?6Q`2_?{Ctig2K?jTprAm04G`;>ths76GhAmV z#5DPNdw*?jV{;hshkxcVCVudvM7yD#&Mp)X8%`rHA*PG#Wg|(#cX5K+99p8if+n5X zEok;~-CnKz!9pA(k74V9UN%o$qrR-Pg!nZ~$9ta! z2L>eBY~S`~Ty!KazYwFyV>SK#e991?_a0((zDCTJa6i&rvqlzi{Vl6jYt!PziX<2t^gB(&dAQR^A+U$c%kFsbexOcH*nQr(U$ z=1>{qFEyoY!#f}Wt9+sV*(}h?kSyA4HZc~y|MrCAXZq6vl&&h76X!qXoW6>elEsEN`_0B^f7lP#5kV!ViL!l(Jxukq%A9%mV*gf zyh@EGFPp`tdT6k5k%(={*~%sz^=G3y;0s=7%SM!Jd#KRkxp&3hfNw0S!^x#6`blDW z?uYeFjc=Vgb?S>dckZy)UVDuWA3pqLadD}qtDD!=p?QAQzQR$DcF9wLPmLQ6vLn~u zpzhO0nGE7J#`v#e6PL_p(2HlILkxKv9&8IdM)QIf8{S~U6y0=abeALJn!{Wlegbq< z=Q^)uE7UYdec5t0YtdXbT7Nzb+pWi>_oCmrf&Q4cDem8Y-JeNa^kGVf12H<4!glvn z+>bn15)|H?Hzpz@Rms6A@I4#HqF4HwD(`n(rChhQX5yvbKaIT_Ea*$~dNKNp9}PbM zo!jH^Dc@&HvMmmOt4}W0_I+;-s63hg~F^+li3<({Tp=)|Tp+0g7RcQ)tLZZ?_cQV*mlI7nxVa_qHpK^{bS|jnf%0YOm5wLXsR2bFGGI@A8W}DTQ+0Q&M#ejQomSd zTVbtdw*RH`8nupK*ZPiTw)|uS+1#mO1{YJ<;$DB6a$qMLf54u`_Uwd~t}7ef=gLMP zzDMe!HygLdk||qja6NejU3j($KKzJfV8+)A7}sYWb#y0FYS;qZYW=5LW;!iv*63ud z)z!(=U$dsvP+z~p+|=X)`0g{rFOZ(DE?d5IDVq&0#6%?}rZ9IBlTF*eV?&u_n-yD7 z>U#H8b)J82-kr3xrmf*=%-MQUgub#`Ukquq2GNo#51L)JlO~tikxIE8O-R~EBka{k zdfjXq?Wct}n{7Owq;z4o5Q|_oP)sYYrV4ck_7`F>rezrPF7#RZyx$v|4@Y}DH)u$+ zFpQIZygUhU2*j_=`gQAQC1MVg(l?V7_jfPbMXH|FTZjJk#eLV-jP}=FzeTDy)0lsK z7MnM3KFP_+vGLOPslmR-m z&^U(nJlD=XV8bR)Ykl`2zx}@Og%6`8XCq0u!|^G6;H#lM{NLhi zA^*}z*{SB14Ka}_&AYQyow|zDb{${-vV0Hy%;Hq0lIE?9%O)RHv*`h*+_#;r*46Rf z>AW)&Y=JLJ%8I-rq9Zy@ZOsn*2Kj%RbEu+YN{!{fxcxR?Dt9}7GyRb3TPpkQD<-ws zzjV$z^jyEy{>mHaa#}ai>$bd8#U^Sm{OgkStAsu)zaT#-Au;arh^WXfgD|lRNsJK2 z;=ffs{?+5EAB%9(IuI=I4*0QBQj?{kW1?lEVxnJqAOBa+_gnmaS!dvg-{QF9V~Q;x zwt(0IVhe~ZAhv+m0{_z%7<5k(>Eir)+lM&t!$b**do!SvGz0!x&{9f*msgSmrARzm zNt1fEeJ*Y!{jBsanV}`&U(XZ%&-b~ok+8+@?(z3Hp5VWQ_k!OS{{NFL{*U*=`|*GH zeJMQK&LF(U?-IE{5F4S7oWl-P*zoPg&$fKS-~Y;6?x!^q$pGoOpO)}c6(5LSVhe~Z z@W0LiSfiIknt+6!k9A#sKs~w%DL5e|7Z9LWMln&*uRns_&vDc zSoiob!I)+^-enwj)zD+Y$6y$k)C2l@`dG_pUtb@Eg$owMaPA=1B(RRx`yJT7j~yKyY3j6T z-{blGYEd4r@1d@)K`o6qkFfqk8m=3AglG7-0-u7N^cTr~ zug@e;xxb6`^Z`7lJ#BhC<=Q#$C3}w?Ccf5OTwL@!zII->r&i!Hf>ZhkytXNIHMQng z^Z(ivtT?RAKIdsJT)3#s2He<$nD~8BQPJ;OZQp($?5+3ma&p_af5Oh4oR{KG5}ad& z=h-8Qx6!UZZ)yb3)HfRJO>jCxgM%q5D)KuppzE-P`CnMe`HC}vbHMy8D$IM7nw;(;Rk za=|17U*oSu1$lStYOAo;SA=!GxLke>z+Vek3w|K-^%OkS%klB?7t2aZ!6(k7)jB%l z0XD5nKhgn5Qr2Eb(nog*{HC>yAp!@M^ACB#+8MPUJiylpTd=-cl!f1OZYUV2@Lx#y zK07n*X?bb!cix^J1TN+`;3S?0zb*-DpChqG_qG|BNs-~<--m~Wz5_o9tjBK^n2koY zSVO>i8c*_p;NkjUjiGNBp8dN}R9%k1BRtf80R9=>@SkWyxe`wCa;a-*95VoS66=28 zt|njca(DYG5B#-;`dY9GBX37WM0^9Lq~4}Yne}6qatt&;cG!| zop~hv`XDb+@{%8ovsy{EI~{1zi7+7SMlbvMH zn>)CUg0=r)O%60cbq**qW*vppWRPc86iw4z zIU--&H@HqCzi{>NHdTL-ZI$Juh{qM~B{u08Llj**?)6L?U)sfPM* zzC-iQfp-;WN|UBdp)tPtSj)lMGWccET~6SG8Ic0`K}zvPG&4w-7Oh)JldQGD6GA=R zze8Aqmc6!{CZ7zVbtjT2>Rde)AKP~_wXRsl!zZ-D+M!_7VCe_{DjfHaR^GFu&x zYFHCjnK^~zj2F?cPy>=~uo+zc?%nyr>^hg8%>4aN^h~<;4Lv{KcRrAIUk%q*>qI!s z>GdI{W8mFjT}uvZE?KZ|Mj$Wa!OB(c-%VQwD!@c4!J3vIDYk5^Ld7ZuaZU#+DzXHrN# z-hrlifx+gXN6Id`q_ANTjq_eX<8UqoaLHGKNv3`^h2&3rfJd|S>GU*1+o8wA8i!0^ zfPYU&P~f}X9v&Zq4f~@hIK5M{x6zm?Z_@Bwjq;k0aUP!`Osr zlQw$!dED{}^$XvU;Mg`dbsbyM>LRSiD4zGH8T}!o*lvGcscy5wi^qELJ=S0plhcwz zH`Ii-&5f__)$l(56Rx%B`}*fn7O#7^P@$b-e!h)UNq%#_M>#l9CgRBBP^za^Do?_qW{6 zYxVk7$05IEUd6{2TR?1qf8GLv&mCU=_xD75lMs_8F=GVp2YAAh4 z{=u#EJ&CD^nbSZ2EgpM3+>21Xmmm81r~EmE3X&R<=sAVUe;nxwnHRr)6$>bg86$=C z%DL)4IthL&jimUp?_rJ`K5N#jKWkvVhdJk4n0r2-2fpn4FMfvK2Tz|i?N4gU)%fo} z!tXbVz5~4=#|_3C;E&n!X;)`gS7mwm6Zjr}qZDQ8Byq_n4L+Tb@Wu9puFVeVGai}y<Hz1o)DAm?d_%DALvwFTXS?z?}5+4dJZzB*P?WNf(Qi4I$L#R%Z#}tGJ>$8Lf!V(B6KZ`SZ1I^;Hm(mo zXUALwpDo#bFE%!MJzI7;fx*X#jXmYTX2cjVT|J!vLw$oQ<|ZbeXlrS)*>h$w#Wf2U z<`Qf~o82S*&;+6Wh|1t|FgJV`c)e@0JZZAE_UDVdP47>))44X@TZ4@SS9QvTV1Z>i z=BNt;!@5!QJHCa6geQEA8a>>09dod={cdKV9nDXuIX(0{hOLn@_GbzX&P#>A*5pZf z;Sr%{<5S~G4MHsL8MOJ|9oy^j*O^Cs-&bz62~jFFd*%2wCO3J!W_^so(p~L;=kqha zH&|-TwTy&??j})T(GgRl;WQl<9XWGoK7Nh;sd?6aHwXSTjw?RK|2+#}z{J;xev)p} zZHZJ$MPY{w%bpiqQlcOG{rF$MbTZO?iF=78@#KYLh>pp}VSIULCX#3zW*`jl@WKDF z7nsD7awA6$`z6J~_hgZt_ak_wz1q;w@Kf9yAIz9Jqj1EAg+DpYCWq~l931Qy>*=kP zhF^N5t&Poh=4NJpMy#4WKObVzE+7u%HZ&s!a6kKUL6P%U@Q;2nWv}a>piA&c{{EW# zWo4zm$9?as!h$@m({cfNN5`Sdaeu-5`7$~>x|h>ZQg5ZDrG4V*;qgbU0uLIQv57`r z4y4?cO2lck;(2W4Q#=CgDu%`jp1nTK&&~ceJ~rkto=t}0zGja&h)2*(`Yt#vmd0I# z-dMR6X%y_DMF;%^ji6>|z~K39iqZP@hY-v5t(~pyBgE@`86Fn48ya5zpYoi453WkGYIx8B!m4*t}*!2g|$rt;VFN=ut9EQ16) zF6!|0nRh1S>9`Z%`S-w&8od9pCEH00&y(-<_gSX<2|98j%SJk>ZuOQ@|`KIYJMb~`g`9zb&{+k+N6Ji|$!-9NQW!M`jWtka{@zwf|@f{SE k<$rRE?gM?$VA}fti{8BJdEu3W_enF+_ay%9yQ1IxKYJXXzW@LL literal 0 HcmV?d00001 diff --git a/assignments/week02/athome/web/images/JPEG_example.jpg b/assignments/week02/athome/web/images/JPEG_example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13506f01e9a514c53dc52cc7cbf499f52a29b6f8 GIT binary patch literal 15138 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 literal 0 HcmV?d00001 diff --git a/assignments/week02/athome/web/images/Sample_Scene_Balls.jpg b/assignments/week02/athome/web/images/Sample_Scene_Balls.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c0ccade2de6ac61a164052ed4a7da9fe9ce2068 GIT binary patch literal 146534 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%0AG!bll7=qnQE!?zJg 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 z z1n`K}5F9YiPwP-htXt+8`FKCXDo9kzaAIIo2ITwt)YGDi!VsJ&!vbk;Quk3+L^5!Z zFpv+Ko4pZ+X-Fz^pDqV+N**hFy{mH5F(daxSe3b#c7<-#CRiXR z*R4TzLAXVd77j-adK$JsT~(Pu+*b?_pr+igGKk#BTPL^5DR(PyXuoiqo1F1c$%kMQ z8<&E8D#+Z$ayJ;r&UmWRz|9iL5e18U*yw$zK+wmx5TJ1p<+)+dQ^JOVJf2C-Nikou z?UH7Vk0AiaV@`6uM0i|*(*lMhicb+AKG4h#-*74`vyOPnU!){_h z1J~&Gh zj>y0snaQ9NvMsIOl;v5nqtlv3xQbH8a}4{{V)q$4qre`V(|*$YhJ=X6ZL|lep%_*i zNW;@2gpuMUl0rw)szWJ|3{?6mPRR-B&u%HEcsF$*{b~o1 z`T(T%#YQ)l`O^UO;7}ISzZKxg+aUv{L8i%m(J%vhfzqm=5#_SGaZt6 z6Sw9#B>MB(x~~stD`PwpLvtfCfEW+}Z~nDaOkFHG=9Z*FgzCE@e+BqN>a$6wUdJ_^ z?0|V{@sLntWtbdbZO%Um_6-N&!+2}NhT6{cuQa48;hA=sNa$E}<0k^0qTR`>Uj4S@ z@3~+zA?k22KSBCeeW5Uwju&<@&3tA*h%psq?Be-j%c}fOZx5E!rD?rg&CNSXid*UL zb^~=e%#z>�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 x7uH_R#?^%;kmAuC#$UjQOmE(xFnt1Dwe_Dy| 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 KBK{cNAOG3+Y*1+c literal 0 HcmV?d00001 diff --git a/assignments/week02/athome/web/images/sample_1.png b/assignments/week02/athome/web/images/sample_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2f52dff2428c82276821909e466d877ea7608b GIT binary patch literal 8760 zcmeAS@N?(olHy`uVBq!ia0y~yVA%k|9Be?5*NU6Z11XkbC(jTLAgJL;=>YOM3p^r= z85p>QK$!8;-MT+OLD3S|h!W?b)Wnj^{5*w_%-mE4V|^nFeFMvP`oBR6WIzgn^V3So z6N^$A98>a>QWe}Xi&D$;i?WLqoP&*LTytY)U{GN2ba4!+nDgeAVcuZ}0T#!32mjYs z%32kxRNW4`%B}XWG2_k5*R!}88m3$RTgSi<_bR&@XgUMKAGZTcKuW=Plo}0!(Nr*+ z5k|{`(c*9@)(CI!$uZcx&*5kIVImjTu;27HbHnnTqm|ldr3S0iKnWzk*!Z?ELj!;L zxtsGCCOl%|2Iln!6UISKZKj9gb3=AH^qts{+ zjHZIoj4)ajj24H3yhhl)ot=SU&s=aN_VY;fp4}h5#UwBS9X&w}LY2iEr&qIlcs$45 z&eQy=;qzU4_I|jxXEy_b{*xh6Sr7Ww#Ha%Ye~WK4jz;5X2y{$FlPT%R6x^9ppEdL5 zJz%x>A$|v?LljN#%ic<~CMs|=DX{7B1wh0THU0t`zyBS38eT2isM znHjRqSpqxO3=9>I8(D#r!>oo;YBUILZM9|i(Ye`{;lchhIr_lVA;hl(N{yFT1_QP3 zE#raZGl2s^2YjD{T_-k}TsJ6!Xw(sdBdLzY!)QDZQEKkJ#{jH^8CyYX0f-AXhEBaSd?N0SG)@{an^LB{Ts5b?$DF literal 0 HcmV?d00001 diff --git a/assignments/week02/athome/web/images/test/test.txt b/assignments/week02/athome/web/images/test/test.txt new file mode 100644 index 00000000..46fd6b2d --- /dev/null +++ b/assignments/week02/athome/web/images/test/test.txt @@ -0,0 +1 @@ +test test 123 \ No newline at end of file diff --git a/assignments/week02/athome/web/make_time.py b/assignments/week02/athome/web/make_time.py new file mode 100644 index 00000000..80166cee --- /dev/null +++ b/assignments/week02/athome/web/make_time.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +""" +make_time.py + +simple script that returns and HTML page with the current time +""" + +import datetime + +time_str = datetime.datetime.now().isoformat() + +html = """ + + +

The time is:

+

%s

+ + +"""% time_str + +print html + + + diff --git a/assignments/week02/athome/web/sample.txt b/assignments/week02/athome/web/sample.txt new file mode 100644 index 00000000..1e318a76 --- /dev/null +++ b/assignments/week02/athome/web/sample.txt @@ -0,0 +1,3 @@ +This is a very simple text file. +Just to show that we can server it up. +It is three lines long. diff --git a/assignments/week02/lab/http_server.py b/assignments/week02/lab/http_server.py new file mode 100644 index 00000000..db7a498b --- /dev/null +++ b/assignments/week02/lab/http_server.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python + +import socket + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +html = open('tiny_html.html', 'r').read() + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + client.send(html) + client.close() diff --git a/assignments/week02/lab/http_server2.py b/assignments/week02/lab/http_server2.py new file mode 100644 index 00000000..3f23d695 --- /dev/null +++ b/assignments/week02/lab/http_server2.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + r.append('Content Type: text/html') + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +html = open('tiny_html.html', 'r').read() + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + response = ok_response(html) + if request: # if the connection was closed there would be no data + print "received: " + print request + print 'sending: ' + print response + client.send(response) + client.close() diff --git a/assignments/week02/lab/http_server3.py b/assignments/week02/lab/http_server3.py new file mode 100644 index 00000000..9fe6e52e --- /dev/null +++ b/assignments/week02/lab/http_server3.py @@ -0,0 +1,87 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + r.append('Content Type: text/html') + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(method, protocol): + msg = '400 Error: Bad Request. Either %s or %s is not a supported request' % (method, protocol.split('/')[0]) + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/html') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def parse_request(r, h): + """Parse a request and returns a URL""" + lines = r.split('\r\n') + + method, URI, protocol = lines[0].split() + + print('URI requested is: %s') % URI + + if method != 'GET': + response = client_error_response(method, protocol) + print 'sending: ' + print response + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response(method, protocol) + print 'sending: ' + print response + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + return ok_response(h) + +html = open('tiny_html.html', 'r').read() + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + response = parse_request(request, html) + print 'sending: ' + print response + client.send(response) + client.close() diff --git a/assignments/week02/lab/http_server4.py b/assignments/week02/lab/http_server4.py new file mode 100644 index 00000000..6c9ee91c --- /dev/null +++ b/assignments/week02/lab/http_server4.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(dir_list): + msg = ["Directory Listing:"] + for d in dir_list: + msg.append(d) + return "\n".join(msg) + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + root_dir = 'web' + URI = u.lstrip('/') + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + response = client_error_response() + '\r\nFile Access is not supported yet!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise NotImplementedError('File Access is not supported yet!') + elif os.path.isdir(filename): + data, ext = format_dir_list(os.listdir(filename)), 'txt' + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/lab/http_server5.py b/assignments/week02/lab/http_server5.py new file mode 100644 index 00000000..1140bfa8 --- /dev/null +++ b/assignments/week02/lab/http_server5.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(dir_list): + msg = ["Directory Listing:"] + for d in dir_list: + msg.append(d) + return "\n".join(msg) + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + root_dir = 'web' + URI = u.lstrip('/') + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + data = open(filename, 'rb').read() + ext = os.path.splitext(filename)[1].strip('.') + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + elif os.path.isdir(filename): + data, ext = format_dir_list(os.listdir(filename)), 'txt' + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/lab/http_server6.py b/assignments/week02/lab/http_server6.py new file mode 100644 index 00000000..e7e09eec --- /dev/null +++ b/assignments/week02/lab/http_server6.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(dir_list): + """Format the Directory Listing as HTML""" + html = [' '] + html.append('

Directory Listing

') + + for d in dir_list: + html.append('

%s

' % d) + html.append(' ') + return "\n".join(html) + +def get_time_page(u): + """Return a HTML page with current time listed in GMT format""" + time = httpdate() + html = "

%s

" % time + return html + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + root_dir = 'web' + URI = u.lstrip('/') + if URI.lower() == 'time-page': + response = ok_response(get_time_page(URI), 'html') + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + data = open(filename, 'rb').read() + ext = os.path.splitext(filename)[1].strip('.') + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + elif os.path.isdir(filename): + data, ext = format_dir_list(os.listdir(filename)), 'htm' + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/lab/http_server7.py b/assignments/week02/lab/http_server7.py new file mode 100644 index 00000000..9a8febff --- /dev/null +++ b/assignments/week02/lab/http_server7.py @@ -0,0 +1,191 @@ +#!/usr/bin/env python + +import socket +import email.utils +import time +import os + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +root_dir = 'web' + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +mime_types = {} +mime_types['html'] = 'text/html' +mime_types['htm'] = 'text/html' +mime_types['txt'] = 'text/plain' +mime_types['py'] = 'text/plain' +mime_types['jpg'] = 'image/jpg' +mime_types['jpeg'] = 'image/jpg' +mime_types['png'] = 'image/png' + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def ok_response(data, extension = 'html'): + r = [] + r.append('HTTP/1.1 200 OK') + r.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + r.append('Content Type: %s' % type) + r.append('Content Length: %i' % len(data)) + r.append('') + r.append(data) + + return '\r\n'.join(r) + +def client_error_response(): + msg = '400 Error: Bad Request. This is not a supported request!' + r = [] + r.append('HTTP/1.1 400 Bad Request') + r.append(httpdate()) + r.append('Content Type: text/plain') + r.append('Content Length: %i' % len(msg)) + r.append('') + r.append(msg) + + return '\r\n'.join(r) + +def notfound_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + +def format_dir_list(u): + """Format the Directory Listing as HTML with links""" + + dir = os.path.join(root_dir, u) + names = os.listdir(dir) + + dirs = [] + files = [] + + for d in names: + if os.path.isdir(os.path.join(dir, d)): + dirs.append(d) + elif os.path.isfile(os.path.join(dir, d)): + files.append(d) + + html =[] + html.append(" ") + html.append("

%s

" % u) + print "URI:", u + if u: # don't need the parent dir at the root + html.append('
Parent' ) + html.append("

Directories:

") + html.append("
    ") + for d in dirs: + path = u + '/' + d + html.append('
  • %s
  • ' % (path, d)) + html.append("
") + html.append("

Files:

") + html.append("
    ") + for f in files: + path = u + '/' + f + html.append('
  • %s
  • ' % (path, f)) + html.append("
") + html.append(" ") + return "\n".join(html) + +def get_time_page(u): + """Return a HTML page with current time listed in GMT format""" + time = httpdate() + html = "

%s

" % time + return html + +def resolve_uri(u): + """Takes the URI and analyze it and return the proper HTTP code""" + URI = u.lstrip('/') + if URI.lower() == 'time-page': + response = ok_response(get_time_page(URI), 'html') + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + filename = os.path.join(root_dir, URI) + print 'The path requested is: %s' % filename + if os.path.isfile(filename): + data = open(filename, 'rb').read() + ext = os.path.splitext(filename)[1].strip('.') + response = ok_response(data, ext) + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + elif os.path.isdir(filename): + data = format_dir_list(URI) + response = ok_response(data, 'html') + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + else: + response = notfound_response(u) + '\r\nNo such resource exist!' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('No such resource exist!') + +def parse_request(request): + """Parse a request and analyze the method, URI, and protocol, and return the proper response to the client""" + data = open('tiny_html.html', 'r').read() + lines = request.split('\r\n') + + method, URI, protocol = lines[0].split() + + if method != 'GET': + response = client_error_response() + '\r\nThis server currently can only process GET request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server currently can only process GET request') + elif protocol.split('/')[0] != 'HTTP': + response = client_error_response() + '\r\nThis server can only process HTTP request' + print 'sending: ' + print response, '\r\n' + client.send(response) + client.close() + raise ValueError('This server can only process HTTP request') + else: + print('URI requested is: %s') % URI + resolve_uri(URI) + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received: " + print request + parse_request(request) + diff --git a/assignments/week02/lab/test_client.py b/assignments/week02/lab/test_client.py new file mode 100644 index 00000000..210ec545 --- /dev/null +++ b/assignments/week02/lab/test_client.py @@ -0,0 +1,20 @@ +import socket +import sys + +client = socket.socket() # Create a TCP/IP socket + +# Connect the socket to the port where the server is listening +server_address = ('localhost', 50000) +client.connect(server_address) + +try: + # Send data + message = 'GET / FTP/1.1\r\n\r\n' + client.sendall(message) + + # print the response + print(client.recv(4096)) + +finally: + # close the socket to clean up + client.close() diff --git a/assignments/week02/lab/web/favicon.ico b/assignments/week02/lab/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4e8c2d614efeb3ab530eff66ebb2d6fbe2046637 GIT binary patch literal 205334 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�R)DefCUE{tH{SZkdhw;dj=oHpbY;T&x>#4(ppYd=|eaPKdX1 z_GXVyL@ePJ<}-e?x0RH^E+Z#BGlMTznXC}zI`CQ~-B_o6WrG*S@xcD`7~mE3*S;K2 z^SZ*&Pvs=Uc%1HIsfOYbM}vZw(m$qSf->?(D(D+fLS9j5RhvIisx+@1+qlDYT=TA9oYVXNi(b_48Zk=I%DE z=fcHYzP|0jgRPh!p8ddLyLqdVi_4P&_&GZ;wgGkmYesD)Cl_~0PR+O&m6v4gQ4~2K zw+5AtveWl%TR5R?v$aaOd5}t#MVv~lWt?igb(~t`4zF=dHm2%LHZPr<+5aq}?Z1zJ z(kXW@qr2HpcKo51tUszH%SY8Tu>@l-(T^c5D~{E3^aaO9X{}o}8Y(H!VAJcK>%o+y71kCYl4$98{c zAiIwnY1;=Cr0lw!w5Dj%c)gkHUiH*jIk}B|t$e;F`elrD#`=d(9G%<{A0~Ys5&eU# zzv}y<^Zz{v%JUaNaEzV!XmA)20z@vox4|8oe8tG1m!<(T)? zNp;QxxxfE&Ac$UAOuf#|Py~Yr0TBWs1Vjjk5D+0CLO_Io2muiSA_PPTh!7AVAVNTd zfCvE*0wM%N2#636As|9Pgn$SE5dtCvL+#M++Q4rVsSs*j~{|`!bbQP zk0+oP2*N*q;R{lrbo>wB5Yxx;phL0mUOX0mZ1m#i_5uS9`i49`8g#@N?8Re^A;(~} z7p{NxvApo$KYZSIr?`RdYY2NroWX@Zqanv}!Y6$K(Ss}SW_WdeEIAy9f)G5$F%y&I z-xq}BDVH@d$#@+13l+X3&XL#P-xvOR#Q1UC^CO~1;28UUnZw!d#2@uboN&!k$;Ut3 z3}@Jg$Cbhd{r^(?cb;#r4mtjI$g$|~{}2K*z-#tsJ!s-$n)oj!7GEfAME^txh!7AV zAVNTdfCvE*0wM%N2#636As|9Pgn$SE5dtCvL#g7ya5Q#4XjQzJE1 zHBwboWhyEv{Fw1`W5KxhM)eg`3l}423URr9>=?>GtP7J@}n7l-=Xg> zFE7v3Km!d8&A#_nR{kE}F9EOqYQ2Qt839_?f(C5jgbASSIO4xKZQ3-lwY8<3>>R4E zt7nb%4OEbq&pbUm$#CgXQczG}qeqXXDO0DChK2^G!8f3V#eWT;zwkjOX=%L%-1l*Q z9q1pcG->(;aI&@kFtu$M}TidklQCV6>!(aIGoK_3;46HS;nkxiL0mH798 zW5>9$<3|3%pB63yZVAvOPx*b6`|d%mF0SnKsZP3c`!?Ns;|;p|#_J4?Zr{AgE}lP6 z2U}VxH#>(dF)*M}qejt0;IE}MiOcAxY7^CUf6edzyVqvz-}_o(a-tz>ODFkwdzVCn zho>hb?AcJbw?OXa?rmynBCe^a5e3|yOaSkJr+Hm-X0pMAYHMn#_xcUIH-G;=3~t}L zNtZ8Oq(g1(tPnJ@*s_I2Ll(x48%J7`CJ~n#$WIxzzepE>X8Pd!@4>_T9)iwEPfKT) zE?#1nE?i_i-RD^MxpNpFdg;XK=AW5Z-1FLUQ< zLuRIPJ8@%z!E6Z?cjIv~*_+mlsN1eH?9i^c;>T@O#m+b?{v0O1=5zo0OeGI*&qJ{> zQBTSbl(E*9CU#)|J{A`n&D`Bw-w6&1jL*nOpD_5I8R_ZDd-lXH3l9rhw9(XbE%5qs z(&Wi({DcY6x1*SchX=cG{sOyx?Haq#)6Fq>2A=!i;)U~<&>r-hJNKmP^l8?8_AGex z6iZ7@g&vR>^znQh9R}O*1bS%u;NN`N{8`1zMWf_KLB28wn1a4->~!ZT z!f(G{S6io0exQ6@Q)81RwsQMR_gNh%-T$=+((aCUhi#|$vE9eT zyPPYy|ERpYqN%p3<_lbN=U__<)z#E+ zIx$U6O`1Gq3N6;tXIhiA9<124*<*T^%^?B%dqE_2H;{?(ZGRhlJaqqVAc?&ZKw_^4 zFtI!SB(&RpOzalgP2X?Du6choyvO6q9VgT1Z;$`Z?%%&h#YKgbnv%@&a&zeTu_Nrg zci*8$4?pDkf~6!UQec2TH8(Y|ciw(LAAkG@`rw22*^TR0!E3Elke>rRA58v!J`@oa z#&WW=skNmU__n=06gRxDc*Xt$hnpLkzHC3(_FYY76?DY~a&&MI?B*gpeVRIL8iO71 z82a78$IugblO|1KGiT2hY)x%dHOtM+p?$@r)L7T>eevGnQ@J?>PZAT8FU7_0Dapvr z{VXLVEgm#@+}hgq*Te1Yon2=-3Gx7Y(85APf{EK>E5-=c>4T55#cbf4?uwv8UV zb)Vh1agB~2Jxs-g1uQBu6n55?)8lb?SZG{wQld^)X1WmP6y)W~R+U#=K6dzMbmz$v zpS88NGLBit@neGR=6LGCEr8%b-thw!RiC%FANm_~PziL<=W)@o zti7$3>wY#*dp=vNr^nzYu%N&oHoDD$LEmufUfqDL!e&8ta{bBX%$dUy_QbP_1N&J{ z*&(yB_cCOm zEi@#g*TdcYyF=}5jAMW7=n4~bo9{SYmkqw%a<-ZPDxB=hYz(gu7{Q2 zzb-K}2^&Oq}@FWx$>LFCK30l#`Lg{Js4?ONiSuF(xXuJS{cj%lyKk z&o^u^`3|~;&6_t*u@2gGKApTp)i3wC+TLaxz%?`G;qSx=-#`E}p zQ(aXd$O3quHPqGM`?2KV?#g_;y$IKG+rZLN5~-}Ti0W#qSWR_>u%DTh!a{@m$<4*# znVYNASJ_$V_e+ZMqxY2*+Jpy({%dbuK4qk*abJX1tzAnxy1Hz^g89aS`M!UD^5n^y z@b5ogW@NptGTX(7SEttKWWl$DXmN{fnV#*7(k z8Q#;|%WFq!|Y9&2i7pfzjOz?M&9tJkd~S65d7{{{QqN&JWnNwn@{ z65X)9T!##`2V6GZ2&7?$?P+|fB`a>Jq}JvpYN)G4+)+ozjvR)bKFHcY3kQ39x^Uq< z=Y2|ukB47g$oA&vgDwjwJ3AZvokjYPzZEN1cta<~aGn3p$B(I~aPN0z z0zND%%xAC@u(QYUJ2fmRAx_Xa;b9?Mjvm8*`YK2>NGnDRlVp-9j6^O_z-*-o^yG`V;zS{`nYI zU0=;k96u(slO4z5>z?5FGx+xG;lmHP9%p;v<5*c~iJ+(Um+fQuxw*h4neEEIN-D&|9ZNQwJ9a(B}0;{X7WNinV!0VO5v8RU%b9Au3 z5#aBC^ITUKtF5WR_k&oVzYhxz^kp$o5$yWaD-8Y-g| zZQZt&ZME3!Fc|m#efa5Pr%ajh+1d>ogjg@YKY$YB_AqCA$B!ez!c`)|B9A2`Bt0xB zEP4dr3_K9V>JX1aMntfn;LxXu$!V8c54L^1zpTtWJS5D<33NGfsGSxrTu9Sr&SdLM zOv%mFP2hjMeVzoLlEhBhv)76@lj=-Ok_%V~n+jj%6~2%-WWni7KAr12!>%CS;jQ~@ z7vnZAEj5Kc{q(Qw=#fL@;9xKCKX4cPpX$mA@IehVHSl=7j^bgLKYs3uLRLQCTae!g z-@gccX3@%(E1BuWO@hvJa&&-hi=vX^y;N1XA2cndl%zf6?di%wf&!q2YUn`OewGc{ zDk|Db_O`ZPg#`FL$%~m`3Va*xXTAYHvu``FFLgVJs(KEyvu92t#<;{AtF5l4@&o$?{7Z_9K#Np@ z+`~>5@GVtUl(Y7Ot<>Duz(5OuR?z+6(PlzC4FBc`gDlbMQzz+6=PAbZ8mALel7R|zHkO~WF%##CtmL7{r>Iv@e}F{mM&#;;ji$VM^i&1b9QiK z&5ez$>&$8RRQv81?k#?jnw)w(B_%Z=FesS$`T4Q~2M(~dw)Vfn_x-T8vW5lv`m@~Z zEchKs$XCg;RcqF=72qw%l%Rhmw7U2CKimgGlW5eZ{+wyj$k@(}Rj zv)CuVzY=uWS5nNeXB>CnFKj_u#IapMoO=m21#-r?%oXJ4Lf-_k_}EC6niLOvoWS

Tfu(}yQj?RuIdbSweQs7Zxj8!%r`LRKZPGvtW^S>SSy*i4yifkn zgTv3c^~JmwK?ffDUT`C+r1iw}9XxNMY%r4~PdG8LtDYn@?(_HWU-e`LmHq@#VZ;0C8WR`$*t-!CrHp(b>s~c0vCqCna&4E9f5{n}vmj?o3Td*#H{( zB_$>1C+yktW^qvwzSm6f-8dcS@bfB!HqLLRd(kA0ZB) z&o@_=S5O>$A+Ar#O7>A+c5ZKcY~1*`*tnGe0Rg+* zJv=`2@NgIWw4%Lx*{&TsxI9u=SSUl@iuCjixbMY0+&w5bD3~nLq2sS`T)lV$uELhY zdR$3y&1}Z?5N}E=<}is)ClWvJN@C|-8Q=ErOPqBfr8V;iaS-C72)h5~J&qZ8u$;%I z$QN`1yED)yC#mDuQO5nI?5s?-AGG1R>cbD;hfdC>^t4nyJ$>L0xwBRC7c8JP>(+C= zVQb;L)z{U*ze(VBoZ!#HpQ#e;%-;OmcU+wv9=JF;2=VgG-s{LUHR9SB=$0hdni|kI znCBwddQ(#}g8yx7Z0zOc;xcRZu3bIA{Rzjz&(E)O-~q6MypNSO^!0kvjY9s7`}t`24-lEiY-qs;!vX)QN%~;xX5_E&6Q4Imk#CWMN2C>GWZ-$#FtV z1{=(6Ea!RnMn{LVW5^433jRu5TrB*VD)#O>50E3{K1p!F;CJWyQ>RS5q7OevA9|Sg zbAWH)V;y8ZUS6ycww(Jmpzptm3-fK_W1}UuTUn+!*zW!^DL#fBhkoz9aSd_TLD+~G z*o+j|=QL((XUi5YTJ#QVx&rVHfFAfBjqBp4(8;EQpJCRl*%F8a+Vqz!VTQ|>GZj@; zf=nQe$bcO~Yy?tx`(wiH9$``^9Ia>t*{RpOR&L0tk&32Psj}c|77?=(O-pyg{&C- z{@U8wOJ~lS^~Kr^CT#Ycxx%~n`uMUlXSyg8HW)D*Yi_7zJFTrgu(a56)xzBD{w9+R z|JuB16LWWQqGZGZN7@he<&oN3k$;Nkz9{lZ*$O zTDW*InVOk1d*q+;a`Ob*1tvw4;yL6!`+WSqnCr!T;WLR-j-KC)|IfA|SU7T%aoElrKcqcuWKtGRvtnBW)k92Tp9@6-UD!fgS!EkUq5u1=23+tY(0 z!^1c(EG;>OjF&GbZgV*ujvi_wu9qMWh}Yt9O#*y`d;$%S`wRRIvM}cb;0GNnS+Yb4 z_PBG=Vmy*I1}{hTu*=81)o#mur1?ufa@QwBe*}3b+U$yIA+Jh4sQQZo7myQ8V|LA_ZxYh zP4H>BUo*JDZgTqxT@}Z8E`i5orHIjv9BF4U(P4-S9pVSQx|p86{xIl(4EQ4On@w17 zSUAf_PiD7n-e8=!xh~Dl%w~Bxd5FzY(68XmRw2juy#EjOb`gWUg)Q99;-e$jVdTO1 z??Xo*K8$6+A9}|>c<^ub@0*#KOITT1?cA|rhrPME`Kozy=T-pU?+k$dn)Mq9TQV>- zB<%$Y*vwh8Ij^(T@Rtz#BDbEw?!JBp{RJmrs}4iw)>2~SUYgV$-j}C*S&l)7w~&9h z%_Ng z*)nV9j2Uq{I=Wx(Ei7cXj(|VUe=>RGba{@9}F30jn;bvH$ z&Jl1PlJn<$&(B|QCpkCheU0%0{txGW^ncQ}+#piD9L&%+LtMPJ&17-+z;i9Xrgt zy*;0#f~p6<+$2WHv1d2IIVIX}7=`odXmegX6M_eCsV#}2|4zjgmD@JbhQLn-K+ z(1vau->YxAZls07PJQU+Z=U-n-y=2mb}n*Ah!ws!-Dq+Wdg@6Cu!4j(=YemcQGTRM$?&rbBqcXV`6)!8FV=Ugnkb_4pPpSNG8 zb9lbgAJ`GJU7Qf=nvx9Kfm_bq-FEn^doGf z-2A;;IsTvnrKP1%KE^qur>B159O|pR-P1vJ)fUrPOI8_~7_KxjH(s^U%ygsailE@& z&6QPEMX$g9`ky}d-~;s0-zD^!3ph2@H#|#DPPrBv8}~xIF% z%+JsNrmC_E@6o`TnwsEuG_%^~M%vkxOQRdZnO;gOxs*1M&WXrZ=F%iOok_t$m&U4( z>wot?+$N|qIUi#ZazMOqi}w+~4F9$rB%Qs9<}B4^W{4{xuVjhXg!{XoaUH>t6)@w>FNv)&aInl#?c`@4=|M~+R9XCPx_ILP|=yn zhF4hgoPVF*;`sCanIZZ|9C>T`@YQVWw24e*%L1nCV!%|abeY1^z5O*U405>wwg zk7-6PVUr^C*kmt#rev?rq#PHsVVR~(;wa?mCSs6&pKIur|1SR=zdh`dCmVgrlW83E zWV+QpY*R%z^R7r?nRSRWp~Fs|Jju?VKaX({*V(OGw}i%Z&V>sX*wLd$zbh&#YRk;d zp2_jGvv+xD=iqYk*I@lq*UoMA)tBoHsl|JI_gYC5S%#mdnvKe(L~>bJ2m`^-qC(1gb3uVoWbjcJdhp<%b4vDB?b)BZD5I`KSR0b#xchg;A2#r=INlxkW5#v4#IYb! zFHd7`Ee&+__6>~FLO!Cgilnav(6Dv~rnG!Ejajcv3O4!!I!A5tL?)GL%Jcp|?*AHs z|FDw|q-?d2RE%dcnN}Mbi9Y<1_-$$QBgk~vlH6e%Cf{OBinSJ`vTq~P^fIJ*bLNrG z+y!jWf`w$TP>&hvFQp}m4QS5HSxjY&5{*JXpWJA~Gjr65)8nYyh`Y ze7_%myeIGf7sr?xAs2PdnTdBfktA~I6HoiIIY)zT8n;LOXw0RPxAzuDM~8oyZq55( z&?7rdApn)G>hCIuWo2PTVW01cSZeseZ+;XI~2Yc6|^KYNZpGg`Ww ztuk7{)~;O53=msRLVj{I#<$5yOAj>J$*N4sLYuvoVuIW_p7Hwgd=($B#B;Hikds1A zPz=8-Bw^)XQp)o7_K7tqXi(wWk|Xp-thZU^~fVQdNS z+v2=&*^?wMdeCs3mxAvu4gDc^bT^Z3hW~ONIq1RqW~iU^oc~8Q?j%*+sZ4qGT#`BF zKuQ<=n8xK$ntC~srd*C-<1Yo1!bKk%2_K2e0_1=cYPYiKMmhxif5iXBhRaF7f7NO- zS-YM#A--LUeeF4ONEPGB<kV*Eagtw=6~@{hrYbj z@!im8$dMf0$;3KrzmYlZUcJT5>aDVUMRfCKFNGyPV$PBOq|Mgnp3T)QcxgZI%dqF? zCYso-&!%6FVvDXO zF~e)=Z0WT$w%}?4n{+vxjlST`MxJ$M&_ztXbvskZ-^iwK)O$7muUgH3Kigzt%C>AW zW7{y+4EcGs68(QOF;;3k{8l9%-y#P(ST^JoMll&(4JNgFAsd!w#`O;q8_fT(N!&*k zLu?|B_f)F0eP-+H@aMGDL}ul1`g=XYn)?g%a^j3lnts)oT%Ch{60*nazYorcp@mg0 zq*$|+X*TU9)k+JdRJMtfOE;2Y)fT4KW=oo9yh-zF7#n{liWKfek@TGq27N{1-7Yi? z&pHx$v{6k~q=5KU3j8W|3uCGJ`5!u09QIHy$&`)Nnm{T>vq<`=Ep&}1X}#zy(Mh*^&A2XNc~bUlkRbYjM>wu_MJ?zZY!yjn$i?EL#C_Oum6|OGJ~bO zv1N!;jg}hH3gmd#A%- z@YK-2;QOTp`j40B>wUgdUteh0{|fv6!e_MHa4B@rD%ygWV%N?c%-V7rrw29w7mj5~a zs83sc3-9AN#++MH*~rV@Y~zDs=J0kEv%Xu(%x~tg)mKuP-nl3?>x3VhaLAb{x9(=6 zo3=CgMvTXWkH~d1-yhYslSv=9Vy<){8;J#t~nl)Y<)~+oxS-0-K>H780xIVJC z-HlwoHM2n8$7KCFwhFmm(2MCVn9t^5T*nkGEj9uDrrdTYqOV(S#yBQfVAiL9TC8}k zkcroCWfI60POI^}@JsmoRoCbq35zT!FX4T9)N;I?say#q>APWU>ir~|bT^(R-i~JK zz2T&GHJFqy`7^~HACf=oL9(4LY-EQ6jXYsb(j9h8=9n$X9NoL{oXG* zx8iidVz<4q-=aTH=!dZD$R^qQ5ls3X^zy+lGA#&VCYgR@8s$oB0&JO)_jX$9VM+7- zx3an3n`uVS7Md1j!KMb8({%f_G;Y~kCOuJ^BxR)ti-Xf}6=|kqF^$Hh7z;kU0-k#m zVhrwEj)c#ldMSWrUWs9_0c3P7gOt0Rdeh~M8xF0IS0*J@h801A&i%e*I`pQ2{ zOkO$bm%QK5Yn&Y&{4l=t>7H1OMMED;XmAjL9xTAmm;5kJ9pg=ytFsf??cPP(k^ev+ z7_DEsMzAT1S1l#E125t~BQS?8+;r`|Ie{eux$dFA`BTSU?K$Fe>wMY|VO;6`dw1Ef zo=&E9BZev6k71Fm#poldV$PT+!{;7h{sc^)%x8Q{LY>cs#-*G#`0&8EQ@ z(zq1L#$5D8OzJAc7d$40+%V;GGd4DV-9Oa|)-C<1clxQ%++AH>1J+i+JPG|>sk{aH z`=$E(`tVjB5f*wD?Nc-c+OPm$UyRFjWxP+8>#UVt))==9KM49qcHa(W5cfLMPyLk5 z-&wQqr+)XRKHJ@qrLm#F{|`LB^U(r_S+N?m9U_k0wRxGmWI>q@KN+IQ~kN zn~Ccn?$5}=w-^cA%yH&+7XBv5!{+kP|-x&*!w#~<-MVrU`fF!53dn|mdW z8D33e8?NRuy)#ivsbvRKtg-l)QiXXAwxfn(^S^y;Q4l1#sK$Tv?26C{)AuG!ofVL; zJ-_b zt*va#%{P7-i7{gs8;7y0rAho5GP2VwLL$NsY;@YZV5#Nu+LfDDJT2IpkMWY%Sz=oO z0Z$Ta0Al-*$aTqKp3C^20GfU_n5G{0V#-b6`C5z5l&UQbsMK5i>i&)21Bd_QJtm(E zUat2>`X`$nmeac0!pYV7&Cu|Wuh*Ne{d%*dIooAt`>)8jxZZ;1{qF0FoHoqPGmoE;yRKEO z*yM)t0ken7m0KRFR9n1*c1E>kTY-9$&9(^#?Z^HnG5Ama_T0;{Gv{85y<_#Lnpu5R z%@&=GX0qdznCvK7HbZAl{NU%?e_;Ql^o)$B+jm;A!r}t-3Fa_+Cwu1N?*4T|Ol(zr zTB4Cxa?r5B-x2NqJObKR;zrFl7g}cZe#JA}KQz#+B1blE%EWhPY+e4NInThq&ezxL zt%~yU8-YPVmqWv&J`N5G(f;{g5nb_92uZ2Z~Nrr@l{HFehm)%=*4&&JCoM-5q4m&%e+^Io?$A1oiX-)20|G8fm z{jvxF5dtCvL}@5Dw3``?L4(qlCK z_nnwHJwoGukHo};hCQPmF|jx_e9*(k#K*S z`@H_Z;PZp$xQ&P(bfcH-OX8e(Pv13?*!J)9t@xw9^J3UaKK@~UM9=emdoi)W`|^*T zpT|a{|9b2jJ^kUl5%u&Rh#LX8=YNue_9x0yeE)fXJh1!9eWO9wzidAaKcn&d8qf&D z6YekGx8Ea%c^IJIQ=EUqq2zRpm#4>kpVRxX1}?-{WFze3Pk5QWUBWE2JMS>ha$iyF04n(LlYO%#D6g{`)$HT^iPC<2muiSA_PPTh!7AV zAVNTdfCvE*0wM%N2#636As|9Pgn$TvUx)x|yQ`rsMAJo6{e@rquel7*td6FSW{fry z?cZK20&8_mLf!8yv_GKc7V)*aP|t#J%y9pQXlXbQJg+*QH5Khc)J|vE z3iUYn7SH}AS|gefKI4h)U;KybCGkCfw8yB;&F@KLa8F*-nb-E_`&i$f#-ZWbf1r8d zx?lAhzxZK(!-f2P@$Bxv=WnX0BgGqkW<|bsrSSYp!Z~%+C&0B&(CSoGRDaRhaJU!8 zrWEfhtf$Ru1T9*$NT{)iS^=o_7eU*tx3ifuXA1R$G&D5%+WZW^kuz@M_}^^}qTc|E z@D(jhP5%6Ocn_wot}d*b#_I=IqgENOyTEHDVxP3<%|i{v(KHU%Ohi2teCG|&eB96d zF5WX7eDRFe($biy!Rz(XwJTS#F8OV~HaXqCc@uTeFQIl@J8IWO^E%nY?~l4h&s5dN z`u*Jff9>Z<#aW8cG0`DGfdQyN9o&psXr8Dq^~zctQ>RP`25p}K8?Fz8+JzT-&I`}a z>n7j1bqn=#E)&)-LygQ-nmub4si}>nNs}iNYTaML`$)g)8FAm~!2KK45+S};U`=%m zYUOpZ9@JGicJyfe!IoA-)LJoWsI4n)X>7t;MaOv!OySzubLaA!(_c+kGDkxu*UVe8 z!@gPKq(eDsljUPg?s&0o=U}YK?JjoO(FS$POvTPP8sT^$YK_iBn}~fS)UlBn{A^A& zNwXuOB0j(x-Solx@1Zuzo4nRMYQ;qU6ZKCjQ0rVbJw0toM0i*d@N0K-bFI)@y!dNg zyMxOVYJ8#Y)HynbT16*2IxZYPdepJw*fDF=AMneZHO{{fzvB71_(hM0!+PA`oYCs_x0~CEXIS3kTr8oMIcj4jqZaEv)OGH7it_{O?4UlfMCF0<-qz-p zuYeP;5yWXsyk0!Ee}gRiXk8e{h#chaFVj%_OK-6rRh3twM(19tsjU8cPIlhM8R?lf zlaf;oCMKmcpibw5#-`?nr%s;ul=DwpORJ!xcs)u()I$#n3Zk*CSc99_zUyBLy?@K` zy5-MCCYzE>;eTGoG2{oxHCNi2* zlTxx1;uET~vU0yhJ(D-}_4J>hzSol+7P8=81wnUvRtZ(Y+PDzP-Xdlk=+Jdbu zO|%a+*yCfPn75bPH~zlff6B?uzFNM2Uk>VE=kJM$d&Xci%T3TAB zs9glRJ&sVPo_xK0C@eU1Zd}Zsx5C20_iWz0nPQ`&$#UB^T8_1!gF`|RTUuLhB_|{; zL|t9fILoH-Sd)7_>LYVIVO-!Pthp_5!tuu#0W-;Cjx;WC1086n66y-`+QPgpHLppG zn$O^YYjn2j3}vLHLXN_S*J{l}?es;97JdqB7J!$&=C$f$V`932Ukd6b{=MyBGis|I zqQZh);zt>V^EJZ6}8V$XE-jJ{CvHHy3eSI{$Wm5=96aB|C=^# zs!$IUdgA<0d{Fz(R2TBW?RrX5GP%3Bp~h?QjQF^O_fU7vo7X_BM$N3 zC+a@mNr>Mw-wU-e^FUi}^H!tgDzD+aHWxKyP&a8fYP-q#u0V}R)OP9DMg6jd?b5UH zbmVY5uW2sSYU8y|QJ0p>4dZp1QCE!D6&7l1^WOk(qaL}#hdtfrSWnM6O4t+c26>ZN zw|0#O>LD@IX+!<7Vg}iwg1l^Ar~C75#1+ON+e+i{syLP?~nH)VBqp8!T>G7I(T9YOL`(X0%@S^ybSl`HqsFvKkg2zEY z!5=s~I-%Ys)*lTF`na_0z~jow%5v1t4h_ZiupxqcnQk)Ub>L`qKGs6Vn&slC%`kea z4vkr-O%mOxImP8|P~-K-BfBej9Y>+|IIrorH$P9%EBv0k-W@;YHLH0YNYq{i-P7sb zy}MM4W7J3e4mFwoQdp4x7u5PCXRI5{(%wHEN#6p zq6U4gP`9|c61u6flA$Ia`;MTKxjgb3)VvNj)|ZAo@1hGm-KZCRUZ`D~ zo{D;Sys0HFMAU9d=nWF z&h^b-Q3Lq{ehsf3%)he%HR5;Ux48XMKZIJweC>SRP)k}SbfqAFsPRO@T2Zg;3V3Ny z(`xf3okhB2XKPEH{9UmYCzmU(mpBHz?TL>g)W(I*iKh48dzag^k5T7b2lBNEHKd_x z{QrWQa00KLI?*BU7xfRT|=$`Y)Jj+R(^%G1N+IIjffra&oe$r~525H`db})K`JeL}pvI2z9Vw z>u7cpWal<~pCRqFvaP67rA`xI=Un&3(C{-ZsQrtYGH84|0yT<4a`sS3agkv2IX?Zo z!?(v#rxAJK0V${3C3+ zje~v>^bfD;nvtFg`xT8^iva`cWg~80k2>7nq6Rd<*0AE@Lb`VKGJM!(77N`L781&%;c(Z|uVBcYv1{$vy-Gf-d+sgy>n^WK$o)LJ% z#mW9AWMZIJv5t<8HSEk6(XnxOt}Ski_oIV25z0p7Nt zYetgITLry@B|U*$*OvCy)ln7NnkZqcD`>$x?XZKEY8qX{xi4Nk&+prhw`{ds!t-xs zWwpZ3*YB8_nVG5EE|*Wx&p;PGi?pFRvqDpgRMBT}9pAP324rNsftD{<`^Lh;qNu*U z{yKD1F%Agky7Ld?Vq;DC@m_qnxw$F&`T5nQB&R$qFDu6wqZvBS-E`{IDXu%ou3fuE zSFc`$7T-l`*w@4&t~Jv5+tDu_`|)-q4Slfj>z456X~Od)ZX3mo>Wq({d7ll9A!uJa z4(h6O+CyW+g*MlOQB-s!b9CJC{CE8Km^V@ybWQmfunoGj&}b#-K$8~6Z8PS~>ehGN zIt==vcX;0cz4R{&3JZS>2?_pWt$}_$o-e$O`_q?8moEDX+mE4x-3Pm5SCm&&-Mn%0 z2j~q#Tep){R#ZMnOicWT9-63Mi&2O2p!<8TuCDIK{g|hBc6L%vPY-lVaZQdjliJ}7 znzcU-8eT7HQ<$5M%-lp1=g)XvXH=j|G&;rv_q1o4e7x>(`#}3j676dEo^7-vK7cAK zD=8r%fiNEwemiNwbQ-U}kQCQ1A>$xN3fq%KanLAqi1VX`#;a)JqM4*JYwDBPJJy+O zNOWHp6cYRm??1}Q%P1)&>5Gu~$RPLd0260F&rNI6cikKJR&lB{)_eIRqvs*E18s&u`Dttc}HwbUc7sAX01+d;`cK!&PZ#z z%T8SSn5s{=GuZ+3$-F(GKbGqEp|Q4FjL$bj^+s8HA(K6baS!jSUxSt;*DQQieW-u>$$eDQ^LzT@%dffqJgqts zBb0sEUVGx>WZsT=nlyC^jd9Z@$)V4K_95k|^^E|fI znv`lblS-*6&4||{)ivrgs3*A`&njn-!WbQLw9>Sj#`Ti?%VC{IghEPB4i;IPB>b2qPqjX!6HSN%`w zgzF7x5@JpTZOe0>(5(w&+b=MYp;BMnkpvYctELGMd* zHPh2sLr82HbkbFnlt~`iU8AQf(MXd;Y*;kxbpV=)H~1I~`kLH6{8|iZ3qorfx@wpg z;@KvXJLT1{dOF(C{6MU%V`11>-ypvO+1dF|)|#LCKwGamcdc>DE1$KBY&7xEuGwSv zSznz{ZvLlfr~Dr;fL?{-?I@DHgy$E~j})HqT=pU9b6zA19kUUqxt5JHje@3x)G6qG z551;;vkyr@JAC}k)ugmZo#an?(d0{^(Bg`uX_vwUjgXNz4r~NXKr33Lr3M|+<@C%x z+%{yWXFw)K#)1~$T4>A9LEjBsEkRRj%ouqBN1aBRFCp33^&|ytF-crcLHiGShR<~W z1~t!cZ;(CVc6&vRQ%OFae_S7Uog9L`rfrVbo~mh8trywhRa=!4ew$|&TGHHt%`~yf zg3WGsr6s3A*wX9qH1DkxHu+8>$=}3tKa^Jr=N9z*pvf@?THK?db0o!ea=DHE_Dq9h zpwFSSNsW}vmNRHTal0@rXa{i(GpI{CImvw7IDK|7dI286$7EFZp5bu_I*A9nI8kr_!$X8=3VR6=ZZJ zgQ=g2pxMyJn|Kgyq1A@C78|rhaNQjlG{I;XwD6Gd><2oU7z0j*#;3BiIvd0F!JvIK z;bIVR-AArF=>J+9+i|mw^seR5bm$-PzKCm|a?LOF(`-h{+8;ISbW?QJud&fvyJn;Q z+O->@W49IBX}gRK4P&6S)(EY&_jo-6;m9j|3r%RxJ2ld-lTXh5Qm zm&rBfdX9p9xSr97R(o2R8EE;B>@xKK#?4W0@n-~;M_Xy+?J$~xHZ|pT98E)iG387! zsT}tw<-=a2a0Gn@#&>eiOdE9=eNdY{jjXVw;V}jzI={JfCk-fS)hnJwe+EZP9{^jSLBTf~1al(}D%_XiTPsFuxJ>&XBjcKJhn~L}fmo zvx|=Vs;xnLOho&kgIF89LF@W6XzZO>+Fh4TF zs^6QSODfnA_b{4VX#ByH-1SplmB$x9_xJUQhxXM+SXlf6beR4CeXP&0{VTRlpj{^D zlR-<7wr#N_V@op{vln#;dQ9?FJ81Rp4@hlSo8ybeeARo;!v&+P_Qc$J=gwQK@!}Dh z`A#Y`??|F;+o13FO!G=wR_3#5D;KTTHPHFmFTjTkx0uvwSsLnVS{iI#V6`%7b|jwN z#_JF?#?a4iWQxtuc!R#xsN>GuMoa-ZdtBpo+y(SuT+b7Fp=WbT_NS+&e22L_p0kJ0hHPj%qkYZKsDxhCS4_jRFY=cjmw(Uh zc+OnchLq3Wc=L5KyO>K0Ur(h8E9MKDRM3QZfAkpnt^9i%HX5hKCB;x|Li9aP9}mc+ z=hpk>1RsMA)njO|(X`z4w6GppUM*I_I1u_rLOW78>rG1M{AlvI-2}Z2nsUSg{h1Ym zHq7zy^_IW5-tav9(ihgl=4KRT=eRYbbg7)!eSXvd_uDHr9s5w-{OoZxx8wixIX9k6 z*EH^o|AWo>BDUsk8O_=2!G?_(&NYi3kCc;(Te574jD_VUGg~{WC!L*#SaDH)b#!9% z!oaBDD!pKH^Q9iEKl8~5rfWB@vsDM7>n_wE7aG~`#rXY7?Q#;+JR3(dyWDWk+J0B5 zX}bsN&vPyGUs~>e=l3+vB`jL;dgi+uKi)$d?pD!62OXgfO`SgN>834PEd20LBqlbx zVP8uV>uBHK>gns@9vc_)naO73Pq*1_eHs}X^KohWo(!!L+nlMzW~Y?vEI&}(XZ87n zHoMOzHd|j)*=JihdB5Z4DF>Z?asT-5w8zWNt#LhN;__=rC%Ep<`WtzquwV+CHh<>D zW$RW6�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 literal 0 HcmV?d00001 diff --git a/assignments/week02/lab/web/images/test/test.txt b/assignments/week02/lab/web/images/test/test.txt new file mode 100644 index 00000000..46fd6b2d --- /dev/null +++ b/assignments/week02/lab/web/images/test/test.txt @@ -0,0 +1 @@ +test test 123 \ No newline at end of file From 636d7b48a54519bdf47fcd45cde2528b194b7e9d Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Tue, 29 Jan 2013 00:28:09 -0800 Subject: [PATCH 4/8] Week03 Assignment - Allen Su --- .../week03/athome/AllenFBfriendslocation.txt | 1543 +++++++++++++++++ .../athome/Week03 Assignment - Allen Su.py | 73 + .../athome/Week03 Assignment - Allen Su.txt | 3 + 3 files changed, 1619 insertions(+) create mode 100644 assignments/week03/athome/AllenFBfriendslocation.txt create mode 100644 assignments/week03/athome/Week03 Assignment - Allen Su.py create mode 100644 assignments/week03/athome/Week03 Assignment - Allen Su.txt diff --git a/assignments/week03/athome/AllenFBfriendslocation.txt b/assignments/week03/athome/AllenFBfriendslocation.txt new file mode 100644 index 00000000..4922b560 --- /dev/null +++ b/assignments/week03/athome/AllenFBfriendslocation.txt @@ -0,0 +1,1543 @@ +{ + "data": [ + { + "name": "Jack Lin", + "location": { + "id": "104022926303756", + "name": "Palo Alto, California" + }, + "id": "2420699" + }, + { + "name": "Frances Shih", + "location": { + "id": "107847249250173", + "name": "Cambridge, Cambridgeshire" + }, + "id": "4801904" + }, + { + "name": "yinhsu liu", + "id": "8842479" + }, + { + "name": "Joyce Chen", + "id": "10706346" + }, + { + "name": "Aaron Lin", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "28102698" + }, + { + "name": "Sandy Fu", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "28105475" + }, + { + "name": "Ren Lu", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "28130638" + }, + { + "name": "Gary Wang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "502079509" + }, + { + "name": "Donald Chuang", + "location": { + "id": "110363935657673", + "name": "Dongguan, Guangdong" + }, + "id": "503969190" + }, + { + "name": "Stephen Ma", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "504285248" + }, + { + "name": "Betty Chen", + "location": { + "id": "102160693158562", + "name": "Zurich, Switzerland" + }, + "id": "504324015" + }, + { + "name": "Julia Lin", + "id": "504324532" + }, + { + "name": "Tony H. Chang", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "504372181" + }, + { + "name": "Jacqueline Chiang", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "504372497" + }, + { + "name": "William Chen", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "504404676" + }, + { + "name": "Allison Chang", + "id": "504452284" + }, + { + "name": "Marian Hsueh", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "504461371" + }, + { + "name": "Tina Yuan", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "504494630" + }, + { + "name": "Brian Tsai", + "id": "504510545" + }, + { + "name": "Roger Feria Jr.", + "location": { + "id": "111983945494775", + "name": "Calgary, Alberta" + }, + "id": "504527849" + }, + { + "name": "Scott Lin", + "id": "504649869" + }, + { + "name": "Kelly Lee", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "504714772" + }, + { + "name": "Ivan Lee", + "id": "505323843" + }, + { + "name": "Pauline Chao", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "505374173" + }, + { + "name": "James J. H. Lu", + "location": { + "id": "103808096325310", + "name": "Zhongshan" + }, + "id": "505401510" + }, + { + "name": "Christine Jen", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "505570225" + }, + { + "name": "Derrick Lee", + "id": "505593579" + }, + { + "name": "Sandy Chang", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "506268341" + }, + { + "name": "Joseph Cheng", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "506545245" + }, + { + "name": "Alice Lee", + "id": "507482447" + }, + { + "name": "Samson Yang", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "510475827" + }, + { + "name": "Ann Wu", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "511710428" + }, + { + "name": "Emy I-an Tsai", + "location": { + "id": "110922325599480", + "name": "Taichung, Taiwan" + }, + "id": "511972231" + }, + { + "name": "Paul Lin", + "id": "512213329" + }, + { + "name": "Cindy Baba", + "id": "514393738" + }, + { + "name": "Carol Yuan", + "id": "515638793" + }, + { + "name": "Steven Ku", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "516209174" + }, + { + "name": "Grace Hung", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "516639500" + }, + { + "name": "Teser Wong", + "id": "517379523" + }, + { + "name": "Zoe Lin", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "519700226" + }, + { + "name": "Cindy Li", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "520270011" + }, + { + "name": "Chester Blue", + "location": { + "id": "109351672416286", + "name": "Puyallup, Washington" + }, + "id": "521111683" + }, + { + "name": "Michael Chen", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "521675376" + }, + { + "name": "Josie Hu", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "525087493" + }, + { + "name": "Eric Liang", + "id": "525300650" + }, + { + "name": "Eric Chu", + "location": { + "id": "113317605345751", + "name": "Hong Kong" + }, + "id": "525327300" + }, + { + "name": "David Han", + "location": { + "id": "191419727553758", + "name": "Kunshan" + }, + "id": "528807955" + }, + { + "name": "Sarah Wu", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "528893092" + }, + { + "name": "Mike Chuang", + "id": "530531430" + }, + { + "name": "Connie Wu", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "537718229" + }, + { + "name": "Louie Wang", + "location": { + "id": "103769672995729", + "name": "Diamond Bar, California" + }, + "id": "538281083" + }, + { + "name": "Ada Edwards", + "location": { + "id": "107991659233606", + "name": "Atlanta, Georgia" + }, + "id": "540175019" + }, + { + "name": "Melody Su", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "542645350" + }, + { + "name": "William CY Tsai", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "542825452" + }, + { + "name": "Marty Chou", + "id": "542905139" + }, + { + "name": "Ron Hou", + "id": "543706245" + }, + { + "name": "Phil Lai", + "location": { + "id": "106324046073002", + "name": "Shanghai, China" + }, + "id": "543915135" + }, + { + "name": "Ann Lee", + "id": "544377050" + }, + { + "name": "Angela Cheng", + "id": "548325382" + }, + { + "name": "Mikiko Yang", + "location": { + "id": "111948542155151", + "name": "San Jose, California" + }, + "id": "548708306" + }, + { + "name": "Liang-Hsin Sung", + "location": { + "id": "115217241824342", + "name": "Hsinchu, Taiwan" + }, + "id": "552253687" + }, + { + "name": "Tom Tseng", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "555692418" + }, + { + "name": "Joyce Huang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "556530246" + }, + { + "name": "Steven Chen", + "id": "556735013" + }, + { + "name": "Tabitha Tsai", + "id": "559380092" + }, + { + "name": "Tzu.Ching Usa", + "id": "559396256" + }, + { + "name": "Morris Lin", + "id": "562436657" + }, + { + "name": "Eric Pan", + "location": { + "id": "114987875182625", + "name": "Pingtung" + }, + "id": "564490263" + }, + { + "name": "Virgil Yao-Feng Huang", + "id": "568432710" + }, + { + "name": "Jacklin Liu", + "location": { + "id": "114511591898165", + "name": "Kaohsiung, Taiwan" + }, + "id": "569501990" + }, + { + "name": "Tom Lin", + "location": { + "id": "114497808567786", + "name": "Vancouver, British Columbia" + }, + "id": "569645565" + }, + { + "name": "Ho-Lin Hsu", + "location": { + "id": "109972075699000", + "name": "Tainan, Taiwan" + }, + "id": "570886069" + }, + { + "name": "Cathy Liu", + "id": "573275350" + }, + { + "name": "Jimmy Lin", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "574049701" + }, + { + "name": "Ted Lin", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "575642400" + }, + { + "name": "Eric Tam", + "id": "575756182" + }, + { + "name": "Betty Chiang", + "id": "579598148" + }, + { + "name": "Derek Yeh", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "580842774" + }, + { + "name": "Sonia Ho", + "id": "584451139" + }, + { + "name": "I-Ming Chen", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "587337412" + }, + { + "name": "Mike Wang", + "location": { + "id": "112763262068685", + "name": "Waterloo, Ontario" + }, + "id": "589165719" + }, + { + "name": "Jennifer Soong", + "location": { + "id": "114497808567786", + "name": "Vancouver, British Columbia" + }, + "id": "589470429" + }, + { + "name": "Nelly Tsai", + "id": "589850225" + }, + { + "name": "Hua Liu", + "location": { + "id": "109394152420685", + "name": "Chino Hills, California" + }, + "id": "590040334" + }, + { + "name": "Linda Wang", + "id": "592586475" + }, + { + "name": "Drew Liaw", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "598480343" + }, + { + "name": "Johnson Huang", + "id": "601474143" + }, + { + "name": "Lance Wei", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "603275157" + }, + { + "name": "Ming Huang", + "id": "604620301" + }, + { + "name": "Sam Wang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "604805673" + }, + { + "name": "Monica Lai", + "location": { + "id": "109351672416286", + "name": "Puyallup, Washington" + }, + "id": "605813453" + }, + { + "name": "Hui-Ting Cindy Wang", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "606370324" + }, + { + "name": "Sandy Liao", + "location": { + "id": "112204368792315", + "name": "Irvine, California" + }, + "id": "611976349" + }, + { + "name": "Jim Chiang", + "location": { + "id": "106262189412553", + "name": "Mississauga, Ontario" + }, + "id": "613523300" + }, + { + "name": "Tracy Shih", + "id": "613701946" + }, + { + "name": "Shirley Tseng", + "location": { + "id": "110585945628334", + "name": "Bangkok, Thailand" + }, + "id": "614600582" + }, + { + "name": "Fanny M. H. Lin", + "id": "614856055" + }, + { + "name": "Cathy Chen", + "location": { + "id": "110922325599480", + "name": "Taichung, Taiwan" + }, + "id": "617040890" + }, + { + "name": "Vivian Yl Yeh", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "618200751" + }, + { + "name": "Lotus Su", + "location": { + "id": "108707615821090", + "name": "Tacoma, Washington" + }, + "id": "620845113" + }, + { + "name": "Evan Kuo", + "id": "621369521" + }, + { + "name": "Jack Shih", + "location": { + "id": "102184499823699", + "name": "Montreal, Quebec" + }, + "id": "624266069" + }, + { + "name": "Piko Choi", + "location": { + "id": "113317605345751", + "name": "Hong Kong" + }, + "id": "629652554" + }, + { + "name": "Heather Yang", + "location": { + "id": "111948542155151", + "name": "San Jose, California" + }, + "id": "631685378" + }, + { + "name": "Nickie Chang", + "id": "636225631" + }, + { + "name": "Fennie Lee", + "location": { + "id": "112204368792315", + "name": "Irvine, California" + }, + "id": "637477988" + }, + { + "name": "Sandy Su", + "id": "640635507" + }, + { + "name": "William Lee", + "location": { + "id": "104044692966512", + "name": "Richmond Hill, Ontario" + }, + "id": "641575205" + }, + { + "name": "Julia Yeh", + "id": "642448600" + }, + { + "name": "Tracy Chen", + "id": "644305525" + }, + { + "name": "Danny Yang", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "648452138" + }, + { + "name": "Vickie Wang", + "id": "651764896" + }, + { + "name": "Evelyn Lee", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "654845702" + }, + { + "name": "Peter Huang", + "location": { + "id": "109972075699000", + "name": "Tainan, Taiwan" + }, + "id": "663595119" + }, + { + "name": "Marissa Feria", + "location": { + "id": "111983945494775", + "name": "Calgary, Alberta" + }, + "id": "666155960" + }, + { + "name": "Tom Huang", + "location": { + "id": "106033362761104", + "name": "Campbell, California" + }, + "id": "668371202" + }, + { + "name": "Rob Lu", + "id": "668475102" + }, + { + "name": "Joanna Yuan", + "id": "671365759" + }, + { + "name": "Darren Ho", + "id": "680570288" + }, + { + "name": "Andy Wang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "686211946" + }, + { + "name": "Hy Hy", + "id": "688546194" + }, + { + "name": "Caroline Wei-Ling Yeh", + "id": "689721215" + }, + { + "name": "Ken Chuang", + "location": { + "id": "111957218824045", + "name": "Putian, Fujian" + }, + "id": "694577984" + }, + { + "name": "Elaine Lu", + "location": { + "id": "109738839051539", + "name": "Redmond, Washington" + }, + "id": "697661415" + }, + { + "name": "Swetal Patel", + "location": { + "id": "107991659233606", + "name": "Atlanta, Georgia" + }, + "id": "699032413" + }, + { + "name": "Eyleen Chen", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "701492743" + }, + { + "name": "Sean Yang", + "location": { + "id": "110714572282163", + "name": "San Diego, California" + }, + "id": "702816132" + }, + { + "name": "Helen Pan", + "location": { + "id": "108089905886149", + "name": "Fremont, California" + }, + "id": "703186998" + }, + { + "name": "Kevin Chou", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "703561113" + }, + { + "name": "Jenny Goldberg-George", + "id": "705649892" + }, + { + "name": "Wawabear Wa", + "location": { + "id": "114497808567786", + "name": "Vancouver, British Columbia" + }, + "id": "709691416" + }, + { + "name": "Albert Lee", + "location": { + "id": "108089905886149", + "name": "Fremont, California" + }, + "id": "713201963" + }, + { + "name": "Mandy Huang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "723562298" + }, + { + "name": "Royce Lin", + "id": "725510514" + }, + { + "name": "Anny Ma", + "id": "728823012" + }, + { + "name": "George Chang", + "location": { + "id": "105923529439049", + "name": "Issaquah, Washington" + }, + "id": "732847358" + }, + { + "name": "Frank Chung", + "location": { + "id": "112009122149445", + "name": "Taipei" + }, + "id": "733470010" + }, + { + "name": "Jack C.H. Tseng", + "id": "735890459" + }, + { + "name": "Ting-Yuan Liu", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "735942593" + }, + { + "name": "Jack Yuan", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "738370021" + }, + { + "name": "Rose Lo", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "743460590" + }, + { + "name": "Leon Yen", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "743624321" + }, + { + "name": "Oliver Hsu", + "location": { + "id": "112202378796934", + "name": "Richmond, British Columbia" + }, + "id": "750338871" + }, + { + "name": "Eric Chou", + "location": { + "id": "105923529439049", + "name": "Issaquah, Washington" + }, + "id": "754368358" + }, + { + "name": "Alan Tu", + "location": { + "id": "114987875182625", + "name": "Pingtung" + }, + "id": "763880721" + }, + { + "name": "Chun-Tse Chien", + "id": "765789748" + }, + { + "name": "Eric Lin", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "770370622" + }, + { + "name": "Rob Yang", + "location": { + "id": "108659242498155", + "name": "Chicago, Illinois" + }, + "id": "770755709" + }, + { + "name": "Jackie Su", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "771620087" + }, + { + "name": "Stephanie Lin", + "id": "771800116" + }, + { + "name": "Vincent Teng", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "772895607" + }, + { + "name": "Agnes Hwang", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "773075382" + }, + { + "name": "Rudy Huang", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "777204026" + }, + { + "name": "Liann Chia-Hsi Lin", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "779491254" + }, + { + "name": "Michael Mei", + "location": { + "id": "109738839051539", + "name": "Redmond, Washington" + }, + "id": "786950122" + }, + { + "name": "Gary Yen", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "788800082" + }, + { + "name": "Andy Chen", + "location": { + "id": "115976748413086", + "name": "Edmonton, Alberta" + }, + "id": "804034227" + }, + { + "name": "Albert Tzu-Pin Lin", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "806005356" + }, + { + "name": "Michael Lee", + "location": { + "id": "106031246101831", + "name": "Kuala Lumpur, Malaysia" + }, + "id": "809910400" + }, + { + "name": "Marku Hsieh", + "location": { + "id": "110363935657673", + "name": "Dongguan, Guangdong" + }, + "id": "815678760" + }, + { + "name": "Robin Lee", + "location": { + "id": "115217241824342", + "name": "Hsinchu, Taiwan" + }, + "id": "820029605" + }, + { + "name": "Dorian Tung", + "location": { + "id": "114497808567786", + "name": "Vancouver, British Columbia" + }, + "id": "827845467" + }, + { + "name": "Christine Tu", + "location": { + "id": "112438218775062", + "name": "Baltimore, Maryland" + }, + "id": "844780710" + }, + { + "name": "Christine Ho", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "854110550" + }, + { + "name": "Jojo Ho", + "id": "858775723" + }, + { + "name": "Lisa Teng", + "id": "862710174" + }, + { + "name": "Angel Chuang", + "location": { + "id": "112204368792315", + "name": "Irvine, California" + }, + "id": "873995626" + }, + { + "name": "Amber I-Chun Chen", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "877855693" + }, + { + "name": "Tina Huang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "899215556" + }, + { + "name": "Steve Cheng", + "id": "1012984653" + }, + { + "name": "Ken Fujiwara", + "id": "1014255768" + }, + { + "name": "David Lin", + "location": { + "id": "111723635511834", + "name": "Bellevue, Washington" + }, + "id": "1051114718" + }, + { + "name": "Judy Tsing-Lin", + "location": { + "id": "111723635511834", + "name": "Bellevue, Washington" + }, + "id": "1057954727" + }, + { + "name": "Meihsiu Chen", + "location": { + "id": "105923529439049", + "name": "Issaquah, Washington" + }, + "id": "1061034331" + }, + { + "name": "Sophie Yang", + "id": "1077849295" + }, + { + "name": "Cameron Liu", + "id": "1113026343" + }, + { + "name": "Larry Ho", + "id": "1125631939" + }, + { + "name": "Amie Callaway", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "1131738361" + }, + { + "name": "Kevin Lee", + "location": { + "id": "110922325599480", + "name": "Taichung, Taiwan" + }, + "id": "1143883392" + }, + { + "name": "Arvin Wu", + "id": "1172648067" + }, + { + "name": "Eris Lin", + "id": "1199915253" + }, + { + "name": "Henry Rowshan", + "location": { + "id": "111723635511834", + "name": "Bellevue, Washington" + }, + "id": "1267870492" + }, + { + "name": "Mauricio Flores", + "id": "1268205154" + }, + { + "name": "Jason Carnevale", + "id": "1309397504" + }, + { + "name": "STella O'lla C", + "id": "1313413083" + }, + { + "name": "Rex Lin", + "id": "1337303844" + }, + { + "name": "King Wang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "1356648346" + }, + { + "name": "Annie Liang", + "id": "1388816436" + }, + { + "name": "Charlie Chiang", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "1400028831" + }, + { + "name": "Jim Su", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "1468617326" + }, + { + "name": "Momo Yen", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "1469560791" + }, + { + "name": "Christy Liang", + "location": { + "id": "109972075699000", + "name": "Tainan, Taiwan" + }, + "id": "1473487311" + }, + { + "name": "Martha Carnevale", + "id": "1511114071" + }, + { + "name": "Greg Hedgpeth", + "id": "1524429743" + }, + { + "name": "Weili Chiang", + "id": "1527283417" + }, + { + "name": "Lydia Lin", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "1531927861" + }, + { + "name": "Ruibiao Qiu", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "1558440130" + }, + { + "name": "Justin Callaway", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "1626337429" + }, + { + "name": "Ingrid Lo", + "id": "1649801992" + }, + { + "name": "Thomas Wu", + "location": { + "id": "108089905886149", + "name": "Fremont, California" + }, + "id": "1661436495" + }, + { + "name": "Paggie Eh", + "id": "1677757550" + }, + { + "name": "Ingrid Chen", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "1721100821" + }, + { + "name": "RenHuei Jap", + "location": { + "id": "101883206519751", + "name": "Singapore, Singapore" + }, + "id": "1721692440" + }, + { + "name": "Phoebe Chen", + "location": { + "id": "102173726491792", + "name": "Jakarta, Indonesia" + }, + "id": "100000027288628" + }, + { + "name": "Katherine Shen", + "id": "100000137814224" + }, + { + "name": "Jenny Lee", + "id": "100000245978544" + }, + { + "name": "Natalie Hung", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "100000273235557" + }, + { + "name": "Ching Yu Lin", + "location": { + "id": "110843418940484", + "name": "Seattle, Washington" + }, + "id": "100000290200527" + }, + { + "name": "Melody Huang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "100000297879729" + }, + { + "name": "Queeniie Lin", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "100000316660768" + }, + { + "name": "Leanna Pai", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "100000360895890" + }, + { + "name": "Alice Lee", + "id": "100000424098578" + }, + { + "name": "Annie Su", + "location": { + "id": "108167739211442", + "name": "Gaithersburg, Maryland" + }, + "id": "100000448823951" + }, + { + "name": "Janice Wu", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "100000471954347" + }, + { + "name": "Ann Wu", + "location": { + "id": "114511591898165", + "name": "Kaohsiung, Taiwan" + }, + "id": "100000568431671" + }, + { + "name": "Snow Su", + "location": { + "id": "112501762094262", + "name": "North Potomac, Maryland" + }, + "id": "100000708595497" + }, + { + "name": "Amy Twinsmom", + "location": { + "id": "105923529439049", + "name": "Issaquah, Washington" + }, + "id": "100000724332700" + }, + { + "name": "Lily Tai", + "id": "100000763203733" + }, + { + "name": "William Lo", + "id": "100000826502483" + }, + { + "name": "Lucy Irving Shiao", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "100000898962726" + }, + { + "name": "Su Yih Shen Su", + "id": "100000978090722" + }, + { + "name": "Tinnwaie Chang", + "location": { + "id": "110765362279102", + "name": "Taipei, Taiwan" + }, + "id": "100001134796916" + }, + { + "name": "Min-Min Wong", + "location": { + "id": "111723635511834", + "name": "Bellevue, Washington" + }, + "id": "100001190041040" + }, + { + "name": "Michael Chen", + "id": "100001247314814" + }, + { + "name": "Vera Chi", + "id": "100001414367653" + }, + { + "name": "Sally Chuang", + "id": "100001642801206" + }, + { + "name": "Peter Lin", + "location": { + "id": "110941395597405", + "name": "Toronto, Ontario" + }, + "id": "100001928605065" + }, + { + "name": "Yu-Shiou Kao", + "id": "100002190771148" + }, + { + "name": "Yi-Pin Chen", + "location": { + "id": "114497808567786", + "name": "Vancouver, British Columbia" + }, + "id": "100002380398139" + }, + { + "name": "Fandy Tsai", + "id": "100002443206000" + }, + { + "name": "Oni Hu", + "id": "100002632837670" + }, + { + "name": "Emmy Ke", + "location": { + "id": "114511591898165", + "name": "Kaohsiung, Taiwan" + }, + "id": "100002759599890" + }, + { + "name": "Michael Lin", + "id": "100002853262651" + }, + { + "name": "Doreen Kuan", + "id": "100004392883063" + } + ], + "paging": { + "next": "https://graph.facebook.com/773995092/friends?fields=name,location&limit=5000&offset=5000&__after_id=100004392883063" + } +} \ No newline at end of file diff --git a/assignments/week03/athome/Week03 Assignment - Allen Su.py b/assignments/week03/athome/Week03 Assignment - Allen Su.py new file mode 100644 index 00000000..7fb5166b --- /dev/null +++ b/assignments/week03/athome/Week03 Assignment - Allen Su.py @@ -0,0 +1,73 @@ +# 1. Use Facebook Graph API to get name and location of friends +# 2. Parse the data obtained from Facebook Graph API and scrub it to the desired format +# 3. Plug the locations of my friends on Google Map using Google static map API + +import json, urllib2, pprint, webbrowser + +def get_mapping(url): + """Get the rank of the name from names.whitepages.com""" + page = urllib2.urlopen(url) + html = page.read() + parsed = BeautifulSoup(html) + entry = parsed.find('table', class_='rank inline_block') + rank = entry.attrs['title'].split()[3][:-2] + return rank + +def scrub_data(f_dic_u): + """Scrub the unicode dictionary passed in and returned a dictionary normalized sorted in different ways""" + new_dic = dict() + for element in f_dic_u['data']: + if 'location' in element: + loc = element['location']['name'].encode('ascii','ignore') + name = element['name'].encode('ascii','ignore') + + # Dictionary with name as the key and location as the value + #new_dic[name] = loc + + # Inverse dictionary with location as the key and a list of names as value + #if loc not in new_dic: + # new_dic[loc] = [name] + #else: + # new_dic[loc].append(name) + + # Inverse dictionary with location as the key and a number of count of names as value + if loc not in new_dic: + new_dic[loc] = 1 + else: + new_dic[loc] += 1 + + return new_dic + + # Return only the top 3 locations + #top3_loc = dict() + #for key in new_dic: + # if new_dic[key] >= 10: + # top3_loc[key] = new_dic[key] + + #return top3_loc + +def parse_data(file): + f = open(file, 'r') + f_dic = json.loads(f.read()) + f.close() + return f_dic + +def print_map(f_dic): + new = 2 + url_1 = 'http://maps.googleapis.com/maps/api/staticmap?center=honolulu,hawaii,hi&zoom=2&size=640x640&scale=2&markers=color:green' + for key in f_dic: + loc, num = key, f_dic[key] + url_1 += '|%s' % loc + + url_final = url_1 + '&sensor=false' + print url_final + webbrowser.open(url_final,new=new) + +def main(): + fb_dic_u = parse_data('AllenFBfriendslocation.txt') + fb_dic = scrub_data(fb_dic_u) + pprint.pprint(fb_dic) + print_map(fb_dic) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/assignments/week03/athome/Week03 Assignment - Allen Su.txt b/assignments/week03/athome/Week03 Assignment - Allen Su.txt new file mode 100644 index 00000000..61e684ef --- /dev/null +++ b/assignments/week03/athome/Week03 Assignment - Allen Su.txt @@ -0,0 +1,3 @@ +# 1. Use Facebook Graph API to get name and location of friends +# 2. Parse the data obtained from Facebook Graph API and scrub it to the desired format +# 3. Plug the locations of my friends on Google Map using Google static map API \ No newline at end of file From 6e1f7d19043bf48042b69950cb4bab89480c8efd Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Tue, 29 Jan 2013 00:32:16 -0800 Subject: [PATCH 5/8] A --- .../teachers/week02/answers/http_serve7.py | 349 +++++++++--------- .../week02/answers/web/a_web_page.html | 11 + .../answers/web/images/JPEG_example.jpg | Bin 0 -> 15138 bytes .../answers/web/images/Sample_Scene_Balls.jpg | Bin 0 -> 146534 bytes .../week02/answers/web/images/sample_1.png | Bin 0 -> 8760 bytes .../teachers/week02/answers/web/make_time.py | 25 ++ .../teachers/week02/answers/web/sample.txt | 3 + assignments/week02/lab/echo_server.py | 25 -- assignments/week02/lab/http_server7.py | 4 +- 9 files changed, 220 insertions(+), 197 deletions(-) create mode 100644 assignments/teachers/week02/answers/web/a_web_page.html create mode 100644 assignments/teachers/week02/answers/web/images/JPEG_example.jpg create mode 100644 assignments/teachers/week02/answers/web/images/Sample_Scene_Balls.jpg create mode 100644 assignments/teachers/week02/answers/web/images/sample_1.png create mode 100644 assignments/teachers/week02/answers/web/make_time.py create mode 100644 assignments/teachers/week02/answers/web/sample.txt delete mode 100644 assignments/week02/lab/echo_server.py diff --git a/assignments/teachers/week02/answers/http_serve7.py b/assignments/teachers/week02/answers/http_serve7.py index ae889efc..ed2aaf60 100644 --- a/assignments/teachers/week02/answers/http_serve7.py +++ b/assignments/teachers/week02/answers/http_serve7.py @@ -1,170 +1,179 @@ -#!/usr/bin/env python - -import socket -import os - -import httpdate - -host = '' # listen on all connections (WiFi, etc) -port = 50000 -backlog = 5 # how many connections can we stack up -size = 1024 # number of bytes to receive at once - -root_dir = 'web' # must be run from code dir... - -print "point your browser to http://localhost:%i"%port - -## create the socket -s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -# set an option to tell the OS to re-use the socket -s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - -# the bind makes it a server -s.bind( (host,port) ) -s.listen(backlog) - -html = open("tiny_html.html").read() - -mime_types={} -mime_types['html'] = "text/html" -mime_types['htm'] = "text/html" -mime_types['txt'] = "text/plain" -mime_types['png'] = "image/png" -mime_types['jpeg'] = "image/jpg" -mime_types['jpg'] = "image/jpg" - -def OK_response(entity, extension='html'): - """ - returns an HTTP response: header and entity in a string - """ - resp = [] - resp.append('HTTP/1.1 200 OK') - resp.append(httpdate.httpdate_now()) - type = mime_types.get(extension, 'text/plain') - resp.append( 'Content-Type: %s'%type ) - resp.append('Content-Length: %i'%len(entity)) - resp.append('') - resp.append(entity) - - return "\r\n".join(resp) - -def Error_response(URI): - """ - returns an HTTP 404 Not Found Error response: - - URI is the name of the entity not found - """ - resp = [] - resp.append('HTTP/1.1 404 Not Found') - resp.append(httpdate.httpdate_now()) - resp.append('Content-Type: text/plain') - - msg = "404 Error:\n %s \n not found"%( URI ) - - resp.append('Content-Length: %i'%( len(msg) ) ) - resp.append('') - resp.append(msg) - - return "\r\n".join(resp) - - -def parse_request(request): - """ - parse an HTTP request - - returns the URI asked for - - note: minimal parsing -- only supprt GET - - example: - GET / HTTP/1.1 - Host: localhost:50000 - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0 - Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - Accept-Language: en-us,en;q=0.5 - Accept-Encoding: gzip, deflate - Connection: keep-alive - Cache-Control: max-age=0 - """ - # first line should be the method line: - lines = request.split("\r\n") - - method, URI, protocol = lines[0].split() - - # a bit of checking: - if method.strip() != "GET": - raise ValueError("I can only process a GET request") - if protocol.split('/')[0] != "HTTP": - raise ValueError("I can only process an HTTP request") - - return URI - -def format_dir_list(URI): - """ - format the contests of dir as HTML with links - """ - dir = os.path.join(root_dir, URI) - names = os.listdir(dir) - - dirs = [d for d in names if os.path.isdir(os.path.join(dir,d))] - files = [d for d in names if os.path.isfile(os.path.join(dir,d))] - - html =[] - html.append(" ") - html.append("

%s

"%URI) - print "URI:", URI - if URI: # don't need the parent dir at the root - html.append('
Parent' ) - html.append("

Directories:

") - html.append("
    ") - for d in dirs: - html.append('
  • %s
  • '%(os.path.join(URI,d), d)) - html.append("
") - html.append("

Files:

") - html.append("
    ") - for f in files: - html.append('
  • %s
  • '%(os.path.join(URI,f), f) ) - html.append("
") - html.append(" ") - return "\n".join(html) - -def get_time_page(): - """ - returns and html page with the current time in it - """ - time = httpdate.httpdate_now() - html = "

%s

"%time - return html - -def get_file(URI): - - URI = URI.strip('/') #weird-- os.path.join does not like a leading slash - # check if this is the time server option - if URI.lower() == "get_time": - return get_time_page(), 'html' - else: - filename = os.path.join( root_dir, URI) - if os.path.isfile(filename): - contents = open(filename, 'rb').read() - ext = os.path.splitext(filename)[1].strip('.') - return contents, ext - elif os.path.isdir(filename): - return format_dir_list(URI), 'htm' - else: - raise ValueError("there is nothing by that name") - - -while True: # keep looking for new connections forever - client, address = s.accept() # look for a connection - request = client.recv(size) - if request: # if the connection was closed there would be no data - print "received:", request - URI = parse_request(request) - try: - file_data, ext = get_file(URI) - response = OK_response(file_data, ext) - except ValueError: - response = Error_response(URI) - client.send(response) - client.close() - +#!/usr/bin/env python + +import socket +import os +import email.utils +import time +#import httpdate + +host = '' # listen on all connections (WiFi, etc) +port = 50000 +backlog = 5 # how many connections can we stack up +size = 1024 # number of bytes to receive at once + +root_dir = 'web' # must be run from code dir... + +print "point your browser to http://localhost:%i"%port + +## create the socket +s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +# set an option to tell the OS to re-use the socket +s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + +# the bind makes it a server +s.bind( (host,port) ) +s.listen(backlog) + +#html = open("tiny_html.html").read() + +mime_types={} +mime_types['html'] = "text/html" +mime_types['htm'] = "text/html" +mime_types['txt'] = "text/plain" +mime_types['png'] = "image/png" +mime_types['jpeg'] = "image/jpg" +mime_types['jpg'] = "image/jpg" + +def httpdate(): + """Returns a date/time value in RFC1123 format""" + now = time.gmtime() + stamp = time.mktime(now) + return email.utils.formatdate(stamp, False, True) + +def OK_response(entity, extension='html'): + """ + returns an HTTP response: header and entity in a string + """ + resp = [] + resp.append('HTTP/1.1 200 OK') + resp.append(httpdate()) + type = mime_types.get(extension, 'text/plain') + resp.append( 'Content-Type: %s'%type ) + resp.append('Content-Length: %i'%len(entity)) + resp.append('') + resp.append(entity) + + return "\r\n".join(resp) + +def Error_response(URI): + """ + returns an HTTP 404 Not Found Error response: + + URI is the name of the entity not found + """ + resp = [] + resp.append('HTTP/1.1 404 Not Found') + resp.append(httpdate()) + resp.append('Content-Type: text/plain') + + msg = "404 Error:\n %s \n not found"%( URI ) + + resp.append('Content-Length: %i'%( len(msg) ) ) + resp.append('') + resp.append(msg) + + return "\r\n".join(resp) + + +def parse_request(request): + """ + parse an HTTP request + + returns the URI asked for + + note: minimal parsing -- only supprt GET + + example: + GET / HTTP/1.1 + Host: localhost:50000 + User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:12.0) Gecko/20100101 Firefox/12.0 + Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 + Accept-Language: en-us,en;q=0.5 + Accept-Encoding: gzip, deflate + Connection: keep-alive + Cache-Control: max-age=0 + """ + # first line should be the method line: + lines = request.split("\r\n") + + method, URI, protocol = lines[0].split() + + # a bit of checking: + if method.strip() != "GET": + raise ValueError("I can only process a GET request") + if protocol.split('/')[0] != "HTTP": + raise ValueError("I can only process an HTTP request") + + return URI + +def format_dir_list(URI): + """ + format the contests of dir as HTML with links + """ + dir = os.path.join(root_dir, URI) + names = os.listdir(dir) + + dirs = [d for d in names if os.path.isdir(os.path.join(dir,d))] + files = [d for d in names if os.path.isfile(os.path.join(dir,d))] + + html =[] + html.append(" ") + html.append("

%s

"%URI) + print "URI:", URI + if URI: # don't need the parent dir at the root + html.append('Parent' ) + html.append("

Directories:

") + html.append("
    ") + for d in dirs: + html.append('
  • %s
  • '%(os.path.join(URI,d), d)) + html.append("
") + html.append("

Files:

") + html.append("
    ") + for f in files: + html.append('
  • %s
  • '%(os.path.join(URI,f), f) ) + html.append("
") + html.append("
") + return "\n".join(html) + +def get_time_page(): + """ + returns and html page with the current time in it + """ + time = httpdate() + html = "

%s

"%time + return html + +def get_file(URI): + + print 'URI = ', URI + URI = URI.strip('/') #weird-- os.path.join does not like a leading slash + # check if this is the time server option + if URI.lower() == "get_time": + return get_time_page(), 'html' + else: + filename = os.path.join( root_dir, URI) + if os.path.isfile(filename): + contents = open(filename, 'rb').read() + ext = os.path.splitext(filename)[1].strip('.') + return contents, ext + elif os.path.isdir(filename): + return format_dir_list(URI), 'htm' + else: + raise ValueError("there is nothing by that name") + + +while True: # keep looking for new connections forever + client, address = s.accept() # look for a connection + request = client.recv(size) + if request: # if the connection was closed there would be no data + print "received:", request + URI = parse_request(request) + try: + file_data, ext = get_file(URI) + response = OK_response(file_data, ext) + except ValueError: + response = Error_response(URI) + print response + client.send(response) + client.close() + diff --git a/assignments/teachers/week02/answers/web/a_web_page.html b/assignments/teachers/week02/answers/web/a_web_page.html new file mode 100644 index 00000000..e7c3c777 --- /dev/null +++ b/assignments/teachers/week02/answers/web/a_web_page.html @@ -0,0 +1,11 @@ + + + + +

My First Heading

+ +

My first paragraph.

+ + + + diff --git a/assignments/teachers/week02/answers/web/images/JPEG_example.jpg b/assignments/teachers/week02/answers/web/images/JPEG_example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..13506f01e9a514c53dc52cc7cbf499f52a29b6f8 GIT binary patch literal 15138 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 literal 0 HcmV?d00001 diff --git a/assignments/teachers/week02/answers/web/images/Sample_Scene_Balls.jpg b/assignments/teachers/week02/answers/web/images/Sample_Scene_Balls.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c0ccade2de6ac61a164052ed4a7da9fe9ce2068 GIT binary patch literal 146534 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%0AG!bll7=qnQE!?zJg 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 z z1n`K}5F9YiPwP-htXt+8`FKCXDo9kzaAIIo2ITwt)YGDi!VsJ&!vbk;Quk3+L^5!Z zFpv+Ko4pZ+X-Fz^pDqV+N**hFy{mH5F(daxSe3b#c7<-#CRiXR z*R4TzLAXVd77j-adK$JsT~(Pu+*b?_pr+igGKk#BTPL^5DR(PyXuoiqo1F1c$%kMQ z8<&E8D#+Z$ayJ;r&UmWRz|9iL5e18U*yw$zK+wmx5TJ1p<+)+dQ^JOVJf2C-Nikou z?UH7Vk0AiaV@`6uM0i|*(*lMhicb+AKG4h#-*74`vyOPnU!){_h z1J~&Gh zj>y0snaQ9NvMsIOl;v5nqtlv3xQbH8a}4{{V)q$4qre`V(|*$YhJ=X6ZL|lep%_*i zNW;@2gpuMUl0rw)szWJ|3{?6mPRR-B&u%HEcsF$*{b~o1 z`T(T%#YQ)l`O^UO;7}ISzZKxg+aUv{L8i%m(J%vhfzqm=5#_SGaZt6 z6Sw9#B>MB(x~~stD`PwpLvtfCfEW+}Z~nDaOkFHG=9Z*FgzCE@e+BqN>a$6wUdJ_^ z?0|V{@sLntWtbdbZO%Um_6-N&!+2}NhT6{cuQa48;hA=sNa$E}<0k^0qTR`>Uj4S@ z@3~+zA?k22KSBCeeW5Uwju&<@&3tA*h%psq?Be-j%c}fOZx5E!rD?rg&CNSXid*UL zb^~=e%#z>�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 x7uH_R#?^%;kmAuC#$UjQOmE(xFnt1Dwe_Dy| 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 KBK{cNAOG3+Y*1+c literal 0 HcmV?d00001 diff --git a/assignments/teachers/week02/answers/web/images/sample_1.png b/assignments/teachers/week02/answers/web/images/sample_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2f52dff2428c82276821909e466d877ea7608b GIT binary patch literal 8760 zcmeAS@N?(olHy`uVBq!ia0y~yVA%k|9Be?5*NU6Z11XkbC(jTLAgJL;=>YOM3p^r= z85p>QK$!8;-MT+OLD3S|h!W?b)Wnj^{5*w_%-mE4V|^nFeFMvP`oBR6WIzgn^V3So z6N^$A98>a>QWe}Xi&D$;i?WLqoP&*LTytY)U{GN2ba4!+nDgeAVcuZ}0T#!32mjYs z%32kxRNW4`%B}XWG2_k5*R!}88m3$RTgSi<_bR&@XgUMKAGZTcKuW=Plo}0!(Nr*+ z5k|{`(c*9@)(CI!$uZcx&*5kIVImjTu;27HbHnnTqm|ldr3S0iKnWzk*!Z?ELj!;L zxtsGCCOl%|2Iln!6UISKZKj9gb3=AH^qts{+ zjHZIoj4)ajj24H3yhhl)ot=SU&s=aN_VY;fp4}h5#UwBS9X&w}LY2iEr&qIlcs$45 z&eQy=;qzU4_I|jxXEy_b{*xh6Sr7Ww#Ha%Ye~WK4jz;5X2y{$FlPT%R6x^9ppEdL5 zJz%x>A$|v?LljN#%ic<~CMs|=DX{7B1wh0THU0t`zyBS38eT2isM znHjRqSpqxO3=9>I8(D#r!>oo;YBUILZM9|i(Ye`{;lchhIr_lVA;hl(N{yFT1_QP3 zE#raZGl2s^2YjD{T_-k}TsJ6!Xw(sdBdLzY!)QDZQEKkJ#{jH^8CyYX0f-AXhEBaSd?N0SG)@{an^LB{Ts5b?$DF literal 0 HcmV?d00001 diff --git a/assignments/teachers/week02/answers/web/make_time.py b/assignments/teachers/week02/answers/web/make_time.py new file mode 100644 index 00000000..80166cee --- /dev/null +++ b/assignments/teachers/week02/answers/web/make_time.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python + +""" +make_time.py + +simple script that returns and HTML page with the current time +""" + +import datetime + +time_str = datetime.datetime.now().isoformat() + +html = """ + + +

The time is:

+

%s

+ + +"""% time_str + +print html + + + diff --git a/assignments/teachers/week02/answers/web/sample.txt b/assignments/teachers/week02/answers/web/sample.txt new file mode 100644 index 00000000..1e318a76 --- /dev/null +++ b/assignments/teachers/week02/answers/web/sample.txt @@ -0,0 +1,3 @@ +This is a very simple text file. +Just to show that we can server it up. +It is three lines long. diff --git a/assignments/week02/lab/echo_server.py b/assignments/week02/lab/echo_server.py deleted file mode 100644 index 3eb3400f..00000000 --- a/assignments/week02/lab/echo_server.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python - -import socket - -host = '' # listen on all connections (WiFi, etc) -port = 50000 -backlog = 5 # how many connections can we stack up -size = 1024 # number of bytes to receive at once - -## create the socket -s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -# set an option to tell the OS to re-use the socket -s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - -# the bind makes it a server -s.bind( (host,port) ) -s.listen(backlog) - -while True: # keep looking for new connections forever - client, address = s.accept() # look for a connection - data = client.recv(size) - if data: # if the connection was closed there would be no data - print "received: %s, sending it back"%data - client.send(data) - client.close() \ No newline at end of file diff --git a/assignments/week02/lab/http_server7.py b/assignments/week02/lab/http_server7.py index 9a8febff..7c816b6a 100644 --- a/assignments/week02/lab/http_server7.py +++ b/assignments/week02/lab/http_server7.py @@ -103,13 +103,13 @@ def format_dir_list(u): html.append("

Directories:

") html.append("
    ") for d in dirs: - path = u + '/' + d + path = (os.path.join(u, d)).replace('\\', '/') html.append('
  • %s
  • ' % (path, d)) html.append("
") html.append("

Files:

") html.append("
    ") for f in files: - path = u + '/' + f + path = (os.path.join(u, f)).replace('\\', '/') html.append('
  • %s
  • ' % (path, f)) html.append("
") html.append(" ") From bb956a03f02e179b806c2cab429bc1a6b4411167 Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Sun, 10 Feb 2013 23:14:58 -0800 Subject: [PATCH 6/8] Week05 Lab --- .../week04/athome/week04assignmentallensu.py | 89 +++++++++ assignments/week04/lab/src/lab2_wsgi.py | 47 +++++ assignments/week05/lab/book_app/book_app.py | 46 +++-- .../lab/book_app/templates/book_detail.html | 22 ++- .../lab/book_app/templates/book_list.html | 26 +-- assignments/week05/lab/flask_intro.py | 58 ++++++ assignments/week05/lab/flaskr_1/flaskr.py | 33 ++-- .../week05/lab/flaskr_1/flaskr_tests.py | 27 +++ assignments/week05/lab/flaskr_1/schema.sql | 6 + assignments/week05/lab/flaskr_2/flaskr.py | 78 +++++--- .../week05/lab/flaskr_2/flaskr_tests.py | 95 +++++++--- .../week05/lab/flaskr_2/templates/layout.html | 12 ++ .../lab/flaskr_2/templates/show_entries.html | 15 ++ assignments/week05/lab/flaskr_3/flaskr.py | 145 ++++++++++----- .../week05/lab/flaskr_3/flaskr_tests.py | 172 ++++++++++++------ .../flaskr_3/templates/New Text Document.txt | 0 .../week05/lab/flaskr_3/templates/layout.html | 12 ++ .../week05/lab/flaskr_3/templates/login.html | 32 ++++ .../lab/flaskr_3/templates/show_entries.html | 33 ++++ 19 files changed, 732 insertions(+), 216 deletions(-) create mode 100644 assignments/week04/athome/week04assignmentallensu.py create mode 100644 assignments/week04/lab/src/lab2_wsgi.py create mode 100644 assignments/week05/lab/flask_intro.py create mode 100644 assignments/week05/lab/flaskr_2/templates/layout.html create mode 100644 assignments/week05/lab/flaskr_2/templates/show_entries.html create mode 100644 assignments/week05/lab/flaskr_3/templates/New Text Document.txt create mode 100644 assignments/week05/lab/flaskr_3/templates/layout.html create mode 100644 assignments/week05/lab/flaskr_3/templates/login.html create mode 100644 assignments/week05/lab/flaskr_3/templates/show_entries.html diff --git a/assignments/week04/athome/week04assignmentallensu.py b/assignments/week04/athome/week04assignmentallensu.py new file mode 100644 index 00000000..1d006927 --- /dev/null +++ b/assignments/week04/athome/week04assignmentallensu.py @@ -0,0 +1,89 @@ +#!/usr/bin/python + +from cgi import parse_qs, escape +import re, bookdb + +database = bookdb.database #This is a local file + +def index(environ, start_response): + """This function will be mounted on "/" and display a link + to the hello world page""" + body = "" + for i in database: + url = "books?isbn=" + database[i]['isbn'] + title = database[i]['title'] + body += ' %s
' % (url,title) + start_response('200 OK', [('Content-Type', 'text/html')]) + return ["

Python Books

" + body] + + +def books(environ, start_response): + parameters = parse_qs(environ.get('QUERY_STRING', '')) + isbn = parameters['isbn'][0] + print isbn + for i in database: + if isbn == database[i]['isbn']: + title = database[i]['title'] + publisher = database[i]['publisher'] + author = database[i]['author'] + start_response('200 OK', [('Content-Type', 'text/html')]) + return ['''Title %s
+ Author %s
+ Publisher %s
+ ISBN %s''' % (title, author, publisher, isbn)] + +def hello(environ, start_response): + """Like the example above, but it uses teh name spacified in + URL.""" + # get teh name from teh URL if it was specified there + args = environ['myapp.url_args'] + if args: + subject = escape(args[0]) + else: + subject = 'World' + start_response('200 OK', [('Content-Type', 'text/html')]) + return ['''Hello %(subject)s + Hello %(subject)s! + ''' % {'subject': subject}] + +def not_found(environ, start_response): + """Called if no URL matches.""" + start_response('404 NOT FOUND', [('Content-Type', 'text/plain')]) + return ['NOT FOUND'] + +# map urls to functions +urls = [ + (r'^$', index), + (r'hello/?$', hello), + (r'hello/(.+)$', hello), + (r'books/?$', books) + ] + +def application(environ, start_response): + """ + The main WSGI application. Dispatch the current request to + the function from above and store teh regular expression + captures in the WSGI environment as `myapp.url_args` so that + the functions from above can access the url placeholders. + + If nothing matches call the 'not_found' function. + """ +# print environ + path = environ.get('PATH_INFO', '').lstrip('/') + for regex, callback in urls: + match = re.search(regex, path) + if match is not None: + """ + print "*" * 10 + print environ + print "*" * 10 + """ + environ['myapp.url_args'] = match.groups() + return callback(environ, start_response) + return not_found(environ, start_response) + + +if __name__ == '__main__': + from wsgiref.simple_server import make_server + srv = make_server('', 8080, application) + srv.serve_forever() \ No newline at end of file diff --git a/assignments/week04/lab/src/lab2_wsgi.py b/assignments/week04/lab/src/lab2_wsgi.py new file mode 100644 index 00000000..ace92076 --- /dev/null +++ b/assignments/week04/lab/src/lab2_wsgi.py @@ -0,0 +1,47 @@ +#!/usr/bin/python +import datetime + +body = """ + +Lab A - CGI experiments + + + +The server name is %s. (if an IP address, then a DNS problem)
+
+The server address is %s:%s.
+
+You are coming from %s:%s.
+
+The URI we are serving is %s.
+
+The request arrived at %s
+ + +""" + +def application(environ, start_response): + + print start_response + response_body = body % ( + environ.get('SERVER_NAME', 'Unset'), # server name + environ.get('SERVER_ADDR', 'Unset'), # server IP + environ.get('SERVER_PORT', 'Unset'), # server port + environ.get('REMOTE_ADDR', 'Unset'), # client IP + environ.get('REMOTE_PORT', 'Unset'), # client port + environ.get('SCRIPT_NAME', 'Unset'), # this script name + datetime.datetime.now().isoformat(), # time + ) + status = '200 OK' + + response_headers = [('Content-Type', 'text/html'), + ('Content-Length', str(len(response_body)))] + a = start_response(status, response_headers) + print a + + return [response_body] + +if __name__ == '__main__': + from wsgiref.simple_server import make_server + srv = make_server('localhost', 8080, application) + srv.serve_forever() diff --git a/assignments/week05/lab/book_app/book_app.py b/assignments/week05/lab/book_app/book_app.py index af2aaaed..6950cc87 100644 --- a/assignments/week05/lab/book_app/book_app.py +++ b/assignments/week05/lab/book_app/book_app.py @@ -1,24 +1,22 @@ -from flask import Flask -import bookdb - -app = Flask(__name__) - -db = bookdb.BookDB() - - -@app.route('/') -def books(): - # put code here that provides a list of books to a template named - # "book_list.html" - pass - - -@app.route('/book//') -def book(book_id): - # put code here that provides the details of a single book to a template - # named "book_detail.html" - pass - - -if __name__ == '__main__': - app.run(debug=True) +from flask import Flask +from flask import render_template +import bookdb + +app = Flask(__name__) + +db = bookdb.BookDB() + + +@app.route('/') +def books(): + books = db.titles() + return render_template('book_list.html', books = books) + +@app.route('/book//') +def book(book_id): + book = db.title_info(book_id) + return render_template('book_detail.html', book = book) + +if __name__ == '__main__': + app.run(debug=True) + app.run(host = '0.0.0.0') diff --git a/assignments/week05/lab/book_app/templates/book_detail.html b/assignments/week05/lab/book_app/templates/book_detail.html index 715e1f4f..2574231c 100644 --- a/assignments/week05/lab/book_app/templates/book_detail.html +++ b/assignments/week05/lab/book_app/templates/book_detail.html @@ -1,9 +1,15 @@ - - - - - - - - + + + + {{ book.title }} + + +

{{ book.title }}

+
+
Author
{{ book.author }}
+
Publisher
{{ book.publisher }}
+
ISBN
{{ book.isbn }}
+
+

Back to the list

+ \ No newline at end of file diff --git a/assignments/week05/lab/book_app/templates/book_list.html b/assignments/week05/lab/book_app/templates/book_list.html index ab4ac08f..72869676 100644 --- a/assignments/week05/lab/book_app/templates/book_list.html +++ b/assignments/week05/lab/book_app/templates/book_list.html @@ -1,12 +1,16 @@ - - - - Python Books - - -

Summer Reading

-

Here's a list of books you might enjoy. Click a title to read more - about that book.

- - + + + + Python Books + + +

Summer Reading

+

Here's a list of books you might enjoy. Click a title to read more + about that book.

+ + \ No newline at end of file diff --git a/assignments/week05/lab/flask_intro.py b/assignments/week05/lab/flask_intro.py new file mode 100644 index 00000000..25c2dd67 --- /dev/null +++ b/assignments/week05/lab/flask_intro.py @@ -0,0 +1,58 @@ +from flask import Flask, url_for, render_template, request +app = Flask(__name__) + +@app.route('/') +def index(): + return 'Index Page' + +@app.route('/hello/') +@app.route('/hello/') +def hello(name=None): + return render_template('hello.html', name=name) + +@app.route('/user/') +def show_user_profile(username): + # show the user profile for that user + return 'User %s' % username + +@app.route('/post/') +def show_post(post_id): + # show the post with the given id, the id is an integer + return 'Post %d' % post_id + +@app.route('/div//') +def divide(val): + return "%0.2f divided by 2 is %0.2f" % (val, val / 2) + +@app.route('/projects/') +def projects(): + return 'The project page' + +@app.route('/about') +def about(): + return 'The about page' + +@app.route('/login', methods=['GET', 'POST']) +def login(): + if request.method == 'POST': + do_the_login() + else: + show_the_login_form() + +@app.route('/blog/entry//', methods=['GET',]) +def read_entry(id): + return "reading entry %d" % id + +@app.route('/blog/entry//', methods=['POST', ]) +def write_entry(id): + return 'writing entry %d' % id + +if __name__ == '__main__': + app.debug = True + app.run(host='0.0.0.0') + + with app.test_request_context(): + print url_for('index') + print url_for('login') + print url_for('login', next='/') + print url_for('profile', username='John Doe') diff --git a/assignments/week05/lab/flaskr_1/flaskr.py b/assignments/week05/lab/flaskr_1/flaskr.py index a959bdf9..1f8ba452 100644 --- a/assignments/week05/lab/flaskr_1/flaskr.py +++ b/assignments/week05/lab/flaskr_1/flaskr.py @@ -1,11 +1,22 @@ -from flask import Flask - - -# configuration goes here - - -app = Flask(__name__) - - -if __name__ == '__main__': - app.run(debug=True) +from flask import Flask +import sqlite3 +from contextlib import closing + +# configuration goes here +DATABASE = '/tmp/flask.db' +SECRET_KEY = 'development key' + +app = Flask(__name__) +app.config.from_object(__name__) + +def connect_db(): + return sqlite3.connect(app.config['DATABASE']) + +def init_db(): + with closing(connect_db()) as db: + with app.open_resource('schema.sql') as f: + db.cursor().executescript(f.read()) + db.commit() + +if __name__ == '__main__': + app.run(debug=True) diff --git a/assignments/week05/lab/flaskr_1/flaskr_tests.py b/assignments/week05/lab/flaskr_1/flaskr_tests.py index e69de29b..87d8696e 100644 --- a/assignments/week05/lab/flaskr_1/flaskr_tests.py +++ b/assignments/week05/lab/flaskr_1/flaskr_tests.py @@ -0,0 +1,27 @@ +import os +import flaskr +import unittest +import tempfile + +class FlaskrTestCase(unittest.TestCase): + + def setUp(self): + db_fd = tempfile.mkstemp() + self.db_fd, flaskr.app.config['DATABASE'] = db_fd + flaskr.app.config['TESTING'] = True + self.client = flaskr.app.test_client() + self.app = flaskr.app + flaskr.init_db() + + def tearDown(self): + os.close(self.db_fd) + os.unlink(flaskr.app.config['DATABASE']) + + def test_database_setup(self): + con = flaskr.connect_db() + cur = con.execute('PRAGMA table_info(entries);') + rows = cur.fetchall() + self.assertEquals(len(rows), 3) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/assignments/week05/lab/flaskr_1/schema.sql b/assignments/week05/lab/flaskr_1/schema.sql index e69de29b..24b4ca8e 100644 --- a/assignments/week05/lab/flaskr_1/schema.sql +++ b/assignments/week05/lab/flaskr_1/schema.sql @@ -0,0 +1,6 @@ +drop table if exists entries; +create table entries ( + id integer primary key autoincrement, + title string not null, + text string not null +); \ No newline at end of file diff --git a/assignments/week05/lab/flaskr_2/flaskr.py b/assignments/week05/lab/flaskr_2/flaskr.py index a97d679d..bca257c5 100644 --- a/assignments/week05/lab/flaskr_2/flaskr.py +++ b/assignments/week05/lab/flaskr_2/flaskr.py @@ -1,27 +1,51 @@ -import sqlite3 -from contextlib import closing - -from flask import Flask - - -# configuration goes here -DATABASE = '/tmp/flaskr.db' -SECRET_KEY = 'development key' - -app = Flask(__name__) -app.config.from_object(__name__) - - -def connect_db(): - return sqlite3.connect(app.config['DATABASE']) - - -def init_db(): - with closing(connect_db()) as db: - with app.open_resource('schema.sql') as f: - db.cursor().executescript(f.read()) - db.commit() - - -if __name__ == '__main__': - app.run(debug=True) +import sqlite3 +from contextlib import closing + +from flask import Flask +from flask import g +from flask import render_template + + +# configuration goes here +DATABASE = '/tmp/flaskr.db' +SECRET_KEY = 'development key' + +app = Flask(__name__) +app.config.from_object(__name__) + + +def connect_db(): + return sqlite3.connect(app.config['DATABASE']) + + +def init_db(): + with closing(connect_db()) as db: + with app.open_resource('schema.sql') as f: + db.cursor().executescript(f.read()) + db.commit() + +@app.before_request +def before_request(): + g.db = connect_db() + +def teardown_request(exception): + g.db.close() + +def write_entry(title, text): + g.db.execute('insert into entries (title, text) values (?, ?)', + [title, text]) + g.db.commit() + +def get_all_entries(): + cur = g.db.execute('select title, text from entries order by id desc') + entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()] + return entries + +@app.route('/') +def show_entries(): + entries = get_all_entries() + return render_template('show_entries.html', entries=entries) + + +if __name__ == '__main__': + app.run(debug=True) diff --git a/assignments/week05/lab/flaskr_2/flaskr_tests.py b/assignments/week05/lab/flaskr_2/flaskr_tests.py index 50fef94d..71c3dcd2 100644 --- a/assignments/week05/lab/flaskr_2/flaskr_tests.py +++ b/assignments/week05/lab/flaskr_2/flaskr_tests.py @@ -1,28 +1,69 @@ -import os -import flaskr -import unittest -import tempfile - - -class FlaskrTestCase(unittest.TestCase): - - def setUp(self): - self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() - flaskr.app.config['TESTING'] = True - self.client = flaskr.app.test_client() - self.app = flaskr.app - flaskr.init_db() - - def tearDown(self): - os.close(self.db_fd) - os.unlink(flaskr.app.config['DATABASE']) - - def test_database_setup(self): - con = flaskr.connect_db() - cur = con.execute('PRAGMA table_info(entries);') - rows = cur.fetchall() - self.assertTrue(len(rows) == 3) - - -if __name__ == '__main__': +import os +import flaskr +import unittest +import tempfile + + +class FlaskrTestCase(unittest.TestCase): + + def setUp(self): + self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() + flaskr.app.config['TESTING'] = True + self.client = flaskr.app.test_client() + self.app = flaskr.app + flaskr.init_db() + + def tearDown(self): + os.close(self.db_fd) + os.unlink(flaskr.app.config['DATABASE']) + + def test_database_setup(self): + con = flaskr.connect_db() + cur = con.execute('PRAGMA table_info(entries);') + rows = cur.fetchall() + self.assertTrue(len(rows) == 3) + + def test_write_entry(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + con = flaskr.connect_db() + cur = con.execute("select * from entries;") + rows = cur.fetchall() + self.assertEquals(len(rows), 1) + for val in expected: + self.assertTrue(val in rows[0]) + + def test_get_all_entries_empty(self): + with self.app.test_request_context('/'): + self.app.preprocess_request() + entries = flaskr.get_all_entries() + self.assertEquals(len(entries), 0) + + def test_get_all_entries(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + entries = flaskr.get_all_entries() + self.assertEquals(len(entries), 1) + for entry in entries: + self.assertEquals(expected[0], entry['title']) + self.assertEquals(expected[1], entry['text']) + + def test_empty_listing(self): + rv = self.client.get('/') + assert 'No entries here so far' in rv.data + + def test_listing(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + rv = self.client.get('/') + for value in expected: + assert value in rv.data + +if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/assignments/week05/lab/flaskr_2/templates/layout.html b/assignments/week05/lab/flaskr_2/templates/layout.html new file mode 100644 index 00000000..50f79fe9 --- /dev/null +++ b/assignments/week05/lab/flaskr_2/templates/layout.html @@ -0,0 +1,12 @@ + + + + Flaskr + + +

Flaskr

+
+ {% block body %}{% endblock %} +
+ + \ No newline at end of file diff --git a/assignments/week05/lab/flaskr_2/templates/show_entries.html b/assignments/week05/lab/flaskr_2/templates/show_entries.html new file mode 100644 index 00000000..fe4bf872 --- /dev/null +++ b/assignments/week05/lab/flaskr_2/templates/show_entries.html @@ -0,0 +1,15 @@ +{% extends "layout.html" %} +{% block body %} +

Posts

+
    + {% for entry in entries %} +
  • +

    {{ entry.title }}

    +
    + {{ entry.text|safe }} +
    +
  • + {% else %} +
  • No entries here so far
  • + {% endfor %} +
\ No newline at end of file diff --git a/assignments/week05/lab/flaskr_3/flaskr.py b/assignments/week05/lab/flaskr_3/flaskr.py index 70fed771..fe7ee2d1 100644 --- a/assignments/week05/lab/flaskr_3/flaskr.py +++ b/assignments/week05/lab/flaskr_3/flaskr.py @@ -1,50 +1,95 @@ -import sqlite3 -from contextlib import closing - -from flask import Flask -from flask import g - - -# configuration goes here -DATABASE = '/tmp/flaskr.db' -SECRET_KEY = 'development key' - -app = Flask(__name__) -app.config.from_object(__name__) - - -def connect_db(): - return sqlite3.connect(app.config['DATABASE']) - - -def init_db(): - with closing(connect_db()) as db: - with app.open_resource('schema.sql') as f: - db.cursor().executescript(f.read()) - db.commit() - - -@app.before_request -def before_request(): - g.db = connect_db() - - -@app.teardown_request -def teardown_request(exception): - g.db.close() - - -def write_entry(title, text): - g.db.execute('insert into entries (title, text) values (?, ?)', - [title, text]) - g.db.commit() - - -def get_all_entries(): - cur = g.db.execute('select title, text from entries order by id desc') - entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()] - return entries - - -if __name__ == '__main__': - app.run(debug=True) +import sqlite3 +from contextlib import closing + +from flask import Flask +from flask import g +from flask import render_template +from flask import session +from flask import request +from flask import redirect +from flask import flash +from flask import url_for +from flask import abort + +# configuration goes here +DATABASE = '/tmp/flaskr.db' +SECRET_KEY = 'development key' +USERNAME = 'admin' +PASSWORD = 'default' + +app = Flask(__name__) +app.config.from_object(__name__) + +def connect_db(): + return sqlite3.connect(app.config['DATABASE']) + +def init_db(): + with closing(connect_db()) as db: + with app.open_resource('schema.sql') as f: + db.cursor().executescript(f.read()) + db.commit() + +@app.before_request +def before_request(): + g.db = connect_db() + +@app.teardown_request +def teardown_request(exception): + g.db.close() + +def write_entry(title, text): + g.db.execute('insert into entries (title, text) values (?, ?)', + [title, text]) + g.db.commit() + +def get_all_entries(): + cur = g.db.execute('select title, text from entries order by id desc') + entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()] + return entries + +@app.route('/') +def show_entries(): + entries = get_all_entries() + return render_template('show_entries.html', entries=entries) + +def do_login(usr, pwd): + if usr != app.config['USERNAME']: + raise ValueError + elif pwd != app.config['PASSWORD']: + raise ValueError + else: + session['logged_in'] = True + +@app.route('/login', methods=['GET', 'POST']) +def login(): + error = None + if request.method == 'POST': + try: + do_login(request.form['username'], + request.form['password']) + except ValueError: + error = "Invalid Login" + else: + flash('You were logged in') + return redirect(url_for('show_entries')) + return render_template('login.html', error=error) + +@app.route('/logout') +def logout(): + session.pop('logged_in', None) + flash('You were logged out') + return redirect(url_for('show_entries')) + +@app.route('/add', methods=['POST']) +def add_entry(): + if not session.get('logged_in'): + abort(401) + try: + write_entry(request.form['title'], request.form['text']) + flash('New entry was successfully posted') + except sqlite3.Error as e: + flash('There was an error: %s' % e.args[0]) + return redirect(url_for('show_entries')) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/assignments/week05/lab/flaskr_3/flaskr_tests.py b/assignments/week05/lab/flaskr_3/flaskr_tests.py index 4065dd31..a06b3514 100644 --- a/assignments/week05/lab/flaskr_3/flaskr_tests.py +++ b/assignments/week05/lab/flaskr_3/flaskr_tests.py @@ -1,59 +1,115 @@ -import os -import flaskr -import unittest -import tempfile - - -class FlaskrTestCase(unittest.TestCase): - - def setUp(self): - self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() - flaskr.app.config['TESTING'] = True - self.client = flaskr.app.test_client() - self.app = flaskr.app - flaskr.init_db() - - def tearDown(self): - os.close(self.db_fd) - os.unlink(flaskr.app.config['DATABASE']) - - def test_database_setup(self): - con = flaskr.connect_db() - cur = con.execute('PRAGMA table_info(entries);') - rows = cur.fetchall() - self.assertEqual(len(rows), 3) - - def test_write_entry(self): - expected = ("My Title", "My Text") - with self.app.test_request_context('/'): - self.app.preprocess_request() - flaskr.write_entry(*expected) - con = flaskr.connect_db() - cur = con.execute("select * from entries;") - rows = cur.fetchall() - self.assertEquals(len(rows), 1) - for val in expected: - self.assertTrue(val in rows[0]) - - - def test_get_all_entries_empty(self): - with self.app.test_request_context('/'): - self.app.preprocess_request() - entries = flaskr.get_all_entries() - self.assertEquals(len(entries), 0) - - - def test_get_all_entries(self): - expected = ("My Title", "My Text") - with self.app.test_request_context('/'): - self.app.preprocess_request() - flaskr.write_entry(*expected) - entries = flaskr.get_all_entries() - self.assertEquals(len(entries), 1) - for entry in entries: - self.assertEquals(expected[0], entry['title']) - self.assertEquals(expected[1], entry['text']) - - -if __name__ == '__main__': +import os +import flaskr +import unittest +import tempfile + + +class FlaskrTestCase(unittest.TestCase): + + def setUp(self): + self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() + flaskr.app.config['TESTING'] = True + self.client = flaskr.app.test_client() + self.app = flaskr.app + flaskr.init_db() + + def tearDown(self): + os.close(self.db_fd) + os.unlink(flaskr.app.config['DATABASE']) + + def test_database_setup(self): + con = flaskr.connect_db() + cur = con.execute('PRAGMA table_info(entries);') + rows = cur.fetchall() + self.assertEqual(len(rows), 3) + + def test_write_entry(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + con = flaskr.connect_db() + cur = con.execute("select * from entries;") + rows = cur.fetchall() + self.assertEquals(len(rows), 1) + for val in expected: + self.assertTrue(val in rows[0]) + + + def test_get_all_entries_empty(self): + with self.app.test_request_context('/'): + self.app.preprocess_request() + entries = flaskr.get_all_entries() + self.assertEquals(len(entries), 0) + + + def test_get_all_entries(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + entries = flaskr.get_all_entries() + self.assertEquals(len(entries), 1) + for entry in entries: + self.assertEquals(expected[0], entry['title']) + self.assertEquals(expected[1], entry['text']) + + def test_empty_listing(self): + rv = self.client.get('/') + assert 'No entries here so far' in rv.data + + def test_listing(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + rv = self.client.get('/') + for value in expected: + assert value in rv.data + + def test_login_passes(self): + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.do_login(flaskr.app.config['USERNAME'], + flaskr.app.config['PASSWORD']) + self.assertTrue(session.get('logged_in', False)) + + def test_login_fails(self): + with self.app.test_request_context('/'): + self.app.preprocess_request() + self.assertRaises(ValueError, flaskr.do_login, + flaskr.app.config['USERNAME'], + 'incorrectpassword') + + def login(self, username, password): + return self.client.post('/login', data=dict( + username=username, + password=password + ), follow_redirects=True) + + def logout(self): + return self.client.get('/logout', follow_redirects=True) + + def test_login_logout(self): + rv = self.login('admin', 'default') + assert 'You were logged in' in rv.data + rv = self.logout() + assert 'You were logged out' in rv.data + rv = self.login('adminx', 'default') + assert 'Invalid Login' in rv.data + rv = self.login('admin', 'defaultx') + assert 'Invalid Login' in rv.data + + def test_add_entries(self): + self.login('admin', 'default') + rv = self.client.post('/add', data=dict( + title='Hello', + text='This is a post' + ), follow_redirects=True) + assert 'No entries here so far' not in rv.data + assert 'Hello' in rv.data + assert 'This is a post' in rv.data + + +if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/assignments/week05/lab/flaskr_3/templates/New Text Document.txt b/assignments/week05/lab/flaskr_3/templates/New Text Document.txt new file mode 100644 index 00000000..e69de29b diff --git a/assignments/week05/lab/flaskr_3/templates/layout.html b/assignments/week05/lab/flaskr_3/templates/layout.html new file mode 100644 index 00000000..50f79fe9 --- /dev/null +++ b/assignments/week05/lab/flaskr_3/templates/layout.html @@ -0,0 +1,12 @@ + + + + Flaskr + + +

Flaskr

+
+ {% block body %}{% endblock %} +
+ + \ No newline at end of file diff --git a/assignments/week05/lab/flaskr_3/templates/login.html b/assignments/week05/lab/flaskr_3/templates/login.html new file mode 100644 index 00000000..2bbd936a --- /dev/null +++ b/assignments/week05/lab/flaskr_3/templates/login.html @@ -0,0 +1,32 @@ +{% extends "layout.html" %} +{% block body %} +

Login

+ {% if error -%} +

Error {{ error }} + {%- endif %} +

+
+ + +
+
+ + +
+
+ +
+
+ +

Flaskr

+
+{% if not session.logged_in %} + log in +{% else %} + log_out +{% endif %} +
+{% for message in get_flashed_messages() %} +
{{ message }}
+{% endfor %} +
\ No newline at end of file diff --git a/assignments/week05/lab/flaskr_3/templates/show_entries.html b/assignments/week05/lab/flaskr_3/templates/show_entries.html new file mode 100644 index 00000000..3f7ba5f5 --- /dev/null +++ b/assignments/week05/lab/flaskr_3/templates/show_entries.html @@ -0,0 +1,33 @@ +{% extends "layout.html" %} +{% block body %} +

Posts

+
    + {% for entry in entries %} +
  • +

    {{ entry.title }}

    +
    + {{ entry.text|safe }} +
    +
  • + {% else %} +
  • No entries here so far
  • + {% endfor %} +
+ +{% block body %} +{% if session.logged_in %} +
+
+ + +
+
+ + +
+
+ +
+
+{% endif %} +

Posts

\ No newline at end of file From ec6f1c8e823152026d357b06668ba0033468a6c3 Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Sun, 17 Feb 2013 21:59:09 -0800 Subject: [PATCH 7/8] Week05 and Week06 assignment --- assignments/week05/athome/flaskr.py | 108 ++++++++++++++++ assignments/week05/athome/flaskr_tests.py | 115 ++++++++++++++++++ assignments/week05/athome/schema.sql | 6 + assignments/week05/athome/static/style.css | 17 +++ .../week05/athome/templates/layout.html | 22 ++++ .../week05/athome/templates/login.html | 20 +++ .../week05/athome/templates/show_entries.html | 31 +++++ assignments/week05/lab/flaskr_4/flaskr.py | 1 + assignments/week06/athome/README.txt | 7 ++ assignments/week06/athome/djangor/__init__.py | 0 assignments/week06/athome/djangor/admin.py | 10 ++ assignments/week06/athome/djangor/models.py | 20 +++ .../week06/athome/djangor/templates/base.html | 20 +++ .../templates/blogs/New Text Document.txt | 0 .../djangor/templates/blogs/detail.html | 10 ++ .../athome/djangor/templates/blogs/list.html | 13 ++ .../djangor/templates/blogs/result.html | 11 ++ assignments/week06/athome/djangor/tests.py | 16 +++ assignments/week06/athome/djangor/urls.py | 27 ++++ assignments/week06/athome/djangor/views.py | 41 +++++++ 20 files changed, 495 insertions(+) create mode 100644 assignments/week05/athome/flaskr.py create mode 100644 assignments/week05/athome/flaskr_tests.py create mode 100644 assignments/week05/athome/schema.sql create mode 100644 assignments/week05/athome/static/style.css create mode 100644 assignments/week05/athome/templates/layout.html create mode 100644 assignments/week05/athome/templates/login.html create mode 100644 assignments/week05/athome/templates/show_entries.html create mode 100644 assignments/week06/athome/README.txt create mode 100644 assignments/week06/athome/djangor/__init__.py create mode 100644 assignments/week06/athome/djangor/admin.py create mode 100644 assignments/week06/athome/djangor/models.py create mode 100644 assignments/week06/athome/djangor/templates/base.html create mode 100644 assignments/week06/athome/djangor/templates/blogs/New Text Document.txt create mode 100644 assignments/week06/athome/djangor/templates/blogs/detail.html create mode 100644 assignments/week06/athome/djangor/templates/blogs/list.html create mode 100644 assignments/week06/athome/djangor/templates/blogs/result.html create mode 100644 assignments/week06/athome/djangor/tests.py create mode 100644 assignments/week06/athome/djangor/urls.py create mode 100644 assignments/week06/athome/djangor/views.py diff --git a/assignments/week05/athome/flaskr.py b/assignments/week05/athome/flaskr.py new file mode 100644 index 00000000..ae3cc873 --- /dev/null +++ b/assignments/week05/athome/flaskr.py @@ -0,0 +1,108 @@ +import sqlite3 +from contextlib import closing + +from flask import Flask +from flask import g +from flask import render_template +from flask import session +from flask import request +from flask import redirect +from flask import flash +from flask import url_for +from flask import abort + +# configuration goes here +DATABASE = '/tmp/flaskr.db' +SECRET_KEY = 'development key' +USERNAME = 'admin' +PASSWORD = 'default' + +app = Flask(__name__) +app.config.from_object(__name__) + + +def connect_db(): + return sqlite3.connect(app.config['DATABASE']) + + +def init_db(): + with closing(connect_db()) as db: + with app.open_resource('schema.sql') as f: + db.cursor().executescript(f.read()) + db.commit() + + +@app.before_request +def before_request(): + g.db = connect_db() + + +@app.teardown_request +def teardown_request(exception): + g.db.close() + + +def write_entry(title, text): + g.db.execute('insert into entries (title, text) values (?, ?)', + [title, text]) + g.db.commit() + + +def get_all_entries(): + cur = g.db.execute('select title, text from entries order by id desc') + entries = [dict(title=row[0], text=row[1]) for row in cur.fetchall()] + return entries + + +@app.route('/') +def show_entries(): + entries = get_all_entries() + return render_template('show_entries.html', entries=entries) + + +def do_login(usr, pwd): + if usr != app.config['USERNAME']: + raise ValueError + elif pwd != app.config['PASSWORD']: + raise ValueError + else: + session['logged_in'] = True + + +@app.route('/login', methods=['GET', 'POST']) +def login(): + error = None + if request.method == 'POST': + try: + do_login(request.form['username'], + request.form['password']) + except ValueError: + error = "Invalid Login" + else: + flash('You were logged in') + return redirect(url_for('show_entries')) + return render_template('login.html', error=error) + + +@app.route('/logout') +def logout(): + session.pop('logged_in', None) + flash('You were logged out') + return redirect(url_for('show_entries')) + + +@app.route('/add', methods=['POST']) +def add_entry(): + if not session.get('logged_in'): + abort(401) + try: + write_entry(request.form['title'], request.form['text']) + flash('New entry was successfully posted') + except sqlite3.Error as e: + flash('There was an error: %s' % e.args[0]) + return redirect(url_for('show_entries')) + + +if __name__ == '__main__': + app.run(debug=True) + app.run(host = '0.0.0.0') diff --git a/assignments/week05/athome/flaskr_tests.py b/assignments/week05/athome/flaskr_tests.py new file mode 100644 index 00000000..e704c6dd --- /dev/null +++ b/assignments/week05/athome/flaskr_tests.py @@ -0,0 +1,115 @@ +import os +import flaskr +import unittest +import tempfile +from flask import session + + +class FlaskrTestCase(unittest.TestCase): + + def setUp(self): + self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() + flaskr.app.config['TESTING'] = True + self.client = flaskr.app.test_client() + self.app = flaskr.app + flaskr.init_db() + + def tearDown(self): + os.close(self.db_fd) + os.unlink(flaskr.app.config['DATABASE']) + + def test_database_setup(self): + con = flaskr.connect_db() + cur = con.execute('PRAGMA table_info(entries);') + rows = cur.fetchall() + self.assertEqual(len(rows), 3) + + def test_write_entry(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + con = flaskr.connect_db() + cur = con.execute("select * from entries;") + rows = cur.fetchall() + self.assertEquals(len(rows), 1) + for val in expected: + self.assertTrue(val in rows[0]) + + + def test_get_all_entries_empty(self): + with self.app.test_request_context('/'): + self.app.preprocess_request() + entries = flaskr.get_all_entries() + self.assertEquals(len(entries), 0) + + + def test_get_all_entries(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + entries = flaskr.get_all_entries() + self.assertEquals(len(entries), 1) + for entry in entries: + self.assertEquals(expected[0], entry['title']) + self.assertEquals(expected[1], entry['text']) + + def test_empty_listing(self): + rv = self.client.get('/') + assert 'No entries here so far' in rv.data + + def test_listing(self): + expected = ("My Title", "My Text") + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.write_entry(*expected) + rv = self.client.get('/') + for value in expected: + assert value in rv.data + + def test_login_passes(self): + with self.app.test_request_context('/'): + self.app.preprocess_request() + flaskr.do_login(flaskr.app.config['USERNAME'], + flaskr.app.config['PASSWORD']) + self.assertTrue(session.get('logged_in', False)) + + def test_login_fails(self): + with self.app.test_request_context('/'): + self.app.preprocess_request() + self.assertRaises(ValueError, flaskr.do_login, + flaskr.app.config['USERNAME'], + 'incorrectpassword') + def login(self, username, password): + return self.client.post('/login', data=dict( + username=username, + password=password + ), follow_redirects=True) + + def logout(self): + return self.client.get('/logout', follow_redirects=True) + + def test_login_logout(self): + rv = self.login('admin', 'default') + assert 'You were logged in' in rv.data + rv = self.logout() + assert 'You were logged out' in rv.data + rv = self.login('adminx', 'default') + assert 'Invalid Login' in rv.data + rv = self.login('admin', 'defaultx') + assert 'Invalid Login' in rv.data + + def test_add_entries(self): + self.login('admin', 'default') + rv = self.client.post('/add', data=dict( + title='Hello', + text='This is a post' + ), follow_redirects=True) + assert 'No entries here so far' not in rv.data + assert 'Hello' in rv.data + assert 'This is a post' in rv.data + + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/assignments/week05/athome/schema.sql b/assignments/week05/athome/schema.sql new file mode 100644 index 00000000..71fe0588 --- /dev/null +++ b/assignments/week05/athome/schema.sql @@ -0,0 +1,6 @@ +drop table if exists entries; +create table entries ( + id integer primary key autoincrement, + title string not null, + text string not null +); diff --git a/assignments/week05/athome/static/style.css b/assignments/week05/athome/static/style.css new file mode 100644 index 00000000..f53d77f7 --- /dev/null +++ b/assignments/week05/athome/static/style.css @@ -0,0 +1,17 @@ +body { font-family: sans-serif; background: #eee; } +a, h1, h2 { color: #377BA8; } +h1, h2 { font-family: 'Georgia', serif; margin: 0; } +h1 { border-bottom: 2px solid #eee; } +h2 { font-size: 1.2em; } +.page { margin: 2em auto; width: 35em; border: 5px solid #ccc; + padding: 0.8em; background: white; } +.entries { list-style: none; margin: 0; padding: 0; } +.entries li { margin: 0.8em 1.2em; } +.entries li h2 { margin-left: -1em; } +.add-entry { font-size: 0.9em; border-bottom: 1px solid #ccc; } +.add-entry dl { font-weight: bold; } +.metanav { text-align: right; font-size: 0.8em; padding: 0.3em; + margin-bottom: 1em; background: #fafafa; } +.flash { background: #CEE5F5; padding: 0.5em; + border: 1px solid #AACBE2; } +.error { background: #F0D6D6; padding: 0.5em; } \ No newline at end of file diff --git a/assignments/week05/athome/templates/layout.html b/assignments/week05/athome/templates/layout.html new file mode 100644 index 00000000..4b595312 --- /dev/null +++ b/assignments/week05/athome/templates/layout.html @@ -0,0 +1,22 @@ + + + + Flaskr + + + +

Flaskr

+ {% if not session.logged_in %} + log in + {% else %} + log_out + {% endif %} +
+ {% for message in get_flashed_messages() %} +
{{ message }}
+ {% endfor %} +
+ {% block body %}{% endblock %} +
+ + \ No newline at end of file diff --git a/assignments/week05/athome/templates/login.html b/assignments/week05/athome/templates/login.html new file mode 100644 index 00000000..ed4554db --- /dev/null +++ b/assignments/week05/athome/templates/login.html @@ -0,0 +1,20 @@ +{% extends "layout.html" %} +{% block body %} +

Login

+ {% if error -%} +

Error {{ error }} + {%- endif %} +

+
+ + +
+
+ + +
+
+ +
+
+{% endblock %} diff --git a/assignments/week05/athome/templates/show_entries.html b/assignments/week05/athome/templates/show_entries.html new file mode 100644 index 00000000..f44fd92b --- /dev/null +++ b/assignments/week05/athome/templates/show_entries.html @@ -0,0 +1,31 @@ +{% extends "layout.html" %} +{% block body %} + {% if session.logged_in %} +
+
+ + +
+
+ + +
+
+ +
+
+ {% endif %} +

Posts

+
    + {% for entry in entries %} +
  • +

    {{ entry.title }}

    +
    + {{ entry.text|safe }} +
    +
  • + {% else %} +
  • No entries here so far
  • + {% endfor %} +
+{% endblock %} \ No newline at end of file diff --git a/assignments/week05/lab/flaskr_4/flaskr.py b/assignments/week05/lab/flaskr_4/flaskr.py index d2a859ab..ae3cc873 100644 --- a/assignments/week05/lab/flaskr_4/flaskr.py +++ b/assignments/week05/lab/flaskr_4/flaskr.py @@ -105,3 +105,4 @@ def add_entry(): if __name__ == '__main__': app.run(debug=True) + app.run(host = '0.0.0.0') diff --git a/assignments/week06/athome/README.txt b/assignments/week06/athome/README.txt new file mode 100644 index 00000000..e1e1b7e5 --- /dev/null +++ b/assignments/week06/athome/README.txt @@ -0,0 +1,7 @@ +I was able to finish the tasks except the form (posting a new blog entry) and the dynamic filtering. + +I will try to work on it the next 2 days but not sure if I will be able to get it right. + +Thanks, + +Allen Su \ No newline at end of file diff --git a/assignments/week06/athome/djangor/__init__.py b/assignments/week06/athome/djangor/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/assignments/week06/athome/djangor/admin.py b/assignments/week06/athome/djangor/admin.py new file mode 100644 index 00000000..dc2d1bf6 --- /dev/null +++ b/assignments/week06/athome/djangor/admin.py @@ -0,0 +1,10 @@ +from django.contrib import admin +from djangor.models import BlogPost + +class BlogAdmin(admin.ModelAdmin): + list_display = ('pub_date', 'title', + 'published_today', 'owner') + list_filter = ('pub_date', ) + ordering = ('pub_date', ) + +admin.site.register(BlogPost, BlogAdmin) \ No newline at end of file diff --git a/assignments/week06/athome/djangor/models.py b/assignments/week06/athome/djangor/models.py new file mode 100644 index 00000000..6f45ee4e --- /dev/null +++ b/assignments/week06/athome/djangor/models.py @@ -0,0 +1,20 @@ +from django.db import models +from django.utils import timezone +from django.contrib.auth.models import User + +class BlogPost(models.Model): + title = models.CharField(max_length=200) + body = models.CharField(max_length=2000) + pub_date = models.DateTimeField('date published') + owner = models.ForeignKey(User) + + def __unicode__(self): + return self.title + + def published_today(self): + now = timezone.now() + time_delta = now - self.pub_date + return time_delta.days == 0 + published_today.boolean = True + published_today.short_description = "Published Today?" + diff --git a/assignments/week06/athome/djangor/templates/base.html b/assignments/week06/athome/djangor/templates/base.html new file mode 100644 index 00000000..f89925eb --- /dev/null +++ b/assignments/week06/athome/djangor/templates/base.html @@ -0,0 +1,20 @@ + + + + My Site + + +
+
+ {% if messages %} + {% for message in messages %} +

+ {{ message }}

+ {% endfor %} + {% endif %} + {% block content %} + {% endblock %} +
+
+ + diff --git a/assignments/week06/athome/djangor/templates/blogs/New Text Document.txt b/assignments/week06/athome/djangor/templates/blogs/New Text Document.txt new file mode 100644 index 00000000..e69de29b diff --git a/assignments/week06/athome/djangor/templates/blogs/detail.html b/assignments/week06/athome/djangor/templates/blogs/detail.html new file mode 100644 index 00000000..dd75cde4 --- /dev/null +++ b/assignments/week06/athome/djangor/templates/blogs/detail.html @@ -0,0 +1,10 @@ +{% extends "base.html" %} + +{% block content %} +

{{ title }}

+

{{ date }}

+

+{{ body }} +

+Back to the Blog Entries, please +{% endblock %} \ No newline at end of file diff --git a/assignments/week06/athome/djangor/templates/blogs/list.html b/assignments/week06/athome/djangor/templates/blogs/list.html new file mode 100644 index 00000000..3ddce447 --- /dev/null +++ b/assignments/week06/athome/djangor/templates/blogs/list.html @@ -0,0 +1,13 @@ +{% extends "base.html" %} + +{% block content %} +

Latest Blog Entries

+ {% for entry in blog_entries %} +
+

{{ entry.title }}

+
+ {% endfor %} +

Add a new blog entry

+{% endblock %} + + diff --git a/assignments/week06/athome/djangor/templates/blogs/result.html b/assignments/week06/athome/djangor/templates/blogs/result.html new file mode 100644 index 00000000..8937985a --- /dev/null +++ b/assignments/week06/athome/djangor/templates/blogs/result.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} + +{% block content %} +

{{ poll }}

+
    + {% for choice in poll.choice_set.all %} +
  • {{ choice }} ({{choice.votes}} votes)
  • + {% endfor %} +
+Back to the polls, please +{% endblock %} \ No newline at end of file diff --git a/assignments/week06/athome/djangor/tests.py b/assignments/week06/athome/djangor/tests.py new file mode 100644 index 00000000..501deb77 --- /dev/null +++ b/assignments/week06/athome/djangor/tests.py @@ -0,0 +1,16 @@ +""" +This file demonstrates writing tests using the unittest module. These will pass +when you run "manage.py test". + +Replace this with more appropriate tests for your application. +""" + +from django.test import TestCase + + +class SimpleTest(TestCase): + def test_basic_addition(self): + """ + Tests that 1 + 1 always equals 2. + """ + self.assertEqual(1 + 1, 2) diff --git a/assignments/week06/athome/djangor/urls.py b/assignments/week06/athome/djangor/urls.py new file mode 100644 index 00000000..d0045357 --- /dev/null +++ b/assignments/week06/athome/djangor/urls.py @@ -0,0 +1,27 @@ +from django.conf.urls import patterns, url +from django.http import HttpResponse +from django.views.generic import ListView, DetailView + +from djangor.models import BlogPost +from djangor.views import BlogEntryList + +def stub(request, *args, **kwargs): + return HttpResponse('stub view', mimetype="text/plain") + +urlpatterns = patterns('', + url(http://github.com/r'%5E),%20BlogEntryList.as_view(), name="entry_list"), + url(http://github.com/r'%5E(?P%3Cpk%3E\d+)/$', 'djangor.views.entry_detail', name="entry_detail"), + url(r'^new/$', stub, + # DetailView.as_view( + # model=BlogPost, + # template_name="blogs/detail.html"), + name="entry_new"), + #url(http://github.com/r'%5E(?P%3Cpk%3E\d+)//$', stub, + # #'polls.views.vote_view', + # name="poll_vote"), + #url(http://github.com/r'%5E(?P%3Cpk%3E\d+)//$', stub, + # #DetailView.as_view( + # # model=Poll, + # # template_name="blogs/result.html"), + # name="poll_result"), +) diff --git a/assignments/week06/athome/djangor/views.py b/assignments/week06/athome/djangor/views.py new file mode 100644 index 00000000..24a05ee4 --- /dev/null +++ b/assignments/week06/athome/djangor/views.py @@ -0,0 +1,41 @@ +from django.core.urlresolvers import reverse +from django.http import HttpResponseRedirect +from django.shortcuts import get_object_or_404 +from django.contrib import messages +from djangor.models import BlogPost +from django.views.generic import ListView, DetailView +from django.shortcuts import render_to_response + +class BlogEntryList(ListView): + model = BlogPost + template_name = "blogs/list.html" + context_object_name = 'blog_entries' + +def entry_detail(*args, **kwargs): + for arg in kwargs: + pk = kwargs[arg] + entry = BlogPost.objects.get(pk=pk) + return render_to_response('blogs/detail.html', {'title': entry.title, 'body': entry.body, 'date': entry.pub_date}) + +""" +def vote_view(request, pk): + poll = get_object_or_404(Poll, pk=pk) + if request.method == "POST": + try: + choice = poll.choice_set.get( + pk=request.POST.get('choice', 0)) + except Choice.DoesNotExist: + msg = "Ooops, pick a choice that exists, please" + messages.add_message(request, messages.ERROR, msg) + url = reverse('poll_detail', args=[pk, ]) + else: # vote and send to result + choice.votes += 1 + choice.save() + messages.add_message(request, messages.INFO, + "You voted for %s" % choice) + url = reverse('poll_result', args=[pk]) + else: # submitted via GET, ignore it + url = reverse('poll_detail', args=[pk, ]) + + return HttpResponseRedirect(url) +""" \ No newline at end of file From 7801ad537459a4f307ed4cac281f13068fd0e2e6 Mon Sep 17 00:00:00 2001 From: yenlinsu Date: Thu, 14 Mar 2013 23:45:22 -0700 Subject: [PATCH 8/8] Project --- assignments/Project/README.txt | 32 ++ assignments/Project/deploy_auto/__init__.py | 18 + assignments/Project/deploy_auto/models.py | 14 + .../Project/deploy_auto/static/favicon.ico | Bin 0 -> 1406 bytes .../Project/deploy_auto/static/footerbg.png | Bin 0 -> 333 bytes .../Project/deploy_auto/static/headerbg.png | Bin 0 -> 203 bytes .../Project/deploy_auto/static/ie6.css | 8 + .../Project/deploy_auto/static/middlebg.png | Bin 0 -> 2797 bytes .../Project/deploy_auto/static/pylons.css | 372 ++++++++++++++++++ .../deploy_auto/static/pyramid-small.png | Bin 0 -> 7044 bytes .../Project/deploy_auto/static/pyramid.png | Bin 0 -> 33055 bytes .../deploy_auto/static/transparent.gif | Bin 0 -> 49 bytes .../Project/deploy_auto/templates/base.pt | 74 ++++ .../Project/deploy_auto/templates/deploy.pt | 9 + .../Project/deploy_auto/templates/query.pt | 9 + assignments/Project/deploy_auto/views.py | 96 +++++ assignments/week08/lab/edit.pt | 14 + 17 files changed, 646 insertions(+) create mode 100644 assignments/Project/README.txt create mode 100644 assignments/Project/deploy_auto/__init__.py create mode 100644 assignments/Project/deploy_auto/models.py create mode 100644 assignments/Project/deploy_auto/static/favicon.ico create mode 100644 assignments/Project/deploy_auto/static/footerbg.png create mode 100644 assignments/Project/deploy_auto/static/headerbg.png create mode 100644 assignments/Project/deploy_auto/static/ie6.css create mode 100644 assignments/Project/deploy_auto/static/middlebg.png create mode 100644 assignments/Project/deploy_auto/static/pylons.css create mode 100644 assignments/Project/deploy_auto/static/pyramid-small.png create mode 100644 assignments/Project/deploy_auto/static/pyramid.png create mode 100644 assignments/Project/deploy_auto/static/transparent.gif create mode 100644 assignments/Project/deploy_auto/templates/base.pt create mode 100644 assignments/Project/deploy_auto/templates/deploy.pt create mode 100644 assignments/Project/deploy_auto/templates/query.pt create mode 100644 assignments/Project/deploy_auto/views.py create mode 100644 assignments/week08/lab/edit.pt diff --git a/assignments/Project/README.txt b/assignments/Project/README.txt new file mode 100644 index 00000000..6bc643d2 --- /dev/null +++ b/assignments/Project/README.txt @@ -0,0 +1,32 @@ +Application URL: http://block647068-f9b.blueboxgrid.com:6543 + +Github URL: https://github.com/yenlinsu/training.python_web/tree/master/assignments/Project + + +Project Description: Network Deployment Automation System + +Front End: +- Automation Process initiation: + - Form: input site specific information (location, network, etc) - complete + - Submitted data validation - complete + - store submitted data into ZODB - not complete yet +- Query site specific data stored in ZODB: + - Form: input site selection - complete + - Submitted data validation - complete + - Display the contents of the objects in a nicely formatted table, based on different query set - not complete yet +- user login/out (not complete yet) + +Backend: (out of scope for this project due to the time required to develop this portion) +- IP subnetting (user input an IP supernet and the system generate a list of subnets based on a pre-defined IP subnetting scheme) - not complete yet + - based on the subnetting result, create a set of objects needed for generating the network device configs + - take those objects and generate the configs, save them to txt files + +Extras down the road: (out of scope for this project) +- learn APIs of other network management system so my deployment system can automate populating data into those network management systems + +Note: the "not complete yet" part will be the focus of the spring term class project. + + + +Instructions on how to run my project locally on your laptop: +- packages needed: pyramid_zodbconn, pyramid_tm, deform diff --git a/assignments/Project/deploy_auto/__init__.py b/assignments/Project/deploy_auto/__init__.py new file mode 100644 index 00000000..ae7dca8d --- /dev/null +++ b/assignments/Project/deploy_auto/__init__.py @@ -0,0 +1,18 @@ +from pyramid.config import Configurator +from pyramid_zodbconn import get_connection +from .models import appmaker + + +def root_factory(request): + conn = get_connection(request) + return appmaker(conn.root()) + + +def main(global_config, **settings): + """ This function returns a Pyramid WSGI application. + """ + config = Configurator(root_factory=root_factory, settings=settings) + config.add_static_view('static', 'static', cache_max_age=3600) + config.add_static_view('deform_static', 'deform:static') + config.scan() + return config.make_wsgi_app() diff --git a/assignments/Project/deploy_auto/models.py b/assignments/Project/deploy_auto/models.py new file mode 100644 index 00000000..79dfb418 --- /dev/null +++ b/assignments/Project/deploy_auto/models.py @@ -0,0 +1,14 @@ +from persistent.mapping import PersistentMapping +from persistent import Persistent + +class Deploy_Auto(PersistentMapping): + __name__ = None + __parent__ = None + +def appmaker(zodb_root): + if not 'app_root' in zodb_root: + app_root = Deploy_Auto() + zodb_root['app_root'] = app_root + import transaction + transaction.commit() + return zodb_root['app_root'] diff --git a/assignments/Project/deploy_auto/static/favicon.ico b/assignments/Project/deploy_auto/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..71f837c9e27a57cc290a775b8260241d456582e9 GIT binary patch literal 1406 zcmZQzU<5(|0R}M0U}azs1F|%L7$l?s#Ec9aKoZP=&}eKW1$hQXJ8K3_byWuK^4)pUzxN(#<8UmvsK;IDHKmiOqXh0GT$f5y8Mn(lr zPEIj#Ai)ddFf%g)`Eo2Q!azQdBPb}Sz$wKF1QMLQK#sJuG@G&_7$~s=Ib0wh3I<>% w6A18w0hlQO2J+n8d=Qop8c;z43^FJH7?vVPfPvuvGXp~dBk4g5(gV^90E$0CbN~PV literal 0 HcmV?d00001 diff --git a/assignments/Project/deploy_auto/static/footerbg.png b/assignments/Project/deploy_auto/static/footerbg.png new file mode 100644 index 0000000000000000000000000000000000000000..1fbc873daa930207b3a5a07a4d34a9478241d67e GIT binary patch literal 333 zcmV-T0kZyyP)x;P*EWNYZUli+~q;(eTbfe*U$baTG!fAgG=`DK4DzIF9EWa~YA`tJ9_ z8KSNH@Hyb?@aX8R^MT1t_v-D!{?^ltv3)o9> f@a++B;w^4}o%yp?Jw|+(00000NkvXXu0mjfL|da= literal 0 HcmV?d00001 diff --git a/assignments/Project/deploy_auto/static/headerbg.png b/assignments/Project/deploy_auto/static/headerbg.png new file mode 100644 index 0000000000000000000000000000000000000000..0596f2020327efd97a4467c3025691844bb703d5 GIT binary patch literal 203 zcmV;+05t!JP)t-jh%+|_^FEwkAv~hm;c(PdXHHPSc-$gT+Ec53X`vdosFfm>3bJhR=002ovPDHLk FV1j%>T7Uom literal 0 HcmV?d00001 diff --git a/assignments/Project/deploy_auto/static/ie6.css b/assignments/Project/deploy_auto/static/ie6.css new file mode 100644 index 00000000..b7c8493d --- /dev/null +++ b/assignments/Project/deploy_auto/static/ie6.css @@ -0,0 +1,8 @@ +* html img, +* html .png{position:relative;behavior:expression((this.runtimeStyle.behavior="none")&&(this.pngSet?this.pngSet=true:(this.nodeName == "IMG" && this.src.toLowerCase().indexOf('.png')>-1?(this.runtimeStyle.backgroundImage = "none", +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.src + "',sizingMethod='image')", +this.src = "static/transparent.gif"):(this.origBg = this.origBg? this.origBg :this.currentStyle.backgroundImage.toString().replace('url("http://github.com/','').replace('")',''), +this.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.origBg + "',sizingMethod='crop')", +this.runtimeStyle.backgroundImage = "none")),this.pngSet=true) +);} +#wrap{display:table;height:100%} diff --git a/assignments/Project/deploy_auto/static/middlebg.png b/assignments/Project/deploy_auto/static/middlebg.png new file mode 100644 index 0000000000000000000000000000000000000000..2369cfb7da3e5052c2ad4932a6d56240c92654c7 GIT binary patch literal 2797 zcmV4Tx0C)kNmUmQBSrfqTdoR7v5<-y@dJRoV0Fe@UkzPe5BmqJR7!t5oLbpCc6HqI?@={d8%D5al;0(=!Cz zYydD6nO!2_rJ!tuGDRE_#zA==00c_%EKZ!o62USwPXIWXSj`sE}8w<4jU*%sHzk2;U z$a?$5<7MdQoaVsz{O95^ejS$UX;36cb2fe1Y+3Y{{cC>d?Hh%b}~Geu0H=$|_LAH!zl zAj2Q0Uf9TEuaUC0Snjw2jC3cfEVxw!5{*}g2jLb zQa}a}gIur*tOxm^5bOYZKsl%aHJ}bOfD@nvoCX)bWpEwb1byH>7z88W8JGmG!3+dJ zc!&zoAT>xEGJwn=8;A|fhrFObC=7~)5};&A1WBP)&_<{bDu&9TgHRpxBXkP709}Q8 zpu5lzG!Fdvqf1r2MCzX|yZIz>xmnl~$ zpHUuUAPhr>A0wSn#5lp|XS`F#WweHcflJworSw_BrjROl77!Go4w=>|jpnXz2LrNOcbC zbnDFM8tF#rZqRMieW*v$W9ud9?bd78o7C6V57J+yU$1}9fM~!rNHN%J&}lGjXk-{| zxY@A9aLh>6$j@knQN7UvW2&*M@lxYz|7l}t!?UTdxjmOU*L&{Txvg_w*qYf2Z1>yVv7^}q*=@FKxBFo4U@x|B zupf8OcSvxkbQoaM*&*z0>?@8~M-Rufj;9^pI@vo(oK86X;mmSQb3W=kHqU6DU|!9< zVHaH&uFFA}!THSj3G)xkA9U4m<+@h8K6cY{%Av^?0i=GocG202Kesu9q`liwb@Yi zqU=@)9sQZ=k{U}lNr!Ug=Tzjp$&JcAxlD1HXj#{C)8$*2kFM}u@%>87O5V!$RXVHI zuNqqIzWU%AXiegp_O*Iz^VW{6^I3OfJ!yT~`d>C!Z7AOGYGd@qwmi+eb$P>^d^XkR z%jJvn2R1uzuG)gxBHYrwb?(-(tse{c1=k9#3QG##Z{uyd_MP>2rQdzpp0vHY$i8U* z4%`mWj{cplJC77A7OyBC-W9Z~c{g)+!R}Xkmh8D&Vp~$Rm$X;9cd#_Dw6#pXY)9Gq z@|5zv3Xh7$N{z~`mDBt9`+E1g?Qf{ktSYQ}cR+aH&Ox7p&DDn0C5Lc_at=MIiK^-R zp8b7Yt$J-??T5pn!-Ge{j&#&H)YTo;I9gN>*GucikHsIm`Ge;VtqrV(gN=;F!sFn$ z^!U>s6MpPJ5pbgYB>QB;PX<3#Hqn|2nxW?9&66!DErYGGtv#pwPqnu>w>AB2@$=!+ zI;ShnD4!`hOFEl(_S3l)=cdkQou9and||kKN&EeaF&A%lgm!da3b=ITviIeSo$j6I zuDDz|ebwpescYO08?84TZ?^T!>p9!&+I!)a=dH`P z{cd0HThQ0jAK8CrAbw!*4*$;B-SoRJ?&aK@xxelK_Cdizg@+}NG#*v|YVvF2p#9*P zAK5^Wa`oDjMp>M1#i^e9C^!r+xaf~-RMm2 zd;I&-4<;YlJ_dYz@G0Zdr@sILoAdna&gY5%000SaNLh0L01FcU01FcV0GgZ_0000` zNkl3M)`0?X^CI%pY5dZ)Ghq6c#BU2mL4m7>^xj0=#gtkGV1kD*#^bxk;#3qK# z1w@EpQ$noku{i^$7!@T*ax+fPAS4hh!X^U%5(tH;2fehL00000NkvXXu0mjf?v`T0 literal 0 HcmV?d00001 diff --git a/assignments/Project/deploy_auto/static/pylons.css b/assignments/Project/deploy_auto/static/pylons.css new file mode 100644 index 00000000..aa31385d --- /dev/null +++ b/assignments/Project/deploy_auto/static/pylons.css @@ -0,0 +1,372 @@ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td +{ + margin: 0; + padding: 0; + border: 0; + outline: 0; + font-size: 100%; /* 16px */ + vertical-align: baseline; + background: transparent; +} + +body +{ + line-height: 1; +} + +ol, ul +{ + list-style: none; +} + +blockquote, q +{ + quotes: none; +} + +blockquote:before, blockquote:after, q:before, q:after +{ + content: ''; + content: none; +} + +:focus +{ + outline: 0; +} + +ins +{ + text-decoration: none; +} + +del +{ + text-decoration: line-through; +} + +table +{ + border-collapse: collapse; + border-spacing: 0; +} + +sub +{ + vertical-align: sub; + font-size: smaller; + line-height: normal; +} + +sup +{ + vertical-align: super; + font-size: smaller; + line-height: normal; +} + +ul, menu, dir +{ + display: block; + list-style-type: disc; + margin: 1em 0; + padding-left: 40px; +} + +ol +{ + display: block; + list-style-type: decimal-leading-zero; + margin: 1em 0; + padding-left: 40px; +} + +li +{ + display: list-item; +} + +ul ul, ul ol, ul dir, ul menu, ul dl, ol ul, ol ol, ol dir, ol menu, ol dl, dir ul, dir ol, dir dir, dir menu, dir dl, menu ul, menu ol, menu dir, menu menu, menu dl, dl ul, dl ol, dl dir, dl menu, dl dl +{ + margin-top: 0; + margin-bottom: 0; +} + +ol ul, ul ul, menu ul, dir ul, ol menu, ul menu, menu menu, dir menu, ol dir, ul dir, menu dir, dir dir +{ + list-style-type: circle; +} + +ol ol ul, ol ul ul, ol menu ul, ol dir ul, ol ol menu, ol ul menu, ol menu menu, ol dir menu, ol ol dir, ol ul dir, ol menu dir, ol dir dir, ul ol ul, ul ul ul, ul menu ul, ul dir ul, ul ol menu, ul ul menu, ul menu menu, ul dir menu, ul ol dir, ul ul dir, ul menu dir, ul dir dir, menu ol ul, menu ul ul, menu menu ul, menu dir ul, menu ol menu, menu ul menu, menu menu menu, menu dir menu, menu ol dir, menu ul dir, menu menu dir, menu dir dir, dir ol ul, dir ul ul, dir menu ul, dir dir ul, dir ol menu, dir ul menu, dir menu menu, dir dir menu, dir ol dir, dir ul dir, dir menu dir, dir dir dir +{ + list-style-type: square; +} + +.hidden +{ + display: none; +} + +p +{ + line-height: 1.5em; +} + +h1 +{ + font-size: 1.75em; + line-height: 1.7em; + font-family: helvetica, verdana; +} + +h2 +{ + font-size: 1.5em; + line-height: 1.7em; + font-family: helvetica, verdana; +} + +h3 +{ + font-size: 1.25em; + line-height: 1.7em; + font-family: helvetica, verdana; +} + +h4 +{ + font-size: 1em; + line-height: 1.7em; + font-family: helvetica, verdana; +} + +html, body +{ + width: 100%; + height: 100%; +} + +body +{ + margin: 0; + padding: 0; + background-color: #fff; + position: relative; + font: 16px/24px NobileRegular, "Lucida Grande", Lucida, Verdana, sans-serif; +} + +a +{ + color: #1b61d6; + text-decoration: none; +} + +a:hover +{ + color: #e88f00; + text-decoration: underline; +} + +body h1, body h2, body h3, body h4, body h5, body h6 +{ + font-family: NeutonRegular, "Lucida Grande", Lucida, Verdana, sans-serif; + font-weight: 400; + color: #373839; + font-style: normal; +} + +#wrap +{ + min-height: 100%; +} + +#header, #footer +{ + width: 100%; + color: #fff; + height: 40px; + position: absolute; + text-align: center; + line-height: 40px; + overflow: hidden; + font-size: 12px; + vertical-align: middle; +} + +#header +{ + background: #000; + top: 0; + font-size: 14px; +} + +#footer +{ + bottom: 0; + background: #000 url(http://github.com/footerbg.png) repeat-x 0 top; + position: relative; + margin-top: -40px; + clear: both; +} + +.header, .footer +{ + width: 750px; + margin-right: auto; + margin-left: auto; +} + +.wrapper +{ + width: 100%; +} + +#top, #top-small, #bottom +{ + width: 100%; +} + +#top +{ + color: #000; + height: 230px; + background: #fff url(http://github.com/headerbg.png) repeat-x 0 top; + position: relative; +} + +#top-small +{ + color: #000; + height: 60px; + background: #fff url(http://github.com/headerbg.png) repeat-x 0 top; + position: relative; +} + +#bottom +{ + color: #222; + background-color: #fff; +} + +.top, .top-small, .middle, .bottom +{ + width: 750px; + margin-right: auto; + margin-left: auto; +} + +.top +{ + padding-top: 40px; +} + +.top-small +{ + padding-top: 10px; +} + +#middle +{ + width: 100%; + height: 170px; + background: url(http://github.com/middlebg.png) repeat-x; + border-top: 2px solid #fff; + border-bottom: 2px solid #b2b2b2; +} + +.app-welcome +{ + margin-top: 25px; +} + +.app-name +{ + color: #000; + font-weight: 700; +} + +.bottom +{ + padding-top: 50px; +} + +#left +{ + width: 350px; + float: left; + padding-right: 25px; +} + +#right +{ + width: 350px; + float: right; + padding-left: 25px; +} + +.align-left +{ + text-align: left; +} + +.align-right +{ + text-align: right; +} + +.align-center +{ + text-align: center; +} + +ul.links +{ + margin: 0; + padding: 0; +} + +ul.links li +{ + list-style-type: none; + font-size: 14px; +} + +form +{ + border-style: none; +} + +fieldset +{ + border-style: none; +} + +input +{ + color: #222; + border: 1px solid #ccc; + font-family: sans-serif; + font-size: 12px; + line-height: 16px; +} + +input[type=text], input[type=password] +{ + width: 205px; +} + +input[type=submit] +{ + background-color: #ddd; + font-weight: 700; +} + +/*Opera Fix*/ +body:before +{ + content: ""; + height: 100%; + float: left; + width: 0; + margin-top: -32767px; +} diff --git a/assignments/Project/deploy_auto/static/pyramid-small.png b/assignments/Project/deploy_auto/static/pyramid-small.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bc0ade71d3da5eab67391e840ff20448c42cd6 GIT binary patch literal 7044 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 + + + ${project} + + + + + + + + + + + +
+
+
+
+ pyramid +
+
+
+
+
+

+ Welcome to the ${project} +

+
+
+
+ +
+
+
+
+ +
+ +
+ +
+ +
+
+
+ + + diff --git a/assignments/Project/deploy_auto/templates/deploy.pt b/assignments/Project/deploy_auto/templates/deploy.pt new file mode 100644 index 00000000..8ff59526 --- /dev/null +++ b/assignments/Project/deploy_auto/templates/deploy.pt @@ -0,0 +1,9 @@ + + +

Please input store specific info

+
+ +
form
+
Data successfully submitted!
+
+
diff --git a/assignments/Project/deploy_auto/templates/query.pt b/assignments/Project/deploy_auto/templates/query.pt new file mode 100644 index 00000000..63b86128 --- /dev/null +++ b/assignments/Project/deploy_auto/templates/query.pt @@ -0,0 +1,9 @@ + + +

Please input store number

+
+ +
form
+

Data successfully submitted!

+
+
diff --git a/assignments/Project/deploy_auto/views.py b/assignments/Project/deploy_auto/views.py new file mode 100644 index 00000000..b26a87de --- /dev/null +++ b/assignments/Project/deploy_auto/views.py @@ -0,0 +1,96 @@ +from pyramid.view import view_config +from .models import Deploy_Auto +from pyramid_zodbconn import get_connection +from deform import Form, ValidationFailure + +import colander + +@view_config(context=Deploy_Auto, renderer='templates/base.pt') +def my_view(request): + conn = get_connection(request) + root = conn.root() + return {'project': 'Network Deployment Automation System', 'page': root['app_root']} + +class Store(colander.MappingSchema): + store_number = colander.SchemaNode(colander.Integer()) + city = colander.SchemaNode(colander.String()) + state = colander.SchemaNode(colander.String()) + country = colander.SchemaNode(colander.String()) + region = colander.SchemaNode(colander.String()) + network = colander.SchemaNode(colander.String()) + +class Store_Number(colander.MappingSchema): + store_number = colander.SchemaNode(colander.Integer()) + +@view_config(context=Deploy_Auto, name='deploy', renderer='templates/deploy.pt') +def view_deploy(request): + conn = get_connection(request) + root = conn.root() + schema = Store() + myform = Form(schema, buttons=('submit',)) + if 'submit' in request.POST: + controls = request.POST.items() + try: + appstruct = myform.validate(controls) + except ValidationFailure, e: + return { + 'project': 'Network Deployment Automation System', + 'page': root['app_root'], + 'form': e.render(), + 'values': False, + } + values = { + 'store_number': appstruct['store_number'], + 'city': appstruct['city'], + 'state': appstruct['state'], + 'country': appstruct['country'], + 'region': appstruct['region'], + 'network': appstruct['network'] + } + return { + 'project': 'Network Deployment Automation System', + 'page': root['app_root'], + 'form': myform.render(), + 'values': values + } + + return { + 'project': 'Network Deployment Automation System', + 'page': root['app_root'], + 'form': myform.render(), + 'values': None + } + +@view_config(context=Deploy_Auto, name='query', renderer='templates/query.pt') +def view_query(request): + conn = get_connection(request) + root = conn.root() + schema = Store_Number() + myform = Form(schema, buttons=('submit',)) + if 'submit' in request.POST: + controls = request.POST.items() + try: + appstruct = myform.validate(controls) + except ValidationFailure, e: + return { + 'project': 'Network Deployment Automation System', + 'page': root['app_root'], + 'form': e.render(), + 'values': False, + } + values = { + 'store_number': appstruct['store_number'], + } + return { + 'project': 'Network Deployment Automation System', + 'page': root['app_root'], + 'form': myform.render(), + 'values': values + } + + return { + 'project': 'Network Deployment Automation System', + 'page': root['app_root'], + 'form': myform.render(), + 'values': None + } diff --git a/assignments/week08/lab/edit.pt b/assignments/week08/lab/edit.pt new file mode 100644 index 00000000..542ba5ea --- /dev/null +++ b/assignments/week08/lab/edit.pt @@ -0,0 +1,14 @@ + + + Editing + Page Name Goes Here + + + +
+