コード例 #1
0
def _delete_resource(resource, user):

    # If the resource is not included in any offering delete it
    _remove_usdls(resource, user)

    if not len(resource.offerings):
        _remove_resource(resource)
    else:
        # If the resource is part of an offering check if all the
        # offerings are in uploaded state
        used_offerings = []
        for off in resource.offerings:
            offering = Offering.objects.get(pk=off)

            # Remove resource from uploaded offerings
            if offering.state == 'uploaded':
                offering.resources.remove(ObjectId(resource.pk))
                offering.save()
            else:
                used_offerings.append(off)

        # If the resource is not included in any offering delete it
        if not len(used_offerings):
            _remove_resource(resource)
        else:
            resource.offerings = used_offerings
            resource.state = 'deleted'
            resource.save()

            # Remove published offerings
            for of in used_offerings:
                offering = Offering.objects.get(pk=of)
                if offering.state == 'published':
                    delete_offering(user, offering)
コード例 #2
0
def _delete_resource(resource, user):

    # If the resource is not included in any offering delete it
    _remove_usdls(resource, user)

    if not len(resource.offerings):
        _remove_resource(resource)
    else:
        # If the resource is part of an offering check if all the
        # offerings are in uploaded state
        used_offerings = []
        for off in resource.offerings:
            offering = Offering.objects.get(pk=off)

            # Remove resource from uploaded offerings
            if offering.state == 'uploaded':
                offering.resources.remove(ObjectId(resource.pk))
                offering.save()
            else:
                used_offerings.append(off)

        # If the resource is not included in any offering delete it
        if not len(used_offerings):
            _remove_resource(resource)
        else:
            resource.offerings = used_offerings
            resource.state = 'deleted'
            resource.save()

            # Remove published offerings
            for of in used_offerings:
                offering = Offering.objects.get(pk=of)
                if offering.state == 'published':
                    delete_offering(user, offering)
コード例 #3
0
ファイル: offering_tests.py プロジェクト: Fiware/apps.Wstore
    def test_delete_offering(
        self, name, offering_name, deleted=False, del_resources=False, side_effect=None, err_type=None, err_msg=None
    ):

        # Get offering
        offering = Offering.objects.get(name=offering_name)
        tagged = len(offering.tags) > 0
        market_pub = len(offering.marketplaces) > 0

        pk = offering.pk
        if side_effect:
            side_effect(self, offering)

        # Call the tested method
        error = None
        try:
            offerings_management.delete_offering(self._user, offering)
        except Exception as e:
            error = e

        if not err_type:
            # Not error expected
            self.assertEquals(error, None)

            # Assert no included in the context lists
            self.assertFalse(offering.pk in self.context_obj.newest)
            self.assertFalse(offering.pk in self.context_obj.top_rated)

            if offering.state == "published":
                offerings_management.unreg_repository_adaptor_factory.assert_called_once_with(offering.description_url)

                self._repo_mock.set_credentials.assert_called_once_with(self._user.userprofile.access_token)
                self._repo_mock.delete.assert_called_once_with()

            if deleted:
                # Check index calls if the offering must have been deleted
                self.assertEquals(len(Offering.objects.filter(name=offering_name)), 0)
                self.se_object.remove_index.assert_called_with(offering)
                if tagged:
                    self.tag_mock.delete_tag.assert_called_with(offering)
                else:
                    self.assertEquals(self.tag_mock.delete_tag.call_count, 0)
                if del_resources:
                    self.res_obj.offerings.remove.assert_called_with(pk)
            else:
                offering = Offering.objects.get(name=offering_name)
                self.assertEqual(offering.state, "deleted")
                self.se_object.update_index.assert_called_with(offering)

            if market_pub:
                market = Marketplace.objects.get(name="test_marketplace")
                offerings_management.marketadaptor_factory.assert_called_once_with(market, self._user)

                self._adaptor_obj.delete_service.assert_called_once_with(offering_name)
        else:
            self.assertTrue(isinstance(error, err_type))
            self.assertEquals(unicode(error), err_msg)
コード例 #4
0
    def test_delete_offering(self, name, offering_name, deleted=False, del_resources=False, side_effect=None, err_type=None, err_msg=None):

        # Get offering
        offering = Offering.objects.get(name=offering_name)
        tagged = len(offering.tags) > 0
        market_pub = len(offering.marketplaces) > 0

        pk = offering.pk
        if side_effect:
            side_effect(self, offering)

        # Call the tested method
        error = None
        try:
            offerings_management.delete_offering(self._user, offering)
        except Exception as e:
            error = e

        if not err_type:
            # Not error expected
            self.assertEquals(error, None)

            # Assert no included in the context lists
            self.assertFalse(offering.pk in self.context_obj.newest)
            self.assertFalse(offering.pk in self.context_obj.top_rated)

            if offering.state == 'published':
                offerings_management.unreg_repository_adaptor_factory.assert_called_once_with(offering.description_url)

                self._repo_mock.set_credentials.assert_called_once_with(self._user.userprofile.access_token)
                self._repo_mock.delete.assert_called_once_with()

            if deleted:
                # Check index calls if the offering must have been deleted
                self.assertEquals(len(Offering.objects.filter(name=offering_name)), 0)
                self.se_object.remove_index.assert_called_with(offering)
                if tagged:
                    self.tag_mock.delete_tag.assert_called_with(offering)
                else:
                    self.assertEquals(self.tag_mock.delete_tag.call_count, 0)
                if del_resources:
                    self.res_obj.offerings.remove.assert_called_with(pk)
            else:
                offering = Offering.objects.get(name=offering_name)
                self.assertEqual(offering.state, 'deleted')
                self.se_object.update_index.assert_called_with(offering)

            if market_pub:
                market = Marketplace.objects.get(name="test_marketplace")
                offerings_management.marketadaptor_factory.assert_called_once_with(market, self._user)

                self._adaptor_obj.delete_service.assert_called_once_with(offering_name)
        else:
            self.assertTrue(isinstance(error, err_type))
            self.assertEquals(unicode(error), err_msg)
コード例 #5
0
ファイル: offering_tests.py プロジェクト: huygun/wstore
    def test_delete_uploaded_offering(self):
        offering = Offering.objects.get(name='test_offering')
        # Mock os
        offerings_management.os = MagicMock()
        offerings_management.delete_offering(offering)
        error = False
        try:
            offering = Offering.objects.get(name='test_offering')
        except:
            error = True

        self.assertTrue(error)
コード例 #6
0
ファイル: views.py プロジェクト: huygun/wstore
    def delete(self, request, organization, name, version):
        # If the offering has been purchased it is not deleted
        # it is marked as deleted in order to allow customers that
        # have purchased the offering to install it if needed

        # Get the offering
        try:
            org = Organization.objects.get(name=organization)
            offering = Offering.objects.get(name=name, owner_organization=org, version=version)
        except:
            return build_response(request, 404, 'Not found')

        # Check if the user can delete the offering
        if not offering.is_owner(request.user) and request.user.pk not in org.managers:
            return build_response(request, 403, 'Forbidden')

        # Delete the offering
        try:
            delete_offering(offering)
        except Exception, e:
            return build_response(request, 400, e.message)
コード例 #7
0
ファイル: views.py プロジェクト: perezdf/wstore
    def delete(self, request, organization, name, version):
        # If the offering has been purchased it is not deleted
        # it is marked as deleted in order to allow customers that
        # have purchased the offering to install it if needed

        # Get the offering
        try:
            offering, org = _get_offering(organization, name, version)
        except ObjectDoesNotExist as e:
            return build_response(request, 404, unicode(e))
        except Exception as e:
            return build_response(request, 400, unicode(e))

        # Check if the user can delete the offering
        if request.user.userprofile.current_organization != org\
        or (not offering.is_owner(request.user) and not request.user.pk in org.managers):
            return build_response(request, 403, 'Forbidden')

        # Delete the offering
        try:
            delete_offering(offering)
        except Exception, e:
            return build_response(request, 400, unicode(e))
コード例 #8
0
    def delete(self, request, organization, name, version):
        # If the offering has been purchased it is not deleted
        # it is marked as deleted in order to allow customers that
        # have purchased the offering to install it if needed

        # Get the offering
        try:
            offering, org = _get_offering(organization, name, version)
        except ObjectDoesNotExist as e:
            return build_response(request, 404, unicode(e))
        except Exception as e:
            return build_response(request, 400, unicode(e))

        # Check if the user can delete the offering
        if request.user.userprofile.current_organization != org\
        or (not offering.is_owner(request.user) and not request.user.pk in org.managers):
            return build_response(request, 403, 'Forbidden')

        # Delete the offering
        try:
            delete_offering(request.user, offering)
        except Exception, e:
            return build_response(request, 400, unicode(e))
コード例 #9
0
ファイル: offering_tests.py プロジェクト: huygun/wstore
 def test_delete_published_offering_marketplace(self):
     offering = Offering.objects.get(name='test_offering3')
     offerings_management.delete_offering(offering)
     offering = Offering.objects.get(name='test_offering3')
     self.assertEqual(offering.state, 'deleted')