

@app.route('/next', methods=['GET', 'POST'])
@login.login_required
def next():
    if (request.method == 'POST'):
        tags = set(map(unicode.lower, request.form.getlist('tags')))
        Cluster.objects(pk=request.form['_id']).update_one(push__tags=ShredTags(user=g.user.id, tags=list(tags), recognizable_chars=request.form.get('recognizable_chars', ''), angle=int(request.form.get('angle', 0))), inc__users_count=1, add_to_set__users_processed=g.user.id)
        User.objects(pk=g.user.id).update_one(inc__processed=1, inc__tags_count=len(tags), add_to_set__tags=list(tags))
        session['processed'] = (session.get('processed', 0) + 1)
        for tag in tags:
            Tags.objects(pk=tag).update_one(set_on_insert__is_base=False, set_on_insert__created_by=g.user.id, set_on_insert__created_at=Tags().created_at, inc__usages=1, add_to_set__shreds=request.form['_id'], upsert=True)
        start = datetime.strptime(request.form['tagging_start'], '%Y-%m-%d %H:%M:%S.%f')
        end = datetime.utcnow()
        TaggingSpeed.objects.create(user=g.user.id, cluster=request.form['_id'], tags_count=len(tags), msec=((end - start).total_seconds() * 1000))
    cluster = Cluster.next_for_user(g.user, app.config['USERS_PER_SHRED'])
    auto_tags = ((cluster and cluster.auto_tags) or [])
    return render_template('_shred.html', cluster=cluster, auto_tags=auto_tags, all_tags=get_tags(), tagging_start=datetime.utcnow(), processed_per_session=session.get('processed', 0), processed_total=User.objects(id=g.user.id).first()['processed'], rating=(list(User.objects.order_by('-processed').values_list('id')).index(g.user.id) + 1))

dataset/ETHPy150Open dchaplinsky/unshred-tag/app.py next/original