mirror of
https://github.com/pds-nest/nest.git
synced 2024-11-25 14:34:19 +00:00
Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
20803316ee
23 changed files with 304 additions and 68 deletions
|
@ -3,7 +3,7 @@
|
||||||
<component name="ClojureProjectResolveSettings">
|
<component name="ClojureProjectResolveSettings">
|
||||||
<currentScheme>IDE</currentScheme>
|
<currentScheme>IDE</currentScheme>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_14" default="false">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_14" default="false" project-jdk-name="Poetry (g2-progetto) (2)" project-jdk-type="Python SDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -6,7 +6,7 @@
|
||||||
<envs>
|
<envs>
|
||||||
<env name="PYTHONUNBUFFERED" value="1" />
|
<env name="PYTHONUNBUFFERED" value="1" />
|
||||||
</envs>
|
</envs>
|
||||||
<option name="SDK_HOME" value="" />
|
<option name="SDK_HOME" value="C:\Users\loren\AppData\Local\pypoetry\Cache\virtualenvs\g2-progetto-pFEbXYE_-py3.8\Scripts\python.exe" />
|
||||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/code/backend/nest_backend" />
|
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/code/backend/nest_backend" />
|
||||||
<option name="IS_MODULE_SDK" value="true" />
|
<option name="IS_MODULE_SDK" value="true" />
|
||||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
|
"""
|
||||||
|
This is the runner for the server.
|
||||||
|
"""
|
||||||
from flask import Flask
|
from flask import Flask
|
||||||
import os
|
import os
|
||||||
import werkzeug.middleware.proxy_fix
|
import werkzeug.middleware.proxy_fix
|
||||||
from .routes import *
|
from .routes import *
|
||||||
from .database import Base
|
from database import Base, tables
|
||||||
|
import psycopg2
|
||||||
|
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
@ -12,13 +16,11 @@ else:
|
||||||
app.secret_key = "testing"
|
app.secret_key = "testing"
|
||||||
reverse_proxy_app = werkzeug.middleware.proxy_fix.ProxyFix(app=app, x_for=1, x_proto=0, x_host=1, x_port=0, x_prefix=0)
|
reverse_proxy_app = werkzeug.middleware.proxy_fix.ProxyFix(app=app, x_for=1, x_proto=0, x_host=1, x_port=0, x_prefix=0)
|
||||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@localhost:5432/PdSDev'
|
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@localhost:5432/PdSDev'
|
||||||
|
Base.app = app
|
||||||
|
Base.init_app(app)
|
||||||
# Routes setup
|
# Routes setup
|
||||||
app.add_url_rule("/doa", view_func=page_doa, methods=["GET"])
|
app.add_url_rule("/doa", view_func=page_doa, methods=["GET"])
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
try:
|
Base.create_all()
|
||||||
Base.create_all()
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
app.run(debug=True)
|
app.run(debug=True)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from .tables import *
|
|
||||||
from .base import Base
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This module imports all the tables and the declarative base
|
This module imports all the tables and the declarative base
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from .tables import *
|
||||||
|
from .base import Base
|
|
@ -1,3 +1,7 @@
|
||||||
|
"""
|
||||||
|
This module creates the declarative base
|
||||||
|
"""
|
||||||
import flask_sqlalchemy
|
import flask_sqlalchemy
|
||||||
|
from sqlalchemy.orm import backref
|
||||||
|
|
||||||
Base = flask_sqlalchemy.SQLAlchemy()
|
Base = flask_sqlalchemy.SQLAlchemy()
|
||||||
|
|
19
code/backend/nest_backend/database/tables/Alert.py
Normal file
19
code/backend/nest_backend/database/tables/Alert.py
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
"""
|
||||||
|
This module defines the Alert database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class Alert(Base.Model):
|
||||||
|
__tablename__ = "alert"
|
||||||
|
id = Base.Column(Base.Integer, primary_key=True)
|
||||||
|
name = Base.Column(Base.String, nullable=False)
|
||||||
|
limit = Base.Column(Base.Integer, nullable=False)
|
||||||
|
window_size = Base.Column(Base.Integer, nullable=False)
|
||||||
|
# Foreign Keys
|
||||||
|
repository_id = Base.Column(Base.Integer, Base.ForeignKey("repository.id"), nullable=False)
|
||||||
|
# Relationships
|
||||||
|
repository = Base.relationship("Repository", back_populates="alerts")
|
||||||
|
notifications = Base.relationship("Notifications", back_populates="alerts")
|
||||||
|
operations = Base.relationship("BoolOperation", back_populates="alert")
|
13
code/backend/nest_backend/database/tables/Authorization.py
Normal file
13
code/backend/nest_backend/database/tables/Authorization.py
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
"""
|
||||||
|
This module defines the Authorization database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class Authorization(Base.Model):
|
||||||
|
rid = Base.Column(Base.Integer, Base.ForeignKey("repository.id"), primary_key=True)
|
||||||
|
email = Base.Column(Base.String, Base.ForeignKey("user.email"), primary_key=True)
|
||||||
|
# Relationships
|
||||||
|
repository = Base.relationship("Repository", back_populates="authorizations")
|
||||||
|
user = Base.relationship("User", back_populates="authorizations")
|
25
code/backend/nest_backend/database/tables/BoolOperation.py
Normal file
25
code/backend/nest_backend/database/tables/BoolOperation.py
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
"""
|
||||||
|
This module defines the BoolOperation database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base, backref
|
||||||
|
from .Enums import OperationType
|
||||||
|
|
||||||
|
|
||||||
|
class BoolOperation(Base.Model):
|
||||||
|
__tablename__ = "bool_operation"
|
||||||
|
id = Base.Column(Base.Integer, primary_key=True)
|
||||||
|
operation = Base.Column(Base.Enum(OperationType), nullable=False)
|
||||||
|
isRoot = Base.Column(Base.Boolean, default=False, nullable=False)
|
||||||
|
# Foreign Keys
|
||||||
|
condition_id = Base.Column(Base.Integer, Base.ForeignKey("condition.id"))
|
||||||
|
node_1_id = Base.Column(Base.Integer, Base.ForeignKey("bool_operation.id"))
|
||||||
|
node_2_id = Base.Column(Base.Integer, Base.ForeignKey("bool_operation.id"))
|
||||||
|
alert_id = Base.Column(Base.Integer, Base.ForeignKey("alert.id"))
|
||||||
|
# Relationships
|
||||||
|
condition = Base.relationship("Condition", back_populates="operations")
|
||||||
|
node_1 = Base.relationship("BoolOperation", primaryjoin=("bool_operation.c.node_1_id==bool_operation.c.id"),
|
||||||
|
remote_side="BoolOperation.id", backref=backref("father", uselist=False))
|
||||||
|
node_2 = Base.relationship("BoolOperation", primaryjoin=("bool_operation.c.node_2_id==bool_operation.c.id"),
|
||||||
|
remote_side="BoolOperation.id", backref=backref("father", uselist=False))
|
||||||
|
alert = Base.relationship("Alert", back_populates="operations")
|
14
code/backend/nest_backend/database/tables/Composed.py
Normal file
14
code/backend/nest_backend/database/tables/Composed.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
"""
|
||||||
|
This module defines the Composed database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class Composed(Base.Model):
|
||||||
|
__tablename__ = "composed"
|
||||||
|
rid = Base.Column(Base.Integer, Base.ForeignKey("repository.id"), primary_key=True)
|
||||||
|
snowflake = Base.Column(Base.String, Base.ForeignKey("tweet.snowflake"), primary_key=True)
|
||||||
|
# Relationships
|
||||||
|
repository = Base.relationship("Repository", back_populates="tweets")
|
||||||
|
tweet = Base.relationship("Tweet", back_populates="repositories")
|
17
code/backend/nest_backend/database/tables/Condition.py
Normal file
17
code/backend/nest_backend/database/tables/Condition.py
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
"""
|
||||||
|
This module defines the Condition database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
from .Enums import ConditionType
|
||||||
|
|
||||||
|
|
||||||
|
class Condition(Base.Model):
|
||||||
|
__tablename__ = "condition"
|
||||||
|
id = Base.Column(Base.Integer, primary_key=True)
|
||||||
|
type = Base.Column(Base.Enum(ConditionType), nullable=False)
|
||||||
|
content = Base.Column(Base.String, nullable=False)
|
||||||
|
# Relationships
|
||||||
|
used = Base.relationship("Uses", back_populates="condition")
|
||||||
|
tweets = Base.relationship("Contains", back_populates="condition")
|
||||||
|
operations = Base.relationship("BoolOperation", back_populates="condition")
|
14
code/backend/nest_backend/database/tables/Contains.py
Normal file
14
code/backend/nest_backend/database/tables/Contains.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
"""
|
||||||
|
This module defines the Contains database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class Contains(Base.Model):
|
||||||
|
__tablename__ = "contains"
|
||||||
|
cid = Base.Column(Base.Integer, Base.ForeignKey("condition.id"), primary_key=True)
|
||||||
|
snowflake = Base.Column(Base.String, Base.ForeignKey("tweet.snowflake"), primary_key=True)
|
||||||
|
# Relationships
|
||||||
|
condition = Base.relationship("Condition", back_populates="tweets")
|
||||||
|
tweet = Base.relationship("Tweet", back_populates="conditions")
|
18
code/backend/nest_backend/database/tables/Enums.py
Normal file
18
code/backend/nest_backend/database/tables/Enums.py
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
"""
|
||||||
|
This module contains the main enum definitions.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import enum
|
||||||
|
|
||||||
|
|
||||||
|
class ConditionType(enum.Enum):
|
||||||
|
hashtag = 0
|
||||||
|
location = 1
|
||||||
|
time = 2
|
||||||
|
|
||||||
|
|
||||||
|
class OperationType(enum.Enum):
|
||||||
|
_and = 0
|
||||||
|
_or = 1
|
||||||
|
_not = 2
|
||||||
|
assign = 3
|
14
code/backend/nest_backend/database/tables/Notification.py
Normal file
14
code/backend/nest_backend/database/tables/Notification.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
"""
|
||||||
|
This module defines the Notification database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
class Notification(Base.Model):
|
||||||
|
__tablename__ = "notification"
|
||||||
|
id = Base.Column(Base.Integer, primary_key=True)
|
||||||
|
ora = Base.Column(Base.DateTime, nullable=False)
|
||||||
|
# Foreign Key
|
||||||
|
alert_id = Base.Column(Base.Integer, Base.ForeignKey("alert.id"), nullable=False)
|
||||||
|
# Relationships
|
||||||
|
alert = Base.relationship("Alert", back_populates="notifications")
|
20
code/backend/nest_backend/database/tables/Repository.py
Normal file
20
code/backend/nest_backend/database/tables/Repository.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
"""
|
||||||
|
This module defines the Repository database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class Repository(Base.Model):
|
||||||
|
__tablename__ = "repository"
|
||||||
|
id = Base.Column(Base.Integer, primary_key=True)
|
||||||
|
name = Base.Column(Base.String, nullable=False)
|
||||||
|
start = Base.Column(Base.DateTime, nullable=False)
|
||||||
|
end = Base.Column(Base.DateTime, nullable=False)
|
||||||
|
# Foreign Keys
|
||||||
|
owner_id = Base.Column(Base.String, Base.ForeignKey("user.email"), nullable=False)
|
||||||
|
# Relationships
|
||||||
|
owner = Base.relationship("User", back_populates="owner_of")
|
||||||
|
authorizations = Base.relationship("Authorization", back_populates="repository")
|
||||||
|
tweets = Base.relationship("Composed", back_populates="repository")
|
||||||
|
alerts = Base.relationship("Alert", back_populates="repository")
|
16
code/backend/nest_backend/database/tables/Tweet.py
Normal file
16
code/backend/nest_backend/database/tables/Tweet.py
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
"""
|
||||||
|
This module defines the Tweet database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class Tweet(Base.Model):
|
||||||
|
__tablename__ = "tweet"
|
||||||
|
snowflake = Base.Column(Base.String, primary_key=True)
|
||||||
|
content = Base.Column(Base.String)
|
||||||
|
location = Base.Column(Base.String) # Todo: see if a dedicated class for locations is needed. This is likely.
|
||||||
|
poster = Base.Column(Base.String) # Todo: see if a dedicated class for posters is needed.
|
||||||
|
# Relationships
|
||||||
|
repositories = Base.relationship("Composed", back_populates="tweet")
|
||||||
|
conditions = Base.relationship("Contains", back_populates="tweet")
|
16
code/backend/nest_backend/database/tables/User.py
Normal file
16
code/backend/nest_backend/database/tables/User.py
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
"""
|
||||||
|
This module defines the User database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class User(Base.Model):
|
||||||
|
__tablename__ = "user"
|
||||||
|
email = Base.Column(Base.String, primary_key=True)
|
||||||
|
username = Base.Column(Base.String, nullable=False)
|
||||||
|
password = Base.Column(Base.LargeBinary, nullable=False)
|
||||||
|
isAdmin = Base.Column(Base.Boolean, default=False)
|
||||||
|
# Relationships
|
||||||
|
owner_of = Base.relationship("Repository", back_populates="owner")
|
||||||
|
authorizations = Base.relationship("Authorization", back_populates="user")
|
14
code/backend/nest_backend/database/tables/Uses.py
Normal file
14
code/backend/nest_backend/database/tables/Uses.py
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
"""
|
||||||
|
This module defines the Uses database class.
|
||||||
|
"""
|
||||||
|
|
||||||
|
from ..base import Base
|
||||||
|
|
||||||
|
|
||||||
|
class Uses(Base.Model):
|
||||||
|
__tablename__ = "uses"
|
||||||
|
rid = Base.Column(Base.Integer, Base.ForeignKey("repository.id"), primary_key=True)
|
||||||
|
cid = Base.Column(Base.Integer, Base.ForeignKey("condition.id"), primary_key=True)
|
||||||
|
# Relationships
|
||||||
|
repository = Base.relationship("Repository", back_populates="uses")
|
||||||
|
condition = Base.relationship("Condition", back_populates="used")
|
|
@ -1,8 +0,0 @@
|
||||||
from ..base import Base
|
|
||||||
|
|
||||||
|
|
||||||
class Utente(Base.Model):
|
|
||||||
__tablename__ = "utente"
|
|
||||||
email = Base.Column(Base.String, primary_key=True)
|
|
||||||
username = Base.Column(Base.String, nullable=False)
|
|
||||||
password = Base.Column(Base.LargeBinary, nullable=False)
|
|
|
@ -1,5 +1,15 @@
|
||||||
from .Utente import Utente
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This module contains all database classes.
|
This module contains all database classes.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from .Alert import Alert
|
||||||
|
from .Authorization import Authorization
|
||||||
|
from .BoolOperation import BoolOperation
|
||||||
|
from .Composed import Composed
|
||||||
|
from .Condition import Condition
|
||||||
|
from .Contains import Contains
|
||||||
|
from .Notification import Notification
|
||||||
|
from .Repository import Repository
|
||||||
|
from .Tweet import Tweet
|
||||||
|
from .User import User
|
||||||
|
from .Uses import Uses
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from .doa import page_doa
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
This module imports all the routes that return something to the frontend.
|
This module imports all the routes that return something to the frontend.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from .doa import page_doa
|
|
@ -1,10 +1,12 @@
|
||||||
from flask import render_template, abort
|
|
||||||
from ..database import *
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Page that displays a message if the server is on
|
Page that displays a message if the server is on
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from flask import render_template, abort
|
||||||
|
from ..database import *
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def page_doa():
|
def page_doa():
|
||||||
utente = Utente()
|
utente = Utente()
|
||||||
|
|
99
code/backend/poetry.lock
generated
99
code/backend/poetry.lock
generated
|
@ -78,9 +78,17 @@ category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
|
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "psycopg2"
|
||||||
|
version = "2.8.6"
|
||||||
|
description = "psycopg2 - Python-PostgreSQL Database Adapter"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sqlalchemy"
|
name = "sqlalchemy"
|
||||||
version = "1.4.9"
|
version = "1.4.10"
|
||||||
description = "Database Abstraction Library"
|
description = "Database Abstraction Library"
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
|
@ -123,8 +131,8 @@ watchdog = ["watchdog"]
|
||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "1.1"
|
lock-version = "1.1"
|
||||||
python-versions = "^3.8"
|
python-versions = "^3.8.5"
|
||||||
content-hash = "1c4775c88c3f9f7f9ceb05ec717052a69039f2d7d9f44cbdb348330be98c118e"
|
content-hash = "71b957004ae80674013de8327f592dd17b9ffb4e5c6a865e69326555f9c2a1ce"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
click = [
|
click = [
|
||||||
|
@ -227,41 +235,58 @@ markupsafe = [
|
||||||
{file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
|
{file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
|
||||||
{file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
|
{file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
|
||||||
]
|
]
|
||||||
|
psycopg2 = [
|
||||||
|
{file = "psycopg2-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:068115e13c70dc5982dfc00c5d70437fe37c014c808acce119b5448361c03725"},
|
||||||
|
{file = "psycopg2-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:d160744652e81c80627a909a0e808f3c6653a40af435744de037e3172cf277f5"},
|
||||||
|
{file = "psycopg2-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:b8cae8b2f022efa1f011cc753adb9cbadfa5a184431d09b273fb49b4167561ad"},
|
||||||
|
{file = "psycopg2-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:f22ea9b67aea4f4a1718300908a2fb62b3e4276cf00bd829a97ab5894af42ea3"},
|
||||||
|
{file = "psycopg2-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:26e7fd115a6db75267b325de0fba089b911a4a12ebd3d0b5e7acb7028bc46821"},
|
||||||
|
{file = "psycopg2-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:00195b5f6832dbf2876b8bf77f12bdce648224c89c880719c745b90515233301"},
|
||||||
|
{file = "psycopg2-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a49833abfdede8985ba3f3ec641f771cca215479f41523e99dace96d5b8cce2a"},
|
||||||
|
{file = "psycopg2-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:f974c96fca34ae9e4f49839ba6b78addf0346777b46c4da27a7bf54f48d3057d"},
|
||||||
|
{file = "psycopg2-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:6a3d9efb6f36f1fe6aa8dbb5af55e067db802502c55a9defa47c5a1dad41df84"},
|
||||||
|
{file = "psycopg2-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:56fee7f818d032f802b8eed81ef0c1232b8b42390df189cab9cfa87573fe52c5"},
|
||||||
|
{file = "psycopg2-2.8.6-cp38-cp38-win32.whl", hash = "sha256:ad2fe8a37be669082e61fb001c185ffb58867fdbb3e7a6b0b0d2ffe232353a3e"},
|
||||||
|
{file = "psycopg2-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:56007a226b8e95aa980ada7abdea6b40b75ce62a433bd27cec7a8178d57f4051"},
|
||||||
|
{file = "psycopg2-2.8.6-cp39-cp39-win32.whl", hash = "sha256:2c93d4d16933fea5bbacbe1aaf8fa8c1348740b2e50b3735d1b0bf8154cbf0f3"},
|
||||||
|
{file = "psycopg2-2.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:d5062ae50b222da28253059880a871dc87e099c25cb68acf613d9d227413d6f7"},
|
||||||
|
{file = "psycopg2-2.8.6.tar.gz", hash = "sha256:fb23f6c71107c37fd667cb4ea363ddeb936b348bbd6449278eb92c189699f543"},
|
||||||
|
]
|
||||||
sqlalchemy = [
|
sqlalchemy = [
|
||||||
{file = "SQLAlchemy-1.4.9-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:e26791ac43806dec1f18d328596db87f1b37f9d8271997dd1233054b4c377f51"},
|
{file = "SQLAlchemy-1.4.10-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:6c24884bb8d0065cf6f61b643e8f32947ef8386a5bcdad41b921ed81994ea8f1"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:c4485040d86d4b3d9aa509fd3c492de3687d9bf52fb85d66b33912ad068a088c"},
|
{file = "SQLAlchemy-1.4.10-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:266fbf4a0d3f4ed614fff60485e3ba83d3eef4a736102b9b7e461402dc930234"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp27-cp27m-win32.whl", hash = "sha256:a8763fe4de02f746666161b130cc3e5d1494a6f5475f5622f05251739fc22e55"},
|
{file = "SQLAlchemy-1.4.10-cp27-cp27m-win32.whl", hash = "sha256:e7e52b59e0895c3c85eb271e2b77b9507b131eec621a2de1986682a69cc96889"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp27-cp27m-win_amd64.whl", hash = "sha256:e7d262415e4adf148441bd9f10ae4e5498d6649962fabc62a64ec7b4891d56c5"},
|
{file = "SQLAlchemy-1.4.10-cp27-cp27m-win_amd64.whl", hash = "sha256:4513c4d2a9d03239dd48c558b7e89969128e07493c8930a4edc2ba9c6ba6f098"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:c6f228b79fd757d9ca539c9958190b3a44308f743dc7d83575aa0891033f6c86"},
|
{file = "SQLAlchemy-1.4.10-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:978a89d594d477f2bf088aedf2f60fb213b0191f8f8d96f5b48b7e0cf76b420c"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:cfbf2cf8e8ef0a1d23bfd0fa387057e6e522d55e43821f1d115941d913ee7762"},
|
{file = "SQLAlchemy-1.4.10-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:13508e69d6feba528ff583f81b840b837a085456fb084db968a65e6bcc4f0193"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:815a8cdf9c0fa504d0bfbe83fb3e596b7663fc828b73259a20299c01330467aa"},
|
{file = "SQLAlchemy-1.4.10-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:92b153cbc0138931e82cc26fedcd84d55ac6f6916e881799e540ff4d3c875b67"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:cfa4a336de7d32ae30b54f7b8ec888fb5c6313a1b7419a9d7b3f49cdd83012a3"},
|
{file = "SQLAlchemy-1.4.10-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:e55e7624c5253fad07ceee52d06ce9b562895a33c004f48118b05a50773ae380"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:065ac7331b87494a86bf3dc4430c1ee7779d6dc532213c528394ddd00804e518"},
|
{file = "SQLAlchemy-1.4.10-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b127b4c6961005eb16e46d6f84dc272af58259c7e373dc49e287b0157a776073"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:690fbca2a208314504a2ab46d3e7dae320247fcb1967863b9782a70bf49fc600"},
|
{file = "SQLAlchemy-1.4.10-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:e1088a429716ce32f30925228d56c74b3566dae880b8b89d12d3245469d0e494"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp36-cp36m-win32.whl", hash = "sha256:4edff2b4101a1c442fb1b17d594a5fdf99145f27c5eaffae12c26aef2bb2bf65"},
|
{file = "SQLAlchemy-1.4.10-cp36-cp36m-win32.whl", hash = "sha256:2bf1a89887ff316c8bc6e69197dbd37ef84c41231c2d92c4af438a391fb730ea"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp36-cp36m-win_amd64.whl", hash = "sha256:6c6090d73820dcf04549f0b6e80f67b46c8191f0e40bf09c6d6f8ece2464e8b6"},
|
{file = "SQLAlchemy-1.4.10-cp36-cp36m-win_amd64.whl", hash = "sha256:bc840a012a5521635cb084b690ae4a2587072b34707c626de57619c96b079ffd"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:fc82688695eacf77befc3d839df2bc7ff314cd1d547f120835acdcbac1a480b8"},
|
{file = "SQLAlchemy-1.4.10-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:8bb0a2767a88e41be9d414fdd18e3929d7aa0abad81a6ab0747d5098d785c8a9"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:4e554872766d2783abf0a11704536596e8794229fb0fa63d311a74caae58c6c5"},
|
{file = "SQLAlchemy-1.4.10-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:99d90172d1d284550caa490617f50392dcdea330401fad0eddb95b83d6b4a501"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:bce6eaf7b9a3a445911e225570b8fd26b7e98654ac9f308a8a52addb64a2a488"},
|
{file = "SQLAlchemy-1.4.10-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:08c5a58bfbd6638c17b13fad8d78c75756a11d67948615ac6713d8aaa19634ed"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:25aaf0bec9eadde9789e3c0178c718ae6923b57485fdeae85999bc3089d9b871"},
|
{file = "SQLAlchemy-1.4.10-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:56fc949c075085bfd4aa38a2cb0e3dd3e9f6a1a01a628cb1225adbd169dbdeb4"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:f239778cf03cd46da4962636501f6dea55af9b4684cd7ceee104ad4f0290e878"},
|
{file = "SQLAlchemy-1.4.10-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:482e38d6ea79b3d2d136044188545bf262ba001d8a4f41112808a8d457e8bb9f"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp37-cp37m-win32.whl", hash = "sha256:b0266e133d819d33b555798822606e876187a96798e2d8c9b7f85e419d73ef94"},
|
{file = "SQLAlchemy-1.4.10-cp37-cp37m-win32.whl", hash = "sha256:83372e25c1cc2100d00603907abe8d05d1143f8907f841780760c694285b714d"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp37-cp37m-win_amd64.whl", hash = "sha256:230b210fc6d1af5d555d1d04ff9bd4259d6ab82b020369724ab4a1c805a32dd3"},
|
{file = "SQLAlchemy-1.4.10-cp37-cp37m-win_amd64.whl", hash = "sha256:d5618889532bd4096f7c7eb143e5e7039c24eb4327aef7d87d8f56220c4fdd5d"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a28c7b96bc5beef585172ca9d79068ae7fa2527feaa26bd63371851d7894c66f"},
|
{file = "SQLAlchemy-1.4.10-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8d2c8a1f1352a9db7b5c370411f61cf36b9bfed61cbac4ae1033c39374981a0c"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:457a1652bc1c5f832165ff341380b3742bfb98b9ceca24576350992713ad700f"},
|
{file = "SQLAlchemy-1.4.10-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:01988ae8841b8b2efe2bfe5094466d7cec09c69afb430de42c1bc847f2742579"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:e9e95568eafae18ac40d00694b82dc3febe653f81eee83204ef248563f39696d"},
|
{file = "SQLAlchemy-1.4.10-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:a2a11d6102ed1f3c949bacd2381e47c0587413889dd35ce4f8b68927ec2e5dd0"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:0d8aab144cf8d31c1ac834802c7df4430248f74bd8b3ed3149f9c9eec0eafe50"},
|
{file = "SQLAlchemy-1.4.10-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:adb965b2310c01249481a3f94a1ab2bb88cd7aa78964a6252a38886a9ecdcaf1"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:cde2cf3ee76e8c538f2f43f5cf9252ad53404fc350801191128bab68f335a8b2"},
|
{file = "SQLAlchemy-1.4.10-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:c4dca554ffe5041bceb5bc938316a46f8391802b5607ed2bc94bfab539545bea"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp38-cp38-win32.whl", hash = "sha256:bb97aeaa699c43da62e35856ab56e5154d062c09a3593a2c12c67d6a21059920"},
|
{file = "SQLAlchemy-1.4.10-cp38-cp38-win32.whl", hash = "sha256:4b49e4700660964e70676aed5b83650b1b7fbbb7ff4b8fca587212e3496cb965"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp38-cp38-win_amd64.whl", hash = "sha256:fbdcf9019e92253fc6aa0bcd5937302664c3a4d53884c425c0caa994e56c4421"},
|
{file = "SQLAlchemy-1.4.10-cp38-cp38-win_amd64.whl", hash = "sha256:c5f138ffa743508488bf40affa4f34e14deaa47e2ae15e6b1e00fa1220983e0d"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:2e1b8d31c97a2b91aea8ed8299ad360a32d60728a89f2aac9c98eef07a633a0e"},
|
{file = "SQLAlchemy-1.4.10-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:25375f44246e9dd652ba3a566e55a3b35ad7fd88f63bdf1266b6612b956e72cb"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7bdb0f972bc35054c05088e91cec8fa810c3aa565b690bae75c005ee430e12e8"},
|
{file = "SQLAlchemy-1.4.10-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:ac61e7129099aae447f0c2c00350b6e598e8985d1891bab21c79affd58c0a23d"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ec7c33e22beac16b4c5348c41cd94cfee056152e55a0efc62843deebfc53fcb4"},
|
{file = "SQLAlchemy-1.4.10-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:05c3f89fc4c459a71bf643a1145a92ed09e6824c04b9190ea88e2155f42e4ed1"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:29816a338982c30dd7ee76c4e79f17d5991abb1b6561e9f1d72703d030a79c86"},
|
{file = "SQLAlchemy-1.4.10-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:db314bac56215008af4c1ca2d4cb4e8178140dc009f2f6b04d5af73b26ca895c"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:099e63ffad329989080c533896267c40f9cb38ed5704168f7dae3afdda121e10"},
|
{file = "SQLAlchemy-1.4.10-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:552056e00c58c73fa69c04ba854a3590cd5efd09ee380f06c121553fc42786d5"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp39-cp39-win32.whl", hash = "sha256:343c679899afdc4952ac659dc46f2075a2bd4fba87ca0df264be838eecd02096"},
|
{file = "SQLAlchemy-1.4.10-cp39-cp39-win32.whl", hash = "sha256:dbbe277b32aa2df9bf87979d1ec10b5a9288ebf7346c8ae28013db1f32737850"},
|
||||||
{file = "SQLAlchemy-1.4.9-cp39-cp39-win_amd64.whl", hash = "sha256:386f215248c3fb2fab9bb77f631bc3c6cd38354ca2363d241784f8297d16b80a"},
|
{file = "SQLAlchemy-1.4.10-cp39-cp39-win_amd64.whl", hash = "sha256:8b3f2719f8957e3402bdcbddde8054399c09898e62ef4b2a7f946ae7e78e7945"},
|
||||||
{file = "SQLAlchemy-1.4.9.tar.gz", hash = "sha256:f31757972677fbe9132932a69a4f23db59187a072cc26427f56a3082b46b6dac"},
|
{file = "SQLAlchemy-1.4.10.tar.gz", hash = "sha256:483fb869a3151dae6d1c97d242fe2e1b08f97bc71bd4946229930b9efedc9d9d"},
|
||||||
]
|
]
|
||||||
werkzeug = [
|
werkzeug = [
|
||||||
{file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"},
|
{file = "Werkzeug-1.0.1-py2.py3-none-any.whl", hash = "sha256:2de2a5db0baeae7b2d2664949077c2ac63fbd16d98da0ff71837f7d1dea3fd43"},
|
||||||
|
|
|
@ -2,10 +2,11 @@
|
||||||
name = "g2-progetto"
|
name = "g2-progetto"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
description = ""
|
description = ""
|
||||||
authors = ["Nemesis <lorenzo.balugani@gmail.com>"]
|
authors = ["Lorenzo Balugani <lorenzo.balugani@gmail.com>"]
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.8"
|
python = "^3.8.5"
|
||||||
|
psycopg2 = "^2.8.6"
|
||||||
Flask = "^1.1.2"
|
Flask = "^1.1.2"
|
||||||
Flask-SQLAlchemy = "^2.5.1"
|
Flask-SQLAlchemy = "^2.5.1"
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue