Beispiel #1
0
    def post(self, *args, **kargs):
        commit = self.request.GET.get("commit") in (True, "true")
        fields = json.loads(self.request.POST['fields'])
        schema = self.get_object()

        forms = list(self._get_schemafield_forms(fields))
        errors = dict(_get_form_errors(forms))

        if not errors and commit:
            fields = [form.save(commit=False) for form in forms]

            for i, field in enumerate(fields):
                field.fieldnr = (i+1) * 10
                field.save()

            for field in set(schema.fields.all()) - set(fields):
                # Remove deleted fields
                field.delete()

            self.request.session["schema_{}_edited".format(schema.id)] = True 

        # Always send response (don't throw an error)
        schema_url = reverse("navigator:codingschema-details", args=[self.project.id, schema.id])

        return HttpResponse(
            json.dumps({
                "fields" : errors, "schema_url" : schema_url,
                "rules_valid" : codingruletoolkit.schemarules_valid(schema)
            }),
            content_type='application/json'
        )
Beispiel #2
0
def _edit_schemafields_post(request, schema, project, commit=None):
    """
    View executed when making a POST request to edit_schema.
    """
    commit = request.GET.get("commit", commit) in (True, "true")
    fields = json.loads(request.POST['fields'])

    forms = list(_get_schemafield_forms(fields, schema))
    errors = dict(_get_form_errors(forms))

    if not errors and commit:
        fields = [form.save(commit=False) for form in forms]

        for i, field in enumerate(fields):
            field.fieldnr = (i+1) * 10
            field.save()

        for field in set(schema.fields.all()) - set(fields):
            # Remove deleted fields
            field.delete()

        request.session["schema_{}_edited".format(schema.id)] = True 

    # Always send response (don't throw an error)
    schema_url = reverse("project-schema", args=[project.id, schema.id])

    return HttpResponse(
        json.dumps({
            "fields" : errors, "schema_url" : schema_url,
            "rules_valid" : codingruletoolkit.schemarules_valid(schema)
        }),
        mimetype='application/json'
    )
Beispiel #3
0
    def post(self, *args, **kargs):
        commit = self.request.GET.get("commit") in (True, "true")
        fields = json.loads(self.request.POST['fields'])
        schema = self.get_object()

        forms = list(self._get_schemafield_forms(fields))
        errors = dict(_get_form_errors(forms))

        if not errors and commit:
            fields = [form.save(commit=False) for form in forms]

            for i, field in enumerate(fields):
                field.fieldnr = (i + 1) * 10
                field.save()

            for field in set(schema.fields.all()) - set(fields):
                # Remove deleted fields
                field.delete()

            self.request.session["schema_{}_edited".format(schema.id)] = True

        # Always send response (don't throw an error)
        schema_url = reverse("coding schema-details",
                             args=[self.project.id, schema.id])

        return HttpResponse(json.dumps({
            "fields":
            errors,
            "schema_url":
            schema_url,
            "rules_valid":
            codingruletoolkit.schemarules_valid(schema)
        }),
                            mimetype='application/json')
Beispiel #4
0
def _edit_schemafields_post(request, schema, project, commit=None):
    """
    View executed when making a POST request to edit_schema.
    """
    commit = request.GET.get("commit", commit) in (True, "true")
    fields = json.loads(request.POST['fields'])

    forms = list(_get_schemafield_forms(fields, schema))
    errors = dict(_get_form_errors(forms))

    if not errors and commit:
        fields = [form.save(commit=False) for form in forms]

        for i, field in enumerate(fields):
            field.fieldnr = (i + 1) * 10
            field.save()

        for field in set(schema.fields.all()) - set(fields):
            # Remove deleted fields
            field.delete()

        request.session["schema_{}_edited".format(schema.id)] = True

    # Always send response (don't throw an error)
    schema_url = reverse("project-schema", args=[project.id, schema.id])

    return HttpResponse(json.dumps({
        "fields":
        errors,
        "schema_url":
        schema_url,
        "rules_valid":
        codingruletoolkit.schemarules_valid(schema)
    }),
                        mimetype='application/json')
Beispiel #5
0
 def get_context_data(self, **kwargs):
     ctx = super(CodingSchemaEditFieldsView,
                 self).get_context_data(**kwargs)
     fields_null = dict([(f.name, f.null)
                         for f in CodingSchemaField._meta.fields])
     rules_valid = json.dumps(
         codingruletoolkit.schemarules_valid(self.get_object()))
     ctx.update(locals())
     return ctx
Beispiel #6
0
    def test_schemafield_valid(self):
        schema_with_fields = amcattest.create_test_schema_with_fields()
        schema = schema_with_fields[0]

        self.assertTrue(schemarules_valid(schema))
        self.condition(schema, "()").save()
        self.assertTrue(schemarules_valid(schema))
        self.condition(schema, "(3==2)").save()
        self.assertFalse(schemarules_valid(schema))

        CodingRule.objects.all().delete()

        # Test multiple (correct) rules
        self.condition(schema, "()").save()
        self.condition(schema, "()").save()
        self.condition(schema, "()").save()
        self.assertTrue(schemarules_valid(schema))
        self.condition(schema, "(3==2)").save()
        self.assertFalse(schemarules_valid(schema))
Beispiel #7
0
    def test_schemafield_valid(self):
        schema_with_fields = amcattest.create_test_schema_with_fields()
        schema = schema_with_fields[0]

        self.assertTrue(schemarules_valid(schema))
        self.condition(schema, "()").save()
        self.assertTrue(schemarules_valid(schema))
        self.condition(schema, "(3==2)").save()
        self.assertFalse(schemarules_valid(schema))

        CodingRule.objects.all().delete()

        # Test multiple (correct) rules
        self.condition(schema, "()").save()
        self.condition(schema, "()").save()
        self.condition(schema, "()").save()
        self.assertTrue(schemarules_valid(schema))
        self.condition(schema, "(3==2)").save()
        self.assertFalse(schemarules_valid(schema))
Beispiel #8
0
def edit_schemafields(request, schema, project):
    if request.method == "POST":
        return _edit_schemafields_post(request, schema, project)

    # Is this schema imported?
    if schema.project != project:
        # Offer to copy it to currect project
        return redirect(copy_schema, project.id, schema.id)

    fields_null = dict([(f.name, f.null) for f in CodingSchemaField._meta.fields])

    # This schema is owned by current project. Offer edit interface.
    return table_view(request, project, None, 'codingschemas',
            template="navigator/project/edit_schema.html",
            schema=schema, fields_null=fields_null,
            rules_valid=json.dumps(codingruletoolkit.schemarules_valid(schema)))
Beispiel #9
0
def edit_schemafields(request, schema, project):
    if request.method == "POST":
        return _edit_schemafields_post(request, schema, project)

    # Is this schema imported?
    if schema.project != project:
        # Offer to copy it to currect project
        return redirect(copy_schema, project.id, schema.id)

    fields_null = dict([(f.name, f.null)
                        for f in CodingSchemaField._meta.fields])

    # This schema is owned by current project. Offer edit interface.
    return table_view(request,
                      project,
                      None,
                      'codingschemas',
                      template="navigator/project/edit_schema.html",
                      schema=schema,
                      fields_null=fields_null,
                      rules_valid=json.dumps(
                          codingruletoolkit.schemarules_valid(schema)))
Beispiel #10
0
 def get_context_data(self, **kwargs):
     ctx = super(CodingSchemaEditFieldsView, self).get_context_data(**kwargs)
     fields_null = dict([(f.name, f.null) for f in CodingSchemaField._meta.fields])
     rules_valid=json.dumps(codingruletoolkit.schemarules_valid(self.get_object()))
     ctx.update(locals())
     return ctx