Exemplo n.º 1
0
class Gw2BackstoryAnswer(Base):
    """Map the backstory/answers endpoint

    This module gives access to v2/backstory/answers enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/backstory/answers
        - https://github.com/arenanet/api-cdi/blob/master/v2/backstory/answers.js

    This endpoint shows information about backstory answers
    """
    __tablename__ = "gw2_sto_backstory_answer"
    __table_args__ = endpoint_def('backstory/answers', locale=True, workers=1)

    # Columns
    pkid = Column(Integer, primary_key=True)
    id = Column(String, unique=True, nullable=False)
    title = Column(String, nullable=False)
    journal = Column(String, nullable=False)
    description = Column(String, nullable=False)
    question_id = Column(Integer,
                         ForeignKey("gw2_sto_backstory_question.id"),
                         nullable=False,
                         info=col_json(keys='question'))
    races = Column(String, nullable=True)
    professions = Column(String, nullable=True)

    # Relations
    question = relationship("Gw2BackstoryQuestion", uselist=False)
Exemplo n.º 2
0
class Gw2Story(Base):
    """Map the stories endpoint

    This class gives access to v2/stories enpoint and subendpoints.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/stories
        - https://github.com/arenanet/api-cdi/blob/master/v2/stories/index.js

    This endpoint shows information about stories
    """
    __tablename__ = "gw2_sto_story"
    __table_args__ = endpoint_def('stories', locale=True, workers=1)

    # Columns
    id = Column(Integer, primary_key=True)
    season = Column(String, ForeignKey("gw2_sto_season.id"), nullable=False)
    name = Column(String, nullable=False)
    description = Column(String, nullable=False)
    timeline = Column(String, nullable=False)
    level = Column(Integer, nullable=False)
    order = Column(Integer, nullable=False)
    races = Column(Integer, nullable=True, default='')
    flags = Column(Integer, nullable=True, default='')

    # Relations
    chapters = relationship(
        "_Gw2StoryChapter",
        uselist=True,
        info=rel_json(_Gw2StoryChapter,
                      fn=lambda j, pj: [dict(id=pj['id'], **x) for x in j]))
Exemplo n.º 3
0
class Gw2Mastery(Base):
    """Map the masteries endpoint

    This class gives access to v2/masteries enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/masteries
        - https://github.com/arenanet/api-cdi/blob/master/v2/masteries.js

    This endpoint shows information about masteries
    """
    __tablename__ = "gw2_pro_mastery"
    __table_args__ = endpoint_def('masteries', locale=True, workers=1)

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    requirement = Column(String, nullable=False)
    order = Column(Integer, nullable=False)
    background = Column(String, nullable=False)
    region = Column(String, nullable=False)

    levels = relationship(
        "_Gw2MasteryLevel",
        uselist=True,
        info=rel_json(
            _Gw2MasteryLevel,
            fn=lambda j, pj: [dict(mastery_id=pj['id'], **x) for x in j]))
Exemplo n.º 4
0
class Gw2BackstoryQuestion(Base):
    """Map the backstory/questions endpoint

    This module gives access to v2/backstory/questions enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/backstory/questions
        - https://github.com/arenanet/api-cdi/blob/master/v2/backstory/questions.js

    This endpoint shows information about backstory questions
    """
    __tablename__ = "gw2_sto_backstory_question"
    __table_args__ = endpoint_def('backstory/questions',
                                  locale=True,
                                  workers=1)

    # Columns
    id = Column(Integer, primary_key=True)
    title = Column(String, nullable=False)
    description = Column(String, nullable=False)
    order = Column(Integer, nullable=False)
    races = Column(String, nullable=True)
    professions = Column(String, nullable=True)

    # Relations
    answers = relationship("Gw2BackstoryAnswer", uselist=True)
Exemplo n.º 5
0
class Gw2Finisher(Base):
    """Map the finishers endpoint

    This class gives access to v2/finishers enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/finishers
        - https://github.com/arenanet/api-cdi/blob/master/v2/finishers.js

    This endpoint shows information about finishers
    """
    __tablename__ = "gw2_misc_finisher"
    __table_args__ = endpoint_def('finishers', locale=True, workers=1)

    # Columns
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    unlock_details = Column(String, nullable=False)
    order = Column(Integer, nullable=False)
    icon = Column(String, nullable=False)

    # Relations
    unlock_items = relationship("Gw2Item",
                                secondary="gw2_misc_finisher_item_rel",
                                uselist=True,
                                info=rel_json(_Gw2FinisherUnlock,
                                              fn=lambda j, pj: [{'id': pj['id'], 'item_id': x} for x in j]))
Exemplo n.º 6
0
class Gw2MiniPet(Base):
    """Map the minis endpoint

    This class gives access to v2/minis enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/minis
        - https://github.com/arenanet/api-cdi/blob/master/v2/minis.js

    This endpoint shows information about minipets
    """
    __tablename__ = "gw2_item_minipet"
    __table_args__ = endpoint_def('minis', locale=True, workers=3)

    # Columns
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    icon = Column(String, nullable=False)
    order = Column(Integer, nullable=False)
    unlock = Column(String, nullable=True, default='')
    item_id = Column(Integer, ForeignKey("gw2_item_item_miniature.id"), nullable=False)

    # Relations
    item = relationship("Gw2MiniatureItem",
                        foreign_keys=[item_id],
                        uselist=False)
Exemplo n.º 7
0
class Gw2Skin(Base):
    """Map the skins endpoint

    This class gives access to v2/skins enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/skins
        - https://github.com/arenanet/api-cdi/blob/master/v2/skins.js

    This endpoint shows information about skins
    """
    __tablename__ = "gw2_item_skin"
    __table_args__ = endpoint_def('skins', locale=True)

    # Columns
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    type = Column(String, nullable=False)
    flags = Column(String, nullable=True)
    restrictions = Column(String, nullable=True)
    icon = Column(String, nullable=True)
    rarity = Column(String, nullable=False)
    description = Column(String, nullable=True)
    slot = Column(String, nullable=True, info=col_json(keys=['details', 'type']))
    weight_class = Column(String, nullable=True, info=col_json(keys=['details', 'weight_class']))
    damage_type = Column(String, nullable=True, info=col_json(keys=['details', 'damage_type']))
Exemplo n.º 8
0
class Gw2AchievementGroup(Base):
    """Map the achievements/groups endpoint

    This class gives access to v2/achievements/groups endpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/achievements/groups
        - https://github.com/arenanet/api-cdi/blob/master/v2/achievements/groups.js

    This endpoint shows information about achievements groups
    """
    __tablename__ = "gw2_misc_achievement_group"
    __table_args__ = endpoint_def('achievements/groups',
                                  locale=True,
                                  workers=1)

    # Columns
    pkid = Column(Integer, primary_key=True)
    id = Column(String, unique=True, nullable=False)
    name = Column(String, nullable=False)
    description = Column(String, nullable=False)
    order = Column(Integer, nullable=False)

    # Relations
    categories = relationship(
        "Gw2AchievementCategory",
        secondary="gw2_misc_achievement_group_rel",
        uselist=True,
        info=rel_json(_Gw2AchievementGrouping,
                      fn=lambda j, pj:
                      [dict(group_id=pj['id'], category_id=x) for x in j]))
Exemplo n.º 9
0
class Gw2Itemstat(Base):
    """Map the itemstats endpoint

    This class gives access to v2/itemstats enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/itemstats
        - https://github.com/arenanet/api-cdi/blob/master/v2/itemstats.js

    This endpoint shows information about items stats
    """
    __tablename__ = "gw2_item_item_stat"
    __table_args__ = endpoint_def('itemstats', locale=True, workers=3)

    # Columns
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)

    agony_resistance = Column(
        Float,
        nullable=False,
        default=0,
        info=col_json(keys=['attributes', 'AgonyResistance']))
    boon_duration = Column(Float,
                           nullable=False,
                           default=0,
                           info=col_json(keys=['attributes', 'BoonDuration']))
    condition_damage = Column(
        Float,
        nullable=False,
        default=0,
        info=col_json(keys=['attributes', 'ConditionDamage']))
    condition_duration = Column(
        Float,
        nullable=False,
        default=0,
        info=col_json(keys=['attributes', 'ConditionDuration']))
    crit_damage = Column(Float,
                         nullable=False,
                         default=0,
                         info=col_json(keys=['attributes', 'CritDamage']))
    healing = Column(Float,
                     nullable=False,
                     default=0,
                     info=col_json(keys=['attributes', 'Healing']))
    power = Column(Float,
                   nullable=False,
                   default=0,
                   info=col_json(keys=['attributes', 'Power']))
    precision = Column(Float,
                       nullable=False,
                       default=0,
                       info=col_json(keys=['attributes', 'Precision']))
    thoughness = Column(Float,
                        nullable=False,
                        default=0,
                        info=col_json(keys=['attributes', 'Thoughness']))
    vitality = Column(Float,
                      nullable=False,
                      default=0,
                      info=col_json(keys=['attributes', 'Vitality']))
Exemplo n.º 10
0
class Gw2Achievement(Base):
    """Map the achievements endpoint

    This class gives access to v2/achievements enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/achievements
        - https://github.com/arenanet/api-cdi/blob/master/v2/achievements/index.js

    This endpoint shows information about achievements
    """
    __tablename__ = "gw2_misc_achievement"
    __table_args__ = endpoint_def('achievements', locale=True)

    # Columns
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    description = Column(String, nullable=False)
    icon = Column(String, default=None)
    requirement = Column(String, nullable=False)
    locked_text = Column(String, nullable=False)
    type = Column(String, nullable=False)
    flags = Column(String, nullable=True)
    point_cap = Column(Integer, nullable=True)

    # Relations
    tiers = relationship(
        "_Gw2AchievementTier",
        uselist=True,
        info=rel_json(_Gw2AchievementTier,
                      fn=lambda j, pj: [dict(ach_id=pj['id'], **x)
                                        for x in j]))

    rewards = relationship(
        "_Gw2AchievementReward",
        uselist=True,
        info=rel_json(_Gw2AchievementReward,
                      fn=lambda j, pj: [dict(ach_id=pj['id'], **x)
                                        for x in j]))

    bits = relationship(
        "_Gw2AchievementBit",
        uselist=True,
        info=rel_json(_Gw2AchievementBit,
                      fn=lambda j, pj: [dict(ach_id=pj['id'], **x)
                                        for x in j]))

    prerequisites = relationship(
        "Gw2Achievement",
        secondary="gw2_misc_achievement_req_rel",
        primaryjoin="_Gw2AchievementRequires.ach_id == Gw2Achievement.id",
        secondaryjoin="_Gw2AchievementRequires.req_id == Gw2Achievement.id",
        uselist=True,
        info=rel_json(_Gw2AchievementRequires,
                      fn=lambda j, pj: [{
                          'ach_id': pj['id'],
                          'req_id': x
                      } for x in j]))
Exemplo n.º 11
0
class Gw2Recipe(Base):
    """Map the recipes endpoint

    This class gives access to v2/recipes enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/recipes
        - https://github.com/arenanet/api-cdi/blob/master/v2/recipes.js

    This endpoint shows information about recipes
    """
    __tablename__ = "gw2_item_recipe"
    __table_args__ = endpoint_def('recipes', workers=10)

    # Columns
    id = Column(Integer, primary_key=True)
    type = Column(String, nullable=False)
    output_item_id = Column(Integer,
                            ForeignKey("gw2_item_item.id"),
                            nullable=False)
    output_item_count = Column(Integer, nullable=False)
    output_upgrade_id = Column(Integer,
                               ForeignKey("gw2_item_guild_upgrade.id"))
    time_to_craft_ms = Column(Integer, nullable=False)
    disciplines = Column(String)
    min_rating = Column(Integer, nullable=False)
    flags = Column(String)
    chat_link = Column(String, nullable=False)

    # Relations
    output_items = relationship("Gw2Item", uselist=False)
    output_upgrade = relationship("Gw2GuildUpgrade", uselist=False)

    ingredients = relationship(
        "_Gw2RecipeIngredient",
        uselist=True,
        info=rel_json(
            _Gw2RecipeIngredient,
            fn=lambda j, pj: [dict(recipe_id=pj['id'], **x) for x in j]))

    guild_ingredients = relationship(
        "_Gw2RecipeGUIngredient",
        uselist=True,
        info=rel_json(
            _Gw2RecipeGUIngredient,
            fn=lambda j, pj: [dict(recipe_id=pj['id'], **x) for x in j]))

    unlocker = relationship(
        "Gw2ConsumableItem",
        primaryjoin="Gw2ConsumableItem.recipe_id == Gw2Recipe.id",
        uselist=False)
Exemplo n.º 12
0
class Gw2World(Base):
    """Map the worlds endpoint

    This class gives access to v2/worlds enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/worlds
        - https://github.com/arenanet/api-cdi/blob/master/v2/worlds.js

    This endpoint shows information about server worlds
    """
    __tablename__ = "gw2_misc_world"
    __table_args__ = endpoint_def('worlds', locale=True, workers=2)

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    population = Column(String, nullable=False)
Exemplo n.º 13
0
class _Gw2AccountTitle(Base):
    """Map the account/titles endpoint

    This endpoint shows the informations about unlocked titles of an account
    """
    __tablename__ = "gw2_auth_account_title"
    __table_args__ = endpoint_def('account/titles',
                                  ep_type=EPType.sac,
                                  workers=1,
                                  rights=['account', 'unlocks'],
                                  parent='Gw2Token')

    id = Column(Integer, ForeignKey("gw2_misc_title.id"), primary_key=True)
    api_key = Column(String,
                     ForeignKey("gw2_auth_account.api_key"),
                     primary_key=True)
Exemplo n.º 14
0
class Gw2Trait(Base):
    """Map the traits endpoint

    This class gives access to v2/traits enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/traits
        - https://github.com/arenanet/api-cdi/blob/master/v2/traits/traits.md

    This endpoint shows information about traits
    """
    __tablename__ = "gw2_pro_trait"
    __table_args__ = endpoint_def('traits', locale=True)

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    description = Column(String, nullable=False)
    icon = Column(String, nullable=False)
    specialization = Column(Integer,
                            ForeignKey("gw2_pro_specialization.id"),
                            nullable=False)
    tier = Column(Integer, nullable=False)
    order = Column(Integer, nullable=False)
    slot = Column(String, nullable=False)

    facts = relationship(
        "Gw2Fact",
        primaryjoin=
        "Gw2Trait.id == Gw2Fact.trait_id and Gw2Fact.requires_trait == None",
        uselist=True,
        info=rel_json(Gw2Fact,
                      fn=lambda j, pj: [
                          dict(trait_id=pj['id'], is_traited=False, ord=i, **x)
                          for i, x in enumerate(j)
                      ]))

    traited_facts = relationship(
        "Gw2Fact",
        primaryjoin=
        "Gw2Trait.id == Gw2Fact.trait_id and Gw2Fact.requires_trait != None",
        uselist=True,
        info=rel_json(Gw2Fact,
                      fn=lambda j, pj: [
                          dict(trait_id=pj['id'], is_traited=True, ord=i, **x)
                          for i, x in enumerate(j)
                      ]))

    Gw2Fact.trait_id.append_foreign_key(ForeignKey("gw2_pro_trait.id"))
Exemplo n.º 15
0
class Gw2Legend(Base):
    """Map the Revenant's legends endpoint

    This class gives access to v2/legends enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/legends
        - https://github.com/arenanet/api-cdi/blob/master/v2/legends.js

    This endpoint shows information about legends
    """
    __tablename__ = "gw2_pro_legend"
    __table_args__ = endpoint_def('legends', workers=1)

    pkid = Column(Integer, primary_key=True)
    id = Column(String, unique=True, nullable=False)
    swap_id = Column(Integer,
                     ForeignKey("gw2_pro_skill.id"),
                     nullable=False,
                     info=col_json(keys='swap'))
    heal_id = Column(Integer,
                     ForeignKey("gw2_pro_skill.id"),
                     nullable=False,
                     info=col_json(keys='heal'))
    elite_id = Column(Integer,
                      ForeignKey("gw2_pro_skill.id"),
                      nullable=False,
                      info=col_json(keys='elite'))
    util0_id = Column(Integer,
                      ForeignKey("gw2_pro_skill.id"),
                      nullable=False,
                      info=col_json(keys='utilities', fn=lambda j, pj: j[0]))
    util1_id = Column(Integer,
                      ForeignKey("gw2_pro_skill.id"),
                      nullable=False,
                      info=col_json(keys='utilities', fn=lambda j, pj: j[1]))
    util2_id = Column(Integer,
                      ForeignKey("gw2_pro_skill.id"),
                      nullable=False,
                      info=col_json(keys='utilities', fn=lambda j, pj: j[2]))

    swap = relationship("Gw2Skill", foreign_keys=[swap_id], uselist=False)
    heal = relationship("Gw2Skill", foreign_keys=[heal_id], uselist=False)
    elite = relationship("Gw2Skill", foreign_keys=[elite_id], uselist=False)
    util0 = relationship("Gw2Skill", foreign_keys=[util0_id], uselist=False)
    util1 = relationship("Gw2Skill", foreign_keys=[util1_id], uselist=False)
    util2 = relationship("Gw2Skill", foreign_keys=[util2_id], uselist=False)
Exemplo n.º 16
0
class Gw2Pet(Base):
    """Map the Ranger's pets endpoint

    This class gives access to v2/pets enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/pets
        - https://github.com/arenanet/api-cdi/blob/master/v2/pets.js

    This endpoint shows information about pets
    """
    __tablename__ = "gw2_pro_pet"
    __table_args__ = endpoint_def('pets', locale=True, workers=2)

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    description = Column(String, nullable=False)
    icon = Column(String, nullable=False)
Exemplo n.º 17
0
class Gw2Currency(Base):
    """Map the currencies endpoint

    This class gives access to v2/currencies enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/currencies
        - https://github.com/arenanet/api-cdi/blob/master/v2/currencies.js

    This endpoint shows information about currencies
    """
    __tablename__ = "gw2_misc_currencies"
    __table_args__ = endpoint_def('currencies', locale=True, workers=1)

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    description = Column(String, nullable=False)
    icon = Column(String, nullable=False)
    order = Column(Integer, nullable=False)
Exemplo n.º 18
0
class _Gw2AccountBank(Base):
    """Map the account/bank endpoint

    This endpoint shows the stored items in the account bank
    """
    __tablename__ = "gw2_auth_account_bank"
    __table_args__ = endpoint_def('account/bank',
                                  ep_type=EPType.sac,
                                  workers=1,
                                  rights=['account', 'inventories'],
                                  parent='Gw2Token')

    pkid = Column(Integer, primary_key=True)
    id = Column(Integer, ForeignKey("gw2_item_item.id"), nullable=False)
    api_key = Column(String,
                     ForeignKey("gw2_auth_account.api_key"),
                     nullable=False)
    count = Column(Integer, nullable=False)
    skin_id = Column(Integer,
                     ForeignKey("gw2_item_skin.id"),
                     nullable=True,
                     info=col_json(fn='skin'))
    binding = Column(String)
    bound_to = Column(String)
    charges = Column(Integer)

    item = relationship("Gw2Item", uselist=False)
    skin = relationship("Gw2Skin", uselist=False)

    upgrades = relationship(
        "Gw2UpgradeItem",
        secondary="gw2_auth_account_bank_upgrade",
        uselist=True,
        info=rel_json(
            _Gw2AccountBankUpgrade,
            fn=lambda j, pj: [dict(id=pj['pkid'], upgrade_id=x) for x in j]))

    infusions = relationship(
        "Gw2UpgradeItem",
        secondary="gw2_auth_account_bank_infusion",
        uselist=True,
        info=rel_json(
            _Gw2AccountBankUpgrade,
            fn=lambda j, pj: [dict(id=pj['pkid'], infusion_id=x) for x in j]))
Exemplo n.º 19
0
class Gw2GuildUpgrade(Base):
    """Map the guild upgrades endpoint

    This class gives access to v2/guild/upgrades enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/guild/upgrades
        - https://github.com/arenanet/api-cdi/blob/master/v2/guild/upgrades.js

    This endpoint shows information about guild upgrades
    """
    __tablename__ = "gw2_item_guild_upgrade"
    __table_args__ = endpoint_def('guild/upgrades', locale=True)

    # Columns
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    description = Column(String, nullable=False)
    type = Column(String, nullable=False)
    icon = Column(String, nullable=False)

    bag_max_items = Column(Integer, nullable=True)
    bag_max_coins = Column(Integer, nullable=True)

    build_time = Column(Integer, nullable=False)
    required_level = Column(Integer, nullable=False)
    experience = Column(Integer, nullable=False)

    # Relations
    prerequisites = relationship(
        "Gw2GuildUpgrade",
        secondary="gw2_item_guild_upgrade_req_rel",
        primaryjoin="_Gw2GuildUpgradeReq.id == Gw2GuildUpgrade.id",
        secondaryjoin="_Gw2GuildUpgradeReq.req_id == Gw2GuildUpgrade.id",
        uselist=True,
        info=rel_json(
            _Gw2GuildUpgradeReq,
            fn=lambda j, pj: [dict(id=pj['id'], req_id=x) for x in j]))

    costs = relationship(
        "_Gw2GuildUpgradeCost",
        uselist=True,
        info=rel_json(_Gw2GuildUpgradeCost,
                      fn=lambda j, pj: [dict(id=pj['id'], **x) for x in j]))
Exemplo n.º 20
0
class Gw2Title(Base):
    """Map the titles endpoint

    This class gives access to v2/titles enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/titles
        - https://github.com/arenanet/api-cdi/blob/master/v2/titles.js

    This endpoint shows information about titles
    """
    __tablename__ = "gw2_misc_title"
    __table_args__ = endpoint_def('titles', locale=True, workers=1)

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    ap_required = Column(Integer, nullable=True)
    achievement_id = Column(Integer, ForeignKey("gw2_misc_achievement.id"), nullable=True, info=col_json(keys='achievement'))

    achievement = relationship("Gw2Achievement", uselist=False)
Exemplo n.º 21
0
class _Gw2AccountMastery(Base):
    """Map the account/masteries endpoint

    This endpoint shows the informations about unlocked mastery points of an account
    """
    __tablename__ = "gw2_auth_account_mastery"
    __table_args__ = endpoint_def('account/masteries',
                                  ep_type=EPType.sac,
                                  workers=1,
                                  rights=['account', 'progression'],
                                  parent='Gw2Token')

    id = Column(Integer, ForeignKey("gw2_pro_mastery.id"), primary_key=True)
    api_key = Column(String,
                     ForeignKey("gw2_auth_account.api_key"),
                     primary_key=True)
    level = Column(Integer, nullable=False)

    mastery = relationship("Gw2Mastery", uselist=False)
Exemplo n.º 22
0
class _Gw2AccountFinisher(Base):
    """Map the account/finishers endpoint

    This endpoint shows the informations about unlocked finishers of an account
    """
    __tablename__ = "gw2_auth_account_finisher"
    __table_args__ = endpoint_def('account/finishers',
                                  ep_type=EPType.sac,
                                  workers=1,
                                  rights=['account', 'unlocks'],
                                  parent='Gw2Token')

    id = Column(Integer, ForeignKey("gw2_misc_finisher.id"), primary_key=True)
    api_key = Column(String,
                     ForeignKey("gw2_auth_account.api_key"),
                     primary_key=True)
    permanent = Column(Boolean, nullable=False)
    quantity = Column(Integer, nullable=True)

    finisher = relationship("Gw2Finisher", uselist=False)
Exemplo n.º 23
0
class _Gw2AccountInventory(Base):
    """Map the account/inventory endpoint

    This endpoint shows the stored items in the account shared inventory
    """
    __tablename__ = "gw2_auth_account_inventory"
    __table_args__ = endpoint_def('account/inventory',
                                  ep_type=EPType.sac,
                                  workers=1,
                                  rights=['account', 'inventories'],
                                  parent='Gw2Token')

    id = Column(Integer, ForeignKey("gw2_item_item.id"), primary_key=True)
    api_key = Column(String,
                     ForeignKey("gw2_auth_account.api_key"),
                     primary_key=True)
    count = Column(Integer, nullable=False)
    binding = Column(String)

    item = relationship("Gw2Item", uselist=False)
Exemplo n.º 24
0
class Gw2Specialization(Base):
    """Map the specializations endpoint

    This class gives access to v2/specializations enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/specializations
        - https://github.com/arenanet/api-cdi/blob/master/v2/specializations/specializations.js

    This endpoint shows information about specializations
    """
    __tablename__ = "gw2_pro_specialization"
    __table_args__ = endpoint_def('specializations', locale=True, workers=3)

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    profession = Column(String,
                        ForeignKey("gw2_pro_profession.id"),
                        nullable=False)
    elite = Column(Boolean, nullable=False, default=False)
    icon = Column(String, nullable=False)
    background = Column(String, nullable=False)
    profession_icon = Column(String, nullable=True, default='')
    profession_icon_big = Column(String, nullable=True, default='')
    weapon_trait = Column(Integer,
                          ForeignKey("gw2_pro_trait.id"),
                          nullable=True)

    elite_trait = relationship("Gw2Trait",
                               foreign_keys=[weapon_trait],
                               uselist=False)

    minors = relationship(
        "Gw2Trait",
        primaryjoin=
        "Gw2Trait.specialization == Gw2Specialization.id and Gw2Trait.slot == 'Minor'",
        uselist=True)
    majors = relationship(
        "Gw2Trait",
        primaryjoin=
        "Gw2Trait.specialization == Gw2Specialization.id and Gw2Trait.slot == 'Major'",
        uselist=True)
Exemplo n.º 25
0
class Gw2Season(Base):
    """Map the stories/seasons endpoint

    This class gives access to v2/stories/seasons enpoint and subendpoints.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/stories/seasons
        - https://github.com/arenanet/api-cdi/blob/master/v2/stories/seasons.js

    This endpoint shows information about stories seasons
    """
    __tablename__ = "gw2_sto_season"
    __table_args__ = endpoint_def('stories/seasons', locale=True, workers=1)

    # Columns
    pkid = Column(Integer, primary_key=True)
    id = Column(String, unique=True, nullable=False)
    name = Column(String, nullable=True)
    order = Column(Integer, nullable=True)

    # Relations
    stories = relationship("Gw2Story", uselist=True)
Exemplo n.º 26
0
class _Gw2AccountWallet(Base):
    """Map the account/materials endpoint

    This endpoint shows the amount of each currency owned by an account
    """
    __tablename__ = "gw2_auth_account_wallet"
    __table_args__ = endpoint_def('account/wallet',
                                  ep_type=EPType.sac,
                                  workers=1,
                                  rights=['account', 'wallet'],
                                  parent='Gw2Token')

    id = Column(Integer,
                ForeignKey("gw2_misc_currencies.id"),
                primary_key=True)
    api_key = Column(String,
                     ForeignKey("gw2_auth_account.api_key"),
                     primary_key=True)
    value = Column(Integer, nullable=False)

    currency = relationship("Gw2Currency", uselist=False)
Exemplo n.º 27
0
class Gw2Token(Base):
    """Map the tokeninfo endpoint

    This class gives access to v2/tokeninfo enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/tokeninfo
        - https://github.com/arenanet/api-cdi/blob/master/v2/tokeninfo/tokeninfo.js

    This endpoint shows the READ permissions given by an access token
    """
    __tablename__ = "gw2_auth_token"
    __table_args__ = endpoint_def('tokeninfo', ep_type=EPType.sa, workers=1)

    pkid = Column(Integer, primary_key=True)
    api_key = Column(String, unique=True, nullable=False)
    permissions = Column(String, nullable=False)

    @staticmethod
    def to_child(ch, key, _json):
        if len(set(ch.rights).intersection(_json['permissions'])) == len(
                ch.rights):
            ch.set_params(key, _json)
Exemplo n.º 28
0
class _Gw2AccountAchievement(Base):
    """Map the account/achievements endpoint

    This endpoint shows the informations about achievements of an account
    """
    __tablename__ = "gw2_auth_account_achievement"
    __table_args__ = endpoint_def('account/achievements',
                                  ep_type=EPType.sac,
                                  workers=1,
                                  rights=['account', 'progression'],
                                  parent='Gw2Token')

    id = Column(Integer,
                ForeignKey("gw2_misc_achievement.id"),
                primary_key=True)
    api_key = Column(String,
                     ForeignKey("gw2_auth_account.api_key"),
                     primary_key=True)
    current = Column(Integer, nullable=True)
    max = Column(Integer, nullable=True)
    done = Column(Boolean, nullable=False)
    repeated = Column(Integer, nullable=True)
Exemplo n.º 29
0
class Gw2Profession(Base):
    """Map the professions endpoint

    This class gives access to v2/professions enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/professions
        - https://github.com/arenanet/api-cdi/blob/master/v2/professions.js

    This endpoint shows information about professions
    """
    __tablename__ = "gw2_pro_profession"
    __table_args__ = endpoint_def('professions', locale=True, workers=1)

    pkid = Column(Integer, primary_key=True)
    id = Column(String, unique=True, nullable=False)
    name = Column(String, nullable=False)
    icon = Column(String, nullable=False)
    icon_big = Column(String, nullable=False)

    specializations = relationship("Gw2Specialization", uselist=True)
    training = relationship(
        "_Gw2Training",
        uselist=True,
        info=rel_json(
            _Gw2Training,
            fn=lambda j, pj: [dict(profession=pj['id'], **x) for x in j]))

    weapons = relationship(
        "_Gw2ProfWeapon",
        uselist=True,
        info=rel_json(
            _Gw2ProfWeapon,
            fn=lambda j, pj:
            [dict(prof_id=pj['id'], name=k, **v) for k, v in j.items()]))

    skills = relationship("Gw2Skill",
                          secondary="gw2_pro_profession_skill_rel",
                          uselist=True)
Exemplo n.º 30
0
class Gw2EmblemBackground(Base):
    """Map the emblem/backgrounds endpoint

    This class gives access to v2/emblem/backgrounds enpoint.
    For more informations about this endpoint, see:
        - https://wiki.guildwars2.com/wiki/API:2/emblem
        - https://github.com/arenanet/api-cdi/blob/master/v2/emblems/emblems.js

    This endpoint shows information about emblems backgrounds
    """
    __tablename__ = "gw2_misc_emblem_back"
    __table_args__ = endpoint_def('emblem/backgrounds', workers=1)

    # Columns
    id = Column(Integer, primary_key=True)

    # Relations
    layers = relationship(
        "_Gw2EmblemBackgroundLayer",
        uselist=True,
        info=rel_json(
            _Gw2EmblemBackgroundLayer,
            fn=lambda j, pj: [dict(emblem_id=pj['id'], layer=x) for x in j]))