def sell_card(self, card_name: str, user_name: str):
        user_doc_ref = self.firestore_db.collection(
            self.user_coll_name).document(user_name)
        user = User.from_dict(user_doc_ref.get().to_dict())
        user_owned_cards = [ref.split("/")[-1] for ref in user.cards]
        card_doc_ref = self.firestore_db.collection(
            self.card_coll_name).document(card_name)
        card = Card.from_dict(card_doc_ref.get().to_dict())

        if card_name in user_owned_cards:
            new_value = user.total_currency_value + card.value
            user.set_coins(*User.get_coins_from_value(new_value))
            user_doc_ref.update({
                u'cards':
                firestore_api.ArrayRemove([card_doc_ref.path]),
                u'galleons':
                user.galleons,
                u'sickles':
                user.sickles,
                u'knuts':
                user.knuts
            })
            return user  # Return the new values
        else:
            raise UnownedItemException(
                "You cannot sell that card because you do not own it.",
                user=user)
Esempio n. 2
0
def import_cards(file_path):

    with open(file_path) as oracle_cards:

        cards = json.load(oracle_cards)
        cards_len = len(cards)

        for i, card_dict in enumerate(cards):
            if (i + 1) % 100 == 0:
                print(f'{i + 1} of {cards_len}')
            card = Card.from_dict(card_dict)
            db.session.add(card)
            if (i + 1) % 500 == 0:
                db.session.commit()

        db.session.commit()
 def get_card(self, card_name: str) -> Card:
     snapshot = self.firestore_db.collection(
         self.card_coll_name).document(card_name).get()
     return Card.from_dict(snapshot.to_dict())