def test_repeater(request, domain): url = request.POST["url"] repeater_type = request.POST['repeater_type'] format = request.POST.get('format', None) repeater_class = get_all_repeater_types()[repeater_type] form = GenericRepeaterForm({ "url": url, "format": format }, domain=domain, repeater_class=repeater_class) if form.is_valid(): url = form.cleaned_data["url"] format = format or RegisterGenerator.default_format_by_repeater( repeater_class) generator_class = RegisterGenerator.generator_class_by_repeater_format( repeater_class, format) repeater = repeater_class( username=request.POST.get('username'), password=request.POST.get('password'), auth_type=request.POST.get('auth_type'), ) generator = generator_class(repeater) fake_post = generator.get_test_payload(domain) headers = generator.get_headers() verify = not request.POST.get('skip_cert_verify') == 'true' try: resp = simple_post( domain, url, fake_post, headers=headers, auth_manager=repeater.get_auth_manager(), verify=verify, ) if 200 <= resp.status_code < 300: return HttpResponse( json.dumps({ "success": True, "response": resp.text, "status": resp.status_code })) else: return HttpResponse( json.dumps({ "success": False, "response": resp.text, "status": resp.status_code })) except Exception as e: errors = str(e) return HttpResponse(json.dumps({"success": False, "response": errors})) else: return HttpResponse( json.dumps({ "success": False, "response": "Please enter a valid url." }))
def test_repeater(request, domain): url = request.POST["url"] repeater_type = request.POST['repeater_type'] format = request.POST.get('format', None) repeater_class = get_all_repeater_types()[repeater_type] auth_type = request.POST.get('auth_type') form = GenericRepeaterForm({ "url": url, "format": format }, domain=domain, repeater_class=repeater_class) if form.is_valid(): url = form.cleaned_data["url"] format = format or RegisterGenerator.default_format_by_repeater( repeater_class) generator_class = RegisterGenerator.generator_class_by_repeater_format( repeater_class, format) generator = generator_class(repeater_class()) fake_post = generator.get_test_payload(domain) headers = generator.get_headers() username = request.POST.get('username') password = request.POST.get('password') if auth_type == BASIC_AUTH: auth = HTTPBasicAuth(username, password) elif auth_type == DIGEST_AUTH: auth = HTTPDigestAuth(username, password) else: auth = None try: resp = simple_post(fake_post, url, headers=headers, auth=auth) if 200 <= resp.status_code < 300: return HttpResponse( json.dumps({ "success": True, "response": resp.content, "status": resp.status_code })) else: return HttpResponse( json.dumps({ "success": False, "response": resp.content, "status": resp.status_code })) except Exception as e: errors = str(e) return HttpResponse(json.dumps({"success": False, "response": errors})) else: return HttpResponse( json.dumps({ "success": False, "response": "Please enter a valid url." }))
def test_new_format_second_default(self): class NewCaseGenerator(BasePayloadGenerator): format_name = 'rubbish' format_label = 'XML' def get_payload(self, repeat_record, payload_doc): return self.payload with self.assertRaises(DuplicateFormatException): RegisterGenerator.get_collection(CaseRepeater).add_new_format(NewCaseGenerator, is_default=True)
def setUpClass(cls): super(IgnoreDocumentTest, cls).setUpClass() class NewFormGenerator(BasePayloadGenerator): format_name = 'new_format' format_label = 'XML' def get_payload(self, repeat_record, payload_doc): raise IgnoreDocument RegisterGenerator.get_collection(FormRepeater).add_new_format(NewFormGenerator)
def setUpClass(cls): super(TestRepeaterFormat, cls).setUpClass() cls.payload = 'some random case' class NewCaseGenerator(BasePayloadGenerator): format_name = 'new_format' format_label = 'XML' deprecated_format_names = ('new_format_alias',) def get_payload(self, repeat_record, payload_doc): return cls.payload RegisterGenerator.get_collection(CaseRepeater).add_new_format(NewCaseGenerator) cls.new_generator = NewCaseGenerator
def test_repeater(request, domain): url = request.POST["url"] repeater_type = request.POST['repeater_type'] format = request.POST.get('format', None) repeater_class = get_all_repeater_types()[repeater_type] auth_type = request.POST.get('auth_type') form = GenericRepeaterForm( {"url": url, "format": format}, domain=domain, repeater_class=repeater_class ) if form.is_valid(): url = form.cleaned_data["url"] format = format or RegisterGenerator.default_format_by_repeater(repeater_class) generator_class = RegisterGenerator.generator_class_by_repeater_format(repeater_class, format) generator = generator_class(repeater_class()) fake_post = generator.get_test_payload(domain) headers = generator.get_headers() username = request.POST.get('username') password = request.POST.get('password') verify = not request.POST.get('skip_cert_verify') == 'true' if auth_type == BASIC_AUTH: auth = HTTPBasicAuth(username, password) elif auth_type == DIGEST_AUTH: auth = HTTPDigestAuth(username, password) else: auth = None try: resp = simple_post(fake_post, url, headers=headers, auth=auth, verify=verify) if 200 <= resp.status_code < 300: return HttpResponse(json.dumps({"success": True, "response": resp.content, "status": resp.status_code})) else: return HttpResponse(json.dumps({"success": False, "response": resp.content, "status": resp.status_code})) except Exception as e: errors = str(e) return HttpResponse(json.dumps({"success": False, "response": errors})) else: return HttpResponse(json.dumps({"success": False, "response": "Please enter a valid url."}))
def __init__(self, *args, **kwargs): self.domain = kwargs.pop('domain') self.repeater_class = kwargs.pop('repeater_class') self.formats = RegisterGenerator.all_formats_by_repeater(self.repeater_class, for_domain=self.domain) super(GenericRepeaterForm, self).__init__(*args, **kwargs) self.set_extra_django_form_fields() self._initialize_crispy_layout()
def __init__(self, *args, **kwargs): self.domain = kwargs.pop('domain') self.repeater_class = kwargs.pop('repeater_class') self.formats = RegisterGenerator.all_formats_by_repeater(self.repeater_class, for_domain=self.domain) self.submit_btn_text = kwargs.pop('submit_btn_text', _("Start Forwarding")) super(GenericRepeaterForm, self).__init__(*args, **kwargs) self.set_extra_django_form_fields() self._initialize_crispy_layout()
def __init__(self, *args, **kwargs): if kwargs.get('data'): repeater = Repeater.wrap(kwargs['data']) if not repeater.connection_settings_id: repeater.create_connection_settings() self.domain = kwargs.pop('domain') self.repeater_class = kwargs.pop('repeater_class') self.formats = RegisterGenerator.all_formats_by_repeater( self.repeater_class, for_domain=self.domain) conns = ConnectionSettings.objects.filter(domain=self.domain) self.connection_settings_choices = [(c.id, c.name) for c in conns] self.submit_btn_text = kwargs.pop('submit_btn_text', _("Start Forwarding")) super(GenericRepeaterForm, self).__init__(*args, **kwargs) self.set_extra_django_form_fields() self._initialize_crispy_layout()
def _get_payload_generator(self, payload_format): from corehq.motech.repeaters.repeater_generators import RegisterGenerator gen = RegisterGenerator.generator_class_by_repeater_format(self.__class__, payload_format) return gen(self)
def _format_or_default_format(self): from corehq.motech.repeaters.repeater_generators import RegisterGenerator return self.format or RegisterGenerator.default_format_by_repeater(self.__class__)