95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
import uuid
|
|
from datetime import datetime, date, timedelta
|
|
|
|
import transaction
|
|
from pyramid.view import view_config
|
|
|
|
from barker.models import GuestBook, Customer
|
|
|
|
|
|
@view_config(request_method='PUT', route_name='v1_guest_book_new', renderer='json', permission='Users', trans=True)
|
|
def save(request):
|
|
json = request.json_body
|
|
company = json['company'].strip() if json['company'] is not None else ''
|
|
name = json['name'].strip()
|
|
phone = json['phone']
|
|
address = json['address'].strip()
|
|
customer = request.dbsession.query(Customer).filter(Customer.phone == phone).first()
|
|
if customer is None:
|
|
customer = Customer(company, name, phone, address)
|
|
request.dbsession.add(customer)
|
|
else:
|
|
if company != '':
|
|
customer.company = company
|
|
if name != '':
|
|
customer.name = name
|
|
if address != '':
|
|
customer.address = address
|
|
item = GuestBook(pax=json['pax'])
|
|
item.customer = customer
|
|
request.dbsession.add(item)
|
|
transaction.commit()
|
|
item = request.dbsession.query(GuestBook).filter(GuestBook.id == item.id).first()
|
|
return guest_book_info(item)
|
|
|
|
|
|
@view_config(request_method='GET', route_name='v1_guest_book_id', renderer='json', permission='Authenticated')
|
|
def show_id(request):
|
|
id_ = request.matchdict['id']
|
|
item = request.dbsession.query(GuestBook).filter(GuestBook.id == uuid.UUID(id_)).one()
|
|
return guest_book_info(item)
|
|
|
|
|
|
@view_config(request_method='GET', route_name='v1_guest_book_new', renderer='json', permission='Authenticated')
|
|
def show_blank(request):
|
|
return guest_book_info(None)
|
|
|
|
|
|
@view_config(request_method='GET', route_name='v1_guest_book_list', renderer='json', permission='Authenticated')
|
|
def show_list(request):
|
|
date_ = request.GET.get('q', None)
|
|
if date_ is None or date_ == '':
|
|
date_ = date.today().strftime('%d-%b-%Y')
|
|
list_ = request.dbsession.query(
|
|
GuestBook
|
|
).filter(
|
|
GuestBook.date >= datetime.strptime(date_, '%d-%b-%Y') - timedelta(minutes=30) # hack for timezone and 5 am
|
|
).filter(
|
|
GuestBook.date < datetime.strptime(date_, '%d-%b-%Y') - timedelta(minutes=30) + timedelta(days=1)
|
|
).order_by(
|
|
GuestBook.date
|
|
).all()
|
|
|
|
guest_book = []
|
|
for i, item in enumerate(list_):
|
|
guest_book.insert(0, {
|
|
'id': item.id,
|
|
'serial': i + 1,
|
|
'company': item.customer.company,
|
|
'name': item.customer.name,
|
|
'phone': item.customer.phone,
|
|
'pax': item.pax,
|
|
'status': '' if item.status is None else item.status.status
|
|
})
|
|
return {"date": date_, "list": guest_book}
|
|
|
|
|
|
def guest_book_info(item):
|
|
if item is not None:
|
|
return {
|
|
'id': item.id,
|
|
'company': item.customer.company,
|
|
'name': item.customer.name,
|
|
'phone': item.customer.phone,
|
|
'pax': item.pax,
|
|
'address': item.customer.address
|
|
}
|
|
else:
|
|
return {
|
|
'company': '',
|
|
'name': '',
|
|
'phone': '',
|
|
'pax': 0,
|
|
'address': ''
|
|
}
|