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'))
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})
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
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
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()
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))
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)