Пример #1
0
    def remove_deck(self, deck):
        self.data.remove(deck)
        with DBManager.create_session_scope_nc(expire_on_commit=False) as db_session:
            db_session.delete(deck)
            db_session.commit()

        if deck == self.current_deck:
            log.info('refreshing current deck')
            self.refresh_current_deck()
Пример #2
0
    def reload(self):
        self.data = []
        with DBManager.create_session_scope_nc(expire_on_commit=False) as db_session:
            for deck in db_session.query(Deck).order_by(Deck.last_used.desc()):
                if self.current_deck is None:
                    self.current_deck = deck
                self.data.append(deck)
                db_session.expunge(deck)

            db_session.expunge_all()
Пример #3
0
    def set_current_deck(self, deck_link):
        # Loop through our already loaded decks
        for deck in self.data:
            # Is this deck link already i use?
            if deck_link == deck.link:
                self.current_deck = deck
                self.update_deck(deck,
                        times_used=deck.times_used + 1,
                        last_used=datetime.datetime.now())
                return deck, False

        # No old deck matched the link, create a new deck!
        with DBManager.create_session_scope_nc(expire_on_commit=False) as db_session:
            deck = Deck()
            deck.set(link=deck_link,
                    times_used=1,
                    first_used=datetime.datetime.now(),
                    last_used=datetime.datetime.now())
            self.current_deck = deck
            self.data.append(deck)
            db_session.add(deck)
            db_session.commit()
            db_session.expunge(deck)
        return deck, True
Пример #4
0
 def update_deck(self, deck, **options):
     with DBManager.create_session_scope_nc(expire_on_commit=False) as db_session:
         db_session.add(deck)
         deck.set(**options)
         db_session.commit()
         db_session.expunge(deck)