jknife 0.0.8__py2.py3-none-any.whl → 0.0.11__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- jknife/commands/jknife.py +41 -30
- jknife/db/models/mongo/users.py +1 -1
- jknife/views/users.py +2 -2
- {jknife-0.0.8.dist-info → jknife-0.0.11.dist-info}/METADATA +1 -1
- {jknife-0.0.8.dist-info → jknife-0.0.11.dist-info}/RECORD +8 -8
- {jknife-0.0.8.dist-info → jknife-0.0.11.dist-info}/WHEEL +0 -0
- {jknife-0.0.8.dist-info → jknife-0.0.11.dist-info}/entry_points.txt +0 -0
- {jknife-0.0.8.dist-info → jknife-0.0.11.dist-info}/licenses/LICENSE +0 -0
jknife/commands/jknife.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
import sys
|
2
2
|
import os
|
3
|
+
import subprocess
|
3
4
|
|
4
5
|
|
5
6
|
FOLDER_LIST: tuple = ("models", "routers", "views", )
|
@@ -12,7 +13,7 @@ Usage: jknife [sub_command] [3rd argument]
|
|
12
13
|
* sub_command:
|
13
14
|
- startproject [PROJECT_NAME] : create project filesystem
|
14
15
|
- createapp [APP_NAME] : create API application in project
|
15
|
-
-
|
16
|
+
- runserver [OPTIONS] : run server with uvicorn
|
16
17
|
|
17
18
|
[run OPTIONS]
|
18
19
|
--host [HOSTNAME] : run server with hostname [HOSTNAME]
|
@@ -20,9 +21,9 @@ Usage: jknife [sub_command] [3rd argument]
|
|
20
21
|
--reload : reload uvicorn server automatically after editing source.
|
21
22
|
"""
|
22
23
|
|
23
|
-
# Template for
|
24
|
-
|
25
|
-
# import packages from default or pip library
|
24
|
+
# Template for APP_NAME.py in each folder.
|
25
|
+
MODULE_IMPORT_STRING_DICT: dict = {
|
26
|
+
"models": """# import packages from default or pip library
|
26
27
|
from typing_extensions import Annotated, Doc
|
27
28
|
|
28
29
|
# import packages from this framework below
|
@@ -32,10 +33,8 @@ from typing_extensions import Annotated, Doc
|
|
32
33
|
|
33
34
|
|
34
35
|
# define your own customising class below
|
35
|
-
"""
|
36
|
-
|
37
|
-
# Template for routers/APP_NAME.py
|
38
|
-
MODULE_IMPORT_STRING_ROUTERS: str = """# import packages from default or pip library
|
36
|
+
""",
|
37
|
+
"views": """# import packages from default or pip library
|
39
38
|
from fastapi import APIRouter, Depends, status, HTTPException
|
40
39
|
from typing_extensions import Annotated, Doc
|
41
40
|
|
@@ -47,11 +46,9 @@ router = APIRouter(prefix="/{}",
|
|
47
46
|
tags=['{}'])
|
48
47
|
|
49
48
|
# define your own customising class below
|
50
|
-
"""
|
51
|
-
|
52
|
-
|
53
|
-
MODULE_IMPORT_STRING_VIEWS: str = """# import packages from default or pip library
|
54
|
-
from pydantic import BaseModel
|
49
|
+
""",
|
50
|
+
"routers": """# import packages from default or pip library
|
51
|
+
from pydantic import BaseModel, field_validator, ValidationError
|
55
52
|
|
56
53
|
# import packages from this framework below
|
57
54
|
|
@@ -61,10 +58,14 @@ from pydantic import BaseModel
|
|
61
58
|
|
62
59
|
# define your own customising class below
|
63
60
|
"""
|
61
|
+
}
|
64
62
|
|
65
63
|
# WARN MSGs
|
66
64
|
WARN_MSG_ALREADY_EXIST_PROJECT: str = """
|
67
|
-
[WARNING] You already have project '{}'.
|
65
|
+
[WARNING] You already have project named '{}'.
|
66
|
+
"""
|
67
|
+
WARN_MSG_ALREADY_EXIST_APP: str = """
|
68
|
+
[WARNING] You already have app named '{}'.
|
68
69
|
"""
|
69
70
|
|
70
71
|
# ERROR MSGs
|
@@ -74,6 +75,9 @@ ERROR_MSG_START_PROJECT: str = """
|
|
74
75
|
|
75
76
|
* Command for Starting Project: jknife startproject [PROJECT_NAME]
|
76
77
|
"""
|
78
|
+
ERROR_MSG_IMPOSSIBLE_RUNSERVER_OUT_OF_PROJECT: str = """
|
79
|
+
[ERROR] You have to execute 'runserver' command in your project folder.
|
80
|
+
"""
|
77
81
|
|
78
82
|
# File Contents
|
79
83
|
CONTENTS_IN_SETTINGS: str = """# this file is charge of config for custom fastapi.
|
@@ -315,24 +319,25 @@ def startproject(pjt_name: str) -> None:
|
|
315
319
|
def createapp(app_name: str) -> None:
|
316
320
|
# check main folders for jknife
|
317
321
|
for folder_name in FOLDER_LIST:
|
318
|
-
|
319
|
-
|
322
|
+
try:
|
323
|
+
if not os.listdir(folder_name):
|
320
324
|
with open(f"{folder_name}/__init__.py", "w") as f:
|
321
325
|
f.write("")
|
322
326
|
|
323
|
-
|
324
|
-
|
325
|
-
|
327
|
+
if f"{app_name}.py" not in os.listdir(folder_name):
|
328
|
+
with open(f"{folder_name}/{app_name}.py", "w") as f:
|
329
|
+
f.write(MODULE_IMPORT_STRING_DICT.get(folder_name))
|
326
330
|
|
327
|
-
|
328
|
-
|
329
|
-
f.write(MODULE_IMPORT_STRING_MODELS)
|
331
|
+
else:
|
332
|
+
raise AttributeError
|
330
333
|
|
331
|
-
|
332
|
-
|
334
|
+
except FileNotFoundError:
|
335
|
+
print(ERROR_MSG_START_PROJECT)
|
336
|
+
return None
|
333
337
|
|
334
|
-
|
335
|
-
|
338
|
+
except AttributeError:
|
339
|
+
print(WARN_MSG_ALREADY_EXIST_APP.format(app_name))
|
340
|
+
return None
|
336
341
|
|
337
342
|
return None
|
338
343
|
|
@@ -340,9 +345,15 @@ def help_msg():
|
|
340
345
|
print(HELP_MSG)
|
341
346
|
return None
|
342
347
|
|
343
|
-
def run_server(options: list):
|
344
|
-
|
345
|
-
|
348
|
+
def run_server(options: list, app_name: str = "main"):
|
349
|
+
for f in FOLDER_LIST:
|
350
|
+
if f not in os.listdir():
|
351
|
+
print(ERROR_MSG_IMPOSSIBLE_RUNSERVER_OUT_OF_PROJECT)
|
352
|
+
return None
|
353
|
+
|
354
|
+
args = " ".join([ option.replace("=", " ") for option in options ])
|
355
|
+
command = f"uvicorn {app_name}:app {args}"
|
356
|
+
result_cmd = subprocess.call(command, shell=True)
|
346
357
|
return None
|
347
358
|
|
348
359
|
def main() -> None:
|
@@ -359,7 +370,7 @@ def main() -> None:
|
|
359
370
|
createapp(app_name=read_command[2])
|
360
371
|
return None
|
361
372
|
|
362
|
-
elif sub_command == "
|
373
|
+
elif sub_command == "runserver":
|
363
374
|
run_server(read_command[2:])
|
364
375
|
return None
|
365
376
|
|
jknife/db/models/mongo/users.py
CHANGED
@@ -4,7 +4,7 @@ from typing_extensions import Annotated, Doc
|
|
4
4
|
from mongoengine import Document, BooleanField, DateTimeField, IntField, StringField
|
5
5
|
|
6
6
|
# import packages from this framework
|
7
|
-
from
|
7
|
+
from ..rdbms.users import encrypt_password
|
8
8
|
|
9
9
|
|
10
10
|
# define Class for Common SQLModel
|
jknife/views/users.py
CHANGED
@@ -4,8 +4,8 @@ from typing_extensions import Annotated, Doc
|
|
4
4
|
from pydantic import BaseModel, field_validator
|
5
5
|
|
6
6
|
# import packages from this framework
|
7
|
-
from
|
8
|
-
from
|
7
|
+
from jknife.views.personnel_info import EmailInputViewMixin
|
8
|
+
from jknife.dependencies.users import validate_password_policy
|
9
9
|
|
10
10
|
|
11
11
|
# define mixin class
|
@@ -1,7 +1,7 @@
|
|
1
1
|
jknife/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
2
|
jknife/logging.py,sha256=vwXXYqiRDRSeAUtDZq6QTTJ5p7ES4iLdnS68Cz0MFgo,2312
|
3
3
|
jknife/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
-
jknife/commands/jknife.py,sha256=
|
4
|
+
jknife/commands/jknife.py,sha256=ol0QKc1nz98dnZc7HcFypbbctfTFUbX_v1yyevJ-meE,12235
|
5
5
|
jknife/db/__init__.py,sha256=lZQ1ds_BYK4Xkjaypn1zDxuypjdEKca-6uxSJ3mr0V4,6236
|
6
6
|
jknife/db/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
jknife/db/models/mongo/__init__.py,sha256=bDj6rFEtNudrbtPbk4iORlWwXyMv6V_PCeixyGufxP4,1984
|
@@ -9,7 +9,7 @@ jknife/db/models/mongo/network.py,sha256=MfFq05k_42uw4mMfcd62K7MOhuk0E5OuqfxmHD_
|
|
9
9
|
jknife/db/models/mongo/personnel_info.py,sha256=wIalbvVI1bqCTOsShrSvy29I6OrdqaY6nYGhSxRFTf0,3273
|
10
10
|
jknife/db/models/mongo/settings.py,sha256=mFJQAAeoyWEY1J6y5_l1p4JevOYHyX27wL5A-gO35bg,2219
|
11
11
|
jknife/db/models/mongo/token.py,sha256=Xfw6LlAZ8Qu2iA9vYxyTk52aq4KoMLZ9P0KBRDiOBLI,2410
|
12
|
-
jknife/db/models/mongo/users.py,sha256=
|
12
|
+
jknife/db/models/mongo/users.py,sha256=6YmUTnR-Ru-J2XotnJHifQKfIgktAVV27MQZMIvssKE,2912
|
13
13
|
jknife/db/models/rdbms/__init__.py,sha256=0r22xz8J_kENMiPNVr_t3P5iILGXsll38wXXwnREABc,1847
|
14
14
|
jknife/db/models/rdbms/network.py,sha256=lk3p4UBbsnPRuwr5Q4CGXDL9bSAlZAEaUz-GVfEWc0U,1040
|
15
15
|
jknife/db/models/rdbms/personnel_info.py,sha256=OBwMvg8K_3XqKSSaeJzDir_pIIHNd3cxdL-2IsQFuFQ,2976
|
@@ -23,9 +23,9 @@ jknife/views/__init__.py,sha256=uXUiBzToN6gmb7zcHUyPbniNjCtzbyN31FrIVs7PpI0,596
|
|
23
23
|
jknife/views/error_message.py,sha256=g3xS8Z0R1BeP9XpmETgLirDdghM789iGXBfU-K8wwWM,887
|
24
24
|
jknife/views/personnel_info.py,sha256=JL_GqerZjhgs4AJQsQ2eeUZxCh17G8zXuWsDqaEI2tk,957
|
25
25
|
jknife/views/tokens.py,sha256=PJh_fGEwK3T6Kq0aY-CuJPWCTdcHFrCSd2NhJMZqYqU,647
|
26
|
-
jknife/views/users.py,sha256=
|
27
|
-
jknife-0.0.
|
28
|
-
jknife-0.0.
|
29
|
-
jknife-0.0.
|
30
|
-
jknife-0.0.
|
31
|
-
jknife-0.0.
|
26
|
+
jknife/views/users.py,sha256=mcljiLn9I0NL6jK_cxp8IdNXcyNwxYtfzkwW0NS64-E,2033
|
27
|
+
jknife-0.0.11.dist-info/METADATA,sha256=GsWgkaoEPRqcmfxCUNAkkVeM7JdCW2yKKis7-pK36QA,529
|
28
|
+
jknife-0.0.11.dist-info/WHEEL,sha256=tkmg4JIqwd9H8mL30xA7crRmoStyCtGp0VWshokd1Jc,105
|
29
|
+
jknife-0.0.11.dist-info/entry_points.txt,sha256=08tkSuEw5jKr7Jz0cFlcKr8b2fjsQIf4Mzmb0cB8XOM,55
|
30
|
+
jknife-0.0.11.dist-info/licenses/LICENSE,sha256=myY0xrsHJcytQadTeGVqmIo6QlskAAf5epHL-WRQe30,1067
|
31
|
+
jknife-0.0.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|