Esempio n. 1
0
def clear_fields(request):
    """Clear fields of the current form.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST["id"]
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id, request.user)

        # generate form
        template = template_api.get(str(curate_data_structure.template.id),
                                    request=request)
        root_element = generate_form(template.content,
                                     data_structure=curate_data_structure,
                                     request=request)

        # save the root element in the data structure
        curate_data_structure_api.update_data_structure_root(
            curate_data_structure, root_element, request.user)

        # renders the form
        xsd_form = render_form(request, root_element)

        return HttpResponse(json.dumps({"xsdForm": xsd_form}),
                            content_type="application/javascript")
    except Exception as e:
        return HttpResponseBadRequest(escape(str(e)))
Esempio n. 2
0
 def test_update_others_data_structure_root_as_anonymous_user_raises_error(self):
     data_structure = self.fixture.data_structure_1
     new_data_structure_element_root = self.fixture.data_structure_2.id
     with self.assertRaises(AccessControlError):
         curate_data_structure_api.update_data_structure_root(
             data_structure, new_data_structure_element_root, AnonymousUser()
         )
Esempio n. 3
0
def clear_fields(request):
    """Clear fields of the current form.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST['id']
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id)

        # generate form
        root_element = generate_form(curate_data_structure.template.content)

        # save the root element in the data structure
        curate_data_structure_api.update_data_structure_root(
            curate_data_structure, root_element)

        # renders the form
        xsd_form = render_form(request, root_element)

        return HttpResponse(json.dumps({'xsdForm': xsd_form}),
                            content_type='application/javascript')
    except:
        return HttpResponseBadRequest()
Esempio n. 4
0
 def test_update_others_data_structure_root_as_user_raises_error(self):
     data_structure = self.fixture.data_structure_1
     new_data_structure_element_root = self.fixture.data_structure_2.id
     mock_user = create_mock_user(self.fixture.data_structure_3.user)
     with self.assertRaises(AccessControlError):
         curate_data_structure_api.update_data_structure_root(
             data_structure, new_data_structure_element_root, mock_user
         )
Esempio n. 5
0
def cancel_changes(request):
    """Cancel changes of the current form.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST["id"]
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id, request.user)

        if curate_data_structure.data is not None:
            # data already saved, reload from data
            xml_data = curate_data_structure.data.xml_content
        elif curate_data_structure.form_string is not None:
            # form already saved, reload from saved form
            xml_data = curate_data_structure.form_string
        else:
            # no saved data, load new form
            xml_data = None

        # generate form
        template = template_api.get(str(curate_data_structure.template.id),
                                    request=request)
        root_element = generate_form(
            template.content,
            xml_data,
            data_structure=curate_data_structure,
            request=request,
        )

        # save the root element in the data structure
        curate_data_structure_api.update_data_structure_root(
            curate_data_structure, root_element, request.user)

        # renders the form
        xsd_form = render_form(request, root_element)

        return HttpResponse(json.dumps({"xsdForm": xsd_form}),
                            content_type="application/javascript")
    except Exception as e:
        return HttpResponseBadRequest(escape(str(e)))
Esempio n. 6
0
    def build_context(self, request, curate_data_structure,
                      reload_unsaved_changes):
        """Build the context of the view

        Args:
            request:
            curate_data_structure:
            reload_unsaved_changes:

        Returns:

        """
        # get xsd string from the template
        template = template_api.get(str(curate_data_structure.template.id),
                                    request=request)
        xsd_string = template.content

        if reload_unsaved_changes:
            # get root element from the data structure
            root_element = curate_data_structure.data_structure_element_root
        else:
            # if form string provided, use it to generate the form
            xml_string = curate_data_structure.form_string

            # get the root element
            root_element = generate_form(
                xsd_string,
                xml_string,
                data_structure=curate_data_structure,
                request=request,
            )

            # save the root element in the data structure
            curate_data_structure_api.update_data_structure_root(
                curate_data_structure, root_element, request.user)

        # renders the form
        xsd_form = render_form(request, root_element)

        return {
            "edit": True if curate_data_structure.data is not None else False,
            "xsd_form": xsd_form,
            "data_structure": curate_data_structure,
        }
Esempio n. 7
0
 def test_update_own_data_structure_root_updates_data_structure(self):
     data_structure = self.fixture.data_structure_1
     new_data_structure_element_root = self.fixture.data_structure_2.id
     mock_user = create_mock_user(self.fixture.data_structure_1.user)
     result = curate_data_structure_api.update_data_structure_root(
         data_structure, new_data_structure_element_root, mock_user
     )
     self.assertTrue(isinstance(result, CurateDataStructure))
     self.assertTrue(
         result.data_structure_element_root, new_data_structure_element_root
     )
Esempio n. 8
0
def cancel_changes(request):
    """Cancel changes of the current form.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST['id']
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id)

        if curate_data_structure.data is not None:
            # data already saved, reload from data
            xml_data = curate_data_structure.data.xml_content
        elif curate_data_structure.form_string is not None:
            # form already saved, reload from saved form
            xml_data = curate_data_structure.form_string
        else:
            # no saved data, load new form
            xml_data = None

        # generate form
        root_element = generate_form(curate_data_structure.template.content,
                                     xml_data)

        # save the root element in the data structure
        curate_data_structure_api.update_data_structure_root(
            curate_data_structure, root_element)

        # renders the form
        xsd_form = render_form(request, root_element)

        return HttpResponse(json.dumps({'xsdForm': xsd_form}),
                            content_type='application/javascript')
    except:
        return HttpResponseBadRequest()
Esempio n. 9
0
 def test_update_others_data_structure_root_as_superuser_updates_data_structure(
     self,
 ):
     data_structure = self.fixture.data_structure_1
     new_data_structure_element_root = self.fixture.data_structure_3.id
     mock_user = create_mock_user(
         self.fixture.data_structure_2.user, is_staff=True, is_superuser=True
     )
     result = curate_data_structure_api.update_data_structure_root(
         data_structure, new_data_structure_element_root, mock_user
     )
     self.assertTrue(isinstance(result, CurateDataStructure))
     self.assertTrue(
         result.data_structure_element_root, new_data_structure_element_root
     )