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))
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)
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)
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 )
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 )
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 )
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 )
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 )
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 )
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)
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)