Beispiel #1
0
def finish_attach(route_id, attachment_id):
    try:
        route_id = ObjectId(route_id)
        attachment_id = ObjectId(attachment_id)
        assert RouteHelper.get(route_id)
        assert AttachmentHelper.get(attachment_id)
    except AssertionError, e:
        return redirect(url_for('home.home'))
Beispiel #2
0
def like_attach(route_id, attachment_id):
    try:
        route_id = ObjectId(route_id)
        attachment_id = ObjectId(attachment_id)
        assert RouteHelper.get(route_id)
        assert AttachmentHelper.get(attachment_id)
        state, number = AttachmentHelper.toggle_vote(attachment_id)
    except AssertionError:
        return jsonify({'code': 0})

    return jsonify({'code': state, 'number': number})
Beispiel #3
0
    def get_attachs(route_id):
        assert isinstance(route_id, ObjectId)
        route = RouteHelper.get(route_id)
        assert route

        attachs = [AttachmentHelper.get(attach_id) for attach_id in route.attached]
        for attach in attachs:
            attach.json_info = loads(attach.info) if attach.atype != 3 else attach.info
            attach.finished = RouteHelper.is_attach_finished(route_id, attach.id)
            attach.n_like = len(attach.upvote_list)
            attach.user_upvoted = current_user.id in attach.upvote_list
        return attachs
Beispiel #4
0
    def is_attach_finished(route_id, attach_id):
        assert isinstance(route_id, ObjectId)
        assert isinstance(attach_id, ObjectId)
        assert AttachmentHelper.get(attach_id)
        assert RouteHelper.get(route_id)

        route = RouteHelper.get(route_id)
        entered_route = RouteHelper.get_entered_route(route_id)

        if not entered_route:
            return False

        return attach_id in entered_route.attach_complete
Beispiel #5
0
    def finish_attach(route_id, attach_id):
        assert isinstance(route_id, ObjectId)
        assert isinstance(attach_id, ObjectId)
        assert AttachmentHelper.get(attach_id)
        assert RouteHelper.get(route_id)

        route = RouteHelper.get(route_id)
        entered_route = RouteHelper.get_entered_route(route_id)
        assert entered_route
        if attach_id in route.attached and attach_id not in entered_route.attach_complete:
            entered_route.attach_complete.append(attach_id)

        entered_route.percentage = len(entered_route.attach_complete) / float(route.n_attachment) * 100

        entered_route.save()
Beispiel #6
0
def delete_attach(route_id, attach_id):
    try:
        route_id = ObjectId(route_id)
        attach_id = ObjectId(attach_id)
        assert RouteHelper.get(route_id)
        assert AttachmentHelper.get(attach_id)
        assert not RouteHelper.get(route_id).finished
    except :
        flash('invalid route_id or attach_id')
        return redirect(url_for('home.home'))

    route = RouteHelper.get(route_id)
    
    if route.author != current_user.id:
        flash('you are not author of the route')
        return redirect(url_for('home.home'))

    AttachmentHelper.delete(attach_id)

    flash(u'删除成功')
    return redirect(url_for('route.add_attach_page', route_id=route.id))
Beispiel #7
0
def add_attach_page(route_id):
    try:
        route_id = ObjectId(route_id)
        assert RouteHelper.get(route_id)
        assert not RouteHelper.get(route_id).finished
    except :
        flash('invalid route_id')
        return redirect(url_for('home.home'))

    route = RouteHelper.get(route_id)

    if route.author != current_user.id:
        flash('you are not the author of the route')
        return redirect(url_for('home.home'))

    attachs = []
    for attach_id in route.attached:
        attachment = AttachmentHelper.get(ObjectId(attach_id))
        if attachment.atype != AttachType.TEXT.value:
            attachment.info = json.loads(attachment.info)
        attachs.append(attachment)
    
    return render_template('create-attach.html', route=route, attachs=attachs)