def planning_factory(request): request.validated['plan_src'] = {} root = PlanRoot(request) # query containt param plan_id (GET request) plan_id = request.matchdict.get('plan_id') if request.matchdict else None if plan_id: # fill id of Plan request.validated['plan_id'] = plan_id # find entry in planning database by ID plan = Plan.load(root.db_plan, plan_id) # plan not found if not plan: request.errors.add('url', 'plan_id', 'Not Found') request.errors.status = 404 raise error_handler(request.errors) plan.__parent__ = root request.validated['plan'] = plan if request.method != 'GET': request.validated['plan_src'] = plan.serialize('plain') request.validated['id'] = plan_id return plan return None