예제 #1
0
def animal_req():
    form = RequestForm()
    if form.validate_on_submit():
        # Store request & update statistics on Redis
        req_id = Red.incr('num_requests')
        req_dict = form.data
        Red.set("request:{}".format(req_id), json.dumps(req_dict))
        get_back = json.loads(Red.get("request:{}".format(req_id)))
        req_animal_cnt = Red.incr('animal-request:{}'.format(req_dict['name']))
        # Flash replaces debug information
        Red.incr('active-requests')
        flash("Animal '{}' has been requested, now for a total of {} times.".
              format(req_dict['name'], req_animal_cnt))

    else:
        if not form.submit.data:
            flash('No data was submitted')
        else:
            flash('Data was invalid')
            for field in form.errors:
                for error in form.errors[field]:
                    flash(field + ' - ' + error)

    count = Red.incr('count')
    return render_template('request.html', num_views=count, form=form)
예제 #2
0
def animal_req():
    form = RequestForm()
    if form.validate_on_submit():
        # Store request & update statistics on Redis
        req_id = Red.incr('num_requests')
        req_dict = form.data
        Red.set("request:{}".format(req_id), json.dumps(req_dict))
        get_back = json.loads(Red.get("request:{}".format(req_id)))
        req_animal_cnt = Red.incr('animal-request:{}'.format(req_dict['name']))
        # Debug information to terminal
        print "Animal '{}' has been requested {} times, including this time.".format(
            req_dict['name'], req_animal_cnt)

    else:
        if not form.submit.data:
            print 'No data was submitted'
        else:
            print 'Data was invalid'
            print 'Errors: {}'.format(form.errors)

    count = Red.incr('count')
    return render_template(
        'request.html',
        num_views=count,
        form=form,
    )
예제 #3
0
def add_animal(animal_name=None):
    if "username" not in session:
        return redirect(url_for('login'))  # require login

    form = NewAnimalForm()

    if form.validate_on_submit():
        key = "animal:" + form.name.data
        # Check for record overwrite in add-animal
        if form.action.data == 'add':
            print "Validated form for add-animal"
            get_it = Red.get('animal:' + form.name.data)
            print "get_it", get_it
            if get_it is not None:  # adding an animal that already exists
                flash('Cannot add {} because it already exist. Must edit instead.'.\
                          format(form.name.data))
                return redirect(
                    url_for('edit_animal', animal_name=form.name.data))

        # Otherwise, it's a new record or an edit of an existing, so update it.
        factlist = []
        for i in xrange(6):
            funfacti = 'funfact' + str(i + 1)
            if funfacti in form.data and len(form[funfacti].data) >= 1:
                factlist.append(form[funfacti].data)

        data = {
            'title': form.name.data,
            'source_url': form.source_url.data,
            'img_link': {
                "src": form.image_url.data,
                "alt": form.image_desc.data
            },
            'fact_list': factlist
        }

        Red.set(key, json.dumps(data))
        flash("Successfully added {}".format(form.name.data))
        return redirect(url_for('hello'))

    else:
        if animal_name is not None:  # editing
            get_it = Red.get('animal:' + animal_name)
            if get_it is not None:
                get_it_data = json.loads(get_it)
                form.name.data = get_it_data['title']
                form.source_url.data = get_it_data['source_url']
                form.image_url.data = get_it_data['img_link']['src']
                form.image_desc.data = get_it_data['img_link']['alt']
                for i, fact in enumerate(get_it_data['fact_list']):
                    form['funfact' + str(i + 1)].data = fact
            else:
                flash('Animal {} is not in data store; cannot edit.'.format(
                    animal_name))

    count = Red.incr('count')
    form.action.data = 'add' if request.url_rule.rule == '/add-animal' else "edit"
    print form.action.data
    return render_template('add_animal.html', num_views=count, form=form)