def join(route_id): """Join the Route""" assert isinstance(route_id, ObjectId) route = RouteHelper.get(route_id) assert route assert not EnteredRoute.objects(Q(user=current_user.id) & Q(route=route.id)) assert route.finished new_entered_route = EnteredRoute() new_entered_route.user = current_user.id new_entered_route.route = route_id new_entered_route.save() user = UserHelper.get(current_user.id) if route_id not in user.entered_routes: user.entered_routes.append(route_id) user.save()
def delete_route(route_id): assert isinstance(route_id, ObjectId) route = RouteHelper.get(route_id) assert route for attach_id in route.attached: AttachmentHelper.delete(attach_id) f_cate = Category.objects(id=route.father).first() f_cate.routes.remove(route.id) f_cate.save() enters = EnteredRoute.objects(route=route.id) for entered_route in enters: user = UserHelper.get(entered_route.user) user.entered_routes.remove(route.id) user.save() enters.delete() RateInfo.objects(route=route.id).delete() route.delete()
def route_page(route_id): try: route_id = ObjectId(route_id) except : flash('invalid route_id') return redirect(url_for('home.home')) route = RouteHelper.get(route_id) route.author = UserHelper.get(route.author) route.formatted_time = get_formatted_time(route.create_ts) route.stat = RouteHelper.get_route_stat(route.id) route.cleaned_content = route.content.read().decode('utf-8') # TODO: use bleach to sanitise html route.my_rate = RouteHelper.get_user_rate(route.id) attachs = RouteHelper.get_attachs(route.id) joined = route.id in current_user.entered_routes finished = RouteHelper.is_route_finished(route.id) if not route.finished: return redirect(url_for('route.add_attach_page', route_id=route.id)) return render_template('route-detail.html', route=route, attachs=attachs, joined=joined, finished=finished)