コード例 #1
0
ファイル: utils.py プロジェクト: Robinlovelace/wirecloud
def install_resource(file_contents, templateURL, executor_user, packaged):

    if packaged:
        if isinstance(file_contents, basestring):
            file_contents = StringIO(file_contents)
            wgt_file = WgtFile(file_contents)
        elif isinstance(file_contents, WgtFile):
            wgt_file = file_contents
            file_contents = wgt_file.get_underlying_file()
        else:
            raise Exception

        template_contents = wgt_file.get_template()
    else:
        template_contents = file_contents

    template = TemplateParser(template_contents)
    resources = CatalogueResource.objects.filter(vendor=template.get_resource_vendor(), short_name=template.get_resource_name(), version=template.get_resource_version())[:1]

    # Create/recover catalogue resource
    if len(resources) == 1:
        resource = resources[0]
    else:
        if packaged:
            resource = add_widget_from_wgt(file_contents, executor_user, wgt_file=wgt_file)
        else:
            resource = add_resource_from_template(templateURL, template_contents, executor_user)

    return resource
コード例 #2
0
ファイル: views.py プロジェクト: aarranz/wirecloud
    def create(self, request, fromWGT=False):

        try:
            if 'file' in request.FILES:

                request_file = request.FILES['file']
                resource = add_widget_from_wgt(request_file, request.user)

            elif 'template_uri' in request.POST:

                template_uri = request.POST['template_uri']
                downloaded_file = download_http_content(template_uri, user=request.user)
                if request.POST.get('packaged', 'false').lower() == 'true':
                    resource = add_widget_from_wgt(StringIO(downloaded_file), request.user)
                else:
                    resource = add_resource_from_template(template_uri, downloaded_file, request.user)

            else:

                return build_error_response(request, 400, _("Missing parameter: template_uri or file"))

        except TemplateParseException as e:

            return build_error_response(request, 400, unicode(e.msg))

        except IntegrityError:

            return build_error_response(request, 409, _('Resource already exists'))

        resource.users.add(request.user)
        return HttpResponse(resource.json_description, content_type='application/json; charset=UTF-8')
コード例 #3
0
ファイル: tests.py プロジェクト: Robinlovelace/wirecloud
    def test_add_resource_from_template(self):

        widget = add_resource_from_template(self.template_uri, self.template, self.user)

        outputs = WidgetWiring.objects.filter(idResource=widget, wiring='out')
        self.assertTrue(outputs.count() == 1 and outputs[0].friendcode == 'test_friend_code')

        inputs = WidgetWiring.objects.filter(idResource=widget, wiring='in')
        self.assertTrue(inputs.count() == 1 and inputs[0].friendcode == 'test_friend_code')
コード例 #4
0
ファイル: tests.py プロジェクト: Robinlovelace/wirecloud
    def test_publish_empty_mashup_rdf(self):
        template_uri = "http://example.com/path/mashup.rdf"
        template = self.read_template('test-data', 'mt1.rdf')

        mashup = add_resource_from_template(template_uri, template, self.user)
        self.assertEqual(mashup.vendor, 'Wirecloud')
        self.assertEqual(mashup.short_name, 'Test Mashup')
        self.assertEqual(mashup.version, '1')
        self.assertEqual(mashup.description, 'This template defines an empty mashup')
        self.assertEqual(mashup.author, 'test')
コード例 #5
0
ファイル: tests.py プロジェクト: Robinlovelace/wirecloud
    def test_add_resource_from_template_translations(self):

        widget = add_resource_from_template(self.template_uri, self.template, self.user)
        self.changeLanguage('en')
        data = get_resource_data(widget, self.user)

        self.assertEqual(data['displayName'], 'Test Widget')
        self.assertEqual(data['description'], 'Test Widget description')

        self.changeLanguage('es')
        data = get_resource_data(widget, self.user)

        self.assertEqual(data['displayName'], u'Widget de pruebas')
        self.assertEqual(data['description'], u'Descripción del Widget de pruebas')
コード例 #6
0
ファイル: views.py プロジェクト: Robinlovelace/wirecloud
    def create(self, request, fromWGT=False):

        try:
            if 'file' in request.FILES:

                request_file = request.FILES['file']
                resource = add_widget_from_wgt(request_file, request.user)

            elif 'template_uri' in request.POST:

                template_uri = request.POST['template_uri']
                downloaded_file = downloader.download_http_content(template_uri, user=request.user)
                if str(request.POST.get('packaged', 'false')).lower() == 'true':
                    resource = add_widget_from_wgt(StringIO(downloaded_file), request.user)
                else:
                    resource = add_resource_from_template(template_uri, downloaded_file, request.user)

            else:

                return build_error_response(request, 400, _("Missing parameter: template_uri or file"))

        except TemplateParseException, e:

            return build_error_response(request, 400, unicode(e.msg))