From 0df1db25ae4c85aa3ad0790a2f69fe356476a8c3 Mon Sep 17 00:00:00 2001 From: Michel V Date: Sat, 27 Jun 2020 12:34:40 +0200 Subject: [PATCH] Pour changer de PC --- .flaskenv | 3 +++ app/__init__.py | 5 ++++- app/database.py | 2 +- app/forms.py | 7 ++++++- app/models.py | 1 + app/routes.py | 14 +++++++++++--- app/static/css/main.css | 28 ++++++++++++++++++++++++++++ app/templates/base.html | 5 +++-- app/templates/upload.html | 13 ++++++++++++- app/templates/view.html | 13 +++++++++++-- config.py | 2 +- 11 files changed, 81 insertions(+), 12 deletions(-) create mode 100644 .flaskenv create mode 100644 app/static/css/main.css diff --git a/.flaskenv b/.flaskenv new file mode 100644 index 0000000..e581145 --- /dev/null +++ b/.flaskenv @@ -0,0 +1,3 @@ +FLASK_APP=Pycloud.py +FLASK_ENV=development +SECRET_KEY='key' \ No newline at end of file diff --git a/app/__init__.py b/app/__init__.py index fe1e549..d626e9e 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -17,10 +17,13 @@ words = { 'nameApp' : 'Pycloud', 'nameHome' : 'Home', 'nameUpload' : 'Upload', + 'termUsers' : 'Users', 'nameLogin' : 'Login', 'nameView' : 'View', 'nameRegister' : 'Register', 'termLogout' : 'Logout', + 'termFilename' : 'Filename (leave blank to keep the original name)', + 'termUploadFile' : 'Upload File', 'termSFolder' : "'s folder", 'termChoose' : 'Choose a directory', 'termSubmit' : 'Submit', @@ -38,5 +41,5 @@ words = { 'ErrorPermission' : "You don't have the permission to acces to this page", 'ErrorLogged' : 'You have to be logged in to acces to this page' } - + from app import routes, models \ No newline at end of file diff --git a/app/database.py b/app/database.py index 844dc43..2637444 100644 --- a/app/database.py +++ b/app/database.py @@ -15,7 +15,7 @@ def updatedata(username): folder = os.path.join(app.config['FILES_DIR'], user.username) files = listdir(folder) for f in files: - filetodb = File(name = f, user = user) + filetodb = File(name = f, user = user, folder=folder) db.session.add(filetodb) db.session.commit() diff --git a/app/forms.py b/app/forms.py index fe39d87..8ea9c41 100644 --- a/app/forms.py +++ b/app/forms.py @@ -5,10 +5,15 @@ from flask_wtf.file import FileField, FileRequired from wtforms import SubmitField, PasswordField, StringField, BooleanField, SelectField from wtforms.validators import DataRequired, EqualTo, ValidationError from app.models import User +users_list=[] +for users in User.query.all(): + users_list.append(users.username) class UploadForm(FlaskForm): - uploadfile = FileField(validators=[FileRequired()]) + uploadfile = FileField(words['termUploadFile'], validators=[FileRequired()]) submit = SubmitField(words['termSubmit']) + filename_choose = StringField(words['termFilename']) + folder = SelectField(words['termUsers'], choices=users_list, validate_choice=False) class LoginForm(FlaskForm): username = StringField(words['termUsername'], validators=[DataRequired()]) diff --git a/app/models.py b/app/models.py index 90c846b..2e547e1 100644 --- a/app/models.py +++ b/app/models.py @@ -18,6 +18,7 @@ class User(UserMixin, db.Model): class File(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.Text) + folder = db.Column(db.Text) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) @login.user_loader diff --git a/app/routes.py b/app/routes.py index 76f2177..3723467 100644 --- a/app/routes.py +++ b/app/routes.py @@ -83,9 +83,17 @@ def upload(): form = UploadForm() if form.validate_on_submit(): f = form.uploadfile.data - filename = secure_filename(f.filename) - f.save(os.path.join(app.config['FILES_DIR'], current_user.username, filename)) - filetodb = File(name=filename, user=current_user) + if form.filename_choose.data: + original = f.filename.split('.') + filename = secure_filename(form.filename_choose.data + '.' + original[-1]) + else: + filename = secure_filename(f.filename) + if current_user.isAdmin: + folder=form.folder.data + else: + folder = current_user.username + f.save(os.path.join(app.config['FILES_DIR'], folder, filename)) + filetodb = File(name=filename, user=current_user, folder=folder) db.session.add(filetodb) db.session.commit() return redirect(url_for('home')) diff --git a/app/static/css/main.css b/app/static/css/main.css new file mode 100644 index 0000000..3d970d4 --- /dev/null +++ b/app/static/css/main.css @@ -0,0 +1,28 @@ +:root{ + --main-color: #80e5ff; +} + +.file { + background: linear-gradient(#fff0, var(--main-color)); + width: 15em; +} + +.files a { + text-decoration: none; +} + +a .file { + display: inline-block; +} + +a .file h1{ + color: #1a1a1a; + font-size: 1.5em; + margin: 0.5em; +} + +a .file p { + color: #666; + font-size: 0.8em; + margin: 0.5em; +} \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index 4def8ea..339aae2 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -5,6 +5,7 @@ {% else %} {{ dico['nameApp'] }} {% endif %} +
@@ -31,8 +32,8 @@ {% endif %} {% endwith %} - {% block content %} - {% endblock %}
+ {% block content %} + {% endblock %} \ No newline at end of file diff --git a/app/templates/upload.html b/app/templates/upload.html index 1c79ddb..3af16d1 100644 --- a/app/templates/upload.html +++ b/app/templates/upload.html @@ -3,7 +3,18 @@ {% block content %}
{{ form.hidden_tag() }} -

{{ form.uploadfile() }}

+

+ {{ form.uploadfile.label }}
+ {{ form.uploadfile() }} +

+

+ {{ form.filename_choose.label }}
+ {{ form.filename_choose() }} +

+ {% if userlogged.isAdmin %} + {{ form.folder.label }} + {{ form.folder() }} + {% endif %}

{{ form.submit() }}

{% endblock %} \ No newline at end of file diff --git a/app/templates/view.html b/app/templates/view.html index 9d5e74c..473667f 100644 --- a/app/templates/view.html +++ b/app/templates/view.html @@ -2,9 +2,18 @@ {% block content %} {% if files %} -
+ {% else %} diff --git a/config.py b/config.py index ebf3e51..ead6bc0 100644 --- a/config.py +++ b/config.py @@ -5,4 +5,4 @@ class Config(object): APPLICATION_DIR = os.path.dirname(os.path.realpath(__file__)) FILES_DIR = os.path.join(APPLICATION_DIR, 'Files') SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'sqlite:///' + os.path.join(APPLICATION_DIR, 'app.db') - SQLALCHEMY_TRACK_MODIFICATIONS = False \ No newline at end of file + SQLALCHEMY_TRACK_MODIFICATIONS = True \ No newline at end of file