Example #1
0
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()
Example #2
0
def test_create_session_singleton():
    session1 = ActiveSession()
    session2 = ActiveSession()

    assert session1 is not None
    assert session2 is not None
    assert id(session1) == id(session2)
Example #3
0
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)
Example #4
0
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
Example #5
0
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)
Example #6
0
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)
Example #7
0
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
Example #8
0
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
Example #9
0
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)
Example #10
0
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)
Example #11
0
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)
Example #12
0
def open_question(param=None):
    num = int(param)
    webbrowser.open(ActiveSession().active_questions[num - 1]["link"], autoraise=False)