diff options
| author | Santo Cariotti <dcariotti24@gmail.com> | 2020-04-06 19:54:53 +0000 |
|---|---|---|
| committer | Santo Cariotti <dcariotti24@gmail.com> | 2020-04-06 19:54:53 +0000 |
| commit | 3a2246e26e9febe3c15e2ddc1e7e6f320f86fe15 (patch) | |
| tree | 9cbd95771d38dfd66bedb4a447470391d34a68eb /src/frest/manage | |
| parent | 6188a952974b3e268936beb1027ea58fbfaa67aa (diff) | |
chore: move package in frest folder
Diffstat (limited to 'src/frest/manage')
| -rw-r--r-- | src/frest/manage/__init__.py | 0 | ||||
| -rw-r--r-- | src/frest/manage/bcolors.py | 17 | ||||
| -rw-r--r-- | src/frest/manage/utils.py | 226 |
3 files changed, 0 insertions, 243 deletions
diff --git a/src/frest/manage/__init__.py b/src/frest/manage/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/src/frest/manage/__init__.py +++ /dev/null diff --git a/src/frest/manage/bcolors.py b/src/frest/manage/bcolors.py deleted file mode 100644 index eb8b803..0000000 --- a/src/frest/manage/bcolors.py +++ /dev/null @@ -1,17 +0,0 @@ -class bcolors(object): - DARK_GREY = "\033[90m" - BOLD = "\033[1m" - ERROR = "\033[91m" - OK = "\033[92m" - WARNING = "\033[93m" - ENDC = "\033[0m" - - -COLORS = [ - bcolors.DARK_GREY, - bcolors.BOLD, - bcolors.ERROR, - bcolors.OK, - bcolors.WARNING, - bcolors.ENDC, -] diff --git a/src/frest/manage/utils.py b/src/frest/manage/utils.py deleted file mode 100644 index f8e76d1..0000000 --- a/src/frest/manage/utils.py +++ /dev/null @@ -1,226 +0,0 @@ -import os -from .bcolors import COLORS - - -ENDC = len(COLORS) - 1 - - -def logging(text, _type=ENDC, end=""): - print(f"{COLORS[_type]}{text}{COLORS[ENDC]}", end=end) - - -def logging_arg(text, *args): - args = [f"{COLORS[0]}{i}{COLORS[ENDC]}" for i in args] - print(text.format(*args), end="") - - -def logo(): - print( - """ - __ _ - / _| | | - | |_ _ __ ___ ___| |_ - | _| '__/ _ \/ __| __| - | | | | | __/\__ \ |_ - |_| |_| \___||___/\__| - \n\n""" - ) - - -def inputsr(): - return input().strip().replace(" ", "_").lower() - - -def create_field(fields): - field = {"name": "", "type": "", "nullable": True} - logging("Choose field name: ") - field_name = inputsr() - while (len(field_name) < 1 or field_name[0].isdigit()) or ( - field_name in fields or field_name in ["id", "created_at", "updated_at"] - ): - if len(field_name) < 1 or field_name[0].isdigit(): - logging("Field name must not be empty or starts with a number", 2, "\n") - else: - logging("Field name already exists", 2, "\n") - - logging("Choose field name: ") - field_name = inputsr() - - field["name"] = field_name - - logging("Choose field type: ") - logging("int, str, text, datetime, float, bool", 0, " ") - field_type = inputsr() - if field_type not in ["int", "str", "text", "datetime", "float", "bool"]: - logging("Field type must be one of the supported type", 2, "\n") - logging("Choose field type: ") - logging("int, str, text, datetime, float, bool", 0, " ") - field_type = inputsr() - - if field_type == "str": - logging("Choose string size: ") - stringsize = inputsr() - while not stringsize.isdigit(): - logging("String size must be an integer number", 2, "\n") - logging("Choose string size: ") - stringsize = inputsr() - - stringsize = int(stringsize) - if stringsize < 1: - logging("You inserted 0, so it will be 1 by default", 4, "\n") - stringsize = 1 - - field["size"] = stringsize - - field["type"] = field_type - - logging("Field is nullable? (Y/n): ") - field_nullable = inputsr() - - if len(field_nullable) > 0: - while True: - if field_nullable[0] not in ["y", "n"]: - logging("Field is nullable? (Y/n): ") - field_nullable = inputsr() - else: - break - - if field_nullable[0] == "n": - field["nullable"] = False - - return field - - -def create_model_cli(name): - logging( - "Fields id, created_at, updated_at are default on every new model, you can delete it from model file", - 4, - "\n\n", - ) - fields = [] - logging("Create field? (Y/n): ") - answer = inputsr() - - while answer in ["y", "", "yes"]: - field = create_field(fields) - fields.append(field) - - logging("Create new field? (Y/n): ") - answer = inputsr() - - fields_string = "" - init_fields_s = "" - for field in fields: - field_string = f"{field['name']} = db.Column(" - if field["type"] == "int": - field_string += "db.Integer" - elif field["type"] == "str": - field_string += f"db.String({field['size']})" - elif field["type"] == "text": - field_string += "db.Text" - elif field["type"] == "datetime": - field_string += "db.Datetime" - elif field["type"] == "float": - field_string += "db.Float" - else: - field_string += "db.Boolean" - - field_string += f", nullable={field['nullable']})\n\t".replace("\t", " " * 4) - - fields_string += field_string - init_fields_s += f"self.{field['name']} = kwargs.get('{field['name']}')\n\t\t".replace( - "'", '"' - ).replace( - "\t", " " * 4 - ) - - with open("templates/models.txt") as f: - modeltext = "".join(f.readlines()) - - modeltext = modeltext.replace("%%NAME%%", name.capitalize()) - modeltext = modeltext.replace("%%name%%", name) - modeltext = modeltext.replace("%%params_model%%", fields_string[:-5]) - modeltext = modeltext.replace("%%params_model_init%%", init_fields_s[:-9]) - - modelpath = f"scheme/{name}/models.py" - logging_arg("Create {}... ", modelpath) - with open(modelpath, "w") as f: - f.write(modeltext) - - return fields - - -def create_forms(name): - with open("templates/form.txt") as f: - formstext = "".join(f.readlines()) - - formstext = formstext.replace("%%NAME%%", name.capitalize()) - with open(f"scheme/{name}/forms.py", "w") as f: - f.write(formstext) - - -def create_routes(name, fields): - fields_l = [f"{name}Id"] - fields_l.extend([i["name"] for i in fields]) - fields_l.extend(["created_at", "updated_at"]) - - params_form = "" - for i in fields: - params_form += f"{i['name']}=form.get('{i['name']}'),\n\t\t\t".replace( - "'", '"' - ).replace("\t", " " * 4) - - params_put = "" - for i in fields: - params_put += f"{name[0]}.{i['name']} = form.get('{i['name']}')\n\t\t".replace( - "'", '"' - ).replace("\t", " " * 4) - - with open("templates/routes.txt") as f: - routestext = "".join(f.readlines()) - - routestext = routestext.replace("%%NAME%%", name.capitalize()) - routestext = routestext.replace("%%name%%", name) - routestext = routestext.replace("%%params%%", ",".join(fields_l)) - routestext = routestext.replace("%%first_char%%", name[0]) - routestext = routestext.replace("%%params_form%%", params_form[:-13]) - routestext = routestext.replace("%%params_put%%", params_put[:-9]) - - with open(f"scheme/{name}/routes.py", "w") as f: - f.write(routestext) - - -def create_app(name): - name = name.lower().replace("-", "_") - - if name.isdigit() or name[0].isdigit(): - logging("Name cannot be a number o starts with a number", 2) - return - - if len(name) < 2: - logging("Name of app must be minimun 2 characters long", 2) - return - - if os.path.exists(f"scheme/{name}"): - logging("App already exists", 2) - return - - logging_arg("Create {}... ", f"scheme/{name}") - os.mkdir(f"scheme/{name}") - logging("OK", 3, "\n") - - logging_arg("Create {}... ", f"scheme/{name}/__init__.py") - open(f"scheme/{name}/__init__.py", "w").close() - logging("OK", 3, "\n") - - logging_arg("Create model for {}...\n", name) - fields = create_model_cli(name) - logging("OK", 3, "\n") - - logging_arg("Create {}... ", f"scheme/{name}/forms.py") - create_forms(name) - logging("OK", 3, "\n") - - logging_arg("Create {}... ", f"scheme/{name}/routes.py") - create_routes(name, fields) - logging("OK", 3, "\n") |
