Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)