Skip to content

Commit

Permalink
Merge pull request #10 from kuczynskimaciej1/Guilogin
Browse files Browse the repository at this point in the history
GUI - Login i grupy
  • Loading branch information
ikarmus2001 authored Apr 16, 2024
2 parents 94a0c00 + 088657d commit a78f3b1
Show file tree
Hide file tree
Showing 7 changed files with 439 additions and 195 deletions.
30 changes: 14 additions & 16 deletions DataSources/dataSources.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,40 +75,38 @@ def checkIntegrity(self) -> bool:


def instantiateClasses(self, missing_tables: list[str] | list[models.IModel]) -> None:
# if len(additionalSetup) != 0:

# # DEBUG
# md = alchem.MetaData()
# md.reflect(bind=self.dbEngineInstance)
# existing_tables = md.tables.keys()


# for table_name in missing_tables:
# tableClass = next((cl for cl in additionalSetup if cl.name == table_name), None)
# tableClass.metadata.create_all(self.dbEngineInstance)
# return

for table_name in missing_tables:
if isinstance(table_name, str):
table_name = next((cl for cl in self.tableCreators if cl.__tablename__ == table_name), None)

table_name.__table__.create(self.dbEngineInstance)
# raise AttributeError(f"{table_name} is not name of table or IModel subclass")


def LoadSavedState(self) -> None:
"""Collect all data saved in data source and instantiate adjacent model objects
"""
with orm.Session(self.dbEngineInstance) as session:
Session = orm.sessionmaker(bind=self.dbEngineInstance)
with Session() as session:
for tC in self.tableCreators:
try:
#TODO to pewnie będzie do poprawy przy zapisywaniu innych obiektów
result = session.execute(alchem.select(tC)).all()
if len(result) == 0: continue
for readObj in result:
tC(**readObj)
toinit = readObj[0].__dict__
tC(**toinit)
except Exception as e:
print(e)
continue
models.IModel.run_loading = False

def Save(self, obj: models.IModel):
Session = orm.sessionmaker(bind=self.dbEngineInstance)
with Session() as session:
session.add(obj)
session.commit()
session.refresh(obj)
self.dbEngineInstance.dispose()

class XLSXHandler(IDataSource):
def __init__(self, path: str) -> None:
Expand Down
6 changes: 5 additions & 1 deletion Tests/dataGenerators.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import pytest
from faker import Faker
import personalSecrets as ps
try:
import personalSecrets as ps
secretsAvailable = True
except ImportError:
secretsAvailable = False
from models import Contact, User
from collections.abc import Callable

Expand Down
19 changes: 8 additions & 11 deletions Tests/test_templates.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
from pathlib import Path
import pytest
import os
import sqlite3
from SQLite_operations_test import *
from models import Template
from sqlalchemy import Engine

testSamplesPath = os.path.join(os.getcwd(), "Tests/Samples")

Expand All @@ -18,7 +17,7 @@
}.items()])
def getTemplate(request) -> Template:
with open(request.param[1], "rb") as rb:
result = Template(request.param[0], rb.read())
result = Template(_name=request.param[0], _content=rb.read())
return result


Expand All @@ -29,17 +28,15 @@ def getTemplate(request) -> Template:
)
def test_template_sqlite_insertable(recreateDatabase, getDatabaseHandler, getTemplate):
t = getTemplate
dbh = getDatabaseHandler
engine = dbh.dbEngineInstance
dbh: DatabaseHandler = getDatabaseHandler
engine: Engine = dbh.dbEngineInstance

Session = sessionmaker(bind=engine)
with Session() as session:
session.add(t)
session.commit()
session.refresh(t)

dbh.Save(t)

Session = sessionmaker(engine)
with Session() as session:
selectionResult: list[Template] = session.query(Template).filter_by(name=t.name).all()
engine.dispose()

assert selectionResult is not None
assert len(selectionResult) == 1
Expand Down
10 changes: 2 additions & 8 deletions additionalTableSetup.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,7 @@ class MessageAttachment(declarative_base()):
class SendAttempt(declarative_base()):
__tablename__ = 'Send_attempts'

message_id = Column(Integer, ForeignKey(Message.message_id), nullable=False)
attempt = Column(Integer, nullable=False)
message_id = Column(Integer, ForeignKey(Message.message_id), primary_key=True)
attempt = Column(Integer, primary_key=True)
timestamp = Column(TIMESTAMP, nullable=False)
error_message = Column(VARCHAR(200), server_default='')

__table_args__ = (
PrimaryKeyConstraint(message_id, attempt),
ForeignKeyConstraint([message_id], [Message.message_id])
)

Loading

0 comments on commit a78f3b1

Please sign in to comment.