def setup(self):
     self.loader = Loader("monkeyinfernotest/templates")
     self.tmpl = {}
     self.rental_fields = CarRentalForm().fields
     self.args = self.rental_fields.keys()
Example #2
0
 def setup(self):
     self.loader = Loader("monkeyinfernotest/templates")
     self.tmpl = {}
     self.rental_fields = CarRentalForm().fields
     self.args = self.rental_fields.keys()
class FormHandler(RequestHandler):
    def setup(self):
        self.loader = Loader("monkeyinfernotest/templates")
        self.tmpl = {}
        self.rental_fields = CarRentalForm().fields
        self.args = self.rental_fields.keys()

    def get(self):
        self.setup()
        self.validate_form({k: None for k in self.args}, "rental_fields")

        data = self.loader.load("carrental.html").generate(data=self, check=False)
        self.write(data)

    def post(self):
        self.setup()
        request = self.get_request_data()
        self.validate_form(request, "rental_fields")

        data = self.loader.load("carrental.html").generate(data=self, check=True)
        self.write(data)

    def get_request_data(self):
        """Creates request data for validate form
        """
        result = {}
        for key, field in self.rental_fields.items():
            if hasattr(field, "fields"):
                result[key] = []
                for index in range(len(field.fields)):
                    result[key].append(self.get_argument(key + "_" + str(index), default=None))
            else:
                result[key] = self.get_argument(key, default=None)

        return result

    def validate_form(self, request, form_fields):
        self.tmpl["validated"] = True
        for name, field in getattr(self, form_fields).items():
            field["value"] = request.get(name, None)
            try:
                field["cleaned"] = field.clean(field["value"])
                field["valid"] = True
            except django.forms.fields.ValidationError as ex:
                field["valid"] = False
                field["error_msg"] = ex.messages[0]
            except django.utils.encoding.DjangoUnicodeDecodeError as ex:
                log.exception(ex)
                field["valid"] = False
                field["error_msg"] = ex.message
        self.form_valid = False not in [v["valid"] for f, v in getattr(self, form_fields).items()]
        return self.form_valid

    def field_class(self, field_name, form_fields):
        if getattr(self, form_fields)[field_name] and not getattr(self, form_fields)[field_name].get("valid"):
            return " invalid"
        return ""

    def field_value(self, field_name, form_fields):
        value = getattr(self, form_fields)[field_name].get("value")
        if value == 0:
            value = 0
        elif value in [None, False]:
            value = ""
        return value

    def field_error(self, field_name, form_fields):
        return getattr(self, form_fields)[field_name].get("error_msg") or ""
Example #4
0
class FormHandler(RequestHandler):
    def setup(self):
        self.loader = Loader("monkeyinfernotest/templates")
        self.tmpl = {}
        self.rental_fields = CarRentalForm().fields
        self.args = self.rental_fields.keys()

    def get(self):
        self.setup()
        self.validate_form({k: None for k in self.args}, 'rental_fields')

        data = self.loader.load("carrental.html").generate(data=self,
                                                           check=False)
        self.write(data)

    def post(self):
        self.setup()
        request = self.get_request_data()
        self.validate_form(request, 'rental_fields')

        data = self.loader.load("carrental.html").generate(data=self,
                                                           check=True)
        self.write(data)

    def get_request_data(self):
        """Creates request data for validate form
        """
        result = {}
        for key, field in self.rental_fields.items():
            if hasattr(field, 'fields'):
                result[key] = []
                for index in range(len(field.fields)):
                    result[key].append(
                        self.get_argument(key + '_' + str(index),
                                          default=None))
            else:
                result[key] = self.get_argument(key, default=None)

        return result

    def validate_form(self, request, form_fields):
        self.tmpl['validated'] = True
        for name, field in getattr(self, form_fields).items():
            field['value'] = request.get(name, None)
            try:
                field['cleaned'] = field.clean(field['value'])
                field['valid'] = True
            except django.forms.fields.ValidationError as ex:
                field['valid'] = False
                field['error_msg'] = ex.messages[0]
            except django.utils.encoding.DjangoUnicodeDecodeError as ex:
                log.exception(ex)
                field['valid'] = False
                field['error_msg'] = ex.message
        self.form_valid = False not in [
            v['valid'] for f, v in getattr(self, form_fields).items()
        ]
        return self.form_valid

    def field_class(self, field_name, form_fields):
        if getattr(self, form_fields)[field_name] and not getattr(
                self, form_fields)[field_name].get('valid'):
            return ' invalid'
        return ''

    def field_value(self, field_name, form_fields):
        value = getattr(self, form_fields)[field_name].get('value')
        if value == 0:
            value = 0
        elif value in [None, False]:
            value = ''
        return value

    def field_error(self, field_name, form_fields):
        return getattr(self, form_fields)[field_name].get('error_msg') or ''