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 setUpClass(cls): from django.conf import settings WirecloudRemoteTestCase.setUpClass.im_func(cls) cls.old_LANGUAGES = settings.LANGUAGES cls.old_LANGUAGE_CODE = settings.LANGUAGE_CODE cls.old_DEFAULT_LANGUAGE = settings.DEFAULT_LANGUAGE settings.LANGUAGES = (('en', 'English'),) settings.LANGUAGE_CODE = 'en' settings.DEFAULT_LANGUAGE = 'en' # Mock network requests cls.network = FakeNetwork(getattr(cls, 'servers', { 'http': { 'localhost:8001': LocalFileSystemServer(os.path.join(os.path.dirname(__file__), '..', 'test-data', 'src')), 'macs.example.com': LocalFileSystemServer(os.path.join(os.path.dirname(__file__), '..', 'test-data')), }, })) cls.network.mock_requests() cls.network.mock_downloader() cls._original_proxy_do_request_function = WIRECLOUD_PROXY._do_request WIRECLOUD_PROXY._do_request = ProxyFakeDownloader() WIRECLOUD_PROXY._do_request.set_response('http://example.com/success.html', 'remote makerequest succeded') # catalogue deployer cls.old_catalogue_deployer = catalogue.wgt_deployer cls.catalogue_tmp_dir_backup = mkdtemp() cls.catalogue_tmp_dir = mkdtemp() catalogue.wgt_deployer = WgtDeployer(cls.catalogue_tmp_dir) # showcase deployer cls.old_deployer = showcase.wgt_deployer cls.localcatalogue_tmp_dir_backup = mkdtemp() cls.tmp_dir = mkdtemp() showcase.wgt_deployer = WgtDeployer(cls.tmp_dir) # deploy resource files operator_wgt_file = open(os.path.join(cls.shared_test_data_dir, 'Wirecloud_TestOperator_1.0.zip'), 'rb') operator_wgt = WgtFile(operator_wgt_file) catalogue.add_widget_from_wgt(operator_wgt_file, None, wgt_file=operator_wgt, deploy_only=True) showcase.wgt_deployer.deploy(operator_wgt) operator_wgt_file.close() widget_wgt_file = open(os.path.join(cls.shared_test_data_dir, 'Wirecloud_Test_1.0.wgt')) widget_wgt = WgtFile(widget_wgt_file) catalogue.add_widget_from_wgt(widget_wgt_file, None, wgt_file=widget_wgt, deploy_only=True) showcase.wgt_deployer.deploy(widget_wgt) widget_wgt_file.close() restoretree(cls.tmp_dir, cls.localcatalogue_tmp_dir_backup) restoretree(cls.catalogue_tmp_dir, cls.catalogue_tmp_dir_backup) LiveServerTestCase.setUpClass.im_func(cls) cls.network._servers['http'][cls.server_thread.host + ':' + str(cls.server_thread.port)] = LiveServer()
def setUpClass(cls): from django.conf import settings WirecloudRemoteTestCase.setUpClass.im_func(cls) cls.old_LANGUAGES = settings.LANGUAGES cls.old_LANGUAGE_CODE = settings.LANGUAGE_CODE cls.old_DEFAULT_LANGUAGE = settings.DEFAULT_LANGUAGE settings.LANGUAGES = (('en', 'English'),) settings.LANGUAGE_CODE = 'en' settings.DEFAULT_LANGUAGE = 'en' # downloader cls._original_download_function = staticmethod(downloader.download_http_content) downloader.download_http_content = LocalDownloader(getattr(cls, 'servers', { 'http': { 'localhost:8001': os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'test-data', 'src')), }, })) cls._original_proxy_do_request_function = WIRECLOUD_PROXY._do_request WIRECLOUD_PROXY._do_request = ProxyFakeDownloader() WIRECLOUD_PROXY._do_request.set_response('http://example.com/success.html', 'remote makerequest succeded') # catalogue deployer cls.old_catalogue_deployer = catalogue.wgt_deployer cls.catalogue_tmp_dir_backup = mkdtemp() cls.catalogue_tmp_dir = mkdtemp() catalogue.wgt_deployer = WgtDeployer(cls.catalogue_tmp_dir) # showcase deployer cls.old_deployer = showcase.wgt_deployer cls.localcatalogue_tmp_dir_backup = mkdtemp() cls.tmp_dir = mkdtemp() showcase.wgt_deployer = WgtDeployer(cls.tmp_dir) # deploy resource files operator_wgt_file = open(os.path.join(cls.shared_test_data_dir, 'Wirecloud_TestOperator_1.0.zip'), 'rb') operator_wgt = WgtFile(operator_wgt_file) catalogue.add_widget_from_wgt(operator_wgt_file, None, wgt_file=operator_wgt, deploy_only=True) operator_wgt_file.close() widget_wgt_file = open(os.path.join(cls.shared_test_data_dir, 'Wirecloud_Test_1.0.wgt')) widget_wgt = WgtFile(widget_wgt_file) catalogue.add_widget_from_wgt(widget_wgt_file, None, wgt_file=widget_wgt, deploy_only=True) showcase.wgt_deployer.deploy(widget_wgt) widget_wgt_file.close() restoretree(cls.tmp_dir, cls.localcatalogue_tmp_dir_backup) restoretree(cls.catalogue_tmp_dir, cls.catalogue_tmp_dir_backup) super(WirecloudSeleniumTestCase, cls).setUpClass() downloader.download_http_content.set_live_server(cls.server_thread.host, cls.server_thread.port)
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 setUpClass(cls): super(ParameterizedWorkspaceParseTestCase, cls).setUpClass() # catalogue deployer cls.old_catalogue_deployer = catalogue.wgt_deployer cls.catalogue_tmp_dir = mkdtemp() catalogue.wgt_deployer = WgtDeployer(cls.catalogue_tmp_dir) cls.widget_wgt_file = open(os.path.join(cls.shared_test_data_dir, 'Wirecloud_Test_1.0.wgt')) cls.widget_wgt = WgtFile(cls.widget_wgt_file) catalogue.add_widget_from_wgt(cls.widget_wgt_file, None, wgt_file=cls.widget_wgt, deploy_only=True) cls.operator_wgt_file = open(os.path.join(cls.shared_test_data_dir, 'Wirecloud_TestOperator_1.0.zip'), 'rb') cls.operator_wgt = WgtFile(cls.operator_wgt_file) catalogue.add_widget_from_wgt(cls.operator_wgt_file, None, wgt_file=cls.operator_wgt, deploy_only=True)
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))