def test_migrate_from0to1(self): set_db_schema_version(self.db, 0) u = Plan(test_plan_data) u.planID = "UA-X" u.store(self.db) data = self.db.get(u.id) data["documents"] = [{ "id": "ebcb5dd7f7384b0fbfbed2dc4252fa6e", "title": "name.txt", "documentOf": "tender", "url": "/tenders/{}/documents/ebcb5dd7f7384b0fbfbed2dc4252fa6e?download=10367238a2964ee18513f209d9b6d1d3" .format(u.id), "datePublished": "2016-06-01T00:00:00+03:00", "dateModified": "2016-06-01T00:00:00+03:00", "format": "text/plain", }] _id, _rev = self.db.save(data) self.app.app.registry.docservice_url = 'http://localhost' migrate_data(self.app.app.registry, 1) migrated_item = self.db.get(u.id) self.assertIn('http://localhost/get/10367238a2964ee18513f209d9b6d1d3?', migrated_item['documents'][0]['url']) self.assertIn( 'Prefix={}%2Febcb5dd7f7384b0fbfbed2dc4252fa6e'.format(u.id), migrated_item['documents'][0]['url']) self.assertIn('KeyID=', migrated_item['documents'][0]['url']) self.assertIn('Signature=', migrated_item['documents'][0]['url'])
def test_simple_add_plan(self): u = Plan(test_plan_data) u.planID = "UA-P-X" assert u.id is None assert u.rev is None u.store(self.db) assert u.id is not None assert u.rev is not None fromdb = self.db.get(u.id) assert u.planID == fromdb['planID'] assert u.doc_type == "Plan" u.delete_instance(self.db)
def test_simple_add_plan(self): u = Plan(test_plan_data) u.planID = "UA-P-X" assert u.id is None assert u.rev is None u.store(self.db) assert u.id is not None assert u.rev is not None fromdb = self.db.get(u.id) assert u.planID == fromdb["planID"] assert u.doc_type == "Plan" u.delete_instance(self.db)
def collection_post(self): """This API request is targeted to creating new Plan by procuring organizations. Creating new Plan ------------------- Example request to create plan: .. sourcecode:: http POST /plans HTTP/1.1 Host: example.com Accept: application/json { "data": { "tender": { "procurementMethod": "допорогові закупівлі", "tenderPeriod": { "startDate": "2015-05-09T23:11:39.720908+03:00" } }, "items": [ { "deliveryDate": { "endDate": "2015-05-11T23:11:39.721063+03:00" }, "additionalClassifications": [ { "scheme": "ДКПП", "id": "28.29.39-10.00", "description": "Прилади контролювання маси та прилади контрольні автоматичні з максимальною масою зважування не більше ніж 5000 кг" } ], "unit": { "code": "KGM", "name": "кг" }, "classification": { "scheme": "CPV", "description": "Роботи з будування пневматичних будівель", "id": "45217000-1" }, "quantity": 760 } ], "procuringEntity": { "identifier": { "scheme": "UA-EDR", "id": "111983", "legalName": "ДП Державне Уравління Справами" }, "name": "ДУС" }, "budget": { "project": { "name": "proj_name", "id": "proj_id" }, "amount": 10000, "amountNet": 12222, "id": "budget_id", "description": "budget_description" } } } This is what one should expect in response: .. sourcecode:: http HTTP/1.1 201 Created Location: http://localhost/api/0.10/plans/84582807b5654bee9e216adb05e57d39 Content-Type: application/json { "access": { "token": "174fd98e4e7347eb863f125c9e561b27" }, "data": { "tender": { "procurementMethod": "допорогові закупівлі", "tenderPeriod": { "startDate": "2015-05-09T23:11:39.720908+03:00" } }, "items": [ { "classification": { "scheme": "CPV", "description": "Роботи з будування пневматичних будівель", "id": "45217000-1" }, "additionalClassifications": [ { "scheme": "ДКПП", "id": "28.29.39-10.00", "description": "Прилади контролювання маси та прилади контрольні автоматичні з максимальною масою зважування не більше ніж 5000 кг" } ], "deliveryDate": { "endDate": "2015-05-11T23:11:39.721063+03:00" }, "id": "84582807b5654bee9e216adb05e57d39", "unit": { "code": "KGM", "name": "кг" }, "quantity": 760 } ], "procuringEntity": { "identifier": { "scheme": "UA-EDR", "id": "111983", "legalName": "ДП Державне Уравління Справами" }, "name": "ДУС" }, "budget": { "project": { "id": "proj_id", "name": "proj_name" }, "amount": 10000, "amountNet": 12222, "id": "budget_id", "description": "budget_description" } } } """ plan_data = self.request.validated['data'] plan_id = generate_id() plan = Plan(plan_data) plan.__parent__ = self.request.context plan.id = plan_id plan.planID = generate_plan_id(get_now(), self.db_plan, self.server_id) set_ownership(plan, self.request) self.request.validated['plan'] = plan self.request.validated['plan_src'] = {} if save_plan(self.request): LOGGER.info('Created plan {} ({})'.format(plan_id, plan.planID), extra=context_unpack(self.request, {'MESSAGE_ID': 'plan_create'}, { 'plan_id': plan_id, 'planID': plan.planID })) self.request.response.status = 201 self.request.response.headers['Location'] = self.request.route_url( 'Plan', plan_id=plan_id) return { 'data': plan.serialize('create'), 'access': { 'token': plan.owner_token } }
def collection_post(self): """This API request is targeted to creating new Plan by procuring organizations. Creating new Plan ------------------- Example request to create plan: .. sourcecode:: http POST /plans HTTP/1.1 Host: example.com Accept: application/json { "data": { "tender": { "procurementMethod": "допорогові закупівлі", "tenderPeriod": { "startDate": "2015-05-09T23:11:39.720908+03:00" } }, "items": [ { "deliveryDate": { "endDate": "2015-05-11T23:11:39.721063+03:00" }, "additionalClassifications": [ { "scheme": "ДКПП", "id": "28.29.39-10.00", "description": "Прилади контролювання маси та прилади контрольні автоматичні з максимальною масою зважування не більше ніж 5000 кг" } ], "unit": { "code": "KGM", "name": "кг" }, "classification": { "scheme": "CPV", "description": "Роботи з будування пневматичних будівель", "id": "45217000-1" }, "quantity": 760 } ], "procuringEntity": { "identifier": { "scheme": "UA-EDR", "id": "111983", "legalName": "ДП Державне Уравління Справами" }, "name": "ДУС" }, "budget": { "project": { "name": "proj_name", "id": "proj_id" }, "amount": 10000, "amountNet": 12222, "id": "budget_id", "description": "budget_description" } } } This is what one should expect in response: .. sourcecode:: http HTTP/1.1 201 Created Location: http://localhost/api/0.10/plans/84582807b5654bee9e216adb05e57d39 Content-Type: application/json { "access": { "token": "174fd98e4e7347eb863f125c9e561b27" }, "data": { "tender": { "procurementMethod": "допорогові закупівлі", "tenderPeriod": { "startDate": "2015-05-09T23:11:39.720908+03:00" } }, "items": [ { "classification": { "scheme": "CPV", "description": "Роботи з будування пневматичних будівель", "id": "45217000-1" }, "additionalClassifications": [ { "scheme": "ДКПП", "id": "28.29.39-10.00", "description": "Прилади контролювання маси та прилади контрольні автоматичні з максимальною масою зважування не більше ніж 5000 кг" } ], "deliveryDate": { "endDate": "2015-05-11T23:11:39.721063+03:00" }, "id": "84582807b5654bee9e216adb05e57d39", "unit": { "code": "KGM", "name": "кг" }, "quantity": 760 } ], "procuringEntity": { "identifier": { "scheme": "UA-EDR", "id": "111983", "legalName": "ДП Державне Уравління Справами" }, "name": "ДУС" }, "budget": { "project": { "id": "proj_id", "name": "proj_name" }, "amount": 10000, "amountNet": 12222, "id": "budget_id", "description": "budget_description" } } } """ plan_data = self.request.validated['data'] plan_id = generate_id() plan = Plan(plan_data) plan.__parent__ = self.request.context plan.id = plan_id plan.planID = generate_plan_id(get_now(), self.db_plan, self.server_id) set_ownership(plan, self.request) self.request.validated['plan'] = plan self.request.validated['plan_src'] = {} if save_plan(self.request): LOGGER.info('Created plan {} ({})'.format(plan_id, plan.planID), extra=context_unpack(self.request, {'MESSAGE_ID': 'plan_create'}, {'plan_id': plan_id, 'planID': plan.planID})) self.request.response.status = 201 self.request.response.headers[ 'Location'] = self.request.route_url('Plan', plan_id=plan_id) return { 'data': plan.serialize('create'), 'access': { 'token': plan.owner_token } }