def delete_questions(params=None): if len(params) == 0: #store.Connection().set_list_of_questions_for_tag( # ActiveSession().last_used_tag, # ActiveSession().remain_questions() #) # TODO: optimize for question in ActiveSession().active_questions: relation_store.delete_question(relation_store.Connection(), question) print(fg256("grey", "delete by {} (remain={})".format(ActiveSession().last_used_tag, len(ActiveSession().remain_questions())))) print() else: if helpers.represents_int(params[1:]): tag_num = int(params[1:]) for tag_dict in ActiveSession().current_tags: if tag_dict["num"] == tag_num: relation_store.delete_questions_by_category(relation_store.Connection(), tag_dict["tag"]) # store.Connection().remove_questions_for_tag(tag_dict["tag"]) else: #store.Connection().remove_by_tag(params[1:]) relation_store.delete_questions_by_category(relation_store.Connection(), params[1:]) print()
def test_create_session_singleton(): session1 = ActiveSession() session2 = ActiveSession() assert session1 is not None assert session2 is not None assert id(session1) == id(session2)
def show_questions(params=None): tag_name = _tag_name(params) ActiveSession().switch_to_tag(tag_name, relation_store.get_questions_by_category(relation_store.Connection(), tag_name)) active_questions = ActiveSession().active_questions active_questions = helpers.add_new_header_for_questions(active_questions) active_questions = helpers.fix_question_title(active_questions) active_questions = helpers.set_human_datetime(active_questions) ui.display_list_of_questions(active_questions)
def test_remain_questions(list_of_questions): session = ActiveSession() session.switch_to_tag("js", list_of_questions, limit=1) result = session.remain_questions() assert len(result) == 2 assert (all(q not in result for q in session.active_questions)) assert len(session.active_questions + result) == 3
def show_new_questions(params=None): tag_name = _tag_name(params) ActiveSession().switch_to_tag(tag_name, store.Connection().tag(tag_name)) active_questions = ActiveSession().active_questions active_questions = helpers.add_new_header_for_questions(active_questions) active_questions = helpers.fix_question_title(active_questions) active_questions = helpers.set_human_datetime(active_questions) # todo: refactore chain of calls new_active_questions = helpers.filter_active_questions(active_questions) ActiveSession().active_questions = new_active_questions ui.display_list_of_questions(new_active_questions)
def test_switch_to_tag(list_of_classified_questions, limit): session = ActiveSession() session.switch_to_tag("js", list_of_classified_questions, limit=limit) assert session.all_questions == list_of_classified_questions assert session.last_used_tag == "js" assert (all(session.active_questions[i]["creation_date"] >= session.active_questions[i+1]["creation_date"] for i in range(len(session.active_questions)-1))) assert (all(session.all_questions[i]["creation_date"] >= session.all_questions[i+1]["creation_date"] for i in range(len(session.all_questions)-1))) assert len(session.active_questions) == min(len(list_of_classified_questions), limit)
def test_create_session(): session = ActiveSession() assert session is not None assert len(session.all_questions) == 0 assert len(session.active_questions) == 0 assert len(session.current_tags) == 0 assert not session.last_used_tag
def _tag_name(param: str) -> Optional[str]: if helpers.represents_int(param): num = int(param) for tag_dict in ActiveSession().current_tags: if tag_dict["num"] == num: return tag_dict["tag"] else: return param
def unhide_tag(params=None): if helpers.represents_int(params[1:]): num = int(params[1:]) for tag_dict in ActiveSession().current_tags: if tag_dict["num"] == num: config["hide_tags"].remove(tag_dict["tag"]) else: config["hide_tags"].remove(params[1:]) save_config(config)
def ls_action(include_hidden=False): tags = relation_store.get_counts_by_category() if not include_hidden: tags = helpers.filter_tags(tags, config['hide_tags']) helpers.set_hidden(tags, config['hide_tags']) # не помню уже зачем я это делаю helpers.set_new(tags) tags = helpers.enrich_tags(tags) ActiveSession().current_tags = tags ui.ls(tags)
def open_questions_list(params=None): question_list = params.split(",") for question_num_str in question_list: question_num = int(question_num_str.strip()) webbrowser.open(ActiveSession().active_questions[question_num - 1]["link"], autoraise=False)
def open_question(param=None): num = int(param) webbrowser.open(ActiveSession().active_questions[num - 1]["link"], autoraise=False)