vesta-web 1.1.0__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.
- vesta/__init__.py +486 -0
- vesta/db/UNIAUTH.sql +58 -0
- vesta/db/db_service.py +253 -0
- vesta/emptyProject/.gitignore +16 -0
- vesta/emptyProject/.gitlab-ci.yml +12 -0
- vesta/emptyProject/CONTRIBUTING.md +45 -0
- vesta/emptyProject/LICENSE.md +3 -0
- vesta/emptyProject/README.md +44 -0
- vesta/emptyProject/crons/exemple.py +13 -0
- vesta/emptyProject/db/schema.sql +0 -0
- vesta/emptyProject/install.sh +17 -0
- vesta/emptyProject/mailing/mailReset.html +1 -0
- vesta/emptyProject/mailing/mailVerif.html +1 -0
- vesta/emptyProject/misc/nginx_local +15 -0
- vesta/emptyProject/misc/nginx_prod +29 -0
- vesta/emptyProject/misc/nginx_prod_ws +29 -0
- vesta/emptyProject/misc/vesta.service +11 -0
- vesta/emptyProject/requirements.txt +0 -0
- vesta/emptyProject/server_static.ini +6 -0
- vesta/emptyProject/server_static.py +15 -0
- vesta/emptyProject/server_static_orm.ini +13 -0
- vesta/emptyProject/server_static_orm.py +15 -0
- vesta/emptyProject/server_vesta.ini +27 -0
- vesta/emptyProject/server_vesta.py +17 -0
- vesta/emptyProject/server_vesta_ws.ini +31 -0
- vesta/emptyProject/server_vesta_ws.py +56 -0
- vesta/emptyProject/static/home/auth.css +101 -0
- vesta/emptyProject/static/home/auth.html +38 -0
- vesta/emptyProject/static/home/auth.js +159 -0
- vesta/emptyProject/static/home/reset.html +33 -0
- vesta/emptyProject/static/home/verif.html +33 -0
- vesta/emptyProject/static/main.html +14 -0
- vesta/emptyProject/static/main.mjs +9 -0
- vesta/emptyProject/static/mobileUiManifest.mjs +3 -0
- vesta/emptyProject/static/style.css +0 -0
- vesta/emptyProject/static/translations/en.mjs +2 -0
- vesta/emptyProject/static/translations/fr.mjs +2 -0
- vesta/emptyProject/static/translations/translation.mjs +51 -0
- vesta/emptyProject/static/ws/onMessage.mjs +21 -0
- vesta/emptyProject/tests/example/foo.py +7 -0
- vesta/http/baseServer.py +257 -0
- vesta/http/error.py +5 -0
- vesta/http/redirect.py +5 -0
- vesta/http/response.py +85 -0
- vesta/mailing/mailing_service.py +126 -0
- vesta/scripts/initDB.py +52 -0
- vesta/scripts/install.py +76 -0
- vesta/scripts/testsRun.py +83 -0
- vesta/scripts/utils.py +84 -0
- vesta/scripts/vesta.py +225 -0
- vesta_web-1.1.0.dist-info/METADATA +55 -0
- vesta_web-1.1.0.dist-info/RECORD +55 -0
- vesta_web-1.1.0.dist-info/WHEEL +4 -0
- vesta_web-1.1.0.dist-info/entry_points.txt +2 -0
- vesta_web-1.1.0.dist-info/licenses/LICENSE.md +5 -0
vesta/scripts/utils.py
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
from configparser import ConfigParser
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def ex(command):
|
|
6
|
+
subprocess.run(command, shell=True, check=True)
|
|
7
|
+
|
|
8
|
+
class Installer:
|
|
9
|
+
def __init__(self, configFile, path):
|
|
10
|
+
self.PATH = path
|
|
11
|
+
self.importConf(configFile)
|
|
12
|
+
self.uniauth = "N"
|
|
13
|
+
self.name = self.config.get("server", "SERVICE_NAME").replace(" ", "_").lower()
|
|
14
|
+
|
|
15
|
+
def installNginx(self, link=True):
|
|
16
|
+
print("----NGINX----")
|
|
17
|
+
|
|
18
|
+
if self.config.getboolean("server", "DEBUG"):
|
|
19
|
+
self.editFile("misc/nginx_local", {"[PATH]": self.PATH, "[SERV-PORT]": self.config.get("server", "PORT")})
|
|
20
|
+
ex("sudo cp ./misc/nginx_local_filled /etc/nginx/sites-available/" + self.name)
|
|
21
|
+
else:
|
|
22
|
+
try:
|
|
23
|
+
self.editFile("misc/nginx_prod", {"[PATH]": self.PATH, "[SERV-PORT]": self.config.get("server", "PORT"), "[WS-PORT]": self.config.get("NOTIFICATION", "PORT")})
|
|
24
|
+
except Exception:
|
|
25
|
+
self.editFile("misc/nginx_prod", {"[PATH]": self.PATH, "[SERV-PORT]": self.config.get("server", "PORT")})
|
|
26
|
+
ex("sudo cp ./misc/nginx_prod_filled /etc/nginx/sites-available/" + self.name)
|
|
27
|
+
|
|
28
|
+
if not link:
|
|
29
|
+
return
|
|
30
|
+
|
|
31
|
+
ex("sudo ln -s /etc/nginx/sites-available/" + self.name + " /etc/nginx/sites-enabled/")
|
|
32
|
+
|
|
33
|
+
def addNginxMimeType(self):
|
|
34
|
+
pattern = 'application/javascript'
|
|
35
|
+
new_line = 'application/javascript mjs;'
|
|
36
|
+
with open('/etc/nginx/mime.types', 'r+') as f:
|
|
37
|
+
lines = f.readlines()
|
|
38
|
+
found = False
|
|
39
|
+
for i, line in enumerate(lines):
|
|
40
|
+
if pattern in line:
|
|
41
|
+
found = True
|
|
42
|
+
lines.insert(i + 1, new_line + '\n')
|
|
43
|
+
break
|
|
44
|
+
if not found:
|
|
45
|
+
print(f"Pattern '{pattern}' not found in {filename}.")
|
|
46
|
+
else:
|
|
47
|
+
f.seek(0)
|
|
48
|
+
f.writelines(lines)
|
|
49
|
+
|
|
50
|
+
def setupCrons(self):
|
|
51
|
+
try:
|
|
52
|
+
ex("crontab -l > crontab")
|
|
53
|
+
except Exception:
|
|
54
|
+
pass
|
|
55
|
+
ex("echo '*/15 * * * * " + self.PATH + "/venv/bin/python3 " + self.PATH + "/crons/15mins.py' >> crontab")
|
|
56
|
+
ex("echo '0 * * * * " + self.PATH + "/venv/bin/python3 " + self.PATH + "/crons/1h.py' >> crontab")
|
|
57
|
+
ex("echo '0 0 * * * " + self.PATH + "/venv/bin/python3 " + self.PATH + "/crons/1day.py' >> crontab")
|
|
58
|
+
ex("crontab crontab")
|
|
59
|
+
|
|
60
|
+
def importConf(self, configFile):
|
|
61
|
+
self.config = ConfigParser()
|
|
62
|
+
try:
|
|
63
|
+
self.config.read(configFile)
|
|
64
|
+
print("config at " + configFile + " loaded")
|
|
65
|
+
except Exception:
|
|
66
|
+
print("please create a config file")
|
|
67
|
+
|
|
68
|
+
def nukeNginx(self):
|
|
69
|
+
ex("sudo rm /etc/nginx/sites-available/" + self.name)
|
|
70
|
+
|
|
71
|
+
def installService(self):
|
|
72
|
+
self.editFile("misc/vesta.service", {"[PATH]": self.PATH, "[SERV-PORT]": self.config.get("server", "PORT"), "[NAME]":self.config.get("server", "service_name")} )
|
|
73
|
+
ex("cp ./misc/vesta.service_filled /etc/systemd/system/" + self.name + ".service")
|
|
74
|
+
ex("sudo systemctl daemon-reload")
|
|
75
|
+
ex("sudo systemctl enable " + self.name + ".service")
|
|
76
|
+
ex("sudo systemctl start " + self.name + ".service")
|
|
77
|
+
|
|
78
|
+
def editFile(self, file, templates):
|
|
79
|
+
with open(file, "r+") as f:
|
|
80
|
+
data = f.read()
|
|
81
|
+
for key in templates:
|
|
82
|
+
data = data.replace(key, templates[key])
|
|
83
|
+
with open(file+"_filled", "w+") as f:
|
|
84
|
+
f.write(data)
|
vesta/scripts/vesta.py
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
import os
|
|
3
|
+
import subprocess
|
|
4
|
+
from .utils import ex, Installer
|
|
5
|
+
|
|
6
|
+
HERE = os.path.dirname(__file__)
|
|
7
|
+
PATH = os.getcwd()
|
|
8
|
+
EMPTY_PROJECT_PATH = os.path.join(HERE, '..', 'emptyProject')
|
|
9
|
+
|
|
10
|
+
def list_features(server):
|
|
11
|
+
if server == "http":
|
|
12
|
+
return {
|
|
13
|
+
"ORM: PostgreSQL ORM ": "ORM",
|
|
14
|
+
"JS: Frontend Framework": "js",
|
|
15
|
+
"MD: Js markdown parser": "md",
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
"Websockets: WS server": "ws",
|
|
20
|
+
"JS: Frontend Framework": "js",
|
|
21
|
+
"CRON: scheduled tasks": "cron",
|
|
22
|
+
"MD: Js markdown parser": "md",
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
def copy_features(server, features):
|
|
26
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/misc ./")
|
|
27
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/static ./")
|
|
28
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/tests ./")
|
|
29
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/.gitignore .")
|
|
30
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/CONTRIBUTING.md .")
|
|
31
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/LICENSE.md .")
|
|
32
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/README.md .")
|
|
33
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/install.sh .")
|
|
34
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/requirements.txt .")
|
|
35
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/.gitlab-ci.yml .")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
if server == "http":
|
|
39
|
+
if "ORM" in features:
|
|
40
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_static_orm.py ./server.py")
|
|
41
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_static_orm.ini ./server.ini")
|
|
42
|
+
else:
|
|
43
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_static.py ./server.py")
|
|
44
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_static.ini ./server.ini")
|
|
45
|
+
ex(f"rm -r ./static/home")
|
|
46
|
+
else:
|
|
47
|
+
if "ws" in features:
|
|
48
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_vesta_ws.ini ./server.ini")
|
|
49
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_vesta_ws.py ./server.py")
|
|
50
|
+
else:
|
|
51
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_vesta.ini ./server.ini")
|
|
52
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/server_vesta.py ./server.py")
|
|
53
|
+
|
|
54
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/mailing ./")
|
|
55
|
+
|
|
56
|
+
if "cron" in features:
|
|
57
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/crons ./")
|
|
58
|
+
|
|
59
|
+
if "orm" in features or server == "vesta":
|
|
60
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/db ./")
|
|
61
|
+
|
|
62
|
+
if "js" not in features:
|
|
63
|
+
ex(f"rm -r ./static/framework")
|
|
64
|
+
ex(f"rm -r ./static/translations")
|
|
65
|
+
ex(f"rm ./static/mobileUiManifest.mjs")
|
|
66
|
+
|
|
67
|
+
if "md" not in features:
|
|
68
|
+
ex(f"rm -r ./static/markdown")
|
|
69
|
+
|
|
70
|
+
if "ws" not in features:
|
|
71
|
+
ex(f"rm -r ./static/ws")
|
|
72
|
+
else:
|
|
73
|
+
ex(f"cp {EMPTY_PROJECT_PATH}/misc/nginx_prod_ws ./misc/nginx_prod")
|
|
74
|
+
ex(f"rm ./misc/nginx_prod_ws")
|
|
75
|
+
manifest = server+"\n"
|
|
76
|
+
for feat in features:
|
|
77
|
+
manifest += feat + "\n"
|
|
78
|
+
with open("vesta.manifest", "w+") as f:
|
|
79
|
+
f.write(manifest)
|
|
80
|
+
|
|
81
|
+
def init_project():
|
|
82
|
+
if os.path.exists("server.ini"):
|
|
83
|
+
print("A Vesta project already exists in this directory.")
|
|
84
|
+
return
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# Choose server type
|
|
88
|
+
print("Choose server type:")
|
|
89
|
+
print("1. HTTP (for static websites or simple apps without auth or websockets)")
|
|
90
|
+
print("2. Vesta (with uniauth, ORM, mailing)")
|
|
91
|
+
choice = input("Enter 1 or 2: ")
|
|
92
|
+
if choice == '1':
|
|
93
|
+
server = "http"
|
|
94
|
+
elif choice == '2':
|
|
95
|
+
server = "vesta"
|
|
96
|
+
else:
|
|
97
|
+
print("Invalid choice.")
|
|
98
|
+
return
|
|
99
|
+
|
|
100
|
+
features = list_features(server)
|
|
101
|
+
|
|
102
|
+
print("Which features would you like to add to your project?")
|
|
103
|
+
convert = []
|
|
104
|
+
for idx, feat in enumerate(features, 1):
|
|
105
|
+
convert.append(feat)
|
|
106
|
+
print(f"{idx}. {feat}")
|
|
107
|
+
choice = input("Enter the numbers separated by commas (e.g., 1,3): ")
|
|
108
|
+
|
|
109
|
+
selected = []
|
|
110
|
+
if choice.strip() != "":
|
|
111
|
+
list = choice.split(',')
|
|
112
|
+
for x in list:
|
|
113
|
+
if x.strip().isdigit():
|
|
114
|
+
i = int(x.strip()) - 1
|
|
115
|
+
if 0 <= i < len(features):
|
|
116
|
+
|
|
117
|
+
selected.append(features[convert[i]])
|
|
118
|
+
else:
|
|
119
|
+
print(f"Number is out of range: {x.strip()}")
|
|
120
|
+
return
|
|
121
|
+
else:
|
|
122
|
+
print(f"Invalid input: {x.strip()}")
|
|
123
|
+
return
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
copy_features(server,selected)
|
|
127
|
+
print("Initialization complete.")
|
|
128
|
+
|
|
129
|
+
def installDeps():
|
|
130
|
+
print("Installing dependencies...")
|
|
131
|
+
server, features = getManifest()
|
|
132
|
+
installFeatures(features)
|
|
133
|
+
|
|
134
|
+
print("Dependencies installed.")
|
|
135
|
+
|
|
136
|
+
def getManifest():
|
|
137
|
+
|
|
138
|
+
if not os.path.exists("vesta.manifest"):
|
|
139
|
+
print("vesta.manifest not found. Are you in a Vesta project directory?")
|
|
140
|
+
exit(1)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
with open("vesta.manifest", "r") as f:
|
|
144
|
+
lines = f.readlines()
|
|
145
|
+
server = lines[0].strip()
|
|
146
|
+
features = [line.strip() for line in lines[1:]]
|
|
147
|
+
return server, features
|
|
148
|
+
|
|
149
|
+
def installFeatures(features):
|
|
150
|
+
if "md" in features:
|
|
151
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/static/markdown ./static/")
|
|
152
|
+
|
|
153
|
+
if "js" in features:
|
|
154
|
+
ex(f"cp -r {EMPTY_PROJECT_PATH}/static/framework ./static/")
|
|
155
|
+
|
|
156
|
+
def updateDeps():
|
|
157
|
+
print("Updating Vesta...")
|
|
158
|
+
server, features = getManifest()
|
|
159
|
+
|
|
160
|
+
if "md" in features:
|
|
161
|
+
ex(f"rm -r ./static/markdown")
|
|
162
|
+
|
|
163
|
+
if "js" in features:
|
|
164
|
+
ex(f"rm -r ./static/framework")
|
|
165
|
+
installFeatures(features)
|
|
166
|
+
|
|
167
|
+
def main():
|
|
168
|
+
parser = argparse.ArgumentParser(prog='vesta', description='Vesta project management CLI')
|
|
169
|
+
subparsers = parser.add_subparsers(dest='command')
|
|
170
|
+
|
|
171
|
+
# Commande init
|
|
172
|
+
parser_init = subparsers.add_parser('init', help='Initialize a new Vesta project')
|
|
173
|
+
parser_init = subparsers.add_parser('install', help='Import dependencies')
|
|
174
|
+
parser_db = subparsers.add_parser('db', help='Manage the database')
|
|
175
|
+
parser_update = subparsers.add_parser('update', help='Update dependencies')
|
|
176
|
+
parser_test = subparsers.add_parser('test', help='Run tests')
|
|
177
|
+
parser_add_feature = subparsers.add_parser('add-feature', help='Add a feature to the project')
|
|
178
|
+
|
|
179
|
+
parser_nginx = subparsers.add_parser('nginx', help='Setup/manage nginx configuration')
|
|
180
|
+
nginx_subparsers = parser_nginx.add_subparsers(dest='nginx_command')
|
|
181
|
+
parser_nginx_setup = nginx_subparsers.add_parser('setup', help='Install nginx config')
|
|
182
|
+
parser_nginx_mime = nginx_subparsers.add_parser('mime', help='Add mimetype for mjs files')
|
|
183
|
+
parser_nginx_reset = nginx_subparsers.add_parser('reset', help='Reset nginx config')
|
|
184
|
+
|
|
185
|
+
parser_service = subparsers.add_parser('service', help='Setup/manage systemD service')
|
|
186
|
+
service_subparsers = parser_service.add_subparsers(dest='service_command')
|
|
187
|
+
parser_service_setup = service_subparsers.add_parser('setup', help='Install systemd config')
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
args = parser.parse_args()
|
|
191
|
+
|
|
192
|
+
if args.command == 'init':
|
|
193
|
+
init_project()
|
|
194
|
+
elif args.command == 'db':
|
|
195
|
+
pass
|
|
196
|
+
elif args.command == 'update':
|
|
197
|
+
updateDeps()
|
|
198
|
+
elif args.command == 'install':
|
|
199
|
+
installDeps()
|
|
200
|
+
elif args.command == 'test':
|
|
201
|
+
ex(f"python {HERE}/testsRun.py")
|
|
202
|
+
elif args.command == 'add-feature':
|
|
203
|
+
pass
|
|
204
|
+
elif args.command == 'nginx':
|
|
205
|
+
installer = Installer(PATH + "/server.ini", PATH)
|
|
206
|
+
|
|
207
|
+
if args.nginx_command == 'setup':
|
|
208
|
+
installer.installNginx()
|
|
209
|
+
elif args.nginx_command == 'mime':
|
|
210
|
+
installer.addNginxMimeType()
|
|
211
|
+
elif args.nginx_command == 'reset':
|
|
212
|
+
installer.nukeNginx()
|
|
213
|
+
installer.installNginx(link=False)
|
|
214
|
+
else:
|
|
215
|
+
parser_nginx.print_help()
|
|
216
|
+
|
|
217
|
+
elif args.command == 'service':
|
|
218
|
+
installer = Installer(PATH + "/server.ini", PATH)
|
|
219
|
+
|
|
220
|
+
if args.service_command == 'setup':
|
|
221
|
+
installer.installService()
|
|
222
|
+
else:
|
|
223
|
+
parser_service.print_help()
|
|
224
|
+
else:
|
|
225
|
+
parser.print_help()
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vesta-web
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: An extensive web framework adding every feature needed for Carbonlab
|
|
5
|
+
Project-URL: Homepage, https://gitlab.com/Louciole/vesta
|
|
6
|
+
Project-URL: Issues, https://gitlab.com/Louciole/vesta/-/issues
|
|
7
|
+
Author-email: Lou ! <lou@carbonlab.dev>
|
|
8
|
+
License: # Copyright (C) Carbonlab - All Rights Reserved
|
|
9
|
+
|
|
10
|
+
* Unauthorized copying of this file, via any medium is strictly prohibited
|
|
11
|
+
* Proprietary
|
|
12
|
+
* Written by Lou ! <lou@carbonlab.dev>
|
|
13
|
+
License-File: LICENSE.md
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
17
|
+
Requires-Python: >=3.8
|
|
18
|
+
Requires-Dist: bcrypt
|
|
19
|
+
Requires-Dist: colorama
|
|
20
|
+
Requires-Dist: configparser
|
|
21
|
+
Requires-Dist: dkimpy
|
|
22
|
+
Requires-Dist: fastwsgi
|
|
23
|
+
Requires-Dist: multipart
|
|
24
|
+
Requires-Dist: psycopg
|
|
25
|
+
Requires-Dist: pyjwt
|
|
26
|
+
Requires-Dist: websockets
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# Vesta V1 - Harpie 🍒
|
|
30
|
+
|
|
31
|
+
❓ An extensive and fast web framework adding every feature needed for Carbonlab
|
|
32
|
+
|
|
33
|
+
## ⏬ Install
|
|
34
|
+
|
|
35
|
+
`pip install git+https://gitlab.com/Louciole/vesta.git/`
|
|
36
|
+
|
|
37
|
+
## 🤓 Learn
|
|
38
|
+
|
|
39
|
+
Read the docs from https://louciole.gitlab.io/vesta-docs/
|
|
40
|
+
|
|
41
|
+
## 👼 Create new project
|
|
42
|
+
|
|
43
|
+
0. `mkdir myproject && cd myproject`
|
|
44
|
+
1. create a virtualenv
|
|
45
|
+
2. `pip install git+https://gitlab.com/Louciole/vesta.git/`
|
|
46
|
+
|
|
47
|
+
3. `vesta init` and follow the CLI instructions
|
|
48
|
+
|
|
49
|
+
## 📁 Build from sources
|
|
50
|
+
|
|
51
|
+
`python3 -m pip install --upgrade build`
|
|
52
|
+
|
|
53
|
+
`python3 -m build`
|
|
54
|
+
|
|
55
|
+
`pip install PATH-TO-HERE/dist/vesta-1.1.0-py3-none-any.whl`
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
vesta/__init__.py,sha256=6aOfxktSRs50uhCMF-473xwmK9Z15uFfvoRXZN2cMos,17865
|
|
2
|
+
vesta/db/UNIAUTH.sql,sha256=Aroke4pBNrvOh2wZlA09--awCs17BdsyymSVEgLtjDQ,1985
|
|
3
|
+
vesta/db/db_service.py,sha256=TIovohU6VjAHAudIWk7aBePPqEVqpy7eR_7-MWg7Mgo,9860
|
|
4
|
+
vesta/emptyProject/.gitignore,sha256=9ImxEbKZYcw6fZv2coknCwBdmfY7xWkrOgfBWR03VG0,206
|
|
5
|
+
vesta/emptyProject/.gitlab-ci.yml,sha256=y-UMgAb0CVntqhCkh_iWXe3mXzdBmTpmlN-J51vrLEo,371
|
|
6
|
+
vesta/emptyProject/CONTRIBUTING.md,sha256=kSyO3LxwWrt7i8qmH8IDt0x4y4u18r5u5OvbuoYzMlU,1449
|
|
7
|
+
vesta/emptyProject/LICENSE.md,sha256=a3dZ32blcDksEC_UGru2vhpuD_JmxXWh4-VMhT1InkQ,644
|
|
8
|
+
vesta/emptyProject/README.md,sha256=fWesqkMlQPxo3FPl4jFL4RBwbCeTPoyLhUwRBQlV-hM,937
|
|
9
|
+
vesta/emptyProject/install.sh,sha256=0c3pug86_XfA3wF0atXVTAgjLDG35D_TDW0daE12ejs,663
|
|
10
|
+
vesta/emptyProject/requirements.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
|
+
vesta/emptyProject/server_static.ini,sha256=Bzuqbh_6GU_bqGsEVlw3DQSizQYnaRn-pGshRjsKT2k,86
|
|
12
|
+
vesta/emptyProject/server_static.py,sha256=SHtoQcv4QZxXUDe58gJYHy0Ghitojl4mSKEOugEVvnQ,329
|
|
13
|
+
vesta/emptyProject/server_static_orm.ini,sha256=uXF3jcl8rVEDPrU-NvYLKdgOF_1pHbDqoXf1FI46C0U,195
|
|
14
|
+
vesta/emptyProject/server_static_orm.py,sha256=cRBQSjUcBgVtvPW-fymDEqWYLPLg6StlFbWGee-7NUY,340
|
|
15
|
+
vesta/emptyProject/server_vesta.ini,sha256=7OeNizCYgAx5Js9XTe0AUEDJU5q6F14hho-FG0ijlBs,377
|
|
16
|
+
vesta/emptyProject/server_vesta.py,sha256=4GgFkwI7d1WRmEK1laGcUOF2IT6JsU58EFiCAFh0sS0,378
|
|
17
|
+
vesta/emptyProject/server_vesta_ws.ini,sha256=_kTD2nh8yPVjGVjDaqaDqkofDJ70uAvybiFq8IxKyq0,465
|
|
18
|
+
vesta/emptyProject/server_vesta_ws.py,sha256=IQv9SlFcihuWDEY8EADuGMlX2CTVgFMtWKgrHwYPEs0,2084
|
|
19
|
+
vesta/emptyProject/crons/exemple.py,sha256=0BHyplFOgY4vHQ7AYVv04DEFG7XDGedvn062b4gzmI8,276
|
|
20
|
+
vesta/emptyProject/db/schema.sql,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
vesta/emptyProject/mailing/mailReset.html,sha256=r9UaDWENCe2ABSiN6JsaeurCx1b7ZYCAwvin7GhVN1M,2414
|
|
22
|
+
vesta/emptyProject/mailing/mailVerif.html,sha256=1n48_838pENsjD0iDuivmYygKfgNkhHXnl_G8fYApU8,2486
|
|
23
|
+
vesta/emptyProject/misc/nginx_local,sha256=07muMbraRKEdapE50AcCj5P_6sS1uto7ys-8amCUF5U,275
|
|
24
|
+
vesta/emptyProject/misc/nginx_prod,sha256=AxkRTpOhXxNVgxDEF3Qcv7jZ4YuciZ5JFUOz1dnrlwQ,654
|
|
25
|
+
vesta/emptyProject/misc/nginx_prod_ws,sha256=AxkRTpOhXxNVgxDEF3Qcv7jZ4YuciZ5JFUOz1dnrlwQ,654
|
|
26
|
+
vesta/emptyProject/misc/vesta.service,sha256=KdSPuRsBWW7IpKiIZwff90RPf0ptwCIEWjKlzp6bmgQ,260
|
|
27
|
+
vesta/emptyProject/static/main.html,sha256=zsQF82JQ67Tms9AEPW9tZLVClVTlVX2uPGPiL328ppo,401
|
|
28
|
+
vesta/emptyProject/static/main.mjs,sha256=1j5antaPx8aUhuULg0YEMH3zNuJQyWxKTHUcGbQiyBc,396
|
|
29
|
+
vesta/emptyProject/static/mobileUiManifest.mjs,sha256=IwSGmWykI_KHASJ-IzvOkQUP8mmT8_J8BIVa1ro0aso,30
|
|
30
|
+
vesta/emptyProject/static/style.css,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
+
vesta/emptyProject/static/home/auth.css,sha256=Vw-wFyQJm1ydDVBHPdKWp4dvzrfFRry4-kgScVFleOM,1924
|
|
32
|
+
vesta/emptyProject/static/home/auth.html,sha256=sz-CC-B4NUqth8aSQqwQCvq2V46AnhaIIcGHRU6Wyl8,1836
|
|
33
|
+
vesta/emptyProject/static/home/auth.js,sha256=txMlUqr4A-15Czf4MYwaED35XXcaHI_zrc4SpnjItJU,4622
|
|
34
|
+
vesta/emptyProject/static/home/reset.html,sha256=EcXfX2Vil3NrYhDvEptrIhW9QV9X_kDy59-TK2S_P4w,2655
|
|
35
|
+
vesta/emptyProject/static/home/verif.html,sha256=tUw96l0FZ5-AXuE8s-7v1nM632onErq5swgCU53zP-s,2906
|
|
36
|
+
vesta/emptyProject/static/translations/en.mjs,sha256=ouMluPVTgB4Q5vmb7zGE6YGTH4URruog5_a52sBDYNE,22
|
|
37
|
+
vesta/emptyProject/static/translations/fr.mjs,sha256=ouMluPVTgB4Q5vmb7zGE6YGTH4URruog5_a52sBDYNE,22
|
|
38
|
+
vesta/emptyProject/static/translations/translation.mjs,sha256=JxJ2peSlYVQK-bUKpfddPLXm0XZiz2yu6A6iWIqpKyM,1422
|
|
39
|
+
vesta/emptyProject/static/ws/onMessage.mjs,sha256=ow5nwSEdiBcvm-Y2zOUMhnqLp-5xWgo11kHviaTRlTw,658
|
|
40
|
+
vesta/emptyProject/tests/example/foo.py,sha256=NS9oIXFBOvIyWK1LHwkJm9amJuSMN4cxJwouBrJlh2I,115
|
|
41
|
+
vesta/http/baseServer.py,sha256=e7cq9xUTVCz3h0W7H3AaIxrz0dUTp_fU6wE2TvjrIJA,8289
|
|
42
|
+
vesta/http/error.py,sha256=fWdp-oI2ObJD2mHHuxs1yVJvhON5oHYgYFRLAcUMs-I,180
|
|
43
|
+
vesta/http/redirect.py,sha256=OiDeOmU-X5Mos8a0BQIeOIJqvgWjDEtaYrM4-x4MXl0,177
|
|
44
|
+
vesta/http/response.py,sha256=OLcqq7X9lDyNyJ4xoTOK2zPizr6Lg71_QQPDNnfFliU,3325
|
|
45
|
+
vesta/mailing/mailing_service.py,sha256=BfJ_z5mcJiECPFzUR49MJmHZc4VX_Zavdd_b-lwmW14,5212
|
|
46
|
+
vesta/scripts/initDB.py,sha256=RhiWOs3tMBf6cQ8Ks8NRW-c6Z8pduGMY6OwojbPvbxU,1714
|
|
47
|
+
vesta/scripts/install.py,sha256=GvH_HHx5aU5_54RQ1_2vz4DaLCh42AHfUKy-m0q21vY,2125
|
|
48
|
+
vesta/scripts/testsRun.py,sha256=PQkxKyCwM-TGu9KbLSIkz70o5jnGQSf5aFN9Gil3_1U,2459
|
|
49
|
+
vesta/scripts/utils.py,sha256=MQZ29b4eplF0OR9EimUToOO73CVoV_cTxQeez2F3OoY,3460
|
|
50
|
+
vesta/scripts/vesta.py,sha256=xfY-dVzPAbJdmgpRJoGGNSlSXDsMyrQPwykAK017YqE,7506
|
|
51
|
+
vesta_web-1.1.0.dist-info/METADATA,sha256=I-6cYJ8MCIeqT-l5fbPmtkWLn8niwHFWPB0jYTkAGxo,1558
|
|
52
|
+
vesta_web-1.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
53
|
+
vesta_web-1.1.0.dist-info/entry_points.txt,sha256=_x509HUdPeKL_Fja0OqUuDa8zKGeLndMxIE_IfojlJg,51
|
|
54
|
+
vesta_web-1.1.0.dist-info/licenses/LICENSE.md,sha256=zoPFEFUUoSgosmDBK5fGTWGRHHBaSVuuJT2ZQIYXuIk,177
|
|
55
|
+
vesta_web-1.1.0.dist-info/RECORD,,
|