예제 #1
0
def disconnection_engine(show_confirmation_window: bool) -> None:
    """Procedura deconecteaza aplicatia de la contul Hattrick. Sterge jetoanele access token si access token secret,
     motiv pentru care utilizatorul va trebui sa reia intreg procesul de conectare la contul de Hattrick, daca vrea
     sa aiba acces la detaliile contului sau.

     Algoritm:
     ----------
     1. Descarca fisierul XML ce este generat ca urmare a deconectarii de la cont;
     2. Elimina cele doua jetoane din fisier;
     3. Salveaza noul fisier de configurare;
     4. Afiseaza un mesaj de confirmare a deconectarii.

     Parametri:
     ----------
     show_confirmation_window: bool
        arata daca va fi afisata sau nu fereastra de confirmare.

     Intoarce:
     ----------
     Nimic."""

    d.download_xml_file(file=config['DEFAULT']['INVALIDATE_TOKEN_PATH'],
                        params={},
                        destination_file=global_library.disconnect_savepath)
    config.remove_option('DEFAULT', 'ACCESS_TOKEN')
    config.remove_option('DEFAULT', 'ACCESS_TOKEN_SECRET')
    with open(file=global_library.configuration_file, mode='w') as configfile:
        config.write(configfile)
    if show_confirmation_window:
        dw.show_info_window_in_thread(
            title='Disconnection successful!',
            message='You are disconnected from your Hattrick account!')
예제 #2
0
def download_future_match(match_id: int, team_id: int) -> list:
    """Functia descarca din Hattrick un fisier XML ce contine evaluarile echipei care are un numar de identificare
    transmis ca parametru intr-un meci viitor, cu numarul de identificare transmis si el ca parametru.

    Algoritm:
    ----------
    Se descarca fisierul XML corespunzator, care este citit de catre functia parse_future_match_file. Aceasta functie
    intoarce rezultatul potrivit.

    Parametri:
    ----------
    match_id: int
        numarul de identificare al meciului al caror evaluari vor fi trecute in fisierul XML;
    team_id: int
        numarul de identificare al echipei pentru care se vrea descarcarea fisierului.

    Intoarce:
    ---------
    O lista ce contine cele 7 evaluari ale echipei dorite (evaluarile pentru mijloc, aparare pe dreapta, centru si
    stanga si atac pe dreapta, centru si stanga."""

    dl.download_xml_file(file=config['DEFAULT']['PROTECTED_RESOURCE_PATH'],
                         params=cs.create_match_orders_string(
                             match_id=match_id, team_id=team_id),
                         destination_file=global_library.orders_savepath)
    return xp.parse_future_match_file()
def import_engine(low_end: int, high_end: int) -> None:
    """Procedura introduce in baza de date meciurile din Hattrick care au numerele de identificare
    consecutive, intre doua valori date ca parametri.

    Algoritm:
    ----------
    Pentru fiecare numar de identificare aflat intre cele doua limite:
        1. Descarca fisierul XML care contine datele potrivite;
        2. Citeste datele dorite din fisier;
        3. Adauga aceste date in baza de date.
    La final, salveaza baza de date cu noile inregistrari.

    Parametri:
    ----------
    low_end: int
        limita inferioara a numerelor de identificare. Trebuie sa fie un numar intreg, strict pozitiv;
    high_end: int
        limita superioara a numerelor de identificare. Trebuie sa fie un numar intreg, strict positiv.

    Intoarce:
    ----------
    Nimic."""

    if low_end > high_end:  # Daca valorile sunt transmise inversat, aici ele se inverseaza din nou
        low_end, high_end = high_end, low_end
    for match_id in range(low_end, high_end + 1, 1):
        dl.download_xml_file(file=config['DEFAULT']['PROTECTED_RESOURCE_PATH'],
                             params=cs.create_match_details_string(match_id=match_id),
                             destination_file=global_library.details_savepath)
        match_details = xp.parse_match_details_file(match_id=match_id)
        a.add_a_match(match_details[0], match_details[1], match_details[2], match_details[3], match_details[4],
                      match_details[5], match_details[6], match_details[7], match_details[8], match_details[9],
                      match_details[10], match_details[11], match_details[12], match_details[13], match_details[14],
                      match_details[15], match_details[16])
    a.commit_to_database()
예제 #4
0
def check_if_connection_is_valid(test_config: config) -> bool:
    """Functia verifica daca este valida conexiunea la contul Hattrick. Mai precis, daca programul are acces la
    acest cont. Verificarea se face prin descarcarea unui fisier XML, care spune acest lucru si citirea lui.

    Algoritm:
    ----------
    Descarca fisierul Check.xml care contine jetonul de acces, in cazul in care conexiunea e valida si cauta acest
    jeton in fisierul descarcat.

    Parametri:
    ----------
    test_config: config
        instanta a clasei config, definita in ConfigParser. Aceasta retine, printre altele si URL-ul catre fisierul
        ce urmeaza a fi descarcat.

    Intoarce:
    ----------
    True, daca este valida conexiunea, adica programul are acces la datele contului de Hattrick.
    Altfel intoarce False."""

    dx.download_xml_file(
        file=test_config['DEFAULT']['CHECK_TOKEN_PATH'],
        params={},
        destination_file=global_library.check_connection_savepath)
    return xl.parse_connection_verification_file()
예제 #5
0
def disconnection_engine():
    d.download_xml_file(config['DEFAULT']['INVALIDATE_TOKEN_PATH'], {},
                        global_library.disconnect_savepath)
    config.remove_option('DEFAULT', 'ACCESS_TOKEN')
    config.remove_option('DEFAULT', 'ACCESS_TOKEN_SECRET')
    with open(global_library.configuration_file, 'w') as configfile:
        config.write(configfile)
    dw.show_info_window_in_thread(
        title='Disconnection successful!',
        message='You are disconnected from your Hattrick account!')
예제 #6
0
def import_engine(low_end, high_end):
    file = config['DEFAULT']['PROTECTED_RESOURCE_PATH']
    for match_id in range(low_end, high_end + 1, 1):
        params = cs.create_match_details_string(match_id)
        dl.download_xml_file(file, params, global_library.details_savepath)
        match_details = xp.parse_match_details_file(match_id)
        a.add_a_match(match_details[0], match_details[1], match_details[2],
                      match_details[3], match_details[4], match_details[5],
                      match_details[6], match_details[7], match_details[8],
                      match_details[9], match_details[10], match_details[11],
                      match_details[12], match_details[13], match_details[14],
                      match_details[15], match_details[16])
    a.commit_to_database()
def connection_engine():
    """Functia obtine informatiile de baza despre utilizatorul care s-a conectat.
    Deoarece procesul este aproape in totalitate automat, singurul punct in care omul poate interveni este la
    introducerea PIN-ului. Fie il poate introduce gresit, fie se poate razgandi si nu-l mai introduce.
    Din aceste motive, functia intoarce True daca procesul de conectare s-a incheiat (adica s-au obtinut jetoanele
    de acces) si False in caz contrar (cel mai probabil atunci cand PIN-ul fie nu este introdus corect, fie
    utilizatorul renunta la procedura in acest punct.
    Algoritmul de functionare:
    1. Testeaza daca se poate conecta la Hattrick. Asta inseamna ca urmatoarele 2 conditii sa fie adevarate:
      1.1. Sa existe jetoanele de acces;
      1.2. Conexiunea sa fie permisa de catre Hattrick
    2. Daca se poate conecta la Hattrick:
      2.1. Descarca informatiile de baza;
      2.2. Intoarce True
    3. Daca nu se poate conecta la Hattrick:
      3.1. Obtine jetoanele de access (efectueaza intreaga procedura de conectare). Daca nu poate, intoarce False
      3.2. Descarca informatiile de baza
      3.3. Intoarce True."""

    if check_if_configuration_file_has_access_tokens(config):
        if check_if_connection_is_valid(config):
            user_data = d.download_user_info()
            return True, user_data
        else:
            dx.download_xml_file(config['DEFAULT']['INVALIDATE_TOKEN_PATH'],
                                 {}, global_library.disconnect_savepath)
            config.remove_option('DEFAULT', 'ACCESS_TOKEN')
            config.remove_option('DEFAULT', 'ACCESS_TOKEN_SECRET')
            with open(global_library.configuration_file, 'w') as configfile:
                config.write(configfile)
            if get_access_tokens(config):
                dw.show_info_window_in_thread(
                    title='Connection complete!',
                    message='Successfully connected to Hattrick account')
                user_data = d.download_user_info()
                return True, user_data
    else:
        if get_access_tokens(config):
            dw.show_info_window_in_thread(
                title='Connection complete!',
                message='Successfully connected to Hattrick account')
            user_data = d.download_user_info()
            return True, user_data
        else:
            return False, []
def download_user_info_file() -> dict:
    """Functia descarca din Hattrick un fisier XML ce contine informatii de baza legate de contul de Hattrick
    al utilizatorului.

    Algoritm:
    -----------
    Se descarca fisierul XML, care apoi este citit de catre functia parse_user_file, care intoarce rezultatul
    potrivit.

    Parametri:
    -----------
    Niciunul.

    Intoarce:
    -----------
    Un dictionar ce retine datele de baza ale utilizatorului in contul sau de Hattrick."""

    dl.download_xml_file(file=config['DEFAULT']['PROTECTED_RESOURCE_PATH'],
                         params=cs.create_manager_compendium_string(),
                         destination_file=global_library.user_savepath)
    return xp.parse_user_file()
def download_user_matches_file(team_id: int) -> list:
    """Functia descarca din Hattrick un fisier XML ce contine meciurile pe care le-a avut si le va avea o echipa
    a utilizatorului.

    Algoritm:
    ----------
    Se descarca fisierul propriu-zis si se prelucreaza cu ajutorul functiei parse_matches_file, care intoarce
    rezultatul potrivit.

    Parametri:
    ----------
    team_id: int
        retine numarul de identificare al echipei pentru care se obtin meciurile.

    Intoarce:
    ----------
        O lista de tupluri. Fiecare tuplu retine numarul de identificare al meciului viitor, echipa gazda si echipa
        oaspete a meciului cu numarul de identificare respectiv."""

    dl.download_xml_file(file=config['DEFAULT']['PROTECTED_RESOURCE_PATH'],
                         params=cs.create_matches_string(team_id=team_id),
                         destination_file=global_library.matches_savepath)
    return xp.parse_matches_file()
예제 #10
0
def download_future_match(match_id, team_id):
    dl.download_xml_file(file=config['DEFAULT']['PROTECTED_RESOURCE_PATH'],
                         params=cs.create_match_orders_string(
                             match_id, team_id),
                         destination_file=global_library.orders_savepath)
    return xp.parse_future_match_file()
def download_user_matches(team_id):
    dl.download_xml_file(file=config['DEFAULT']['PROTECTED_RESOURCE_PATH'],
                         params=cs.create_matches_string(team_id),
                         destination_file=global_library.matches_savepath)
    return xp.parse_matches_file()
def check_if_connection_is_valid(test_config):
    dx.download_xml_file(test_config['DEFAULT']['CHECK_TOKEN_PATH'], {},
                         global_library.check_connection_savepath)
    return xl.parse_connection_verification_file()
예제 #13
0
def download_user_info():
    dl.download_xml_file(file=config['DEFAULT']['PROTECTED_RESOURCE_PATH'],
                         params=cs.create_manager_compendium_string(),
                         destination_file=global_library.user_savepath)
    return xp.parse_user_file()