예제 #1
0
def route_suggest():

    from model import Route
    options = []
    for route in Route.search(request.args.get('term'), request.args.get('area_id')):

        options.append({'label': route['name'], 'value': route['route_id']})

    return json.dumps(options)
예제 #2
0
def route_work_save():

    from model import RouteWork

    errors = []
    # Validate data
    # Check for required fields
    labels = {'area': 'Area', 'route': 'Route', 'work_date': 'Completed On', 'bolts_placed': 'Bolts', 'anchor': 'Anchor', 'info': 'Notes'}
    for el in ['area', 'route', 'work_date', 'bolts_placed']:
        if el not in request.form or len(request.form[el]) == 0:
            errors.append("'{0}' is a required field.".format(labels[el]))

    # Make sure route id matches route name
    if len(request.form['route_id']):
        if request.form['route_id'] == '0':
            errors.append("There was a problem finding the route that you entered, please try again.")
        else:
            from model import Route
            route = Route.Route(request.form['route_id'])
            if route.name != request.form['route']:
                errors.append("There was a problem finding the route that you entered, please try again.")
    else:
        # Try to find route based on area name and route name
        from model import Route
        if len(request.form['area_id']):
            routes = Route.search(request.form['route'], request.form['area_id'])
        else:
            routes = Route.search(request.form['route'])
        
        # If a single route was found, use that
        if len(routes) == 1:
            route = Route.Route(routes[0]['route_id'])
        # Otherewise, error
        else:
            errors.append("There was a problem finding the route that you entered, please try typing part of the route name and then selecting from suggested routes.")

    # Make sure area id matches area name
    if len(request.form['area_id']):
        from model import Area
        area = Area.Area(request.form['area_id'])
        if (area.name != request.form['area']):
            errors.append('There was a problem finding the area that you entered, please try again.')

    # If errors, display form again
    if len(errors) != 0:

        return render_template(
            'route_work/form.html', error = "<br/>\n".join(errors),
            area_options = [('1', 'New River Gorge'), ('2', 'Meadow River Gorge')],
            route = request.form['route'],
            route_id = request.form['route_id'],
            area = request.form['area'],
            area_id = request.form['area_id'],
            work_date = request.form['work_date'],
            who = request.form['who'],
            bolts_placed = request.form['bolts_placed'],
            anchor_replaced = '1' if request.form['anchor'] == 'replaced' else '',
            new_anchor = '1' if request.form['anchor'] == 'new' else '',
            info = request.form['info']
        )

    # If no errors, save route work
    work = RouteWork.RouteWork(request.form['route_work_id'])
    work.route_id = route.route_id
    work.work_date = __form_to_sql(request.form['work_date'])
    work.who = request.form['who']
    work.bolts_placed = request.form['bolts_placed'] if len(request.form['bolts_placed']) > 0 else '0'
    if request.form['anchor'] == 'replaced':
        work.anchor_replaced = 1
    else:
        work.anchor_replaced = 0
    if request.form['anchor'] == 'new':
        work.new_anchor = 1
    else:
        work.new_anchor = 0
    work.user_id = session['user_id']
    work.info = request.form['info']
    work.save()

    flash('Route work saved')

    return redirect(url_for('route_list'))