def testIsSchemaRegistered(self): """ given a form and version is that form registered """ create_xsd_and_populate("5_singlerepeat.xsd", domain=self.domain) create_xsd_and_populate("data/8_singlerepeat_2.xsd", domain=self.domain) self.assertTrue(FormDefModel.is_schema_registered("xml_singlerepeat", self.domain)) self.assertTrue(FormDefModel.is_schema_registered("xml_singlerepeat", self.domain,2)) self.assertFalse(FormDefModel.is_schema_registered("xml_singlerepeat", self.domain,3)) self.assertFalse(FormDefModel.is_schema_registered("nonexistent", self.domain,1))
def testGetFormDef(self): """ Test get_formdef """ create_xsd_and_populate("5_singlerepeat.xsd", domain=self.domain) create_xsd_and_populate("data/8_singlerepeat_2.xsd", domain=self.domain) formdef = FormDefModel.get_formdef("xml_singlerepeat", self.domain) self.assertTrue(formdef.version is None) self.assertTrue(formdef.uiversion is None) self.assertEqual(len(formdef.root.child_elements), 5) formdef2 = FormDefModel.get_formdef("xml_singlerepeat", self.domain, "2") self.assertTrue(formdef2.version == 2) self.assertTrue(formdef2.uiversion == 3) self.assertEqual(len(formdef2.root.child_elements), 5) nonexistant = FormDefModel.get_formdef("nonexistent", self.domain, "1") self.assertTrue(nonexistant is None)
def check_and_release_xforms(self): '''Checks this build's xforms against the xformmanager and releases them, if they pass compatibility tests''' errors = [] to_skip = [] to_register = [] for form in self.xforms.all(): try: formdef = xformvalidator.validate(form.file_location) modelform = FormDefModel.get_model(formdef.target_namespace, self.project.domain, formdef.version) if modelform: # if the model form exists we must ensure it is compatible # with the version we are trying to release existing_formdef = modelform.to_formdef() differences = existing_formdef.get_differences(formdef) if differences.is_empty(): # this is all good to_skip.append(form) else: raise BuildError("""Schema %s is not compatible with %s. Because of the following differences: %s You must update your version number!""" % (existing_formdef, formdef, differences)) else: # this must be registered to_register.append(form) except Exception, e: errors.append(e)
def xmlns_group_popup(request): """Popup (compact) view a group of forms for a particular xmlns. Used in modal dialogs.""" xmlns = request.GET["xmlns"] group = FormDefModel.get_group_for_namespace(request.user.selected_domain, xmlns) return render_to_response(request, "xformmanager/xmlns_group_popup.html", {"group": group})
def add_schema(self, formdef): formdef.force_to_valid() formdefmodel = FormDefModel.create_models(formdef) self.formdefmodel = formdefmodel self.formdef = self._strip_meta_def( formdef ) queries = XFormDBTableCreator( self.formdef, self.formdefmodel ).create() self._execute_queries(queries) return formdefmodel
def xmlns_group(request): """View a group of forms for a particular xmlns.""" xmlns = request.GET["xmlns"] group = FormDefModel.get_group_for_namespace(request.extuser.domain, xmlns) data_groups = FormDataGroup.objects.filter(name=xmlns) return render_to_response(request, "xformmanager/xmlns_group.html", {"group": group, "data_groups": data_groups })
def add_schema(self, formdef): """Given a xsd schema, create the django models and database tables reqiured to submit data to that form.""" formdef.force_to_valid() formdefmodel = FormDefModel.create_models(formdef) self.formdefmodel = formdefmodel self.formdef = formdef queries = XFormDBTableCreator( self.formdef, self.formdefmodel ).create() self._execute_queries(queries) return formdefmodel
context['file_name'] = request.FILES['file'].name request.session['schema_file'] = file_name request.session['display_name'] = form.cleaned_data['form_display_name'] request.session['REMOTE_ADDR'] = request.META['REMOTE_ADDR'] request.session['file_size'] = request.FILES['file'].size template='confirm_register.html' return render_to_response(request, template, context) else: transaction.rollback() context['errors'] = form.errors context['upload_form'] = RegisterXForm() # group the formdefs by names context['registered_forms'] = FormDefModel.objects.all().filter(domain=request.user.selected_domain) context['form_groups'] = FormDefModel.get_groups(request.user.selected_domain) return render_to_response(request, template, context) @login_and_domain_required def xmlns_group(request): """View a group of forms for a particular xmlns.""" xmlns = request.GET["xmlns"] group = FormDefModel.get_group_for_namespace(request.user.selected_domain, xmlns) data_groups = FormDataGroup.objects.filter(forms__in=group.forms).distinct() return render_to_response(request, "xformmanager/xmlns_group.html", {"group": group, "data_groups": data_groups })
context['file_name'] = request.FILES['file'].name request.session['schema_file'] = file_name request.session['display_name'] = form.cleaned_data['form_display_name'] request.session['REMOTE_ADDR'] = request.META['REMOTE_ADDR'] request.session['file_size'] = request.FILES['file'].size template='confirm_register.html' transaction.rollback() return render_to_response(request, template, context) else: transaction.rollback() context['errors'] = form.errors context['upload_form'] = RegisterXForm() # group the formdefs by names context['registered_forms'] = FormDefModel.objects.all().filter(domain= extuser.domain) context['form_groups'] = FormDefModel.get_groups(extuser.domain) return render_to_response(request, template, context) @extuser_required() def xmlns_group(request): """View a group of forms for a particular xmlns.""" xmlns = request.GET["xmlns"] group = FormDefModel.get_group_for_namespace(request.extuser.domain, xmlns) data_groups = FormDataGroup.objects.filter(name=xmlns) return render_to_response(request, "xformmanager/xmlns_group.html", {"group": group, "data_groups": data_groups }) @extuser_required()