def post(self): """This API request is targeted to creating new Lot.""" lot_id = generate_id() lot = self.request.validated['lot'] lot.id = lot_id if not lot.get('lotID'): lot.lotID = generate_lot_id(get_now(), self.db, self.server_id) self.request.registry.notify(LotInitializeEvent(lot)) if self.request.json_body['data'].get('status') == 'draft': lot.status = 'draft' set_ownership(lot, self.request) # rewrite as subscriber? self.request.validated['lot'] = lot self.request.validated['lot_src'] = {} if save_lot(self.request): self.LOGGER.info('Created lot {} ({})'.format(lot_id, lot.lotID), extra=context_unpack(self.request, {'MESSAGE_ID': 'lot_create'}, { 'lot_id': lot_id, 'lotID': lot.lotID })) self.request.response.status = 201 self.request.response.headers['Location'] = self.request.route_url( '{}:Lot'.format(lot.lotType), lot_id=lot_id) return { 'data': lot.serialize(lot.status), 'access': { 'token': lot.owner_token } }
def test_set_ownership(self, mock_generate_id): request = mock.MagicMock() mock_generate_id.return_value = '1234567890abcdef1234567890abcdef' # '0f20c55ac78f7336576260487b865a89a72b396d761ac69d00902cf5bd021d1c51b17191098dc9626f4582ab125efd9053fff1c8b58782e2fe70f7cb4b7bd7ee' class Item(object): transfer_token = None def __init__(self, owner=None): self.owner = owner def get(self, _): if self.owner: return self.owner else: return self.owner item = Item() expected_result = {'token': '1234567890abcdef1234567890abcdef'} result = set_ownership(item, request) self.assertEqual(result, expected_result) self.assertEqual( item.owner_token, '0f20c55ac78f7336576260487b865a89a72b396d761ac69d00902cf5bd021d1c51b17191098dc9626f4582ab125efd9053fff1c8b58782e2fe70f7cb4b7bd7ee' )
def post(self): """This API request is targeted to creating new Lot.""" lot_id = generate_id() lot = self.request.validated['lot'] lot.id = lot_id if not lot.get('lotID'): lot.lotID = generate_lot_id(get_now(), self.db, self.server_id) self.request.registry.notify(LotInitializeEvent(lot)) default_status = type(lot).fields['status'].default status = self.request.json_body['data'].get('status', default_status) if status == 'draft': lot.status = status else: self.request.errors.add('body', 'status', 'You can create only in draft status') self.request.errors.status = 403 return acc = set_ownership(lot, self.request) self.request.validated['lot'] = lot self.request.validated['lot_src'] = {} if save_lot(self.request): self.LOGGER.info('Created lot {} ({})'.format(lot_id, lot.lotID), extra=context_unpack(self.request, {'MESSAGE_ID': 'lot_create'}, { 'lot_id': lot_id, 'lotID': lot.lotID })) self.request.response.status = 201 self.request.response.headers['Location'] = self.request.route_url( '{}:Lot'.format(lot.lotType), lot_id=lot_id) return {'data': lot.serialize(lot.status), 'access': acc}
def post(self): """This API request is targeted to creating new Asset.""" asset_id = generate_id() asset = self.request.validated['asset'] asset.id = asset_id if not asset.get('assetID'): asset.assetID = generate_asset_id(get_now(), self.db, self.server_id) self.request.registry.notify(AssetInitializeEvent(asset)) if self.request.json_body['data'].get('status') == 'draft': asset.status = 'draft' acc = set_ownership(asset, self.request) self.request.validated['asset'] = asset self.request.validated['asset_src'] = {} if save_asset(self.request): self.LOGGER.info( 'Created asset {} ({})'.format(asset_id, asset.assetID), extra=context_unpack(self.request, {'MESSAGE_ID': 'asset_create'}, { 'asset_id': asset_id, 'assetID': asset.assetID })) self.request.response.status = 201 self.request.response.headers['Location'] = self.request.route_url( '{}:Asset'.format(asset.assetType), asset_id=asset_id) return {'data': asset.serialize(asset.status), 'access': acc}