Ejemplo n.º 1
0
    def create(self, validated_data):
        schema_request = requests.get(validated_data['schemaURL'])
        schema_request.raise_for_status()

        schemadoc = etree.fromstring(schema_request.content)
        targetNamespace = schemadoc.get('targetNamespace')
        nsmap = {
            k: v
            for k, v in schemadoc.nsmap.items()
            if k and v != "http://www.w3.org/2001/XMLSchema"
        }

        try:
            existingElements, allElements = generateJsonRes(
                schemadoc, validated_data['root_element'],
                validated_data['prefix'])
        except ValueError as e:
            raise ValidationError(e)

        return templatePackage.objects.create(
            existingElements=existingElements,
            allElements=allElements,
            targetNamespace=targetNamespace,
            nsmap=nsmap,
            **validated_data)
Ejemplo n.º 2
0
    def post(self, request, *args, **kwargs):

        form = AddTemplateForm(request.POST)

        if form.is_valid():
            name = form.cleaned_data.get('template_name')
            prefix = form.cleaned_data.get('namespace_prefix')
            root = form.cleaned_data.get('root_element')
            schema = form.cleaned_data.get('schema')

            if templatePackage.objects.filter(pk=name).exists():
                return HttpResponse('ERROR: templatePackage with name "' +
                                    name + '" already exists!')

            from requests.packages.urllib3.exceptions import (
                InsecureRequestWarning, InsecurePlatformWarning)

            requests.packages.urllib3.disable_warnings(InsecurePlatformWarning)
            requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

            schema_request = requests.get(schema)
            schema_request.raise_for_status()

            schemadoc = etree.fromstring(schema_request.content)
            targetNamespace = schemadoc.get('targetNamespace')
            nsmap = {
                k: v
                for k, v in schemadoc.nsmap.items()
                if k and v != "http://www.w3.org/2001/XMLSchema"
            }

            existingElements, allElements = generateJsonRes(
                schemadoc, root, prefix)
            existingElements["root"]["nsmap"] = nsmap

            templatePackage.objects.create(existingElements=existingElements,
                                           allElements=allElements,
                                           name=name,
                                           prefix=prefix,
                                           schemaURL=schema,
                                           targetNamespace=targetNamespace,
                                           root_element=root)

            return redirect('/template/edit/' + name)

        return render(request, self.template_name, {'form': form})
Ejemplo n.º 3
0
    def create(self, validated_data):
        schema_request = requests.get(validated_data['schemaURL'])
        schema_request.raise_for_status()

        schemadoc = etree.fromstring(schema_request.content)
        targetNamespace = schemadoc.get('targetNamespace')
        nsmap = {k: v for k, v in schemadoc.nsmap.items() if k and v != "http://www.w3.org/2001/XMLSchema"}

        try:
            existingElements, allElements = generateJsonRes(
                schemadoc,
                validated_data['root_element'],
                validated_data['prefix']
            )
        except ValueError as e:
            raise ValidationError(e)

        return templatePackage.objects.create(
            existingElements=existingElements, allElements=allElements,
            targetNamespace=targetNamespace, nsmap=nsmap, **validated_data
        )