diff --git a/paramecio/app.py b/paramecio/app.py index a75bb18..891958e 100644 --- a/paramecio/app.py +++ b/paramecio/app.py @@ -43,6 +43,10 @@ if hasattr(config, 'error_reporting'): error_reporting=config.error_reporting def prepare_app(): + + # In mod_wsgi, make strange thing with reloading. + + app.reset() def print_memory(): print(resource.getrusage(resource.RUSAGE_SELF).ru_maxrss) @@ -151,7 +155,7 @@ try: prepare_app() except: - + @app.reset() @app.route('/') def catch_errors(all='/'): try: diff --git a/paramecio/libraries/db/corefields.py b/paramecio/libraries/db/corefields.py index f895d25..26c3cfe 100644 --- a/paramecio/libraries/db/corefields.py +++ b/paramecio/libraries/db/corefields.py @@ -38,6 +38,8 @@ class IntegerField(PhangoField): super(IntegerField, self).__init__(name, size, required) self.default_value=0 + self.jtype='integer' + self.jformat='' self.type_sql='int({})'.format(self.size) @@ -116,6 +118,8 @@ class FloatField(PhangoField): self.error_default="The value is zero" self.default_value=0 self.type_sql='float'.format(self.size) + + self.jtype='float' def check(self, value): @@ -160,6 +164,7 @@ class DecimalField(FloatField): super().__init__(name, size, required) self.type_sql='decimal(20,2)' + self.jtype='number' def get_type_sql(self): @@ -172,6 +177,7 @@ class DoubleField(FloatField): super().__init__(name, size, required) self.type_sql='double' + self.jtype='float' def get_type_sql(self): diff --git a/paramecio/libraries/db/extrafields/arrayfield.py b/paramecio/libraries/db/extrafields/arrayfield.py index ec22984..6fef4c8 100644 --- a/paramecio/libraries/db/extrafields/arrayfield.py +++ b/paramecio/libraries/db/extrafields/arrayfield.py @@ -40,6 +40,8 @@ class ArrayField(PhangoField): self.set_default='' self.type_sql='text' + + self.jtype='array' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/colorfield.py b/paramecio/libraries/db/extrafields/colorfield.py index 7c81180..f53e10a 100644 --- a/paramecio/libraries/db/extrafields/colorfield.py +++ b/paramecio/libraries/db/extrafields/colorfield.py @@ -31,6 +31,7 @@ class ColorField(IntegerField): super().__init__(name, size, required) self.name_form=ColorForm + self.jtype='string' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/datefield.py b/paramecio/libraries/db/extrafields/datefield.py index ea7f24a..18b212f 100644 --- a/paramecio/libraries/db/extrafields/datefield.py +++ b/paramecio/libraries/db/extrafields/datefield.py @@ -38,6 +38,9 @@ class DateField(PhangoField): self.utc=True self.error_default='Error: Date format invalid' + + self.jtype='string' + self.jformat='date-time' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/datetimefield.py b/paramecio/libraries/db/extrafields/datetimefield.py index df79b70..2084bc9 100644 --- a/paramecio/libraries/db/extrafields/datetimefield.py +++ b/paramecio/libraries/db/extrafields/datetimefield.py @@ -41,6 +41,9 @@ class DateTimeField(PhangoField): self.type_sql='datetime' self.default_value='0000-00-00 00:00:00' + + self.jformat='date-time' + self.jtype='string' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/dictfield.py b/paramecio/libraries/db/extrafields/dictfield.py index 7c0b399..c5b3839 100644 --- a/paramecio/libraries/db/extrafields/dictfield.py +++ b/paramecio/libraries/db/extrafields/dictfield.py @@ -40,6 +40,8 @@ class DictField(PhangoField): self.set_default='NOT NULL' self.type_sql='longtext' + + self.jtype='object' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/emailfield.py b/paramecio/libraries/db/extrafields/emailfield.py index bfef93a..d7f664f 100644 --- a/paramecio/libraries/db/extrafields/emailfield.py +++ b/paramecio/libraries/db/extrafields/emailfield.py @@ -30,6 +30,8 @@ class EmailField(CharField): super().__init__(name, size, required) self.error_default='Error: No valid format in '+self.name + + self.jformat='email' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/ipfield.py b/paramecio/libraries/db/extrafields/ipfield.py index 7c93e6e..42bb8d0 100644 --- a/paramecio/libraries/db/extrafields/ipfield.py +++ b/paramecio/libraries/db/extrafields/ipfield.py @@ -3,6 +3,12 @@ import ipaddress class IpField(CharField): + def __init__(self, name, size=1024, required=False): + + super().__init__(name, size, required) + + self.jformat='ipV4' + def check(self, value): try: diff --git a/paramecio/libraries/db/extrafields/jsonfield.py b/paramecio/libraries/db/extrafields/jsonfield.py index f9203a1..fa5548f 100644 --- a/paramecio/libraries/db/extrafields/jsonfield.py +++ b/paramecio/libraries/db/extrafields/jsonfield.py @@ -45,6 +45,8 @@ class JsonField(PhangoField): self.set_default='NOT NULL' self.type_sql='longtext' + + self.jtype='object' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/passwordfield.py b/paramecio/libraries/db/extrafields/passwordfield.py index dd20613..5a429a2 100644 --- a/paramecio/libraries/db/extrafields/passwordfield.py +++ b/paramecio/libraries/db/extrafields/passwordfield.py @@ -41,6 +41,7 @@ class PasswordField(PhangoField): self.name_form=PasswordForm self.default_value='' self.encrypt_password=True + self.jformat='password' def check(self, value): diff --git a/paramecio/libraries/db/extrafields/urlfield.py b/paramecio/libraries/db/extrafields/urlfield.py index 45af607..8eb93d8 100644 --- a/paramecio/libraries/db/extrafields/urlfield.py +++ b/paramecio/libraries/db/extrafields/urlfield.py @@ -15,6 +15,7 @@ class UrlField(CharField): self.error=False self.txt_error='' + self.jformat='url' if not check_url.match(value): diff --git a/paramecio/libraries/db/webmodel.py b/paramecio/libraries/db/webmodel.py index 0902442..2f16db2 100644 --- a/paramecio/libraries/db/webmodel.py +++ b/paramecio/libraries/db/webmodel.py @@ -25,6 +25,7 @@ class PhangoField: Attributes: name (str): The name of the field + jtype(Python type): The type of value in python label (str): A label or generic name for use in text labels used for representate the field required (bool): If the field is required or not. size (int): The size of sql field. @@ -54,6 +55,10 @@ class PhangoField: self.name=name + # The type of the field in javascript. Util for api documentation + + self.jtype='string' + # The label for the Field self.label=name.replace('_', ' ').title()