Added more docstrings to forms and fields

This commit is contained in:
Antonio de la Rosa 2022-05-06 19:40:16 +02:00
parent 26dd863af8
commit d04a7121df
20 changed files with 79 additions and 9 deletions

View file

@ -6,15 +6,16 @@ from bs4 import BeautifulSoup
class IntegerField(PhangoField): class IntegerField(PhangoField):
"""Class that figure an integer sql type field. """Class that figure an integer sql type field.
Args:
name (str): The name of new field
size (int): The size of the new field in database. By default 11.
required (bool): Boolean for define if field is required or not
""" """
def __init__(self, name, size=11, required=False): def __init__(self, name, size=11, required=False):
"""
Args:
name (str): The name of field
size (int): The size of the new field in database. By default 11.
required (bool): Boolean for define if field is required or not
"""
super(IntegerField, self).__init__(name, size, required) super(IntegerField, self).__init__(name, size, required)
self.default_value=0 self.default_value=0

View file

@ -2,8 +2,15 @@ from paramecio2.libraries.db.webmodel import PhangoField,WebModel
import json import json
class ArrayField(PhangoField): class ArrayField(PhangoField):
"""Field for save json arrays with determined values"""
def __init__(self, name, field_type, required=False): def __init__(self, name, field_type, required=False):
"""
Args:
name (str): The name of new field
field_type (PhangoField): The type of PhangoField for save in ArrayField
required (bool): Boolean for define if field is required or not
"""
super().__init__(name, required) super().__init__(name, required)

View file

@ -2,6 +2,7 @@ from paramecio2.libraries.db.corefields import IntegerField
from paramecio2.libraries.db.extraforms.colorform import ColorForm from paramecio2.libraries.db.extraforms.colorform import ColorForm
class ColorField(IntegerField): class ColorField(IntegerField):
"""Simple field for save colors in hexadecimal format."""
def __init__(self, name, size=11, required=False): def __init__(self, name, size=11, required=False):
super().__init__(name, size, required) super().__init__(name, size, required)

View file

@ -3,6 +3,7 @@ from paramecio2.libraries import datetime
from paramecio2.libraries.db.extraforms.dateform import DateForm from paramecio2.libraries.db.extraforms.dateform import DateForm
class DateField(PhangoField): class DateField(PhangoField):
"""Field for use and save dates in YYYYMMDDHHSS format"""
def __init__(self, name, size=255, required=False): def __init__(self, name, size=255, required=False):

View file

@ -3,6 +3,7 @@ from paramecio2.libraries import datetime
from paramecio2.libraries.db.extraforms.dateform import DateForm from paramecio2.libraries.db.extraforms.dateform import DateForm
class DateTimeField(PhangoField): class DateTimeField(PhangoField):
"""Field for use and save dates in MySQL date format"""
def __init__(self, name, size=255, required=False): def __init__(self, name, size=255, required=False):

View file

@ -2,8 +2,15 @@ from paramecio2.libraries.db.webmodel import WebModel, PhangoField
import json import json
class DictField(PhangoField): class DictField(PhangoField):
"""Field for save json dicts with determined values"""
def __init__(self, name, field_type, required=False): def __init__(self, name, field_type, required=False):
"""
Args:
name (str): The name of field
field_type (PhangoField): The type of PhangoField for save in ArrayField
required (bool): Boolean for define if field is required or not
"""
super().__init__(name, required) super().__init__(name, required)

View file

@ -4,6 +4,7 @@ import re
mail_pattern=re.compile("\w[\w\.-]*@\w[\w\.-]+\.\w+") mail_pattern=re.compile("\w[\w\.-]*@\w[\w\.-]+\.\w+")
class EmailField(CharField): class EmailField(CharField):
"""Field for save and check email addreses"""
def __init__(self, name, size=1024, required=False): def __init__(self, name, size=1024, required=False):

View file

@ -17,8 +17,17 @@ from uuid import uuid4
#from paramecio2.libraries.db.extraforms.fileform import FileForm #from paramecio2.libraries.db.extraforms.fileform import FileForm
class FileField(CharField): class FileField(CharField):
"""Field for upload and save files in server"""
def __init__(self, name, save_folder='media/upload/files', sizes=None, module=None, size=255, required=False): def __init__(self, name, save_folder='media/upload/files', sizes=None, size=255, required=False):
"""
Args:
name (str): The name of field
save_folder (str): The folder where the files are saved
sizes (list): In the future will be used for check sizes of files.
size (int): The size of the new field in database. By default 11.
required (bool): Boolean for define if field is required or not
"""
super().__init__(name, size, required) super().__init__(name, size, required)

View file

@ -10,8 +10,14 @@ import json
import re import re
class I18nField(PhangoField): class I18nField(PhangoField):
"""Field for save strings multilanguage in json format"""
def __init__(self, name, form=None): def __init__(self, name, form=None):
"""
Args
name (str): The name of field
form (BaseForm): The form used for generate the multiple languade form. Example if you use a TextForm, a TextForm for every language will be showed.
"""
super().__init__(name) super().__init__(name)

View file

@ -18,8 +18,17 @@ from uuid import uuid4
#from paramecio2.libraries.db.extraforms.fileform import FileForm #from paramecio2.libraries.db.extraforms.fileform import FileForm
class ImageField(CharField): class ImageField(CharField):
"""Field for upload images in gif, jpg and png formats"""
def __init__(self, name, save_folder='media/upload/images', sizes=None, module=None, size=255, required=False): def __init__(self, name, save_folder='media/upload/images', sizes=None, module=None, size=255, required=False):
"""
Args:
name (str): The name of field
save_folder (str): The folder where the images are saved
sizes (list): In the future will be used for check sizes of files.
size (int): The size of the new field in database. By default 11.
required (bool): Boolean for define if field is required or not
"""
super().__init__(name, size, required) super().__init__(name, size, required)

View file

@ -2,6 +2,7 @@ from paramecio2.libraries.db.corefields import CharField
import ipaddress import ipaddress
class IpField(CharField): class IpField(CharField):
"""Field for save ip internet address values in db"""
def check(self, value): def check(self, value):

View file

@ -7,8 +7,15 @@ except:
import json import json
class JsonField(PhangoField): class JsonField(PhangoField):
"""Field for save json datatype values"""
def __init__(self, name, field_type, required=False): def __init__(self, name, field_type, required=False):
"""
Args:
name (str): The name of field
field_type (PhangoField): The type of PhangoField for save in JsonField
required (bool): Boolean for define if field is required or not
"""
super().__init__(name, required) super().__init__(name, required)
@ -58,6 +65,7 @@ class JsonField(PhangoField):
# You need check the values previously. # You need check the values previously.
class JsonValueField(PhangoField): class JsonValueField(PhangoField):
"""Field for save json mixed values. You need check the values previously, the field only check values for prevent sql injections."""
def __init__(self, name, required=False): def __init__(self, name, required=False):

View file

@ -5,6 +5,7 @@ from paramecio2.libraries.db import coreforms
from paramecio2.libraries.i18n import I18n from paramecio2.libraries.i18n import I18n
class LangField(CharField): class LangField(CharField):
"""Field for save language codes, by default es-ES (spanish) and en-US (USA english)"""
def __init__(self, name, size=255, required=False): def __init__(self, name, size=255, required=False):

View file

@ -5,6 +5,7 @@ from locale import format_string
getcontext().prec=2 getcontext().prec=2
class MoneyField(DecimalField): class MoneyField(DecimalField):
"""Field for maintain money values for e-commerce shopping for example."""
def __init__(self, name, required=False): def __init__(self, name, required=False):

View file

@ -7,8 +7,16 @@ from paramecio2.libraries.db.coreforms import SelectModelForm
from flask import request from flask import request
class ParentField(IntegerField): class ParentField(IntegerField):
"""Field used for create fields used by save a parent id from a row in db."""
def __init__(self, name, size=11, required=False, field_name='name'): def __init__(self, name, size=11, required=False, field_name='name'):
"""
Args:
name (str): The name of field
size (int): The size of the new field in database. By default 11.
required (bool): Boolean for define if field is required or not
field_name (str): The name of the field used for identify the father row of the db.
"""
super().__init__(name, size, required) super().__init__(name, size, required)

View file

@ -4,6 +4,7 @@ from hmac import compare_digest as compare_hash
import crypt import crypt
class PasswordField(PhangoField): class PasswordField(PhangoField):
"""Field for check and save passwords"""
def __init__(self, name, size=1024, required=False): def __init__(self, name, size=1024, required=False):
@ -57,6 +58,7 @@ class PasswordField(PhangoField):
@staticmethod @staticmethod
def verify( password, h): def verify( password, h):
"""Static method used for verify a password save using PasswordField"""
#return bcrypt_sha256.verify(password, h) #return bcrypt_sha256.verify(password, h)
return compare_hash(h, crypt.crypt(password, h)) return compare_hash(h, crypt.crypt(password, h))

View file

@ -1,6 +1,7 @@
from paramecio2.libraries.db.corefields import IntegerField from paramecio2.libraries.db.corefields import IntegerField
class PercentField(IntegerField): class PercentField(IntegerField):
"""Field used for save percent values from 0 to 100."""
def __init__(self, name, required=False): def __init__(self, name, required=False):

View file

@ -5,6 +5,7 @@ from slugify import slugify
from paramecio2.libraries.db.coreforms import HiddenForm from paramecio2.libraries.db.coreforms import HiddenForm
class SlugifyField(CharField): class SlugifyField(CharField):
"""Field for process text and slugify it"""
def __init__(self, name, size=255, field_related=None, required=False): def __init__(self, name, size=255, field_related=None, required=False):

View file

@ -11,6 +11,7 @@ check_url = re.compile(
r'(?:/?|[/?]\S+)$', re.IGNORECASE) r'(?:/?|[/?]\S+)$', re.IGNORECASE)
class UrlField(CharField): class UrlField(CharField):
"""Field for check and save strings in url format"""
def check(self, value): def check(self, value):
@ -28,6 +29,7 @@ class UrlField(CharField):
check_domain=re.compile('^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$') check_domain=re.compile('^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})$')
class DomainField(CharField): class DomainField(CharField):
"""Field for check and save strings in domain internet format"""
def check(self, value): def check(self, value):

View file

@ -6,6 +6,8 @@ import re
class UserNameField(PhangoField): class UserNameField(PhangoField):
"""Field for save and check usernames"""
def check(self, value): def check(self, value):
if not re.match("^[A-Za-z0-9_-]+$", value): if not re.match("^[A-Za-z0-9_-]+$", value):