replace name of methods and funtions
This commit is contained in:
@@ -18,17 +18,17 @@ class MyBlocs:
|
|||||||
mybloc['type'] = str(blocType)
|
mybloc['type'] = str(blocType)
|
||||||
return mybloc
|
return mybloc
|
||||||
|
|
||||||
def makeForm(bloc):
|
def make_form(bloc):
|
||||||
form = FormBloc()
|
form = FormBloc()
|
||||||
return form
|
return form
|
||||||
|
|
||||||
def imgForm():
|
def img_form():
|
||||||
return ImageForm()
|
return ImageForm()
|
||||||
|
|
||||||
def newImgForm():
|
def new_img_form():
|
||||||
return ImageUpload()
|
return ImageUpload()
|
||||||
|
|
||||||
def listTypeBlocs(theme):
|
def list_type_blocs(theme):
|
||||||
typeBlocs = list()
|
typeBlocs = list()
|
||||||
folders = Path(PurePosixPath('./app').joinpath('templates', theme, 'blocs'))
|
folders = Path(PurePosixPath('./app').joinpath('templates', theme, 'blocs'))
|
||||||
for folder in folders.iterdir():
|
for folder in folders.iterdir():
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ class DataSite:
|
|||||||
self.static_path = Path(PurePosixPath(self.user_folder.joinpath('public')))
|
self.static_path = Path(PurePosixPath(self.user_folder.joinpath('public')))
|
||||||
self.static_path.mkdir(parents=True, exist_ok=True)
|
self.static_path.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
def loadFile(self):
|
def load_file(self):
|
||||||
if not self.filej.isfile():
|
if not self.filej.isfile():
|
||||||
raise FileNotFoundError(f"Le fichier ident.json n'existe pas : {self.filej}")
|
raise FileNotFoundError(f"Le fichier ident.json n'existe pas : {self.filej}")
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ class DataSite:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
def getBlocs(self, page: str):
|
def get_blocs(self, page: str):
|
||||||
|
|
||||||
if page != '':
|
if page != '':
|
||||||
page = Path(self.user_folder.joinpath(page, 'page.json'))
|
page = Path(self.user_folder.joinpath(page, 'page.json'))
|
||||||
@@ -51,7 +51,7 @@ class DataSite:
|
|||||||
return datas
|
return datas
|
||||||
|
|
||||||
|
|
||||||
def updateBloc(self, bloc, form, files=None):
|
def update_bloc(self, bloc, form, files=None):
|
||||||
print (form)
|
print (form)
|
||||||
for field in form():
|
for field in form():
|
||||||
print(field)
|
print(field)
|
||||||
@@ -68,7 +68,7 @@ class DataSite:
|
|||||||
|
|
||||||
return bloc
|
return bloc
|
||||||
|
|
||||||
def updateImg(self, image, form):
|
def update_img(self, image, form):
|
||||||
img = dict()
|
img = dict()
|
||||||
img['title'] = form.title.data
|
img['title'] = form.title.data
|
||||||
img['subtitle'] = form.subtitle.data
|
img['subtitle'] = form.subtitle.data
|
||||||
@@ -77,7 +77,7 @@ class DataSite:
|
|||||||
img['file'] = image
|
img['file'] = image
|
||||||
return img
|
return img
|
||||||
|
|
||||||
def addImg(self, image_uploaded):
|
def add_img(self, image_uploaded):
|
||||||
img = dict()
|
img = dict()
|
||||||
|
|
||||||
img['title'] = ""
|
img['title'] = ""
|
||||||
@@ -89,7 +89,7 @@ class DataSite:
|
|||||||
return img
|
return img
|
||||||
|
|
||||||
|
|
||||||
def delImg(self, bloc, img):
|
def del_img(self, bloc, img):
|
||||||
|
|
||||||
if bloc['type'] == 'gallery':
|
if bloc['type'] == 'gallery':
|
||||||
img_file = Path(PurePosixPath(self.user_folder).joinpath('public', 'img', bloc[img]['file'] ))
|
img_file = Path(PurePosixPath(self.user_folder).joinpath('public', 'img', bloc[img]['file'] ))
|
||||||
@@ -107,12 +107,12 @@ class DataSite:
|
|||||||
return bloc
|
return bloc
|
||||||
|
|
||||||
|
|
||||||
def saveMenu(self, menu:dict):
|
def save_menu(self, menu:dict):
|
||||||
self.datas['menu'] = menu
|
self.datas['menu'] = menu
|
||||||
self.filej.write_text(json.dumps(self.datas, indent=5))
|
self.filej.write_text(json.dumps(self.datas, indent=5))
|
||||||
|
|
||||||
|
|
||||||
def saveBlocs(self, page='', blocs=dict()):
|
def save_blocs(self, page='', blocs=dict()):
|
||||||
if page != '':
|
if page != '':
|
||||||
datas = dict()
|
datas = dict()
|
||||||
datas['blocs'] = blocs
|
datas['blocs'] = blocs
|
||||||
@@ -128,7 +128,10 @@ class DataSite:
|
|||||||
self.filej.write_text(json.dumps(self.datas, indent=5))
|
self.filej.write_text(json.dumps(self.datas, indent=5))
|
||||||
|
|
||||||
|
|
||||||
def getPages(self):
|
def get_theme(self):
|
||||||
|
return self.datas['config']['theme']
|
||||||
|
|
||||||
|
def get_pages(self):
|
||||||
mypages = list()
|
mypages = list()
|
||||||
folders = Path(self.user_folder)
|
folders = Path(self.user_folder)
|
||||||
for folder in folders.iterdir():
|
for folder in folders.iterdir():
|
||||||
@@ -194,7 +197,8 @@ class DataSite:
|
|||||||
userDir = Path(PurePosixPath(self.user_folder))
|
userDir = Path(PurePosixPath(self.user_folder))
|
||||||
|
|
||||||
|
|
||||||
command = "lftp -u \"{}\",\"{}\" -p {} {} -e ' mirror -R public {}; bye;'".format(user,
|
command = "lftp -u \"{}\",\"{}\" -p {} {} -e ' mirror -R public {}; chmod -R o+rx ./; bye;'".format(user,
|
||||||
|
|
||||||
password,
|
password,
|
||||||
serverPort,
|
serverPort,
|
||||||
serverAddress,
|
serverAddress,
|
||||||
@@ -216,3 +220,6 @@ class DataSite:
|
|||||||
if path.exists((self.static_path+'img/portfolio/thumbnails/'+file)):
|
if path.exists((self.static_path+'img/portfolio/thumbnails/'+file)):
|
||||||
remove(self.static_path+'img/portfolio/thumbnails/'+file)
|
remove(self.static_path+'img/portfolio/thumbnails/'+file)
|
||||||
self.trash.clear()
|
self.trash.clear()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ csrf = CSRFProtect(app)
|
|||||||
app.secret_key = 'your_secret_key'
|
app.secret_key = 'your_secret_key'
|
||||||
app.config.from_pyfile('config.py')
|
app.config.from_pyfile('config.py')
|
||||||
|
|
||||||
THEMES_FOLDER = './templates/themes/'
|
THEMES_FOLDER = '/themes/'
|
||||||
USERS_FOLDER = app.config['USERS_FOLDER']
|
USERS_FOLDER = app.config['USERS_FOLDER']
|
||||||
bcrypt = Bcrypt(app)
|
bcrypt = Bcrypt(app)
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ def login():
|
|||||||
|
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
@app.route( '/logout/', methods=['GET'] )
|
@app.route( '/logout', methods=['GET'] )
|
||||||
@login_required
|
@login_required
|
||||||
def logout():
|
def logout():
|
||||||
session.pop('username', None) # Supprimer username de la session s'il s'y trouve
|
session.pop('username', None) # Supprimer username de la session s'il s'y trouve
|
||||||
@@ -68,10 +68,10 @@ def edit(page):
|
|||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
page = '%s' % escape(page)
|
page = '%s' % escape(page)
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
mypages = db.getPages()
|
mypages = db.get_pages()
|
||||||
theme = db.datas['config']['theme']
|
theme = db.datas['config']['theme']
|
||||||
menu = db.datas['menu']
|
menu = db.datas['menu']
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
|
|
||||||
return render_template('/edit.html.tpl',
|
return render_template('/edit.html.tpl',
|
||||||
blocEdit="",
|
blocEdit="",
|
||||||
@@ -87,7 +87,7 @@ def edit(page):
|
|||||||
@app.route('/edit/images/<bloc>/<image>', methods=['GET', 'POST'], defaults={'page': ''})
|
@app.route('/edit/images/<bloc>/<image>', methods=['GET', 'POST'], defaults={'page': ''})
|
||||||
@app.route('/<page>/edit/images/<bloc>/<image>', methods=['GET', 'POST'])
|
@app.route('/<page>/edit/images/<bloc>/<image>', methods=['GET', 'POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def editPhoto(page, image, bloc):
|
def edit_photo(page, image, bloc):
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
page = '%s' % escape(page)
|
page = '%s' % escape(page)
|
||||||
image = '%s' % escape(image)
|
image = '%s' % escape(image)
|
||||||
@@ -96,12 +96,12 @@ def editPhoto(page, image, bloc):
|
|||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
theme = db.datas['config']['theme']
|
theme = db.datas['config']['theme']
|
||||||
form = ImageForm()
|
form = ImageForm()
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
|
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
myblocs[bloc][image] = db.updateImg(image, form)
|
myblocs[bloc][image] = db.update_img(image, form)
|
||||||
db.saveBlocs(page, myblocs)
|
db.save_blocs(page, myblocs)
|
||||||
form = MyBlocs.makeForm(db.datas['blocs'][bloc])
|
form = MyBlocs.makeForm(db.datas['blocs'][bloc])
|
||||||
if "hx-request" in request.headers:
|
if "hx-request" in request.headers:
|
||||||
return make_response(('Image modified', 200))
|
return make_response(('Image modified', 200))
|
||||||
@@ -120,7 +120,7 @@ def drop_upload(page, bloc):
|
|||||||
datas = dict()
|
datas = dict()
|
||||||
file = request.files['file']
|
file = request.files['file']
|
||||||
filename = secure_filename(file.filename)
|
filename = secure_filename(file.filename)
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
ext = os.path.splitext(filename)[-1]
|
ext = os.path.splitext(filename)[-1]
|
||||||
save_path = os.path.join(USERS_FOLDER, user, 'public', 'img' )
|
save_path = os.path.join(USERS_FOLDER, user, 'public', 'img' )
|
||||||
if ext not in EXT_IMG :
|
if ext not in EXT_IMG :
|
||||||
@@ -150,35 +150,35 @@ def drop_upload(page, bloc):
|
|||||||
img.save(os.path.join(save_path, 'thumbnails', filename ) )
|
img.save(os.path.join(save_path, 'thumbnails', filename ) )
|
||||||
|
|
||||||
myblocs[bloc][filename] = db.addImg(filename)
|
myblocs[bloc][filename] = db.addImg(filename)
|
||||||
db.saveBlocs(page, myblocs)
|
db.save_blocs(page, myblocs)
|
||||||
return make_response(('Chunk upload succesfull', 200))
|
return make_response(('Chunk upload succesfull', 200))
|
||||||
|
|
||||||
|
|
||||||
@app.route('/edit/images/<bloc>/del/<image>', methods=['GET'], defaults={'page': ''})
|
@app.route('/edit/images/<bloc>/del/<image>', methods=['GET'], defaults={'page': ''})
|
||||||
@app.route('/<page>/edit/images/<bloc>/del/<image>', methods=['GET'])
|
@app.route('/<page>/edit/images/<bloc>/del/<image>', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def delImage(page, bloc, image):
|
def del_image(page, bloc, image):
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
page = '%s' % escape(page)
|
page = '%s' % escape(page)
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
|
|
||||||
myblocs[bloc] = db.delImg(myblocs[bloc], image)
|
myblocs[bloc] = db.del_img(myblocs[bloc], image)
|
||||||
db.saveBlocs(page, myblocs)
|
db.save_blocs(page, myblocs)
|
||||||
|
|
||||||
return make_response(('Image removed', 200))
|
return make_response(('Image removed', 200))
|
||||||
|
|
||||||
@app.route('/imgs_list/<blocname>', methods=['GET'], defaults={'page': ''})
|
@app.route('/imgs_list/<blocname>', methods=['GET'], defaults={'page': ''})
|
||||||
@app.route('/<page>/imgs_list/<blocname>', methods=['GET'])
|
@app.route('/<page>/imgs_list/<blocname>', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def imagesList(page, blocname):
|
def images_list(page, blocname):
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
page = '%s' % escape(page)
|
page = '%s' % escape(page)
|
||||||
blocname = '%s' % escape(blocname)
|
blocname = '%s' % escape(blocname)
|
||||||
|
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
theme = db.datas['config']['theme']
|
theme = db.datas['config']['theme']
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
bloc = myblocs[blocname]
|
bloc = myblocs[blocname]
|
||||||
|
|
||||||
return render_template(THEMES_FOLDER+theme+'/blocs/edit/images_list.html',page=page,
|
return render_template(THEMES_FOLDER+theme+'/blocs/edit/images_list.html',page=page,
|
||||||
@@ -187,29 +187,26 @@ def imagesList(page, blocname):
|
|||||||
@app.route('/edit/<blocname>', methods=['GET', 'POST'], defaults={'page': ''})
|
@app.route('/edit/<blocname>', methods=['GET', 'POST'], defaults={'page': ''})
|
||||||
@app.route('/<page>/edit/<blocname>', methods=['GET', 'POST'])
|
@app.route('/<page>/edit/<blocname>', methods=['GET', 'POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def editBloc(page, blocname):
|
def edit_bloc(page, blocname):
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
page = '%s' % escape(page)
|
page = '%s' % escape(page)
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
theme = db.datas['config']['theme']
|
theme = db.datas['config']['theme']
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
bloc = myblocs[blocname]
|
bloc = myblocs[blocname]
|
||||||
form = MyBlocs.makeForm(bloc)
|
form = MyBlocs.make_form(bloc)
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
datas=dict()
|
datas=dict()
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
|
|
||||||
for field, value in request.form.items():
|
for field, value in request.form.items():
|
||||||
print (field)
|
|
||||||
if field != 'csrf_token' and field != 'image':
|
if field != 'csrf_token' and field != 'image':
|
||||||
myblocs[blocname][field] = value
|
myblocs[blocname][field] = value
|
||||||
if 'image' in request.files.keys():
|
if 'image' in request.files.keys():
|
||||||
file = request.files['image']
|
file = request.files['image']
|
||||||
print ('filename: '+ file.filename)
|
|
||||||
filename = secure_filename(file.filename)
|
filename = secure_filename(file.filename)
|
||||||
bg_custom = 'bg_custom_'+bloc['name']+filename
|
bg_custom = 'bg_custom_'+bloc['name']+filename
|
||||||
print('bg_custom : '+ bg_custom)
|
|
||||||
file.save(os.path.join(USERS_FOLDER, user, 'public', 'img', bg_custom ))
|
file.save(os.path.join(USERS_FOLDER, user, 'public', 'img', bg_custom ))
|
||||||
if 'bg_img' in bloc.keys():
|
if 'bg_img' in bloc.keys():
|
||||||
db.delImg(bloc, bloc['bg_img'])
|
db.delImg(bloc, bloc['bg_img'])
|
||||||
@@ -217,7 +214,7 @@ def editBloc(page, blocname):
|
|||||||
|
|
||||||
myblocs[blocname]['bg_img'] = bg_custom
|
myblocs[blocname]['bg_img'] = bg_custom
|
||||||
|
|
||||||
db.saveBlocs(page, myblocs)
|
db.save_blocs(page, myblocs)
|
||||||
flash(u'Vos changements on été pris en compte et enregistré', 'success')
|
flash(u'Vos changements on été pris en compte et enregistré', 'success')
|
||||||
else:
|
else:
|
||||||
print(form.errors)
|
print(form.errors)
|
||||||
@@ -251,13 +248,13 @@ def editBloc(page, blocname):
|
|||||||
@app.route('/view/<bloc>', methods=['GET'], defaults={'page': ''})
|
@app.route('/view/<bloc>', methods=['GET'], defaults={'page': ''})
|
||||||
@app.route('/<page>/view/<bloc>', methods=['GET'])
|
@app.route('/<page>/view/<bloc>', methods=['GET'])
|
||||||
@login_required
|
@login_required
|
||||||
def viewBloc(page, bloc):
|
def view_bloc(page, bloc):
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
page = '%s' % escape(page)
|
page = '%s' % escape(page)
|
||||||
|
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
theme = db.datas['config']['theme']
|
theme = db.datas['config']['theme']
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
bloc = myblocs[bloc]
|
bloc = myblocs[bloc]
|
||||||
|
|
||||||
return render_template(THEMES_FOLDER+theme+'/blocs/_'+bloc['type']+'.html',
|
return render_template(THEMES_FOLDER+theme+'/blocs/_'+bloc['type']+'.html',
|
||||||
@@ -266,13 +263,13 @@ def viewBloc(page, bloc):
|
|||||||
@app.route('/addBloc', methods=['POST'], defaults={'page': ''})
|
@app.route('/addBloc', methods=['POST'], defaults={'page': ''})
|
||||||
@app.route('/<page>/addBloc', methods=['POST'])
|
@app.route('/<page>/addBloc', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def addBloc(page):
|
def add_bloc(page):
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
page = '%s' % escape(page)
|
page = '%s' % escape(page)
|
||||||
|
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
datas = dict()
|
datas = dict()
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
|
|
||||||
blocName = '%s' % escape(request.form['blocName'])
|
blocName = '%s' % escape(request.form['blocName'])
|
||||||
blocType = request.form['blocType']
|
blocType = request.form['blocType']
|
||||||
@@ -287,7 +284,7 @@ def addBloc(page):
|
|||||||
else:
|
else:
|
||||||
return make_response(('Invalid bloc Name', 500))
|
return make_response(('Invalid bloc Name', 500))
|
||||||
|
|
||||||
db.saveBlocs(page, myblocs)
|
db.save_blocs(page, myblocs)
|
||||||
|
|
||||||
if "hx-request" in request.headers:
|
if "hx-request" in request.headers:
|
||||||
return render_template('/admin/_blocs-list.html',
|
return render_template('/admin/_blocs-list.html',
|
||||||
@@ -297,7 +294,7 @@ def addBloc(page):
|
|||||||
|
|
||||||
@app.route('/addPage', methods=['POST'])
|
@app.route('/addPage', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def addPage():
|
def add_page():
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
|
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
@@ -317,12 +314,12 @@ def addPage():
|
|||||||
return make_response(('Invalid type ', 500))
|
return make_response(('Invalid type ', 500))
|
||||||
|
|
||||||
|
|
||||||
mypages = db.getPages()
|
mypages = db.get_pages()
|
||||||
return redirect(url_for('edit', page=pageName))
|
return redirect(url_for('edit', page=pageName))
|
||||||
|
|
||||||
@app.route('/rmPage/<pageName>')
|
@app.route('/rmPage/<pageName>')
|
||||||
@login_required
|
@login_required
|
||||||
def rmPage(pageName):
|
def rm_page(pageName):
|
||||||
pageName = '%s' % escape(pageName)
|
pageName = '%s' % escape(pageName)
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
|
|
||||||
@@ -350,7 +347,7 @@ def sortblocs(page):
|
|||||||
datas = dict()
|
datas = dict()
|
||||||
myblocs = dict()
|
myblocs = dict()
|
||||||
|
|
||||||
myblocs_orig = db.getBlocs(page)['blocs']
|
myblocs_orig = db.get_blocs(page)['blocs']
|
||||||
|
|
||||||
for bloc in request.form:
|
for bloc in request.form:
|
||||||
if bloc != 'csrf_token':
|
if bloc != 'csrf_token':
|
||||||
@@ -358,13 +355,13 @@ def sortblocs(page):
|
|||||||
myblocs[bloc_name] = myblocs_orig[bloc_name]
|
myblocs[bloc_name] = myblocs_orig[bloc_name]
|
||||||
flash (u'Les blocs ont été réagencés', 'succes');
|
flash (u'Les blocs ont été réagencés', 'succes');
|
||||||
|
|
||||||
db.saveBlocs(page, myblocs)
|
db.save_blocs(page, myblocs)
|
||||||
|
|
||||||
return redirect(url_for('edit'))
|
return redirect(url_for('edit'))
|
||||||
|
|
||||||
@app.route('/editmenu', methods=['POST'])
|
@app.route('/editmenu', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def editMenu():
|
def edit_menu():
|
||||||
user = '%s'% escape(session['username'])
|
user = '%s'% escape(session['username'])
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
db.datas['menu']=dict()
|
db.datas['menu']=dict()
|
||||||
@@ -381,7 +378,7 @@ def editMenu():
|
|||||||
else:
|
else:
|
||||||
db.datas['menu'][menu] = str(request.form[menu])
|
db.datas['menu'][menu] = str(request.form[menu])
|
||||||
|
|
||||||
db.saveMenu(db.datas['menu'])
|
db.save_menu(db.datas['menu'])
|
||||||
flash (u'Le menu a bien été modifier', 'success');
|
flash (u'Le menu a bien été modifier', 'success');
|
||||||
return redirect(url_for('edit'))
|
return redirect(url_for('edit'))
|
||||||
|
|
||||||
@@ -401,17 +398,19 @@ def mythumbnails(filename):
|
|||||||
|
|
||||||
@app.route('/favicon.ico', methods=['GET'])
|
@app.route('/favicon.ico', methods=['GET'])
|
||||||
@app.route('/favicon.ico/', methods=['GET'])
|
@app.route('/favicon.ico/', methods=['GET'])
|
||||||
|
@login_required
|
||||||
def favicon():
|
def favicon():
|
||||||
return make_response(('Ok! ', 200))
|
return make_response(('Ok! ', 200))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@app.route('/publish', methods=['POST'])
|
@app.route('/publish', methods=['POST'])
|
||||||
@login_required
|
@login_required
|
||||||
def publish():
|
def publish():
|
||||||
user = '%s' % escape(session['username'])
|
user = '%s' % escape(session['username'])
|
||||||
db = DataSite(user, USERS_FOLDER)
|
db = DataSite(user, USERS_FOLDER)
|
||||||
listPages = db.getPages()
|
listPages = db.get_pages()
|
||||||
theme = db.datas['config']['theme']
|
theme = db.datas['config']['theme']
|
||||||
menu = db.datas['menu']
|
menu = db.datas['menu']
|
||||||
test_alphanum = "^[A-Za-z0-9/_-]*$"
|
test_alphanum = "^[A-Za-z0-9/_-]*$"
|
||||||
@@ -425,7 +424,7 @@ def publish():
|
|||||||
|
|
||||||
|
|
||||||
for page in listPages:
|
for page in listPages:
|
||||||
myblocs = db.getBlocs(page)['blocs']
|
myblocs = db.get_blocs(page)['blocs']
|
||||||
htmlExport = render_template('/index.html.tpl',
|
htmlExport = render_template('/index.html.tpl',
|
||||||
config=db.datas['config'],
|
config=db.datas['config'],
|
||||||
menu=menu,
|
menu=menu,
|
||||||
@@ -435,7 +434,7 @@ def publish():
|
|||||||
db.writeHTML(theme, page, htmlExport)
|
db.writeHTML(theme, page, htmlExport)
|
||||||
|
|
||||||
# Export index.html landing page
|
# Export index.html landing page
|
||||||
myblocs = db.getBlocs('')['blocs']
|
myblocs = db.get_blocs('')['blocs']
|
||||||
htmlExport = render_template('/index.html.tpl',
|
htmlExport = render_template('/index.html.tpl',
|
||||||
config=db.datas['config'],
|
config=db.datas['config'],
|
||||||
menu=menu,
|
menu=menu,
|
||||||
@@ -463,3 +462,5 @@ def publish():
|
|||||||
|
|
||||||
return redirect(url_for('edit'))
|
return redirect(url_for('edit'))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,14 @@
|
|||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
|
||||||
|
<a href="/logout">
|
||||||
|
<button class="btn btn-dark nav-brand"
|
||||||
|
type="button">
|
||||||
|
Se déconnecter
|
||||||
|
</button>
|
||||||
|
</a>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
@@ -162,3 +170,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,12 +32,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
<div class="newItemMenu" id="newItem">
|
<div class="newItemMenu" id="newItem">
|
||||||
<form class="form-container">
|
<form class="form-container">
|
||||||
<h3>Nouvelle entrée</h3><br>
|
<h3>Nouvelle entrée</h3><br>
|
||||||
|
|
||||||
<label for="nom"><b>Nom</b></label>
|
<label for="nom"><b>Nom</b></label>
|
||||||
<input type="text" placeholder="Nom" id="newEntry_name" required="">
|
<input type="text" placeholder="Nom" id="newEntry_name" required>
|
||||||
<br/>
|
<br/>
|
||||||
<label> Cette entré est un sous menu </label>
|
<label> Cette entré est un sous menu </label>
|
||||||
<input type="checkbox" id="submenu" onclick="disableLink()" value="Cette entré est un sous-menu"><br>
|
<input type="checkbox" id="submenu" onclick="disableLink()" value="Cette entré est un sous-menu"><br>
|
||||||
@@ -45,14 +48,15 @@
|
|||||||
<input type="text" placeholder="un lien ou nom d'un bloc" id="newEntry_link">
|
<input type="text" placeholder="un lien ou nom d'un bloc" id="newEntry_link">
|
||||||
<br>
|
<br>
|
||||||
<button type="button" onclick="addEntry()" class="btn btn-outline-success">+</button>
|
<button type="button" onclick="addEntry()" class="btn btn-outline-success">+</button>
|
||||||
</div>
|
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<button class="btn btn-success" type="submit" form="menuEdit"> Enregistrer </button>
|
<button class="btn btn-success" type="submit" form="menuEdit"> Enregistrer </button>
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -120,71 +124,6 @@
|
|||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- Add entry to menu-->
|
|
||||||
<style>
|
|
||||||
|
|
||||||
.entry {
|
|
||||||
padding-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The popup form - hidden by default */
|
|
||||||
.form-popup {
|
|
||||||
display: none;
|
|
||||||
position: fixed;
|
|
||||||
top: 20%;
|
|
||||||
right: 50%;
|
|
||||||
opacity: 1;
|
|
||||||
background-color: white;
|
|
||||||
border: 3px solid #f1f1f1;
|
|
||||||
z-index: 9999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add styles to the form container */
|
|
||||||
.form-container {
|
|
||||||
max-width: 300px;
|
|
||||||
padding:0;
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Full-width input fields */
|
|
||||||
.form-container input[type=text], .form-container{
|
|
||||||
width: 100%;
|
|
||||||
padding: 15px;
|
|
||||||
margin: 5px 0 22px 0;
|
|
||||||
border: none;
|
|
||||||
background: #fff;
|
|
||||||
z-index: 9999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* When the inputs get focus, do something */
|
|
||||||
.form-container input[type=text]:focus, .form-container input[type=password]:focus {
|
|
||||||
background-color: #ddd;
|
|
||||||
outline: 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Set a style for the submit/login button */
|
|
||||||
.form-container .btn {
|
|
||||||
background-color: #04AA6D;
|
|
||||||
color: white;
|
|
||||||
padding: 20px 20px;
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
text-align :center;
|
|
||||||
width: 40%;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add a red background color to the cancel button */
|
|
||||||
.form-container .cancel {
|
|
||||||
background-color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Add some hover effects to buttons */
|
|
||||||
.form-container .btn:hover, .open-button:hover {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function disableLink() {
|
function disableLink() {
|
||||||
|
|||||||
@@ -1,14 +1,36 @@
|
|||||||
|
|
||||||
<div class="container text-center">
|
<!DOCTYPE html>
|
||||||
<form method='POST' action='/login'>
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="/static/css/monsiteperso.css">
|
||||||
|
<title>Login</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="login-box">
|
||||||
|
<form action="/login" method="POST" class="form_main">
|
||||||
{{ form.csrf_token }}
|
{{ form.csrf_token }}
|
||||||
|
<h3 class="heading"> Connexion Mon site perso </h3>
|
||||||
|
<div class="inputContainer">
|
||||||
|
<svg class="inputIcon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#2e2e2e" viewBox="0 0 16 16">
|
||||||
|
<path d="M13.106 7.222c0-2.967-2.249-5.032-5.482-5.032-3.35 0-5.646 2.318-5.646 5.702 0 3.493 2.235 5.708 5.762 5.708.862 0 1.689-.123 2.304-.335v-.862c-.43.199-1.354.328-2.29.328-2.926 0-4.813-1.88-4.813-4.798 0-2.844 1.921-4.881 4.594-4.881 2.735 0 4.608 1.688 4.608 4.156 0 1.682-.554 2.769-1.416 2.769-.492 0-.772-.28-.772-.76V5.206H8.923v.834h-.11c-.266-.595-.881-.964-1.6-.964-1.4 0-2.378 1.162-2.378 2.823 0 1.737.957 2.906 2.379 2.906.8 0 1.415-.39 1.709-1.087h.11c.081.67.703 1.148 1.503 1.148 1.572 0 2.57-1.415 2.57-3.643zm-7.177.704c0-1.197.54-1.907 1.456-1.907.93 0 1.524.738 1.524 1.907S8.308 9.84 7.371 9.84c-.895 0-1.442-.725-1.442-1.914z"></path>
|
||||||
|
</svg>
|
||||||
|
|
||||||
<h2 class="mb-4"> Entrez votre login et votre mot de passe : </h2>
|
{{ form.login(col=5, class="inputField" ) }}
|
||||||
{{ form.login(col=5, class="form-control form-control-lg text-center" ) }}
|
|
||||||
{{ form.passwd(col=5, class="form-control form-control-lg text-center" ) }}
|
|
||||||
<br />
|
|
||||||
{{ form.submit() }}
|
|
||||||
|
|
||||||
</form>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="inputContainer">
|
||||||
|
<svg class="inputIcon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#2e2e2e" viewBox="0 0 16 16">
|
||||||
|
<path d="M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2z"></path>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
{{ form.passwd(class="inputField" ) }}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{ form.submit() }}
|
||||||
|
<a class="forgotLink" href="#"> J'ai oublié mon mot de passe </a>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
|
|
||||||
<h3> Nom du bloc : {{ bloc.name }} </h3>
|
<h3> Nom du bloc : {{ bloc.name }} </h3>
|
||||||
<div class="row mx-md-5">
|
<div class="class-edit row mx-md-5">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<label> Classes CSS </label>
|
<label> Classes CSS </label>
|
||||||
{{ form.property(col=4,value=bloc.property,
|
{{ form.property(col=4,value=bloc.property,
|
||||||
class="form-control text-center") }}
|
class="form-control text-center") }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="color-bloc-background col-auto">
|
||||||
<label> Couleur de l'arrière plan </label>
|
<label> Couleur de l'arrière plan </label>
|
||||||
{{ form.bg_color(col=4,
|
{{ form.bg_color(col=4,
|
||||||
class="form-control form-control-color text-center",
|
class="form-control form-control-color text-center",
|
||||||
value=bloc.bg_color) }}
|
value=bloc.bg_color) }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto">
|
<div class="color-bloc-foreground col-auto">
|
||||||
<label> Couleur du texte</label>
|
<label> Couleur du texte</label>
|
||||||
{{ form.fg_color(col=4,
|
{{ form.fg_color(col=4,
|
||||||
class="form-control form-control-color text-center",
|
class="form-control form-control-color text-center",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="container my-auto">
|
<div class="container my-auto">
|
||||||
<div class="row" style="mix-blend-mode: hard-light;background-color: rgba(0,0,0,0.3);">
|
<div class="row" style="mix-blend-mode: hard-light;background-color: rgba(0,0,0,0.3);">
|
||||||
<div class="col-lg-10 mx-auto">
|
<div class="col-lg-10 mx-auto">
|
||||||
<h1 class="text-uppercase">
|
<h1 class="">
|
||||||
<strong> {{ bloc.title }} </strong>
|
<strong> {{ bloc.title }} </strong>
|
||||||
</h1>
|
</h1>
|
||||||
<hr>
|
<hr>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<form id="uploader" methods="POST" class="dropzone dz-clickable">
|
<form id="uploader" methods="POST" class="dropzone dz-clickable">
|
||||||
{{ form.csrf_token }}
|
{{ form.csrf_token }}
|
||||||
</form>
|
</form>
|
||||||
<div hx-get="{{ url_for('imagesList', page=page, blocname=bloc.name) }}" hx-trigger="load, every 7s">
|
<div hx-get="{{ url_for('images_list', page=page, blocname=bloc.name) }}" hx-trigger="load, every 7s">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
{{ form.csrf_token }}
|
{{ form.csrf_token }}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-2 mx-auto my-4 text-center">
|
<div class="col-lg-2 mx-auto my-4 text-center">
|
||||||
<img class="img-fluid" src="/public/img/thumbnails/{{ image.file }}" alt="{{ image.description }}">
|
<img class="img-fluid" src="/img/thumbnails/{{ image.file }}" alt="{{ image.description }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="col-lg-4 mx-auto my-4 text-center">
|
<div class="col-lg-4 mx-auto my-4 text-center">
|
||||||
<h3> Titre </h3>
|
<h3> Titre </h3>
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
hx-swap="outerHTML"
|
hx-swap="outerHTML"
|
||||||
hx-target="#editImageInfo"
|
hx-target="#editImageInfo"
|
||||||
hx-swap="delete"> Valider </button>
|
hx-swap="delete"> Valider </button>
|
||||||
<button class="btn btn-danger mx-auto" hx-get="{{ url_for('delImage', page=page, bloc=bloc.name, image=image.file) }}"
|
<button class="btn btn-danger mx-auto" hx-get="{{ url_for('del_image', page=page, bloc=bloc.name, image=image.file) }}"
|
||||||
hx-swap="delete"
|
hx-swap="delete"
|
||||||
hx-target="#editImageInfo"> Supprimer l'image</button>
|
hx-target="#editImageInfo"> Supprimer l'image</button>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
{% if image.file %}
|
{% if image.file %}
|
||||||
<div class="col-lg-4 col-sm-6 text-center">
|
<div class="col-lg-4 col-sm-6 text-center">
|
||||||
<a class="portfolio-box">
|
<a class="portfolio-box">
|
||||||
<img class="img-fluid" src="/public/img/thumbnails/{{ image.file }}" alt="{{ image.description }}">
|
<img class="img-fluid" src="/img/thumbnails/{{ image.file }}" alt="{{ image.description }}">
|
||||||
<div class="portfolio-box-caption">
|
<div class="portfolio-box-caption">
|
||||||
<div class="portfolio-box-caption-content">
|
<div class="portfolio-box-caption-content">
|
||||||
<div class="project-category text-faded">
|
<div class="project-category text-faded">
|
||||||
|
|||||||
Reference in New Issue
Block a user