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
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')
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')
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')
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')
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))