Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 29 additions & 15 deletions FlaskWebProject/models.py
Original file line number Diff line number Diff line change
@@ -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)
Expand All @@ -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)
Expand All @@ -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()
67 changes: 34 additions & 33 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -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