From b685ebd87666061f7a91b458609ec8b437cf1a10 Mon Sep 17 00:00:00 2001 From: Michael Weber Date: Sat, 24 Sep 2022 20:05:54 +0200 Subject: [PATCH] Update of all dependencies, fixing wrong API-Calls of Azure BlobServiceClient and wrong import of secure_filename from werkzeug. --- FlaskWebProject/models.py | 44 ++++++++++++++++--------- requirements.txt | 67 ++++++++++++++++++++------------------- 2 files changed, 63 insertions(+), 48 deletions(-) diff --git a/FlaskWebProject/models.py b/FlaskWebProject/models.py index 3eee2294e..2b20eda71 100644 --- a/FlaskWebProject/models.py +++ b/FlaskWebProject/models.py @@ -1,18 +1,26 @@ +import random +import string from datetime import datetime -from FlaskWebProject import app, db, login -from werkzeug.security import generate_password_hash, check_password_hash -from flask_login import UserMixin -from azure.storage.blob import BlockBlobService -import string, random -from werkzeug import secure_filename + +from azure.storage.blob import BlobServiceClient from flask import flash +from flask_login import UserMixin +from werkzeug.security import generate_password_hash, check_password_hash +from werkzeug.utils import secure_filename + +from FlaskWebProject import app, db, login blob_container = app.config['BLOB_CONTAINER'] -blob_service = BlockBlobService(account_name=app.config['BLOB_ACCOUNT'], account_key=app.config['BLOB_STORAGE_KEY']) +storage_url = "https://{}.blob.core.windows.net/".format( + app.config['BLOB_ACCOUNT']) +blob_service = BlobServiceClient( + account_url=storage_url, credential=app.config['BLOB_STORAGE_KEY']) + def id_generator(size=32, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) + class User(UserMixin, db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) @@ -28,10 +36,12 @@ def set_password(self, password): def check_password(self, password): return check_password_hash(self.password_hash, password) + @login.user_loader def load_user(id): return User.query.get(int(id)) + class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key=True) @@ -52,17 +62,21 @@ def save_changes(self, form, file, userId, new=False): self.user_id = userId if file: - filename = secure_filename(file.filename); - fileextension = filename.rsplit('.',1)[1]; - Randomfilename = id_generator(); - filename = Randomfilename + '.' + fileextension; + filename = secure_filename(file.filename) + fileextension = filename.rsplit('.', 1)[1] + Randomfilename = id_generator() + filename = Randomfilename + '.' + fileextension try: - blob_service.create_blob_from_stream(blob_container, filename, file) - if(self.image_path): - blob_service.delete_blob(blob_container, self.image_path) + blob_client = blob_service.get_blob_client( + container=blob_container, blob=filename) + blob_client.upload_blob(file) + if (self.image_path): + blob_client = blob_service.get_blob_client( + container=blob_container, blob=self.image_path) + blob_client.delete_blob() except Exception: flash(Exception) - self.image_path = filename + self.image_path = filename if new: db.session.add(self) db.session.commit() diff --git a/requirements.txt b/requirements.txt index e9832b121..534ee4454 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,33 +1,34 @@ -alembic==1.4.0 -azure-common==1.1.24 -azure-nspkg==3.0.2 -azure-storage==0.36.0 -certifi==2019.11.28 -cffi==1.14.0 -chardet==3.0.4 -Click==7.0 -cryptography==2.8 -Flask==0.12.5 -Flask-Login==0.5.0 -Flask-Session==0.3.2 -Flask-SQLAlchemy==2.4.1 -Flask-WTF==0.14.3 -idna==2.8 -itsdangerous==1.1.0 -Jinja2==2.11.1 -Mako==1.1.1 -MarkupSafe==1.1.1 -msal==1.3.0 -pip==10.0.1 -pycparser==2.19 -pyodbc==4.0.28 -pyopenssl==19.1.0 -python-dateutil==2.8.1 -python-editor==1.0.4 -requests==2.22.0 -setuptools==39.0.1 -six==1.14.0 -SQLAlchemy==1.3.13 -urllib3==1.25.8 -Werkzeug==0.16.1 -WTForms==2.2.1 +azure-core==1.25.1 +azure-storage-blob==12.13.1 +cachelib==0.9.0 +certifi==2022.9.24 +cffi==1.15.1 +charset-normalizer==2.1.1 +click==8.1.3 +cryptography==38.0.1 +Flask==2.2.2 +Flask-Login==0.6.2 +Flask-Session==0.4.0 +Flask-SQLAlchemy==2.5.1 +Flask-WTF==1.0.1 +greenlet==1.1.3 +idna==3.4 +isodate==0.6.1 +itsdangerous==2.1.2 +Jinja2==3.1.2 +MarkupSafe==2.1.1 +msal==1.19.0 +msrest==0.7.1 +oauthlib==3.2.1 +pycparser==2.21 +PyJWT==2.5.0 +pyodbc==4.0.34 +requests==2.28.1 +requests-oauthlib==1.3.1 +six==1.16.0 +SQLAlchemy==1.4.41 +types-cryptography==3.3.23 +typing_extensions==4.3.0 +urllib3==1.26.12 +Werkzeug==2.2.2 +WTForms==3.0.1