summaryrefslogtreecommitdiff
path: root/customer.py
blob: e7073469934fb59fe472b779aa5f4aabb486d169 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import sqlalchemy
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound
from webob import Response
from webob.exc import HTTPFound
import db, product

Base = declarative_base()
class Customer(Base):
	__tablename__ = 'customers'
	
	id = Column(Integer, primary_key=True)
	email = Column(String)
	name = Column(String)
	
	def __init__(self, name, email ):
		self.name = name
		self.email = email
		session = db.Session()
		session.add( self )
		session.commit()
	
	def __repr__(self):
		return "<User('%s, %s')>" % (self.name, self.email)

def list(request):
	session = db.Session()
	customers = {}
	products = {}
	for cust in session.query(Customer).order_by(Customer.id):
		customers[ cust.id ] = { 'name': cust.name, 'email': cust.email }
	for prod in session.query(product.Product).order_by(product.Product.id):
		products[ prod.id ] = { 'name': prod.name, 'type': prod.type, 'price': prod.price }
	session.close()
	return { 'customers': customers, 'products': products }

def info(request):
	session = db.Session()
	try:
		customer = session.query(Customer).filter(Customer.name == request.matchdict['customer'] ).one()
		resp = "User: id=%s name=%s email=%s<br>" % ( customer.id, customer.name, customer.email )
	except MultipleResultsFound, e:
		resp = "Multiple users found with name %s." % request.matchdict['customer']
	except NoResultFound, e:
		resp = "User %s unknown." % request.matchdict['customer']
	return Response( resp )

def new(request):
	newUser = Customer( request.params['name'], request.params['email'] )
	destination = "/customers/%s" % newUser.name
	return HTTPFound( location = destination )