from config import CONFIG from flask import ( Blueprint, g, session ) from auth import login_required from create_db import Card, User, get_session, get_engine from numpy.random import choice bp = Blueprint('deck', __name__) @bp.route('/deck', methods=['GET']) def get_collection(user_id): Session = get_session() with Session() as dbsession: c = dbsession.query(Card).filter(Card.owner_id == user_id).all() dbsession.close() get_engine().dispose() return c #2 Probabilistic ## problem je, da pri probabilističnem težko nardiš, da pač en dan ni nič v decku, ker pač vedno izbere glede določeno število pač glede na uteži # # to bi bilo dobro narediti direkt iz baze, ne pa da cel collection spremenimo v ta list ob card.objects TODO def generate_weights(user_clltn): """generiramo uteži za due in new cards posebej; vrne tuple dveh listov za weightse...""" weights_due = [] weights_new = [] for card in user_clltn: due = card.interest_rate if due > 0: weights_due.append(due) weights_new.append(0) else: weights_due.append(0) weights_new.append(1) #če se odločimo, da izločimo iteme jih bo tu ignoriralo, če bo ir 0. return weights_new, weights_due def probabilistic_deck_generator(user_id, max_new, max_due): c = get_collection(user_id) deck, dck_due, dck_new, due_cards = [], [], [], 0 w_new, w_due = generate_weights(c) #treba je sestet non zero weights new_cards = sum(w_new) for w in w_due: if w > 0: due_cards += 1 #preverimo, če imamo dovolj kartic if new_cards