Пример #1
0
    def _do_update_with_patch(self, session, order, resource,
                              expected_version):
        self._validate_patch_update(order, resource, expected_version)
        order.lastModified = clock.CLOCK.now()
        order.logPosition = LogPosition()
        order.version += 1
        if resource['status'].lower() == 'cancelled':
            order.amendedReason = resource['amendedReason']
            order.cancelledUsername = resource['cancelledInfo']['author'][
                'value']
            order.cancelledSiteId = get_site(resource['cancelledInfo'])
            order.cancelledTime = clock.CLOCK.now()
            order.orderStatus = BiobankOrderStatus.CANCELLED
        elif resource['status'].lower() == 'restored':
            order.amendedReason = resource['amendedReason']
            order.restoredUsername = resource['restoredInfo']['author'][
                'value']
            order.restoredSiteId = get_site(resource['restoredInfo'])
            order.restoredTime = clock.CLOCK.now()
            order.orderStatus = BiobankOrderStatus.UNSET
        else:
            raise BadRequest(
                'status must be restored or cancelled for patch request.')

        super(BiobankOrderDao, self)._do_update(session, order, resource)
        self._update_history(session, order)
        self._refresh_participant_summary(session, order)
        return order
Пример #2
0
    def _do_update(self, session, order, existing_obj):
        order.lastModified = clock.CLOCK.now()
        order.biobankOrderId = existing_obj.biobankOrderId
        order.orderStatus = BiobankOrderStatus.AMENDED
        if hasattr(existing_obj, 'amendedInfo'
                   ) and existing_obj.amendedInfo.get('author') is not None:
            order.amendedUsername = existing_obj.amendedInfo.get('author').get(
                'value')
        if hasattr(existing_obj, 'amendedInfo'):
            order.amendedSiteId = get_site(existing_obj.amendedInfo)
        order.amendedTime = clock.CLOCK.now()
        order.logPosition = LogPosition()
        order.version += 1
        # Ensure that if an order was previously cancelled/restored those columns are removed.
        self._clear_cancelled_and_restored_fields(order)

        super(BiobankOrderDao, self)._do_update(session, order, existing_obj)
        session.add(order.logPosition)

        self._refresh_participant_summary(session, order)
        self._update_history(session, order)