48 lines
2.0 KiB
Python
48 lines
2.0 KiB
Python
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import sessionmaker
|
|
from config import CONFIG
|
|
from create_db import User, Card, get_session, get_engine
|
|
|
|
from hashlib import md5
|
|
|
|
#@TODO najbrž je treba narediti tako da org card tudi dobi share id in se ostalo, kar to obsega
|
|
def share(card, user_id):
|
|
|
|
#tu bi lahko naredili nek autoincrement ampak i guess da hash unique idja tudi daje unique share_id, tega potem uporabljamo, da preverimo matche
|
|
h = md5(str(card.id).encode("utf-8")).hexdigest()
|
|
card.share_id = h
|
|
|
|
Session = get_session()
|
|
with Session() as dbsession:
|
|
owner_card = dbsession.query(Card).filter(Card.id == card.id).first()
|
|
owner_card.share_id = h
|
|
dbsession.commit()
|
|
|
|
# all users
|
|
users = dbsession.query(User).filter(User.id != user_id).all()
|
|
for user in users:
|
|
#skip če že ima ta card v db.
|
|
existing = dbsession.query(Card).filter(Card.title == card.title, Card.owner_id==user.id).all()
|
|
if existing == []:
|
|
new_card = card = Card(title=card.title, interest_rate=-1.0, owner_id=user.id, item_location=card.item_location, last_review=None, share_id=h)
|
|
dbsession.add(new_card)
|
|
dbsession.commit()
|
|
dbsession.close()
|
|
get_engine().dispose()
|
|
|
|
|
|
def get_all_shared(user_id):
|
|
"""adds all existing shared cards to this users collection"""
|
|
#get all cards with a shared id but make suer they are unique. add them to collection of user
|
|
#@TODO A je to resres ok?
|
|
|
|
Session = get_session()
|
|
with Session() as dbsession:
|
|
all_shared_cards = dbsession.query(Card).filter(Card.share_id != "0").distinct(Card.share_id).group_by(Card.share_id)
|
|
|
|
for c in all_shared_cards:
|
|
new_card = Card(title= c.title, interest_rate=-1.0, owner_id=user_id, item_location=c.item_location, last_review=None, share_id=c.share_id)
|
|
dbsession.add(new_card)
|
|
dbsession.commit()
|
|
dbsession.close()
|
|
get_engine().dispose() |