Arragement dans la gallerie

This commit is contained in:
kitoy 2022-07-05 01:18:52 +02:00
parent 318ab80dc8
commit eda47f57a6
17 changed files with 197 additions and 200 deletions

View File

@ -1,112 +0,0 @@
#!venv/bin/python
# -*- coding: utf-8 -*-
from flask import Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file, escape
from werkzeug import secure_filename
from wand.image import Image
from wtforms import BooleanField, StringField, IntegerField, PasswordField, validators
import sqlite3
from flask_bcrypt import Bcrypt
from views.blog import blog
from views.filesupload import filesupload
from views.inscription import inscription
from views.profil import profil
from views.logs import logs
from views.loginlogout import loginlogout
from tools.databaseinit import init_db, init_dir
import glob, os, sys, time
app = Flask( 'pywallter' )
bcrypt = Bcrypt(app)
if init_db():
print ("La base de données a été créer")
exit()
if init_dir():
print ("Le repertoire des utilisateurs a été créer")
exit()
# Set the secret key. Keep this really secret
app.secret_key = 'klfkdlfkdslfkln234325;cx!' # Chiffre les cookies si j'ai bien capté. À générer aléatoirement impérativement avant de mettre en ligne.
#### Variables ####################################################################################
DOSSIER_PERSO='users/'
extensionimg = {'.jpg', '.JPG', '.png', '.PNG', '.gif', '.GIF', '.bmp', '.BMP', '.jpeg', '.JPEG' }
##################################################################################################
app.register_blueprint(inscription)
app.register_blueprint(blog)
app.register_blueprint(filesupload)
app.register_blueprint(profil)
app.register_blueprint(logs)
app.register_blueprint(loginlogout)
@app.route( '/gallery/')
def gallery():
if 'username' in session :
UTILISATEUR='%s' % escape(session['username'])
THUMBNAILS=DOSSIER_PERSO + UTILISATEUR + '/images/thumbnails/'
fichiers = [fich for fich in os.listdir(THUMBNAILS)]
return render_template('gallery.html', THUMBNAILS=THUMBNAILS, fichiers=fichiers)
else :
return redirect(url_for('login'))
@app.route( '/parametres/', methods=['GET','POST'] )
def parametres() :
if 'username' in session :
return render_template('parametres.html')
else:
return redirect(url_for('login'))
@app.route('/up/view/<nom>')
def download(nom):
if 'username' in session :
UTILISATEUR='%s' % escape(session['username'])
nom = secure_filename(nom)
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom): # si le fichier existe
return send_file(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom, as_attachment=True) # on l'envoie
else:
flash(u'Fichier {nom} inexistant.'.format(nom=nom), 'error')
return redirect(url_for('list')) # sinon on redirige vers la liste, avec un message d'erreur
else :
return redirect(url_for('login'))
@app.route('/remove/<nom>')
def remove(nom):
if 'username' in session :
UTILISATEUR='%s' % escape(session['username'])
nom = secure_filename(nom)
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom): # si le fichier existe
os.remove(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom) # on le supprime
return redirect(url_for('filesupload.list', _external=True))
else:
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/images/thumbnails/' + nom): # si le fichier existe
os.remove(DOSSIER_PERSO + UTILISATEUR + '/images/thumbnails/' + nom) # on le supprime
os.remove(DOSSIER_PERSO + UTILISATEUR + '/images/' + nom) # on le supprime
return redirect(url_for('gallery'))
else:
flash(u'Fichier {nom} inexistant.'.format(nom=nom), 'error')
return redirect(url_for('filesupload.list', _external=True)) # sinon on redirige vers la liste, avec un message d'erreur
else :
return redirect(url_for('login'))
@app.route( '/' )
def index():
if 'username' in session :
return redirect(url_for('filesupload.upload'))
else :
return redirect(url_for('loginlogout.login', _external=True))
if __name__ == '__main__' :
app.run(host='127.0.0.1', port=8080, debug=True)

View File

@ -61,14 +61,14 @@ def gallery():
fichiers = [fich for fich in os.listdir(THUMBNAILS)]
return render_template('gallery.html', THUMBNAILS=THUMBNAILS, fichiers=fichiers)
else :
return redirect(url_for('login'))
return redirect(url_for('loginlogout.login'))
@app.route( '/parametres/', methods=['GET','POST'] )
def parametres() :
if 'username' in session :
return render_template('parametres.html')
else:
return redirect(url_for('login'))
return redirect(url_for('loginlogout.login'))
@app.route('/up/view/<nom>')
def download(nom):
@ -81,7 +81,7 @@ def download(nom):
flash(u'Fichier {nom} inexistant.'.format(nom=nom), 'error')
return redirect(url_for('list')) # sinon on redirige vers la liste, avec un message d'erreur
else :
return redirect(url_for('login'))
return redirect(url_for('loginlogout.login'))
@app.route('/remove/<nom>')
def remove(nom):
@ -101,7 +101,7 @@ def remove(nom):
return redirect(url_for('filesupload.list', _external=True)) # sinon on redirige vers la liste, avec un message d'erreur
else :
return redirect(url_for('login'))
return redirect(url_for('loginlogout.login'))
@app.route('/myfiles/<filename>')
@ -111,7 +111,7 @@ def myfiles(filename):
return send_from_directory(
os.path.join(DOSSIER_PERSO, UTILISATEUR, 'files'), filename )
else :
return 403
return redirect(url_for('loginlogout.login'))
@app.route('/myfiles/images/<filename>')
@ -121,7 +121,7 @@ def myimg(filename):
return send_from_directory(
os.path.join(DOSSIER_PERSO, UTILISATEUR, 'images'), filename )
else :
return 403
return redirect(url_for('loginlogout.login'))
@app.route('/myfiles/images/thumbnails/<filename>')
def mythumbnails(filename):
@ -130,7 +130,7 @@ def mythumbnails(filename):
return send_from_directory(
os.path.join(DOSSIER_PERSO, UTILISATEUR, 'images/thumbnails'), filename )
else :
return 403
return redirect(url_for('loginlogout.login'))
@app.route( '/' )
def index():

View File

@ -11,3 +11,52 @@ function animation() {
window.setTimeout(divhider, 2200);
window.setTimeout(animation, 2000);
let darkBoxVisible = false;
window.addEventListener('load', (event) => {
let images = document.querySelectorAll("img");
if(images !== null && images !== undefined && images.length > 0) {
images.forEach(function(img) {
img.addEventListener('click', (evt) => {
showDarkbox(img.src);
});
});
}
});
function showDarkbox(url) {
if(!darkBoxVisible) {
let x = (window.innerWidth - 1280) / 2;
let y = window.scrollY + 50;
// Create the darkBox
var div = document.createElement("div");
div.id = "darkbox";
var tmp = url;
tmp = tmp.replace("thumbnails/", "");
tmp= tmp.trim();
div.innerHTML = '<img class="darkboximg" src="'+tmp+'" />';
document.body.appendChild(div);
let box = document.getElementById("darkbox");
box.style.left = x.toString()+"px";
box.style.top = y.toString()+"px";
box.style.height = 'auto';
box.addEventListener('click', (event) => {
// Remove it
let element = document.getElementById("darkbox");
element.parentNode.removeChild(element);
darkBoxVisible = false;
})
darkBoxVisible = true;
} else {
// Remove it
let element = document.getElementById("darkbox");
element.parentNode.removeChild(element);
darkBoxVisible = false;
}
}

View File

@ -1,4 +1,3 @@
#tada {
text-align: center;
text-decoration: none;
@ -23,7 +22,7 @@
margin-bottom: 0%;
text-align: center;
width: 90%;
-webkit-animation-name: apparition;
-webkit-animation-duration: 0.2s;
-webkit-animation-iteration-count: 1;
@ -34,7 +33,7 @@
.flashed {
list-style-type: none;
position: center;
position: center;
margin: auto;
margin-top: 5%;
width: 50%;
@ -42,7 +41,7 @@
}
.flashed p {
font-family: sans-serif;
font-family: sans-serif;
text-align: center;
border-radius: 3px;
/*box-shadow: 1px 1px 1px black; */
@ -50,12 +49,12 @@
.succes p {
background-color: #CDCBD0;
color: #00A310;
}
color: #00A310;
}
.error p {
background-color: #CDCBD0;
color: #B80000;
background-color: #CDCBD0;
color: #B80000;
}
#majuscule {
@ -150,3 +149,66 @@
/* ######### Animations ######### */
#darkbox { width:1280px;
height:720px;
position:absolute;
top:0;
left:0;
background-color:#333;
overflow: hidden;
text-align:center;
margin-top: 7%;
}
.darkboximg { padding:0; max-width: 1216px; max-height: 684px;}
#gallery {
line-height:0;
-webkit-column-count:5;
-webkit-column-gap:5px;
-moz-column-count:5;
-moz-column-gap:5px;
column-count:5;
column-gap:5px;
margin-top:2rem;
}
#gallery img {
width: 100% !important;
height: auto !important;
margin-bottom:5px;
filter: grayscale(100%);
transition: filter 1s;
}
#gallery img:hover {
filter:none;
}
@media (max-width: 1200px) {
#gallery {
-moz-column-count: 4;
-webkit-column-count: 4;
column-count: 4;
}
}
@media (max-width: 1000px) {
#gallery {
-moz-column-count: 3;
-webkit-column-count: 3;
column-count: 3;
}
}
@media (max-width: 800px) {
#gallery {
-moz-column-count: 2;
-webkit-column-count: 2;
column-count: 2;
}
}
@media (max-width: 400px) {
#gallery {
-moz-column-count: 1;
-webkit-column-count: 1;
column-count: 1;
}
}

View File

@ -33,9 +33,9 @@
<div class="masthead clearfix">
<div class="inner">
<h3 class="masthead-brand">MapagePerso</h3>
<h3 class="masthead-brand">Pywallter</h3>
<ul class="nav masthead-nav">
<li class="active"><a href="/upload/"></a></li>
<li class="active"><a href="/filesupload/"></a></li>
<li><a href="#">Inscription</a></li>
<li><a href="#">Contact</a></li>
</ul>
@ -44,7 +44,8 @@
<div class="inner cover">
<h1 class="cover-heading">Restez libres</h1>
<p class="lead">Bienvenue sur Olala, hébergeur de fichier libre basé sur Flask et hébergé sur une simple Orange Pi. Bientôt disponible, gallerie d'images, blog et d'autres. Site en construction permanente.</p>
<p class="lead">Bienvenue sur Olala, hébergeur de fichier libre basé sur Flask et hébergé sur une simple petit ordinateur.
Bientôt disponible, gallerie d'images, blog et d'autres. Site en construction permanente.</p>
<br>
<p class="lead">
<form method="POST" action="{{ url_for('loginlogout.login') }}">

View File

@ -16,7 +16,7 @@
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="/blog/"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Blog</a></li>
<li><a href="/upload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/filesupload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a></li>
<li><a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a></li>
<li><a href="/logs/"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> Logs</a></li>
@ -53,7 +53,7 @@
<br />
<div class="well"> Hello <span id="majuscule">{{ session['username'] }} ! </span>Bienvenue sur ce blog communautaire. Il vous est possible de poster des articles en tout genre sur cette page. Vous disposez pour cela d'un éditeur de type Markdown. Une page <a href="/blog/{{ session['username'] }}"><span class="glyphicon glyphicon-star" aria-hidden="true"></span> Page publique</a> et une <a href="/privateblog/"><span class="glyphicon glyphicon-star" aria-hidden="true"></span> Page privée</a> vous sont attribuées.<br>Ayez bien conscience que ce site est une expérience est qu'il est indispensable d'avoir une sauvegarde de tous vos articles. Nous ne pourrons, en aucun cas, être tenu responsable de la perte de vos données. Merci de votre compréhension.</div>
</div>
</div>
</div>
<br />
<p class="lead">
<form method="POST" action="{{ url_for('blog.racine_blog') }}" id="postform">
@ -80,7 +80,7 @@
<img src="/static/usersprofil/{{ post.avatar }}" class="img-rounded" alt=""/><br><br>
<p>{{ post.nom }}<br>{{ post.prenom }}<br>{{ post.age }} ans<br>{{ post.profession }}<br></p>
</div>
<div class="col-sm-9">
<div class="well">
<h6>{{ post.time }}</h6>

View File

@ -16,7 +16,7 @@
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/blog"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Blog</a></li>
<li><a href="/upload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/filesupload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a></li>
<li class="active"><a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a></li>
<li><a href="/logs/"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> Logs</a></li>
@ -52,12 +52,11 @@
{% if fichiers %}
<div id="images">
{% for fich in fichiers %}
<div id="gallery">
{% for image in fichiers %}
<img src="/myfiles/images/thumbnails/{{ image }}" class="img-rounded" alt=""/>
<a href="#"><img src="/static/thumbnails/{{ fich }}" class="img-rounded" alt=""/></a>
<!--<a href="{{ url_for('remove', nom=fich) }}"><button type="button" class="btn btn-sm btn-danger">Delete</button></a>-->
{% endfor %}
</div>

View File

@ -12,7 +12,7 @@
<div class="inner">
<h3 class="masthead-brand">OpenBlogStock</h3>
<ul class="nav masthead-nav">
<li><a href="/upload/">Login</a></li>
<li><a href="/filesupload/">Login</a></li>
<li class="active"><a href="/inscription/">Inscription</a></li>
<li><a href="#">Contact</a></li>
</ul>

View File

@ -12,7 +12,7 @@
<div class="inner">
<h3 class="masthead-brand">OpenBlogSotck</h3>
<ul class="nav masthead-nav">
<li class="active"><a href="/upload/">Login</a></li>
<li class="active"><a href="/uploadfiles/">Login</a></li>
<li><a href="/inscription/">Inscription</a></li>
<li><a href="#">Contact</a></li>
</ul>

View File

@ -16,7 +16,7 @@
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/blog"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Blog</a></li>
<li><a href="/upload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/filesupload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a></li>
<li><a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a></li>
<li class="active"><a href="/logs/"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> Logs</a></li>

View File

@ -16,7 +16,7 @@
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/blog"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Blog</a></li>
<li><a href="/upload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/filesupload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a></li>
<li><a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a></li>
<li><a href="/logs/"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> Logs</a></li>

View File

@ -16,7 +16,7 @@
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/blog"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Blog</a></li>
<li><a href="/upload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/filesupload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li class="active"><a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a></li>
<li><a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a></li>
<li><a href="/logs/"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> Logs</a></li>
@ -44,29 +44,29 @@
<!--<div class="page-header">
<h1>Liste des fichiers uploadés</h1>
</div>-->
<br>
<br>
<div class="row">
<div class="col-md-12">
<table class="table">
<thead>
<tr>
<th></th>
<th>Fichier(s) <span class="badge">{{ i }}</span></th>
<th>Taille (en octets)</th>
<th></th>
<th></th>
<th>Fichier(s) <span class="badge">{{ i }}</span></th>
<th>Taille (en octets)</th>
<th></th>
</tr>
</thead>
<tbody>
{% if listeFichiers %}
{% for fich in listeFichiers %}
{% for fichier in listeFichiers %}
<tr>
<td>{{ fich[0] }}</td>
<td><a href="{{ url_for('download', nom=fich[1]) }}">{{fich[1]}}</a></td>
<td>{{ fich[2] }}</td>
<td><a href="{{ url_for('remove', nom=fich[1]) }}"><button type="button" class="btn btn-sm btn-danger">Supprimer</button></a></td>
<td>{{ fichier[0] }}</td>
<td><a href="/myfiles/{{ fichier[1] }}">{{ fichier[1] }}</a></td>
<td>{{ fichier[2] }}</td>
<td><a href="{{ url_for('remove', nom=fichier[1]) }}"><button type="button" class="btn btn-sm btn-danger">Supprimer</button></a></td>
</tr>
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
</tbody>
</table>
</div>

View File

@ -16,7 +16,7 @@
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/blog/"><span class="glyphicon glyphicon-globe" aria-hidden="true"></span> Blog</a></li>
<li class="active"><a href="/upload/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li class="active"><a href="/uploadfiles/"><span class="glyphicon glyphicon-cloud-upload" aria-hidden="true"></span> Upload</a></li>
<li><a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a></li>
<li><a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a></li>
<li><a href="/logs/"><span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span> Logs</a></li>
@ -60,19 +60,18 @@
<div class="col-sm-3"></div>
<div class="col-sm-6">
<br />
<div class="well">Vous pouvez "uploader" ici des fichiers afin de les sauvegarder ou de les rendre accessibles à quelqu'un d'autre. Ils seront par la suite disponibles en téléchargement dans notre rubrique <a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a>. Les images envoyées, quand à elles se retrouveront directement dans la <a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a>.<br>Ayez bien conscience que ce site est une expérience est qu'il est indispensable d'avoir une sauvegarde de tous vos fichiers. Nous ne pourrons, en aucun cas, être tenu responsable de la perte de vos données. Merci de votre compréhension.</div>
<div class="well">Ici, vous pouvez envoyer des fichiers afin de les sauvegarder ou de les rendre accessibles à quelqu'un d'autre. Ils seront par la suite disponibles en téléchargement dans notre rubrique <a href="/view/"><span class="glyphicon glyphicon-cloud-download" aria-hidden="true"></span> Fichiers</a>. Les images envoyées, quand à elles se retrouveront directement dans la <a href="/gallery/"><span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span> Gallerie</a>.<br>Ayez bien conscience que ce site est une expérience est qu'il est indispensable d'avoir une sauvegarde de tous vos fichiers. Nous ne pourrons, en aucun cas, être tenu responsable de la perte de vos données. Merci de votre compréhension.</div>
<br />
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Choisissez un ou plusieurs fichiers à uploader</h3>
</div>
<div class="panel-body">
<!--<div class="form-group">-->
<div class="panel-body">
<!--<div class="form-group">-->
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="fic"id="fic" multiple>
<br>
<button type="submit" id="tada" class="btn btn btn-success">Upload !</button>
<input type="file" name="fic"id="fic" multiple>
<br>
<button type="submit" id="tada" class="btn btn btn-success">Upload !</button>
</form>
<!--</div>-->

View File

@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
from flask import Blueprint, Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file, escape, flash, abort
from werkzeug import secure_filename
from wand.image import Image
from werkzeug.utils import secure_filename
from PIL import Image
import time
import sqlite3
import os
@ -15,8 +15,8 @@ filesupload = Blueprint('filesupload', __name__, template_folder='templates')
DOSSIER_PERSO='users/'
extensionimg = {'.jpg', '.JPG', '.png', '.PNG', '.gif', '.GIF', '.bmp', '.BMP', '.jpeg', '.JPEG' }
@filesupload.route( '/upload/', methods=['GET', 'POST'])
def upload():
@filesupload.route( '/filesupload/', methods=['GET', 'POST'])
def uploadfiles():
if 'username' in session :
UTILISATEUR='%s'% escape(session['username'])
if request.method == 'POST' :
@ -28,33 +28,33 @@ def upload():
flash(u'Fichier déjà existant, merci de spécifier un autre nom de fichier', 'error')
else:
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/images/' + nom):
flash(u'Image déjà existante, merci de spécifier un autre nom de fichier', 'error')
flash(u'Image déjà existante, merci de spécifier un autre nom de fichier', 'error')
else:
file, ext = os.path.splitext(nom)
if ext in extensionimg :
f.save(DOSSIER_PERSO + UTILISATEUR + '/images/' + nom)
image=DOSSIER_PERSO + UTILISATEUR + '/images/' + nom
with Image(filename=image) as img :
img.transform(resize='x100')
img.save(filename=DOSSIER_PERSO + UTILISATEUR + '/images/thumbnails/' + nom)
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/images/' + nom) :
file, ext = os.path.splitext(nom)
if ext in extensionimg :
f.save(DOSSIER_PERSO + UTILISATEUR + '/images/' + nom)
image=DOSSIER_PERSO + UTILISATEUR + '/images/' + nom
with Image.open(image) as img :
img.thumbnail((300,300))
img.save( DOSSIER_PERSO + UTILISATEUR + '/images/thumbnails/' + nom )
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/images/' + nom) :
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/images/thumbnails/' + nom):
TIME=time.strftime("%A %d %B %Y %H:%M:%S")
IP=request.environ['REMOTE_ADDR']
CLIENT_PLATFORM=request.headers.get('User-Agent')
LOG=open("log.txt", "a")
LOG.write (TIME + ' - ' + IP + ' - ' + UTILISATEUR + ' - ' + CLIENT_PLATFORM + '\n' + '---> ' + nom + '\n')
LOG.close()
flash(u'Image envoyée et traitée avec succés', 'succes')
TIME=time.strftime("%A %d %B %Y %H:%M:%S")
IP=request.environ['REMOTE_ADDR']
CLIENT_PLATFORM=request.headers.get('User-Agent')
LOG=open("log.txt", "a")
LOG.write (TIME + ' - ' + IP + ' - ' + UTILISATEUR + ' - ' + CLIENT_PLATFORM + '\n' + '---> ' + nom + '\n')
LOG.close()
flash(u'Image envoyée et traitée avec succés', 'succes')
else:
flash(u'Échec lors du traitement de l\'image', 'error')
return redirect(url_for('filesupload.upload'))
else:
return redirect(url_for('filesupload.uploadfiles'))
else:
flash(u'Éches lors de l\'envoi de l\'image', 'error')
return redirect(url_for('filesupload.upload'))
else:
f.save(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom)
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom) :
return redirect(url_for('filesupload.uploadfiles'))
else:
f.save(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom)
if os.path.isfile(DOSSIER_PERSO + UTILISATEUR + '/files/' + nom) :
TIME=time.strftime("%A %d %B %Y %H:%M:%S")
IP=request.environ['REMOTE_ADDR']
CLIENT_PLATFORM=request.headers.get('User-Agent')
@ -63,17 +63,18 @@ def upload():
LOG.close() # Ferme log.txt
flash(u'Fichier envoyé avec succés', 'succes')
#return redirect(url_for('filesupload.upload'))
else:
return redirect(url_for('filesupload.upload'))
else:
return redirect(url_for('filesupload.uploadfiles'))
else:
flash(u'Error : Vous avez oublié le fichier !', 'error')
return redirect(url_for('filesupload.upload'))
return redirect(url_for('filesupload.uploadfiles'))
resp = make_response(render_template('up_up.html'))
resp.set_cookie('username', session['username'])
return resp
else :
return redirect(url_for('loginlogout.login', _external=True))
@filesupload.route('/view/')
def list():
if 'username' in session :
@ -89,6 +90,6 @@ def list():
return render_template('up_list.html',size=size, i=i, listeFichiers=listeFichiers)
else :
flash(u'Aucun fichier uploadé ! Redirection vers Upload', 'error')
return redirect(url_for('filesupload.upload', external=True))
return redirect(url_for('filesupload.uploadfiles', external=True))
else :
return redirect(url_for('loginlogout.login', _external=True))

View File

@ -1,4 +1,3 @@
from flask import Blueprint, Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file, escape
from flask_bcrypt import Bcrypt
import sqlite3
@ -15,7 +14,7 @@ inscription = Blueprint('inscription', __name__, template_folder='templates')
@inscription.route( '/inscription/', methods=['GET','POST'] )
def signin() :
if 'username' in session :
return redirect(url_for('upload'))
return redirect(url_for('filesupload'))
else :
if request.method == 'POST' :
conn = sqlite3.connect('base.db') # Connexion à la base de donnée

View File

@ -10,7 +10,7 @@ loginlogout = Blueprint('loginlogout', __name__, template_folder='templates')
@loginlogout.route( '/login/', methods=['GET','POST'] )
def login() :
if 'username' in session :
return redirect(url_for('filesupload.upload', _external=True))
return redirect(url_for('filesupload.uploadfiles', _external=True))
else :
if request.method == 'POST' :
conn = sqlite3.connect('base.db') # Connexion à la base de donnée
@ -22,7 +22,7 @@ def login() :
for i in users:
if i[0] == request.form['user'] and bcrypt.check_password_hash(i[1], password) is True:
session['username'] = request.form['user']
return redirect(url_for('filesupload.upload', _external=True))
return redirect(url_for('filesupload.uploadfiles', _external=True))
return redirect(url_for('loginlogout.login', _external=True))
else:
return render_template('login.html')
@ -31,4 +31,3 @@ def login() :
def logout():
session.pop('username', None) # Supprimer username de la session s'il s'y trouve
return redirect(url_for('index'))

View File

@ -1,5 +1,5 @@
from flask import Blueprint, Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file, escape, flash, abort
from werkzeug import secure_filename
from werkzeug.utils import secure_filename
from wand.image import Image
import time
import sqlite3