def process_command(
         self,
         event: Dict[str, Any],
         command: str,
         params: str
 ):
     if command in ('', 'g', 'get'):
         with get_session() as session:
             result = search_compendium_by_id(session, params.strip())
             if not result:
                 self.reply(event, 'No results found.')
             elif isinstance(result, Deck):
                 self.reply(event, None, make_deck(result))
             elif isinstance(result, Element):
                 self.reply(event, None, make_element(result))
             elif isinstance(result, Legacy):
                 self.reply(event, None, make_legacy(result))
             elif isinstance(result, Recipe):
                 self.reply(event, None, make_recipe(result))
             elif isinstance(result, Verb):
                 self.reply(event, None, make_verb(result))
             elif isinstance(result, Ending):
                 self.reply(event, None, make_ending(result))
     elif command in ('s', 'search'):
         keywords = params.strip()
         with get_session() as session:
             results = search_compendium(session, keywords)
         self.reply(event, None, make_search_results(keywords, results))
Example #2
0
def search():
    keywords = request.args.get('keywords', '')
    with get_session() as session:
        results = search_compendium(session, keywords)
        return render_template('search.tpl.html',
                               keywords=keywords,
                               results=results)
Example #3
0
def add_global_variables():
    with get_session() as session:
        file_list = session.query(File).order_by(File.name).all()
        files = defaultdict(lambda: OrderedDict())
        decks = (session.query(Deck.deck_id,
                               Deck.file_id).order_by(Deck.deck_id).all())
        elements = (session.query(Element.element_id,
                                  Element.file_id).order_by(
                                      Element.element_id).all())
        legacies = (session.query(Legacy.legacy_id, Legacy.file_id).order_by(
            Legacy.legacy_id).all())
        recipes = (session.query(Recipe.recipe_id, Recipe.file_id).order_by(
            Recipe.recipe_id).all())
        verbs = (session.query(Verb.verb_id,
                               Verb.file_id).order_by(Verb.verb_id).all())
        items = decks + elements + legacies + recipes + verbs
        for file in file_list:
            files[file.category.value][file] = [
                item_id for item_id, file_id in items if file_id == file.id
            ]
        session.expunge_all()
    return dict(base_url=app.config['BASE_URL'],
                path=request.path,
                files=files,
                read_only=app.config['READ_ONLY'],
                decks_open=False,
                elements_open=False,
                legacies_open=False,
                recipes_open=False,
                verbs_open=False)
def _make_result(result: Dict[str, Any]):
    text = "*{}: {}*\n{}".format(
        result['type'].capitalize(),
        URL_FORMAT.format(result['type'], result['id']),
        '\n'.join('• ' + m for m in result['matches'])
    )
    image = None
    image_alt = None
    with get_session() as session:
        if result['type'] == 'element':
            element = Element.get_by_element_id(session, result['id'])
            image = get_element_art(element)
        elif result['type'] == 'legacy':
            legacy = Legacy.get_by_legacy_id(session, result['id'])
            image = get_legacy_art(legacy)
        elif result['type'] == 'verb':
            verb = Verb.get_by_verb_id(session, result['id'])
            image = get_verb_art(verb)
        elif result['type'] == 'ending':
            ending = Ending.get_by_ending_id(session, result['id'])
            image = get_ending_art(ending)

    image = get_image_if_reachable(image)
    if image is not None:
        image_alt = result['id']

    return make_section(text, image, image_alt)
Example #5
0
def ending(ending_id: str):
    with get_session() as session:
        return render_template(
            'ending.tpl.html',
            ending=Ending.get_by_ending_id(session, ending_id),
            show_endings=True
        )
Example #6
0
def deck(deck_id: str):
    with get_session() as session:
        return render_template(
            'deck.tpl.html',
            deck=Deck.get_by_deck_id(session, deck_id),
            show_decks=True
        )
Example #7
0
def element(element_id: str):
    with get_session() as session:
        return render_template(
            'element.tpl.html',
            element=Element.get_by_element_id(session, element_id),
            show_elements=True
        )
Example #8
0
def verb(verb_id: str):
    with get_session() as session:
        return render_template(
            'verb.tpl.html',
            verb=Verb.get_by_verb_id(session, verb_id),
            show_verbs=True
        )
Example #9
0
def recipe(recipe_id: str):
    with get_session() as session:
        return render_template(
            'recipe.tpl.html',
            recipe=Recipe.get_by_recipe_id(session, recipe_id),
            show_recipes=True
        )
Example #10
0
def legacy(legacy_id: str):
    with get_session() as session:
        return render_template(
            'legacy.tpl.html',
            legacy=Legacy.get_by_legacy_id(session, legacy_id),
            show_legacies=True
        )
Example #11
0
def import_game_data(game_dir: str):
    assets_dir = join(game_dir, 'cultistsimulator_Data', 'StreamingAssets')
    content_dir = join(assets_dir, 'content')
    with get_session() as session:
        game_contents = GameContents()
        for group in FileGroup:
            decks = _load_content(Deck, content_dir, group, FileCategory.DECKS,
                                  game_contents)
            elements = _load_content(Element, content_dir, group,
                                     FileCategory.ELEMENTS, game_contents)
            legacies = _load_content(Legacy, content_dir, group,
                                     FileCategory.LEGACIES, game_contents)
            recipes = _load_content(Recipe, content_dir, group,
                                    FileCategory.RECIPES, game_contents)
            verbs = _load_content(Verb, content_dir, group, FileCategory.VERBS,
                                  game_contents)

            # Create the dynamically generated secondary tables
            Base.metadata.create_all()

            session.add_all(decks)
            session.add_all(elements)
            session.add_all(legacies)
            session.add_all(recipes)
            session.add_all(verbs)
def import_game_data(game_dir: str):
    assets_dir = Path(game_dir) / DATA_DIR / 'StreamingAssets'
    content_dir = assets_dir / 'content'
    with get_session() as session:

        # Load the content from the regular files
        game_contents = GameContents()
        for group in FileGroup:
            decks = _load_content(Deck, content_dir, group, FileCategory.DECKS,
                                  game_contents)
            elements = _load_content(Element, content_dir, group,
                                     FileCategory.ELEMENTS, game_contents)
            endings = _load_content(Ending, content_dir, group,
                                    FileCategory.ENDINGS, game_contents)
            legacies = _load_content(Legacy, content_dir, group,
                                     FileCategory.LEGACIES, game_contents)
            recipes = _load_content(Recipe, content_dir, group,
                                    FileCategory.RECIPES, game_contents)
            verbs = _load_content(Verb, content_dir, group, FileCategory.VERBS,
                                  game_contents)

            # Create the dynamically generated secondary tables
            Base.metadata.create_all()

            session.add_all(decks)
            session.add_all(elements)
            session.add_all(endings)
            session.add_all(legacies)
            session.add_all(recipes)
            session.add_all(verbs)
Example #13
0
    if (slot.for_verb):
        content["actionId"] = slot.for_verb.verb_id
    if (slot.required):
        required = {}
        for item in slot.required:
            required[item.element.element_id] = item.quantity
        content["required"] = required
    if (slot.forbidden):
        forbidden = {}
        for item in slot.forbidden:
            forbidden[item.element.element_id] = item.quantity
        content["forbidden"] = forbidden
    content["description"] = slot.description
    content["greedy"] = slot.greedy
    content["consumes"] = slot.consumes
    content["noanim"] = slot.no_animation
    return content


def dict_mutation_effect(mutation):
    content = {}
    content["filterOnAspectId"] = mutation.filter_on_aspect.element_id
    content["mutateAspectId"] = mutation.mutate_aspect.element_id
    content["mutationLevel"] = mutation.mutation_level
    content["additive"] = mutation.additive
    return content


with get_session() as session:
    bo = export_compendium(session)
    print(bo)