def factory(request): request.validated['tender_src'] = {} root = Root(request) if not request.matchdict or not request.matchdict.get('tender_id'): return root request.validated['tender_id'] = request.matchdict['tender_id'] tender = Tender.load(root.db, request.matchdict['tender_id']) if not tender: request.errors.add('url', 'tender_id', 'Not Found') request.errors.status = 404 raise error_handler(request.errors) tender.__parent__ = root request.validated['tender'] = tender request.validated['tender_status'] = tender.status if request.method != 'GET': request.validated['tender_src'] = tender.serialize('plain') if request.matchdict.get('award_id'): award = get_item(tender, 'award', request, root) if request.matchdict.get('complaint_id'): complaint = get_item(award, 'complaint', request, root) if request.matchdict.get('document_id'): return get_item(complaint, 'document', request, root) else: return complaint elif request.matchdict.get('document_id'): return get_item(award, 'document', request, root) else: return award elif request.matchdict.get('contract_id'): contract = get_item(tender, 'contract', request, root) if request.matchdict.get('document_id'): return get_item(contract, 'document', request, root) else: return contract elif request.matchdict.get('bid_id'): bid = get_item(tender, 'bid', request, root) if request.matchdict.get('document_id'): return get_item(bid, 'document', request, root) else: return bid elif request.matchdict.get('complaint_id'): complaint = get_item(tender, 'complaint', request, root) if request.matchdict.get('document_id'): return get_item(complaint, 'document', request, root) else: return complaint elif request.matchdict.get('cancellation_id'): cancellation = get_item(tender, 'cancellation', request, root) if request.matchdict.get('document_id'): return get_item(cancellation, 'document', request, root) else: return cancellation elif request.matchdict.get('document_id'): return get_item(tender, 'document', request, root) elif request.matchdict.get('question_id'): return get_item(tender, 'question', request, root) elif request.matchdict.get('lot_id'): return get_item(tender, 'lot', request, root) request.validated['id'] = request.matchdict['tender_id'] return tender
def validate_tender_exists(request, key='id'): tender = request.matchdict.get(key) and Tender.load(request.registry.db, request.matchdict[key]) if tender: request.validated[key] = request.matchdict[key] request.validated['tender'] = tender return tender else: request.errors.add('url', key, 'Not Found') request.errors.status = 404
def factory(request): request.validated['tender_src'] = {} root = Root(request) if not request.matchdict or not request.matchdict.get('tender_id'): return root request.validated['tender_id'] = request.matchdict['tender_id'] tender = Tender.load(root.db, request.matchdict['tender_id']) if not tender: request.errors.add('url', 'tender_id', 'Not Found') request.errors.status = 404 raise error_handler(request.errors) tender.__parent__ = root request.validated['tender'] = tender request.validated['tender_status'] = tender.status if request.method != 'GET': request.validated['tender_src'] = tender.serialize('plain') if request.matchdict.get('award_id'): award = get_item(tender, 'award', request, root) if request.matchdict.get('complaint_id'): complaint = get_item(award, 'complaint', request, root) if request.matchdict.get('document_id'): return get_item(complaint, 'document', request, root) else: return complaint elif request.matchdict.get('contract_id'): contract = get_item(award, 'contract', request, root) if request.matchdict.get('document_id'): return get_item(contract, 'document', request, root) else: return contract elif request.matchdict.get('document_id'): return get_item(award, 'document', request, root) else: return award elif request.matchdict.get('bid_id'): bid = get_item(tender, 'bid', request, root) if request.matchdict.get('document_id'): return get_item(bid, 'document', request, root) else: return bid elif request.matchdict.get('complaint_id'): complaint = get_item(tender, 'complaint', request, root) if request.matchdict.get('document_id'): return get_item(complaint, 'document', request, root) else: return complaint elif request.matchdict.get('document_id'): return get_item(tender, 'document', request, root) elif request.matchdict.get('question_id'): return get_item(tender, 'question', request, root) request.validated['id'] = request.matchdict['tender_id'] return tender