def visit(db): authorize() customer_id = post_get('customer_id') visit = Visit() visit.setStatus(status='checkin', family_id=customer_id) db.add(visit) db.commit() checkout_url = get_redirect_url('checkin') return bottle.redirect(checkout_url)
def customer(db, customer_id=None): authorize() bottle.BaseTemplate.defaults['page'] = '/customer' relationshipOpts = [relationship.__dict__ for relationship in db.query(Relationship) .order_by(Relationship.id).all()] postData = bottle.request.POST form = CustomerForm(postData) post_url = get_redirect_url() visit_url_root = get_redirect_url('checkout') volunteer_url_root = get_redirect_url('volunteer_visit') checkin_url = get_redirect_url('checkin') visits = None volunteerVisits = None failedValidation = False if bottle.request.method == 'POST': family = None try: if form.validate(): family = CustomerFamily() family.fromForm(customer_id, form) family = db.merge(family) db.flush() activeVisits = family.visits.filter(Visit.checkout == None) # noqa hasNoActiveVisit = len(activeVisits.all()) == 0 shouldCreateVisit = postData["checkinCust"] == "true" shouldCheckinVolunteer = postData["checkinVolunteer"] == "true" isCustomer = "isCustomer" in postData isVolunteer = "isVolunteer" in postData if hasNoActiveVisit and shouldCreateVisit and isCustomer: visit = Visit() visit.setStatus(status='checkin', family_id=family.id) db.add(visit) next_url = get_redirect_url('checkin') db.commit() if shouldCheckinVolunteer: next_url = get_redirect_url('volunteer_visit?family_id='+str(family.id)) elif isVolunteer: next_url = get_redirect_url('customer/'+str(family.id)) return bottle.redirect(next_url) else: failedValidation = True except HTTPError as herr: raise herr except HTTPResponse as hres: raise hres except Exception as ex: log.debug(ex) db.rollback() if family is not None: visits = family.visits volunteerVisits = family.volunteerVisits if customer_id is not None and \ (failedValidation or bottle.request.method == 'GET'): customerQuery = db.query(CustomerFamily) fams = customerQuery.filter(CustomerFamily.id == customer_id) famCount = len(fams.all()) if famCount == 0: return "No customers were found with this id" elif famCount > 1: return "There were multiple customers with the same id" if not failedValidation: form = CustomerForm(obj=fams[0]) visits = fams[0].visits\ .order_by(models.Visit.checkin) volunteerVisits = fams[0].volunteerVisits\ .order_by(models.VolunteerVisit.checkin) elif bottle.request.method == 'GET': # Mark one of the two dependents as primary form.dependents[0].isPrimary.data = True customerDict = {} customerDict['form'] = form customerDict['customer_id'] = customer_id customerDict['visits'] = visits customerDict['volunteers'] = volunteerVisits customerDict['relationshipOpts'] = relationshipOpts customerDict['post_url'] = post_url customerDict['checkin_url'] = checkin_url customerDict['visit_url_root'] = visit_url_root customerDict['volunteer_url_root'] = volunteer_url_root return template('customer', **customerDict)
def customer(db, customer_id=None): authorize() bottle.BaseTemplate.defaults['page'] = '/customer' postData = bottle.request.POST form = CustomerForm(postData) post_url = get_redirect_url() visit_url_root = get_redirect_url('checkout') volunteer_url_root = get_redirect_url('volunteer_visit') checkin_url = get_redirect_url('checkin') visits = None volunteerVisits = None failedValidation = False if bottle.request.method == 'POST': family = None try: if form.validate(): family = CustomerFamily() family.fromForm(customer_id, form) family = db.merge(family) db.flush() activeVisits = family.visits.filter(Visit.checkout == None) # noqa hasNoActiveVisit = len(activeVisits.all()) == 0 shouldCreateVisit = postData["checkinCust"] == "true" shouldCheckinVolunteer = postData["checkinVolunteer"] == "true" isCustomer = "isCustomer" in postData isVolunteer = "isVolunteer" in postData if hasNoActiveVisit and shouldCreateVisit and isCustomer: visit = Visit() visit.setStatus(status='checkin', family_id=family.id) db.add(visit) next_url = get_redirect_url('checkin') db.commit() if shouldCheckinVolunteer: next_url = get_redirect_url('volunteer_visit?family_id='+str(family.id)) elif isVolunteer: next_url = get_redirect_url('customer/'+str(family.id)) return bottle.redirect(next_url) else: failedValidation = True except HTTPError as herr: raise herr except HTTPResponse as hres: raise hres except Exception as ex: log.debug(ex) db.rollback() visits = family.visits volunteerVisits = family.volunteerVisits if customer_id is not None and \ (failedValidation or bottle.request.method == 'GET'): customerQuery = db.query(CustomerFamily) fams = customerQuery.filter(CustomerFamily.id == customer_id) famCount = len(fams.all()) if famCount == 0: return "No customers were found with this id" elif famCount > 1: return "There were multiple customers with the same id" if not failedValidation: form = CustomerForm(obj=fams[0]) visits = fams[0].visits volunteerVisits = fams[0].volunteerVisits elif bottle.request.method == 'GET': # Mark one of the two dependents as primary form.dependents[0].isPrimary.data = True customerDict = {} customerDict['form'] = form customerDict['customer_id'] = customer_id customerDict['visits'] = visits customerDict['volunteers'] = volunteerVisits customerDict['post_url'] = post_url customerDict['checkin_url'] = checkin_url customerDict['visit_url_root'] = visit_url_root customerDict['volunteer_url_root'] = volunteer_url_root return template('customer', **customerDict)