Exemple #1
0
 def get_categories():
     """
     Returns the categories
     :return:
     """
     db = blizzard_db()
     return DatabaseUtils.core_query(db.query(PostCategoryModel)).all()
 def update_character_info(name: str, role=0):
     data = BlizzardAPI.character(name)
     if data is None:
         return None
     db = blizzard_db()
     q = db.query(CharacterModel).filter(
         CharacterModel.wow_id == data.wow_id)
     if q.count() > 0:
         q.update({
             'name': data.name,
             'level': data.level,
             'gender': data.gender,
             'faction': data.faction,
             'role_index': role,
             'character_race_id': data.character_race_id,
             'character_class_id': data.character_class_id,
             'character_spec_id': data.character_spec_id,
         })
     else:
         db.add(
             CharacterModel(
                 wow_id=data.wow_id,
                 name=data.name,
                 level=data.level,
                 gender=data.gender,
                 faction=data.faction,
                 role_index=role,
                 character_race_id=data.character_race_id,
                 character_class_id=data.character_class_id,
                 character_spec_id=data.character_spec_id,
                 realm_id=data.realm_id,
                 guild_id=data.guild_id,
             ))
     db.commit()
     return True
Exemple #3
0
    def update_info():
        """
        Updates the main guild info
        :return:
        """
        db = blizzard_db()
        data = blizzard_guild_info()

        logger.info(f"Guild identifier: {data['id']}")
        DataStore.set(db, "gid", data["id"])

        logger.info(f"Guild name: {data['name']}")
        DataStore.set(db, "guild_name", data["name"])

        logger.info(f"Guild achievement points: {data['achievement_points']}")
        DataStore.set(db, "achievement_points", data["achievement_points"])

        logger.info(f"Guild faction: {data['faction']['name']}")
        DataStore.set(db, "faction_name", data['faction']['name'])
        DataStore.set(db, "faction_type", data['faction']['type'])

        logger.info(f"Guild created timestamp: {data['created_timestamp']}")
        DataStore.set(db, "created_timestamp", data['created_timestamp'])

        logger.info(f"Guild players: {data['member_count']}")
        DataStore.set(db, "players", data['member_count'])

        logger.info(f"Guild crest: {data['crest']['emblem']['id']}")
        crest_url = f'https://render-eu.worldofwarcraft.com/guild/tabards/emblem_{data["crest"]["emblem"]["id"]}.png'
        background_color = data["crest"]["background"]["color"]["rgba"]
        background_color = f"{background_color['r']}, {background_color['g']}, {background_color['b']}, {background_color['a']}"
        DataStore.set(db, "crest_emblem_url", crest_url)
        DataStore.set(db, "crest_background_color", background_color)
Exemple #4
0
def get_full_user(blizzard_id: int, token: str):
    BlizzardUsersUtils.id__safe(token)
    WAccountUtils.eval_token(token)
    db = blizzard_db()
    return DatabaseUtils.core_query(
        db.query(WAccountModel).filter(
            WAccountModel.user_id == blizzard_id)).all()
Exemple #5
0
    def update_player(name):
        db = blizzard_db()
        ch = db.query(CharacterModel).filter(
            CharacterModel.name == name).first()
        team_races = db.query(MythicRaceMembersModel).filter(
            MythicRaceMembersModel.name == ch.name).all()
        print('Races found: ' + len(team_races).__str__())
        points = 0
        for team_race in team_races:
            races = db.query(MythicRaceModel).filter(
                MythicRaceModel.mythic_hash == team_race.mythic_hash).all()
            for race in races:
                print("+ -------------------------------------------+")
                print(f"|           {ch.name}")
                print("+ -------------------------------------------+")
                print(f"| -> {race.name} ({race.level})")
                print(f"| Guild race: {race.guild_race} / 5")
                level_for_race = race.level * race.guild_race
                print(f"| This race score: {level_for_race}")
                points = points + level_for_race
        print("+ -------------------------------------------+")
        print(f"| Mythic score: {points}")

        # time counting
        later_time = datetime.datetime.utcnow()
        time_scores = floor(
            ((later_time - ch.created).total_seconds() / 60.0) / 10000)
        points = points + time_scores

        print(f"| Time score: {time_scores}")
        print(f"| Total score: {points}")
        db.query(CharacterModel).filter(CharacterModel.name == ch.name).update(
            {'activity': points})
        db.commit()
Exemple #6
0
 def prove_player(static_id, wow_id, blizzard_id):
     db = blizzard_db()
     q = db.qery(StaticMemberModel).filter(StaticMemberModel.static_id == static_id) \
         .filter(StaticMemberModel.wow_id == wow_id).filter(StaticMemberModel.blizzard_id == blizzard_id)
     if q.count() < 1:
         raise HTTPException(404, 'Request is undefined!')
     q.update({'request_state': 2})
     db.commit()
     return True
Exemple #7
0
 def get(blizzard_id):
     """
     Returns the blizzard user by blizzard_id
     :param blizzard_id:
     :return:
     """
     db = blizzard_db()
     return DatabaseUtils.core_query(
         db.query(BlizzardUserModel).filter(
             BlizzardUserModel.blizzard_id == blizzard_id)).first()
 def update_characters_mythic():
     data = DatabaseUtils.core_query(
         blizzard_db().query(CharacterModel)).all()
     logger.info("Starting update characters mythic...")
     logger.info(f"Total count: {len(data)}")
     bar = Bar('Characters mythic updating', max=len(data), fill='█')
     for member in data:
         name = member.name
         MythicUpdater.update_mythic_character(name)
         bar.next()
     print("")
Exemple #9
0
    def update_characters_images(path=default_characters_images_path):
        """
        Downloads the characters images

        Characters are getting from the database
        :param path:
        :return:
        """
        MediaDownloader.download_characters_images(
            DatabaseUtils.core_query(
                blizzard_db().query(CharacterModel)).all(), path)
    def update_meta(name: str, meta: str):
        """
        Updates player meta

        :param name:
        :param meta:
        :return:
        """
        db = blizzard_db()
        db.query(CharacterModel).filter(CharacterModel.name == name).update(
            {'meta_text': meta})
        db.commit()
Exemple #11
0
 def get_posts_limit(offset: int = 0, limit: int = 100):
     """
     Returns the posts by limit
     :param offset:
     :param limit:
     :return:
     """
     db = blizzard_db()
     return DatabaseUtils.limited_results_query(
         db.query(PostModel).order_by(PostModel.id.desc()),
         offset=offset,
         limit=limit)
    def update_guild_role(name: str, role: int):
        """
        Updates player guild role

        :param name:
        :param role:
        :return:
        """
        db = blizzard_db()
        db.query(CharacterModel).filter(CharacterModel.name == name).update(
            {'guild_role': role})
        db.commit()
Exemple #13
0
 def remove_like(user_id: int, post_id: int):
     """
     Removes like
     :param user_id:
     :param post_id:
     :return:
     """
     db = blizzard_db()
     db.query(PostLikeModel) \
         .filter(PostLikeModel.user_id == user_id) \
         .filter(PostLikeModel.post_id == post_id).delete()
     db.commit()
     return db
Exemple #14
0
 def add_post(user_id: int, category_id: int, title: str, content: str,
              image: str, tags: str):
     db = blizzard_db()
     return DatabaseUtils.insert(
         db,
         PostModel(
             user_id=user_id,
             category_id=category_id,
             title=title,
             content=content,
             tags=tags,
             image=image,
         ))
Exemple #15
0
    def update_items_images(path=default_items_images_path):
        """
        Downloads the items images

        Items are getting from the database

        :param path:  - saving path
        :return:
        """
        MediaDownloader.download_items_images(
            blizzard_db().query(CharacterEquipmentModel).all(),
            path,
            connector=connector)
Exemple #16
0
 def add_player(static_id, wow_id, role_id, comment, blizzard_id):
     db = blizzard_db()
     q = db.query(StaticMemberModel).filter(StaticMemberModel.static_id == static_id) \
         .filter(StaticMemberModel.wow_id == wow_id).filter(StaticMemberModel.blizzard_id == blizzard_id)
     if q.count() > 0:
         raise HTTPException(429, "You have already sent the request")
     return DatabaseUtils.insert(
         db,
         StaticMemberModel(static_id=static_id,
                           wow_id=wow_id,
                           role_id=role_id,
                           request_state=1,
                           request_comment=comment,
                           blizzard_id=blizzard_id))
Exemple #17
0
def add_player(body: StaticMemberCreate):
    blizzard_id = BlizzardUsersUtils.id__safe(body.token)
    db = blizzard_db()
    q = DatabaseUtils.core_query(
        db.query(WAccountModel).filter(
            WAccountModel.user_id == blizzard_id).filter(
                WAccountModel.wow_id == body.wow_id))
    if q.count() < 1:
        raise HTTPException(404, 'You have not got this player')
    return StaticUtils.add_player(static_id=body.static_id,
                                  wow_id=body.wow_id,
                                  role_id=body.role_id,
                                  comment=body.request_comment,
                                  blizzard_id=blizzard_id)
 def fix_missed(blizzard_characters: List):
     db = blizzard_db()
     q = DatabaseUtils.core_query(db.query(CharacterModel)).all()
     for character in q:
         found = False
         for b_ch in blizzard_characters:
             if b_ch['character']['name'] == character.name:
                 found = True
         if not found:
             logger.warn(character.name + " escape guild")
             db.query(CharacterModel).filter(
                 CharacterModel.wow_id == character.wow_id).update(
                     {'state': 0})
             db.commit()
Exemple #19
0
 def add_category(user_id, title, url):
     """
     Adds the comment
     :param user_id:
     :param title:
     :param url:
     :return:
     """
     db = blizzard_db()
     return DatabaseUtils.insert(
         db, PostCategoryModel(
             title=title,
             user_id=user_id,
             url=url,
         ))
Exemple #20
0
 def create_static(title, description, image, owner_blizzard_id):
     """
     Creates the static
     :param owner_blizzard_id:
     :param title:
     :param description:
     :param image:
     :return:
     """
     db = blizzard_db()
     return DatabaseUtils.insert(
         db,
         StaticIndexModel(title=title,
                          description=description,
                          image=image,
                          owner_blizzard_id=owner_blizzard_id))
Exemple #21
0
    def get_posts_by_blizzard_id(blizzard_id: int,
                                 offset: int = 0,
                                 limit: int = 100):
        """
        Returns the posts by blizzard id

        :param blizzard_id:
        :param offset:
        :param limit:
        :return:
        """
        db = blizzard_db()
        return DatabaseUtils.limited_results_query(db.query(PostModel).filter(
            PostModel.user_id == blizzard_id).order_by(desc(PostModel.id)),
                                                   offset=offset,
                                                   limit=limit)
Exemple #22
0
def add_player(body: AcceptCreate):
    blizzard_id = BlizzardUsersUtils.id__safe(body.token)
    db = blizzard_db()
    qs = DatabaseUtils.core_query(db.query(StaticIndexModel)) \
        .filter(StaticIndexModel.owner_blizzard_id == blizzard_id)

    if qs.count() < 1:
        raise HTTPException(503, 'You cant accept player to not your static')

    q = DatabaseUtils.core_query(db.query(StaticMemberModel)) \
        .filter(StaticMemberModel.id == body.member_id)
    if q.count() < 1:
        raise HTTPException(404, 'You have not got this player')
    q.update({'request_state': 2})
    db.commit()
    return True
Exemple #23
0
    def add(
            blizzard_id: int,
            wow_id: int,
            name: str,
            realm_id: int,
            realm_title: str,
            level: int,
            faction: str
    ):
        """
        Adds the character
        :param realm_title:
        :param blizzard_id:
        :param wow_id:
        :param name:
        :param realm_id:
        :param level:
        :param faction:
        :return:
        """
        db = blizzard_db()
        q = DatabaseUtils.core_query(db.query(WAccountModel)) \
            .filter(WAccountModel.user_id == blizzard_id) \
            .filter(WAccountModel.wow_id == wow_id)

        if q.count() > 0:
            logger.info(f'Updates: {name}')
            q.update({
                'name': name,
                'realm_id': realm_id,
                'realm_title': realm_title,
                'level': level,
                'faction': faction,
            })
        else:
            logger.info(f'Creates: {name}')
            db.add(WAccountModel(
                user_id=blizzard_id,
                wow_id=wow_id,
                name=name,
                realm_id=realm_id,
                realm_title=realm_title,
                level=level,
                faction=faction
            ))
        db.commit()
Exemple #24
0
    def add(blizzard_id: int, blizzard_name: str):
        """
        Adds the blizzard user

        :param blizzard_id:
        :param blizzard_name:
        :return:
        """
        db = blizzard_db()
        q = db.query(BlizzardUserModel).filter(
            BlizzardUserModel.blizzard_id == blizzard_id)
        count = q.count()
        if count == 0:
            return DatabaseUtils.insert(
                db,
                BlizzardUserModel(blizzard_id=blizzard_id,
                                  blizzard_name=blizzard_name))
        else:
            return q.first()
Exemple #25
0
    def add_comment(user_id,
                    post_id: int,
                    text: str,
                    reply_id: Optional[int] = None):
        """
        adds the comment

        :param user_id:
        :param post_id:
        :param text:
        :param reply_id:
        :return:
        """
        db = blizzard_db()
        return DatabaseUtils.insert(
            db,
            PostCommentsModel(user_id=user_id,
                              post_id=post_id,
                              reply_id=reply_id if reply_id is not None else 0,
                              text=text))
Exemple #26
0
 def add_like(user_id: int, post_id: int):
     """
     Adds like
     :param user_id:
     :param post_id:
     :return:
     """
     db = blizzard_db()
     val = db.query(PostLikeModel) \
         .filter(PostLikeModel.user_id == user_id) \
         .filter(PostLikeModel.post_id == post_id).count()
     if val == 0:
         DatabaseUtils.insert(
             db, PostLikeModel(
                 post_id=post_id,
                 user_id=user_id,
             ))
         return True
     else:
         return False
    def update_equipment(name: str):
        data = BlizzardAPI.character_equipment(name)
        db = blizzard_db()

        # print("")
        # logger.info("Starting update character equipment " + name)
        # logger.info(f"Total count: {len(data)}")
        bar = Bar('Equipment ' + name, max=len(data), fill='█')

        db.query(CharacterEquipmentModel) \
            .filter(CharacterEquipmentModel.character_id == data[0].character_id).delete()

        k = 0
        ks = 0
        for item in data:
            if item.slot in CharacterCountableSlots:
                k += item.level
                ks = ks + 1

            db.add(
                CharacterEquipmentModel(
                    title=item.title,
                    wow_id=item.wow_id,
                    character_id=item.character_id,
                    slot=item.slot,
                    inventory_type=item.inventory_type,
                    level=item.level,
                    quantity=item.quantity,
                    quality=item.quality,
                    item_class_id=item.item_class_id,
                    item_subclass_id=item.item_subclass_id,
                    stats=item.stats,
                ))
            bar.next()
            time.sleep(1 / 1000)
        gear = round(k / ks)
        db.query(CharacterModel).filter(CharacterModel.name == name).update(
            {'gear': gear})
        db.commit()
Exemple #28
0
    def update_mythic_character(name):
        data = MythicUtils.get_profile_mythic(name)
        db = blizzard_db()
        print("")
        logger.info("Starting update character mythic " + name)
        bar = Bar('Mythic updating', max=len(data), fill='█')
        for item in data:
            g_race = 0
            for member in item['members']:
                ex_m = db.query(MythicRaceMembersModel) \
                    .filter(MythicRaceMembersModel.mythic_hash == item['hashes']['mythic']) \
                    .filter(MythicRaceMembersModel.wow_id == member['wow_id']).count()

                from_g = db.query(CharacterModel).filter(
                    CharacterModel.wow_id == member['wow_id']).count() > 0
                if from_g:
                    g_race = g_race + 1

                if ex_m == 0:
                    db.add(
                        MythicRaceMembersModel(
                            mythic_hash=item['hashes']['mythic'],
                            wow_id=member['wow_id'],
                            name=member['name'],
                            spec_id=member['spec']['wow_id'],
                            from_guild=from_g))
                    db.commit()

            ex = db.query(MythicRaceModel).filter(
                MythicRaceModel.mythic_hash == item['hashes']
                ['mythic']).count()
            if ex == 0:
                db.add(
                    MythicRaceModel(team_hash=item['hashes']['team'],
                                    affixes_hash=item['hashes']['affixes'],
                                    mythic_hash=item['hashes']['mythic'],
                                    wow_dung_id=item['wow_dung_id'],
                                    name=item['name'],
                                    completed=item['completed'],
                                    duration=item['duration']['time'],
                                    duration_string=item['duration']['format'],
                                    done_in_time=item['done_in_time'],
                                    guild_race=g_race,
                                    level=item['keystone_level']))
                db.commit()

            # Adding an affixes
            for affix in item['keystone_affixes']:
                ex_a = db.query(MythicRaceAffixesModel) \
                    .filter(MythicRaceAffixesModel.mythic_hash == item['hashes']['mythic']) \
                    .filter(MythicRaceAffixesModel.wow_id == affix['wow_id']).count()
                if ex_a == 0:
                    db.add(
                        MythicRaceAffixesModel(
                            mythic_hash=item['hashes']['mythic'],
                            wow_id=affix['wow_id'],
                            name=affix['name'],
                        ))
                    db.commit()
            bar.next()
        print("")
Exemple #29
0
def connector(wow_id, image_id):
    db = blizzard_db()
    db.query(CharacterEquipmentModel).filter(
        CharacterEquipmentModel.wow_id == wow_id).update(
            {'image_id': image_id})
    db.commit()
Exemple #30
0
def get_static_list():
    db = blizzard_db()
    return DatabaseUtils.core_query(db.query(StaticIndexModel)).all()