Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added hw6/.app.db
Empty file.
Empty file added hw6/.app.db;
Empty file.
Empty file added hw6/add.db
Empty file.
Binary file added hw6/app.db
Binary file not shown.
8 changes: 8 additions & 0 deletions hw6/app/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)

from app import views, models
27 changes: 27 additions & 0 deletions hw6/app/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from flask.ext.wtf import Form
from wtforms import StringField, IntegerField, SelectMultipleField
from flask_wtf.html5 import EmailField
from wtforms.validators import DataRequired


class CustomerForm(Form):
company = StringField('company', validators=[DataRequired()])
firstName = StringField('firstName', validators=[DataRequired()])
lastName = StringField('lastName', validators=[DataRequired()])
email = EmailField('email', validators=[DataRequired()])
phone = IntegerField('phone', validators=[DataRequired()])
# Add additional Address fields here


class AddressForm(Form):
streetAddress = StringField('streetAddress', validators=[DataRequired()])
city = StringField('city', validators=[DataRequired()])
state = StringField('state', validators=[DataRequired()])
country = StringField('country', validators=[DataRequired()])
zipCode = IntegerField('zipCode', validators=[DataRequired()])


class OrderForm(Form):
totalSpent = IntegerField('totalSpent', validators=[DataRequired()])
numPartsOrdered = IntegerField('numPartsOrdered', validators=[DataRequired()])
customers = SelectMultipleField('customers', coerce=str)
42 changes: 42 additions & 0 deletions hw6/app/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
from app import db


customerOrderRelation = db.Table('customerOrderRelation',
db.Column('customer', db.String, db.ForeignKey('customer.company'), nullable=False),
db.Column('order_id', db.Integer, db.ForeignKey('order.id'), nullable=False),
db.PrimaryKeyConstraint('customer', 'order_id'))


class Customer(db.Model):
id = db.Column(db.Integer, primary_key=True)
company = db.Column(db.String(120))
email = db.Column(db.String(120))
firstName = db.Column(db.String(120))
lastName = db.Column(db.String(120))
phone = db.Column(db.String(10))
# You need to a relationship to Address table here
# see http://flask-sqlalchemy.pocoo.org/2.1/models/#one-to-many-relationships
addresses = db.relationship('Address', backref='Customer', lazy='dynamic')
orders = db.relationship('Order', backref='Customer', secondary=customerOrderRelation)

def __repr__(self):
return '<Customer %r>' % self.company


class Address(db.Model):
id = db.Column(db.Integer, primary_key=True)
streetAddress = db.Column(db.String(120))
city = db.Column(db.String(120))
state = db.Column(db.String(120))
country = db.Column(db.String(120))
zipCode = db.Column(db.String(5))
customer_name = db.Column(db.Integer, db.ForeignKey('customer.company'))

def __repr__(self):
return '<Address "%r, %r, %r ,%r, %r">' % (self.streetAddress, self.city, self.state, self.country, self.zipCode)


class Order(db.Model):
id = db.Column(db.Integer, primary_key=True)
totalSpent = db.Column(db.Integer)
numPartsOrdered = db.Column(db.Integer)
34 changes: 34 additions & 0 deletions hw6/app/templates/add.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{% extends "base.html" %}
{% block content %}
<div class="container">
<div class="row">
<div class= "section">
<a href="{{ url_for('display_customer') }}">Home</a>
</div>
<h2>Add Customer to Our Database</h2>
<form action="" method="post" name="login">
{{ form.hidden_tag() }}
<div class="divider"></div>
<div class="section">
<p>
Company name:<br>
{{ form.company(size=120) }}<br>
Contact first name:
{{ form.firstName(size=120) }}<br>
Contact last name:
{{ form.lastName(size=120) }}<br>
Contact phone:<br>
{{ form.phone(size=10) }}<br>
Contact email:<br>
{{ form.email(size=120) }}<br>
</p>
</div>
<div class="divider"></div>
<div class="section">
<!-- Additional form fields for the Address should go here -->
</div>
<p><input type="submit" value="Create Customer"></p>
</form>
</div>
</div>
{% endblock %}
34 changes: 34 additions & 0 deletions hw6/app/templates/add_address.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{% extends "base.html" %}
{% block content %}
<div class="container">
<div class="row">
<div class= "section">
<a href="{{ url_for('display_customer') }}">Home</a>
</div>
<h2>Add Address for client {{ company }}</h2>
<form action="" method="post" name="add_address">
{{ form.hidden_tag() }}
<div class="divider"></div>
<div class="section">
<p>
Street Address:<br>
{{ form.streetAddress(size=120) }}<br>
City:
{{ form.city(size=120) }}<br>
State:
{{ form.state(size=120) }}<br>
Country:<br>
{{ form.country(size=120) }}<br>
Zip Code:<br>
{{ form.zipCode(size=5) }}<br>
</p>
</div>
<div class="divider"></div>
<div class="section">
<!-- Additional form fields for the Address should go here -->
</div>
<p><input type="submit" value="Add Address"></p>
</form>
</div>
</div>
{% endblock %}
30 changes: 30 additions & 0 deletions hw6/app/templates/add_order.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{% extends "base.html" %}
{% block content %}
<div class="container">
<div class="row">
<div class= "section">
<a href="{{ url_for('display_customer') }}">Home</a>
</div>
<h2>Create New Order</h2>
<form action="" method="post" name="add_order">
{{ form.hidden_tag() }}
<div class="divider"></div>
<div class="section">
<p>
Total Amount Spent:<br>
{{ form.totalSpent }}<br>
Number of Parts Ordered:
{{ form.numPartsOrdered }}<br>
Customers: <br />
{{ form.customers(style='display:initial; height:initial') }}<br />
</p>
</div>
<div class="divider"></div>
<div class="section">
<!-- Additional form fields for the Address should go here -->
</div>
<p><input type="submit" value="Done Editting Order"></p>
</form>
</div>
</div>
{% endblock %}
15 changes: 15 additions & 0 deletions hw6/app/templates/base.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
{% if title %}
<title>{{ title }} - ACME</title>
{% else %}
<title>Welcome to ACME Aircraft Parts</title>
{% endif %}
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/css/materialize.min.css">
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
53 changes: 53 additions & 0 deletions hw6/app/templates/each.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{% extends "base.html" %}
{% set title = "More Info" %}
{% block content %}
<div class="container">
<div class="row">
<h1>All about {{ customer.company }} </h1>
<div class= "section">
<a href="{{ url_for('display_customer') }}">Home</a>
</div>
<div class="divider"></div>
<div class="section">
<table class="responsive-table striped">
<tr><td>Company Name</td><td>{{ customer.company }}</td></tr>
<tr><td>Contact First Name</td><td>{{ customer.firstName }}</td></tr>
<tr><td>Contact Last Name</td><td>{{ customer.lastName }}</td></tr>
<tr><td>Contact Phone</td><td>{{ customer.phone }}</td></tr>
<tr><td>Contact Email</td><td>{{ customer.email }}</td></tr>
</table>
{% for address in customer.addresses %}
<h4>Address {{ loop.index }}</h4>
<div class="divider"></div>
<div class="section">
<table class="responsive-table striped">
<tr><td>Street Address</td><td>{{ address.streetAddress }}</td></tr>
<tr><td>City</td><td>{{ address.city }}</td></tr>
<tr><td>State</td><td>{{ address.state }}</td></tr>
<tr><td>Country</td><td>{{ address.country }}</td></tr>
<tr><td>Zip Code</td><td>{{ address.zipCode }}</td></tr>
</table>
{% endfor %}
<h4>Procured Order</h4>
<div class="divider"></div>
<div class="section">
<table class="responsive-table striped">
<thead>
<tr>
<th data-field="orderNo">Order Number</th>
<th data-field="amount">Order Amount</th>
<th data-field="numbers">Number of Parts Ordered</th>
</tr>
</thead>
{% for order in customer.orders %}
<tr>
<td>{{ order.id }}</td>
<td>{{ order.totalSpent }}</td>
<td>{{ order.numPartsOrdered }}</td>
</tr>
{% endfor %}
</table>
</div>
</div>
</div>
{% endblock %}
57 changes: 57 additions & 0 deletions hw6/app/templates/home.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{% extends "base.html" %}
{% set title = "customers' listing" %}
{% block content %}
<div class="container">
<div class="row">
<h1>Welcome to ACME Aircraft Parts</h1>
<div class="section">
<h4>Our Awesome Customers:</h4>
<table class="striped">
<thead>
<tr>
<th data-field="company">Company</th>
<th data-field="view">Details</th>
<th data-field="address">Addresses</th>
</tr>
</thead>
{% for customer in customers %}
<tr>
<td>{{ customer.company }}</td>
<td><a href="{{ url_for('each_customer', company=customer.company) }}">view</a></td>
<td><a href="{{ url_for('add_address', company=customer.company) }}">add</a></td>
</tr>
{% endfor %}
</table>
<div class="divider"></div>
<div class= "section">
<a href="{{ url_for('add') }}">Add a Customer</a>
</div>
<h4>Our Proud Orders:</h4>
<table class="striped">
<thead>
<tr>
<th data-field="totalSpent">Order Total Amount</th>
<th data-field="detail">Order Details</th>
<th data-field="customer">Order Customers</th>
</tr>
</thead>
{% for order in orders %}
<tr>
<td>{{ order.id }}</td>
<td><a href="{{ url_for('order', id=order.id) }}">view</a></td>
<td>
{% for customer in order.Customer %}
<a href="{{url_for('each_customer', company=customer.company)}}" style='padding-right:1em'>{{ customer.company }}</a>
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
<div class="divider"></div>
<div class= "section">
<a href="{{ url_for('add_order') }}">Create a New Order</a>
</div>
</div>
</div>
</div>
{% endblock %}
29 changes: 29 additions & 0 deletions hw6/app/templates/order.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{% extends "base.html" %}
{% set title = "More Info" %}
{% block content %}
<div class="container">
<div class="row">
<h1>All About Order No.{{ order.id }} </h1>
<div class= "section">
<a href="{{ url_for('display_customer') }}">Home</a>
</div>
<div class="divider"></div>
<div class="section">
<table class="responsive-table striped">
<tr><td>Order No.</td><td>{{ order.id }}</td></tr>
<tr><td>Total Procured Amount</td><td>{{ order.totalSpent }}</td></tr>
<tr><td>Number of Parts Ordered</td><td>{{ order.numPartsOrdered }}</td></tr>
</table>
</div>
<h4>Procuring Customers</h4>
<div class="divider"></div>
<div class="section">
<table class="responsive-table striped">
{% for customer in order.Customer %}
<tr><td>{{ customer.company }}</td></tr>
{% endfor %}
</table>
</div>
</div>
</div>
{% endblock %}
Loading