def is_route_finished(route_id): assert isinstance(route_id, ObjectId) 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 entered_route.percentage == 100
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 get_user_routes(finished): assert isinstance(finished, bool) if finished: entered_routes = list(EnteredRoute.objects(Q(user=current_user.id) & Q(percentage=100))) else: entered_routes = list(EnteredRoute.objects(Q(user=current_user.id) & Q(percentage__ne=100))) routes = [] for entered in entered_routes: routes.append(RouteHelper.get(entered.route)) if not finished: for route in routes: route.percentage = RouteHelper.get_entered_route(route.id).percentage return routes