예제 #1
0
def undelete_data_package(publisher, package):
    """
    DPR data package un-delete operation.
    This API is responsible for un-mark the mark for delete of data package
    ---
    tags:
        - package
    parameters:
        - in: path
          name: publisher
          type: string
          required: true
          description: publisher name
        - in: path
          name: package
          type: string
          required: true
          description: package name
        - in: header
          name: Authorization
          type: string
          required: true
          description: >
            Jwt token in format of "bearer {token}.
            The token can be generated from /api/auth/token"
    responses:
        500:
            description: Internal Server Error
        200:
            description: Success Message
            schema:
                id: put_package_success
                properties:
                    status:
                        type: string
                        default: OK

    """
    try:
        bitstore = BitStore(publisher=publisher, package=package)
        status_acl = bitstore.change_acl('public-read')
        status_db = Package.change_status(publisher, package,
                                          PackageStateEnum.active)
        if status_acl and status_db:
            return jsonify({"status": "OK"}), 200
        if not status_acl:
            raise Exception('Failed to change acl')
        if not status_db:
            raise Exception('Failed to change status')
    except Exception as e:
        app.logger.error(e)
        return handle_error('GENERIC_ERROR', e.message, 500)
예제 #2
0
    def test_change_status(self):
        data = Package.query.join(Publisher). \
            filter(Publisher.name == self.publisher_one,
                   Package.name == self.package_one).one()
        self.assertEqual(PackageStateEnum.active, data.status)

        Package.change_status(self.publisher_one, self.package_one,
                              PackageStateEnum.deleted)

        data = Package.query.join(Publisher). \
            filter(Publisher.name == self.publisher_one,
                   Package.name == self.package_one).one()
        self.assertEqual(PackageStateEnum.deleted, data.status)

        Package.change_status(self.publisher_one,
                              self.package_one,
                              status=PackageStateEnum.active)

        data = Package.query.join(Publisher). \
            filter(Publisher.name == self.publisher_one,
                   Package.name == self.package_one).one()
        self.assertEqual(PackageStateEnum.active, data.status)
예제 #3
0
 def test_return_false_if_failed_to_change_status(self):
     status = Package.change_status(self.publisher_one,
                                    'fake_package',
                                    status='active')
     self.assertFalse(status)