From d04a7121df1349767849d0ee81980bf17f03b135 Mon Sep 17 00:00:00 2001 From: Antonio de la Rosa Date: Fri, 6 May 2022 19:40:16 +0200 Subject: [PATCH] Added more docstrings to forms and fields --- paramecio2/libraries/db/corefields.py | 13 +++++++------ paramecio2/libraries/db/extrafields/arrayfield.py | 7 +++++++ paramecio2/libraries/db/extrafields/colorfield.py | 1 + paramecio2/libraries/db/extrafields/datefield.py | 1 + .../libraries/db/extrafields/datetimefield.py | 1 + paramecio2/libraries/db/extrafields/dictfield.py | 7 +++++++ paramecio2/libraries/db/extrafields/emailfield.py | 1 + paramecio2/libraries/db/extrafields/filefield.py | 11 ++++++++++- paramecio2/libraries/db/extrafields/i18nfield.py | 6 ++++++ paramecio2/libraries/db/extrafields/imagefield.py | 9 +++++++++ paramecio2/libraries/db/extrafields/ipfield.py | 1 + paramecio2/libraries/db/extrafields/jsonfield.py | 10 +++++++++- paramecio2/libraries/db/extrafields/langfield.py | 1 + paramecio2/libraries/db/extrafields/moneyfield.py | 1 + paramecio2/libraries/db/extrafields/parentfield.py | 8 ++++++++ .../libraries/db/extrafields/passwordfield.py | 2 ++ paramecio2/libraries/db/extrafields/percentfield.py | 1 + paramecio2/libraries/db/extrafields/slugifyfield.py | 1 + paramecio2/libraries/db/extrafields/urlfield.py | 2 ++ .../libraries/db/extrafields/usernamefield.py | 4 +++- 20 files changed, 79 insertions(+), 9 deletions(-) diff --git a/paramecio2/libraries/db/corefields.py b/paramecio2/libraries/db/corefields.py index b8b05e3..03c32dd 100644 --- a/paramecio2/libraries/db/corefields.py +++ b/paramecio2/libraries/db/corefields.py @@ -6,15 +6,16 @@ from bs4 import BeautifulSoup class IntegerField(PhangoField): """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): + """ + 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) self.default_value=0 diff --git a/paramecio2/libraries/db/extrafields/arrayfield.py b/paramecio2/libraries/db/extrafields/arrayfield.py index 854ebb4..7d5140a 100644 --- a/paramecio2/libraries/db/extrafields/arrayfield.py +++ b/paramecio2/libraries/db/extrafields/arrayfield.py @@ -2,8 +2,15 @@ from paramecio2.libraries.db.webmodel import PhangoField,WebModel import json class ArrayField(PhangoField): + """Field for save json arrays with determined values""" 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) diff --git a/paramecio2/libraries/db/extrafields/colorfield.py b/paramecio2/libraries/db/extrafields/colorfield.py index 9ebaeef..927b742 100644 --- a/paramecio2/libraries/db/extrafields/colorfield.py +++ b/paramecio2/libraries/db/extrafields/colorfield.py @@ -2,6 +2,7 @@ from paramecio2.libraries.db.corefields import IntegerField from paramecio2.libraries.db.extraforms.colorform import ColorForm class ColorField(IntegerField): + """Simple field for save colors in hexadecimal format.""" def __init__(self, name, size=11, required=False): super().__init__(name, size, required) diff --git a/paramecio2/libraries/db/extrafields/datefield.py b/paramecio2/libraries/db/extrafields/datefield.py index a04bdca..4ead3ce 100644 --- a/paramecio2/libraries/db/extrafields/datefield.py +++ b/paramecio2/libraries/db/extrafields/datefield.py @@ -3,6 +3,7 @@ from paramecio2.libraries import datetime from paramecio2.libraries.db.extraforms.dateform import DateForm class DateField(PhangoField): + """Field for use and save dates in YYYYMMDDHHSS format""" def __init__(self, name, size=255, required=False): diff --git a/paramecio2/libraries/db/extrafields/datetimefield.py b/paramecio2/libraries/db/extrafields/datetimefield.py index 082cbd4..2cde5c5 100644 --- a/paramecio2/libraries/db/extrafields/datetimefield.py +++ b/paramecio2/libraries/db/extrafields/datetimefield.py @@ -3,6 +3,7 @@ from paramecio2.libraries import datetime from paramecio2.libraries.db.extraforms.dateform import DateForm class DateTimeField(PhangoField): + """Field for use and save dates in MySQL date format""" def __init__(self, name, size=255, required=False): diff --git a/paramecio2/libraries/db/extrafields/dictfield.py b/paramecio2/libraries/db/extrafields/dictfield.py index 3132f7f..b737ae8 100644 --- a/paramecio2/libraries/db/extrafields/dictfield.py +++ b/paramecio2/libraries/db/extrafields/dictfield.py @@ -2,8 +2,15 @@ from paramecio2.libraries.db.webmodel import WebModel, PhangoField import json class DictField(PhangoField): + """Field for save json dicts with determined values""" 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) diff --git a/paramecio2/libraries/db/extrafields/emailfield.py b/paramecio2/libraries/db/extrafields/emailfield.py index cf47b3b..88d1afd 100644 --- a/paramecio2/libraries/db/extrafields/emailfield.py +++ b/paramecio2/libraries/db/extrafields/emailfield.py @@ -4,6 +4,7 @@ import re mail_pattern=re.compile("\w[\w\.-]*@\w[\w\.-]+\.\w+") class EmailField(CharField): + """Field for save and check email addreses""" def __init__(self, name, size=1024, required=False): diff --git a/paramecio2/libraries/db/extrafields/filefield.py b/paramecio2/libraries/db/extrafields/filefield.py index 39d0e37..bc4d289 100644 --- a/paramecio2/libraries/db/extrafields/filefield.py +++ b/paramecio2/libraries/db/extrafields/filefield.py @@ -17,8 +17,17 @@ from uuid import uuid4 #from paramecio2.libraries.db.extraforms.fileform import FileForm 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) diff --git a/paramecio2/libraries/db/extrafields/i18nfield.py b/paramecio2/libraries/db/extrafields/i18nfield.py index 5893c13..2b57c09 100644 --- a/paramecio2/libraries/db/extrafields/i18nfield.py +++ b/paramecio2/libraries/db/extrafields/i18nfield.py @@ -10,8 +10,14 @@ import json import re class I18nField(PhangoField): + """Field for save strings multilanguage in json format""" 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) diff --git a/paramecio2/libraries/db/extrafields/imagefield.py b/paramecio2/libraries/db/extrafields/imagefield.py index af0ae94..f8c58cd 100644 --- a/paramecio2/libraries/db/extrafields/imagefield.py +++ b/paramecio2/libraries/db/extrafields/imagefield.py @@ -18,8 +18,17 @@ from uuid import uuid4 #from paramecio2.libraries.db.extraforms.fileform import FileForm 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): + """ + 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) diff --git a/paramecio2/libraries/db/extrafields/ipfield.py b/paramecio2/libraries/db/extrafields/ipfield.py index 7b46132..7044798 100644 --- a/paramecio2/libraries/db/extrafields/ipfield.py +++ b/paramecio2/libraries/db/extrafields/ipfield.py @@ -2,6 +2,7 @@ from paramecio2.libraries.db.corefields import CharField import ipaddress class IpField(CharField): + """Field for save ip internet address values in db""" def check(self, value): diff --git a/paramecio2/libraries/db/extrafields/jsonfield.py b/paramecio2/libraries/db/extrafields/jsonfield.py index da67236..e90221d 100644 --- a/paramecio2/libraries/db/extrafields/jsonfield.py +++ b/paramecio2/libraries/db/extrafields/jsonfield.py @@ -7,8 +7,15 @@ except: import json class JsonField(PhangoField): - + """Field for save json datatype values""" + 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) @@ -58,6 +65,7 @@ class JsonField(PhangoField): # You need check the values previously. 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): diff --git a/paramecio2/libraries/db/extrafields/langfield.py b/paramecio2/libraries/db/extrafields/langfield.py index 2ae898b..a6cac37 100644 --- a/paramecio2/libraries/db/extrafields/langfield.py +++ b/paramecio2/libraries/db/extrafields/langfield.py @@ -5,6 +5,7 @@ from paramecio2.libraries.db import coreforms from paramecio2.libraries.i18n import I18n 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): diff --git a/paramecio2/libraries/db/extrafields/moneyfield.py b/paramecio2/libraries/db/extrafields/moneyfield.py index 2ac0697..5d6de16 100644 --- a/paramecio2/libraries/db/extrafields/moneyfield.py +++ b/paramecio2/libraries/db/extrafields/moneyfield.py @@ -5,6 +5,7 @@ from locale import format_string getcontext().prec=2 class MoneyField(DecimalField): + """Field for maintain money values for e-commerce shopping for example.""" def __init__(self, name, required=False): diff --git a/paramecio2/libraries/db/extrafields/parentfield.py b/paramecio2/libraries/db/extrafields/parentfield.py index dca2784..06f197a 100644 --- a/paramecio2/libraries/db/extrafields/parentfield.py +++ b/paramecio2/libraries/db/extrafields/parentfield.py @@ -7,8 +7,16 @@ from paramecio2.libraries.db.coreforms import SelectModelForm from flask import request 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'): + """ + 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) diff --git a/paramecio2/libraries/db/extrafields/passwordfield.py b/paramecio2/libraries/db/extrafields/passwordfield.py index a31a3ad..08985f7 100644 --- a/paramecio2/libraries/db/extrafields/passwordfield.py +++ b/paramecio2/libraries/db/extrafields/passwordfield.py @@ -4,6 +4,7 @@ from hmac import compare_digest as compare_hash import crypt class PasswordField(PhangoField): + """Field for check and save passwords""" def __init__(self, name, size=1024, required=False): @@ -57,6 +58,7 @@ class PasswordField(PhangoField): @staticmethod def verify( password, h): + """Static method used for verify a password save using PasswordField""" #return bcrypt_sha256.verify(password, h) return compare_hash(h, crypt.crypt(password, h)) diff --git a/paramecio2/libraries/db/extrafields/percentfield.py b/paramecio2/libraries/db/extrafields/percentfield.py index ee1eece..95b7b61 100644 --- a/paramecio2/libraries/db/extrafields/percentfield.py +++ b/paramecio2/libraries/db/extrafields/percentfield.py @@ -1,6 +1,7 @@ from paramecio2.libraries.db.corefields import IntegerField class PercentField(IntegerField): + """Field used for save percent values from 0 to 100.""" def __init__(self, name, required=False): diff --git a/paramecio2/libraries/db/extrafields/slugifyfield.py b/paramecio2/libraries/db/extrafields/slugifyfield.py index 9ed7348..2fc61c3 100644 --- a/paramecio2/libraries/db/extrafields/slugifyfield.py +++ b/paramecio2/libraries/db/extrafields/slugifyfield.py @@ -5,6 +5,7 @@ from slugify import slugify from paramecio2.libraries.db.coreforms import HiddenForm class SlugifyField(CharField): + """Field for process text and slugify it""" def __init__(self, name, size=255, field_related=None, required=False): diff --git a/paramecio2/libraries/db/extrafields/urlfield.py b/paramecio2/libraries/db/extrafields/urlfield.py index dc2f1c4..078b13d 100644 --- a/paramecio2/libraries/db/extrafields/urlfield.py +++ b/paramecio2/libraries/db/extrafields/urlfield.py @@ -11,6 +11,7 @@ check_url = re.compile( r'(?:/?|[/?]\S+)$', re.IGNORECASE) class UrlField(CharField): + """Field for check and save strings in url format""" 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})$') class DomainField(CharField): + """Field for check and save strings in domain internet format""" def check(self, value): diff --git a/paramecio2/libraries/db/extrafields/usernamefield.py b/paramecio2/libraries/db/extrafields/usernamefield.py index a8576ab..16c300f 100644 --- a/paramecio2/libraries/db/extrafields/usernamefield.py +++ b/paramecio2/libraries/db/extrafields/usernamefield.py @@ -5,7 +5,9 @@ import crypt import re class UserNameField(PhangoField): - + + """Field for save and check usernames""" + def check(self, value): if not re.match("^[A-Za-z0-9_-]+$", value):