def test_version_manager_get_from_version_id_throws_exception_if_id_absent( self, mock_get_all): # Arrange mock_version_manager_1 = _create_mock_version_manager(title="Schema1") mock_version_manager_2 = _create_mock_version_manager(title="Schema2") mock_get_all.return_value = [ mock_version_manager_1, mock_version_manager_2 ] mock_absent = _create_mock_object() # Act + Assert with self.assertRaises(exceptions.ApiError): version_manager_api.get_from_version(mock_absent)
def _save_template_xslt(self, request): """Save a template xslt rendering. Args: request: Request. """ try: # Get the list xslt instance try: list_xslt = xslt_transformation_api.get_by_id(request.POST.get('list_xslt')) except (Exception, exceptions.DoesNotExist): list_xslt = None # Get the detail xslt instance try: detail_xslt = xslt_transformation_api.get_by_id(request.POST.get('detail_xslt')) except (Exception, exceptions.DoesNotExist): detail_xslt = None template_xsl_rendering_api.add_or_delete(template_xsl_rendering_id=request.POST.get('id'), template_id=request.POST.get('template'), list_xslt=list_xslt, detail_xslt=detail_xslt) template = template_api.get(request.POST.get('template')) # Get template information (version) version_manager = version_manager_api.get_from_version(template) return HttpResponseRedirect(reverse(self.save_redirect, args=[version_manager.id])) except Exception, e: self.context.update({'errors': html_escape(e.message)}) return self.rendering(request, self.template_name, context=self.context)
def get(self, request, *args, **kwargs): """ GET request. Create/Show the form for the configuration. Args: request: *args: **kwargs: Returns: """ template_id = kwargs.pop('template_id') # Get the template template = template_api.get(template_id) # Get template information (version) version_manager = version_manager_api.get_from_version(template) version_number = version_manager_api.get_version_number( version_manager, template_id) try: # Get the existing configuration to build the form template_xsl_rendering = template_xsl_rendering_api.get_by_template_id( template_id) data = { 'id': template_xsl_rendering.id, 'template': template.id, 'list_xslt': template_xsl_rendering.list_xslt.id if template_xsl_rendering.list_xslt else None, 'detail_xslt': template_xsl_rendering.detail_xslt.id if template_xsl_rendering.detail_xslt else None } except (Exception, exceptions.DoesNotExist): # If no configuration, new form with pre-selected fields. data = { 'template': template.id, 'list_xslt': None, 'detail_xslt': None } self.context = { 'template_title': version_manager.title, 'template_version': version_number, "form_template_xsl_rendering": self.form_class(data), 'url_back_to': reverse(self.back_to_url, kwargs={'version_manager_id': version_manager.id}) } return self.rendering(request, self.template_name, context=self.context, assets=self.assets)
def add_template_metadata_format(metadata_prefix, template_id, request): """Add a new template metadata format. Args: metadata_prefix: Metadata Prefix. template_id: Id of the template. request: Returns: Response. """ try: template = template_api.get(template_id, request=request) version_manager = version_manager_api.get_from_version(template, request=request) xml_schema = template.content target_namespace = _get_target_namespace(xml_schema) version_number = version_manager_api.get_version_number( version_manager, template_id, request=request) schema_url = _get_simple_template_metadata_format_schema_url( version_manager.title, version_number) obj = OaiProviderMetadataFormat( metadata_prefix=metadata_prefix, schema=schema_url, xml_schema=xml_schema, is_default=False, is_template=True, metadata_namespace=target_namespace, template=template, ) upsert(obj, request=request) content = OaiPmhMessage.get_message_labelled( "Metadata format added with success.") return Response(content, status=status.HTTP_201_CREATED) except oai_pmh_exceptions.OAIAPILabelledException as e: raise e except DoesNotExist: raise oai_pmh_exceptions.OAIAPILabelledException( message="Unable to add the new metadata format. " "Impossible to retrieve the template with the " "given template", status_code=status.HTTP_404_NOT_FOUND, ) except exceptions.XMLError as e: raise oai_pmh_exceptions.OAIAPILabelledException( message="Unable to add the new metadata format.%s" % str(e), status_code=status.HTTP_400_BAD_REQUEST, ) except Exception as e: raise oai_pmh_exceptions.OAIAPILabelledException( message="Unable to add the new metadata format.%s" % str(e), status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, )
def _get(self, request, query_id): """ Prepare the GET context Args: user: query_id: Returns: """ error = None display_persistent_query_button = True if query_id is None: # create query query = create_default_query(request, []) # upsert the query query_api.upsert(query) # create keyword form # create all data for select values in forms keywords_data_form = { 'query_id': str(query.id), 'user_id': query.user_id, } else: try: # get the query id query = query_api.get_by_id(query_id) user_id = query.user_id # get all keywords back query_json = json.loads(query.content) keywords = None if '$text' in query_json: keywords = query_json['$text']['$search'].replace( " ", ",").replace('"', '') # get all version managers version_managers = [] for template in query.templates: version_managers.append( str(version_manager_api.get_from_version(template).id)) # create all data for select values in forms keywords_data_form = { 'query_id': str(query.id), 'user_id': user_id, 'keywords': keywords, 'global_templates': version_managers, 'user_templates': version_managers } except Exception, e: error = "An unexpected error occurred while loading the query: {}.".format( e.message) return {'error': error}
def _save_template_xslt(self, request): """Save a template xslt rendering. Args: request: Request. """ try: # Get the list xslt instance try: list_xslt = xslt_transformation_api.get_by_id( request.POST.get("list_xslt")) except (Exception, exceptions.DoesNotExist): list_xslt = None # Get the list detail xslt instance try: list_detail_xslt = xslt_transformation_api.get_by_id_list( request.POST.getlist("list_detail_xslt")) except (Exception, exceptions.DoesNotExist): list_detail_xslt = None # Get the default detail xslt instance try: default_detail_xslt = xslt_transformation_api.get_by_id( request.POST.get("default_detail_xslt")) except (Exception, exceptions.DoesNotExist): default_detail_xslt = None template_xsl_rendering_api.add_or_delete( template_xsl_rendering_id=request.POST.get("id"), template_id=request.POST.get("template"), list_xslt=list_xslt, default_detail_xslt=default_detail_xslt, list_detail_xslt=list_detail_xslt, ) template = template_api.get(request.POST.get("template"), request=request) # Get template information (version) version_manager = version_manager_api.get_from_version( template, request=request) return HttpResponseRedirect( reverse(self.save_redirect, args=[version_manager.id])) except Exception as e: self.context.update({"errors": html_escape(str(e))}) return self.rendering(request, self.template_name, context=self.context)
def test_post_owner_is_global(self): # Arrange user = create_mock_user('1', is_staff=True) # Act response = RequestMock.do_request_post( views.GlobalTemplateList.as_view(), user, data=self.data) # get template version manager from posted template template_id = response.data['id'] template_object = template_api.get(template_id) template_version_manager = vm_api.get_from_version(template_object) # Assert self.assertEqual(template_version_manager.user, None)
def get_object(self, pk): """ Get template from db Args: pk: Returns: """ try: template_object = template_api.get(pk) template_version_manager_object = version_manager_api.get_from_version(template_object) can_user_modify_template_version_manager(template_version_manager_object, self.request.user) return template_object except exceptions.DoesNotExist: raise Http404
def test_post_owner_is_user(self): # Arrange user = create_mock_user('1') # Act response = RequestMock.do_request_post(views.UserTypeList.as_view(), user, data=self.data) # get type version manager from posted type type_id = response.data['id'] type_object = type_api.get(type_id) type_version_manager = vm_api.get_from_version(type_object) # Assert self.assertEqual(type_version_manager.user, user.id)
def test_post_owner_is_user(self): # Arrange user = create_mock_user("1") mock_request = create_mock_request(user=user) # Act response = RequestMock.do_request_post( views.UserTemplateList.as_view(), user, data=self.data) # get template version manager from posted template template_id = response.data["id"] template_object = template_api.get(template_id, request=mock_request) template_version_manager = vm_api.get_from_version( template_object, request=mock_request) # Assert self.assertEqual(template_version_manager.user, user.id)
def test_version_manager_get_from_version_id_returns_version_manager( self, mock_get_all): # Arrange mock_version_manager_1 = _create_mock_version_manager(title="Schema1") version = _create_mock_object() mock_version_manager_1.versions.append(str(version.id)) mock_version_manager_2 = _create_mock_version_manager(title="Schema2") mock_get_all.return_value = [ mock_version_manager_1, mock_version_manager_2 ] # Act result = version_manager_api.get_from_version(version) # Assert self.assertIsInstance(result, VersionManager)
def test_post_owner_is_global(self): # Arrange user = create_mock_user("1", is_staff=True) mock_request = create_mock_request(user=user) # Act response = RequestMock.do_request_post(views.GlobalTypeList.as_view(), user, data=self.data) # get type version manager from posted type type_id = response.data["id"] type_object = type_api.get(type_id, request=mock_request) type_version_manager = vm_api.get_from_version(type_object, request=mock_request) # Assert self.assertEqual(type_version_manager.user, None)
def get_context(template_id, url_previous_button, read_only, title, request): """Get the context to manage the template modules Args: template_id: Returns: """ # get the template template = template_api.get(template_id, request=request) # get template content as HTML xsd_tree_html = transform_xsd_to_html_with_modules(template.content) # get list of modules modules = module_api.get_all() # get version manager version_manager = version_manager_api.get_from_version(template, request=request) # reverse url try: url_back_to = reverse( url_previous_button, kwargs={"version_manager_id": version_manager.id} ) except NoReverseMatch: url_back_to = reverse(url_previous_button) context = { "xsdTree": xsd_tree_html, "modules": modules, "object": template, "version_manager": version_manager, "url_back_to": url_back_to, "read_only": read_only, "title": title, } return context
def get_context(template_id, url_previous_button, read_only, title): """ Get the context to manage the template modules Args: template_id: Returns: """ # get the template template = template_api.get(template_id) # get template content as HTML xsd_tree_html = transform_xsd_to_html_with_modules(template.content) # get list of modules modules = module_api.get_all() # get version manager version_manager = version_manager_api.get_from_version(template) # reverse url try: url_back_to = reverse( url_previous_button, kwargs={'version_manager_id': version_manager.id}) except NoReverseMatch: url_back_to = reverse(url_previous_button) context = { 'xsdTree': xsd_tree_html, 'modules': modules, 'object': template, 'version_manager': version_manager, 'url_back_to': url_back_to, 'read_only': read_only, 'title': title } return context
def get(self, request, *args, **kwargs): """GET request. Create/Show the form for the configuration. Args: request: *args: **kwargs: Returns: """ template_id = kwargs.pop("template_id") # Get the template template = template_api.get(template_id, request=request) # Get template information (version) version_manager = version_manager_api.get_from_version(template, request=request) version_number = version_manager_api.get_version_number( version_manager, template_id, request=request) try: # Get the existing configuration to build the form template_xsl_rendering = template_xsl_rendering_api.get_by_template_id( template_id) data = { "id": template_xsl_rendering.id, "template": str(template.id), "list_xslt": template_xsl_rendering.list_xslt.id if template_xsl_rendering.list_xslt else None, "default_detail_xslt": template_xsl_rendering.default_detail_xslt.id if template_xsl_rendering.default_detail_xslt else None, "list_detail_xslt": [xslt.id for xslt in template_xsl_rendering.list_detail_xslt] if template_xsl_rendering.list_detail_xslt else None, } except (Exception, exceptions.DoesNotExist): # If no configuration, new form with pre-selected fields. data = { "template": str(template.id), "list_xslt": None, "default_detail_xslt": None, "list_detail_xslt": None, } self.assets = { "css": ["core_main_app/admin/css/templates_xslt/form.css"], "js": [{ "path": "core_main_app/admin/js/templates_xslt/detail_xslt.js", "is_raw": False, }], } self.context = { "template_title": version_manager.title, "template_version": version_number, "form_template_xsl_rendering": self.form_class(data), "url_back_to": reverse(self.back_to_url, kwargs={"version_manager_id": version_manager.id}), } return self.rendering(request, self.template_name, context=self.context, assets=self.assets)