Esempio n. 1
0
 def change_lot(self, request):
     self._validate(request, self.change_validation)
     if request.authenticated_role == 'chronograph':
         apply_patch(request, save=False, src=request.validated['lot_src'])
         check_status(request)
         save_lot(request)
     elif request.validated['data'].get('status') == 'pending' and not request.context.rectificationPeriod:
         self._set_rectificationPeriod(request)
Esempio n. 2
0
    def change_lot(self, request):
        self._validate(request, self.change_validation)
        if request.authenticated_role == 'chronograph':
            apply_patch(request, save=False, src=request.validated['lot_src'])
            check_status(request)
            save_lot(request)
        elif request.validated['data'].get(
                'status'
        ) == 'pending' and not request.context.rectificationPeriod:
            self._set_rectificationPeriod(request)

        if request.authenticated_role in ('concierge', 'Administrator'):
            process_lot_status_change(request)
            request.validated['lot_src'] = self.context.serialize('plain')
Esempio n. 3
0
    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}
Esempio n. 4
0
    def test_when_get_revision_changes_return_none(self, mocked_set_modetest_titles, mocked_store_lot, mocked_get_revision_changes):
        self.mocked_lot.mode = u'notTest'
        mocked_get_revision_changes.side_effect = iter([None])
        self.mocked_lot.serialize.side_effect = iter([lot_serialize])
        self.mocked_request.validated = {'lot': self.mocked_lot, 'lot_src': self.lot_src}
        save_lot(self.mocked_request)

        assert mocked_set_modetest_titles.call_count == 0

        assert mocked_get_revision_changes.call_count == 1
        mocked_get_revision_changes.assert_called_with(lot_serialize, self.lot_src)

        assert self.mocked_lot.serialize.call_count == 1
        self.mocked_lot.serialize.assert_called_with('plain')

        assert mocked_store_lot.call_count == 0
Esempio n. 5
0
 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
             }
         }
Esempio n. 6
0
    def test_mode_equal_test(self, mocked_set_modetest_titles, mocked_store_lot, mocked_get_revision_changes):
        self.mocked_lot.mode = u'test'
        mocked_get_revision_changes.side_effect = iter([self.patch])
        self.mocked_lot.serialize.side_effect = iter([lot_serialize])
        self.mocked_request.validated = {'lot': self.mocked_lot, 'lot_src': self.lot_src}
        save_lot(self.mocked_request)

        assert mocked_set_modetest_titles.call_count == 1
        mocked_set_modetest_titles.assert_called_with(self.mocked_lot)

        assert mocked_get_revision_changes.call_count == 1
        mocked_get_revision_changes.assert_called_with(lot_serialize, self.lot_src)

        assert self.mocked_lot.serialize.call_count == 1
        self.mocked_lot.serialize.assert_called_with('plain')

        assert mocked_store_lot.call_count == 1
        mocked_store_lot.assert_called_with(self.mocked_lot, self.patch, self.mocked_request)
Esempio n. 7
0
 def put(self):
     """Auction Document Update"""
     document = self.request.validated['document']
     self.request.validated['auction'].documents.append(document)
     if save_lot(self.request):
         self.LOGGER.info(
             'Updated auction document {}'.format(self.request.context.id),
             extra=context_unpack(self.request,
                                  {'MESSAGE_ID': 'auction_document_put'}))
         return {'data': document.serialize("view")}
 def patch(self):
     """Lot Contract Update"""
     apply_patch(self.request, save=False, src=self.request.context.serialize())
     if self.request.authenticated_role == 'caravan':
         process_caravan_contract_report_result(self.request)
     if save_lot(self.request):
         self.LOGGER.info(
             'Updated lot contract {}'.format(self.request.context.id),
             extra=context_unpack(self.request, {'MESSAGE_ID': 'lot_contract_patch'})
         )
         return {'data': self.request.context.serialize("view")}
    def post(self):
        lot = self.request.validated['lot']
        location = self.request.route_path('Lot', lot_id=lot.id)
        location = location[len(ROUTE_PREFIX):]  # strips /api/<version>
        ownership_changed = self.request.change_ownership(location)

        if ownership_changed and save_lot(self.request):
            self.LOGGER.info('Updated ownership of lot {}'.format(lot.id),
                             extra=context_unpack(
                                 self.request,
                                 {'MESSAGE_ID': 'auction_ownership_update'}))

            return {'data': self.request.context.serialize('view')}
Esempio n. 10
0
    def patch(self):
        """Lot Auction Update"""
        apply_patch(self.request, save=False, src=self.request.context.serialize())

        if self.request.authenticated_role == 'convoy':
            process_convoy_auction_report_result(self.request)
        elif self.request.authenticated_role == 'concierge':
            process_concierge_auction_status_change(self.request)

        if save_lot(self.request):
            self.LOGGER.info(
                'Updated lot auction {}'.format(self.request.context.id),
                extra=context_unpack(self.request, {'MESSAGE_ID': 'lot_auction_patch'})
            )
            return {'data': self.request.context.serialize("view")}
Esempio n. 11
0
 def collection_post(self):
     """Lot Item Upload"""
     item = self.request.validated['item']
     self.context.items.append(item)
     if save_lot(self.request):
         self.LOGGER.info(
             'Created lot item {}'.format(item.id),
             extra=context_unpack(self.request,
                                  {'MESSAGE_ID': 'lot_item_create'},
                                  {'item_id': item.id}))
         self.request.response.status = 201
         item_route = self.request.matched_route.name.replace(
             "collection_", "")
         self.request.response.headers[
             'Location'] = self.request.current_route_url(
                 _route_name=item_route, item_id=item.id, _query={})
         return {'data': item.serialize("view")}
Esempio n. 12
0
 def collection_post(self):
     """Lot Document Upload"""
     document = self.request.validated['document']
     document.author = self.request.authenticated_role
     self.context.documents.append(document)
     if save_lot(self.request):
         self.LOGGER.info(
             'Created lot document {}'.format(document.id),
             extra=context_unpack(self.request, {'MESSAGE_ID': 'lot_document_create'}, {'document_id': document.id})
         )
         self.request.response.status = 201
         document_route = self.request.matched_route.name.replace("collection_", "")
         self.request.response.headers['Location'] = self.request.current_route_url(
                                                         _route_name=document_route,
                                                         document_id=document.id,
                                                         _query={}
                                                         )
         return {'data': document.serialize("view")}
Esempio n. 13
0
 def collection_post(self):
     """Lot Decision Upload"""
     decision = self.request.validated['decision']
     self.context.decisions.append(decision)
     if save_lot(self.request):
         self.LOGGER.info(
             'Created lot decision {}'.format(decision.id),
             extra=context_unpack(self.request,
                                  {'MESSAGE_ID': 'lot_decision_create'},
                                  {'decision_id': decision.id}))
         self.request.response.status = 201
         decision_route = self.request.matched_route.name.replace(
             "collection_", "")
         self.request.response.headers[
             'Location'] = self.request.current_route_url(
                 _route_name=decision_route,
                 decision_id=decision.id,
                 _query={})
         return {'data': decision.serialize("view")}
Esempio n. 14
0
 def delete(self, request):
     self.lot.relatedProcesses.remove(request.validated['relatedProcess'])
     self.lot.modified = False
     return save_lot(request)
Esempio n. 15
0
 def create(self, request):
     self.lot.relatedProcesses.append(request.validated['relatedProcess'])
     return save_lot(request)