/pylan

Downloader for university plan

Primary LanguagePythonMIT LicenseMIT

Pylan


O aplikacji

Aplikacja Pylan informuje użytkownika o nadchodzącym planie zajęć na Wydziale Zarządzania Uniwersytetu Gdańskiego. Możliwe jest ograniczenie wyszukiwań planu dzięki wgranym w aplikację komendom.

Uruchomienie

Aby uruchomić aplikację musimy przygotować wirtualne środowisko Pythona i w nim zainstalować potrzebne biblioteki. Aby to uczynić, musimy wykonać w CMD następujące komendy:

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Po takim przygotowaniu możemy uruchomić aplikację:

λ python pylan.py
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Subject                                            ┃ Date       ┃ Start Time ┃ End Time ┃ Location ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
│ Testowanie aplikacji                               │ 28/05/2022 │ 08.00      │ 09.30    │   C-2    │
│ Warsztaty z przedsiębiorczości [ćw]                │ 28/05/2022 │ 09.45      │ 11.15    │   C-4    │
│ Testowanie aplikacji                               │ 28/05/2022 │ 11.30      │ 15.00    │   C-25   │
│ Rachunkowość                                       │ 28/05/2022 │ 15.15      │ 16.45    │   C-20   │
│ Rachunkowość [ćw]                                  │ 28/05/2022 │ 17.00      │ 18.30    │   C-20   │
│ Serwisy e-learningowe 2.0                          │ 29/05/2022 │ 08.00      │ 11.15    │   C-36   │
│ Programowanie aplikacji wieloplatformowych         │ 29/05/2022 │ 11.30      │ 15.00    │   C-36   │
│ Programowanie aplikacji rozproszonych w C#         │ 29/05/2022 │ 15.15      │ 18.30    │   C-36   │
│ Programowanie aplikacji rozproszonych w C#         │ 11/06/2022 │ 08.00      │ 09.30    │   C-36   │
│ Programowanie aplikacji wieloplatformowych         │ 11/06/2022 │ 09.45      │ 13.00    │   C-36   │
│ Testowanie aplikacji                               │ 11/06/2022 │ 13.30      │ 15.00    │   C-24   │
│ Serwisy e-learningowe 2.0                          │ 11/06/2022 │ 15.15      │ 18.30    │   C-25   │
│ Serwisy e-learningowe 2.0                          │ 12/06/2022 │ 08.45      │ 13.00    │  A-118   │
│ Skalowanie sieci komputerowych - Scaling Networks  │ 12/06/2022 │ 13.30      │ 15.00    │  A-118   │
│ Metodyka pisania pracy dyplomowej [ćw]             │ 12/06/2022 │ 15.15      │ 16.45    │   C-21   │
│ Rachunkowość                                       │ 03/07/2022 │ 11.30      │ 13.00    │  WZ-310  │
└────────────────────────────────────────────────────┴────────────┴────────────┴──────────┴──────────┘

Licencja

Pylan jest open-sourcowym projektem na licencji MIT. Do utworzenia projektu został użyty Python w wersji 3.10 na licencji MIT, biblioteka requests na licencji Apache Software License (Apache 2.0).

Autor

Jacek Walczak

Specyfikacja wymagań

Definicja wymagania(scenariusz) Użytkownik wyszukuje plan studiów na najbliższy weekend
Aktorzy Użytkownik chcący wyszukać plan studiów
Warunki początkowe Użytkownik wykorzystuje konsolę do interakcji z aplikacją
Przebieg realizacji scenariusza
  • Użytkownik otwiera konsolę i przechodzi do katalogu zawierającego aplikację `pylan`
  • Dokonuje także wprowadzenia potrzebnych komend dla uzyskania wymaganego wyniku
  • System wyświetla plan zajęć na najbliższy weekend przekazując informacje w tabeli z podziałem na nazwę przedmiotu, czas trwania i lokalizację

Wymagania funkcjonalne
  • użytkownik będzie mógł przeszukać plan zajęć na uczelni dla wybranej grupy
  • strona internetowa udostępni plan zajęć w postaci statycznego pliku CSV

Wymagania niefunkcjonalne
  • dostępność/niezawodność - strona powinna być dostępna cały czas
  • wydajność - strona powinna w szybkim czasie zwracać tabelę planu zajęć
  • użyteczność - dzięki użyciu komend w konsoli możliwe jest ograniczenie

Architektura systemu

Stos technologiczny - architektura rozwojowa

  • Emacs (IDE)
  • Ekosystem Python 3.10

Stos technologiczny - architektura uruchomieniowa

  • Python 3.10
  • biblioteki `requests` wraz z `requests-cache` do realizowania połączeń HTTP
  • biblioteka `click` do tworzenia komend (Command Line Interface)
  • biblioteka `rich` do TUI (Terminal User Interface)
  • Git

Testy

Testy sprawdzają, czy przetwarzanie planu wedle podanych przez użytkownika komend działają. Testy są także stworzone w sposób, który pozwala na sprawdzenie, czy plan jest pobierany z cache (pamięci podręcznej), czy działa bez interetu lub czy poprawnie wyświetla się najbliższy weekend.

Pylan API

-h, --help

Pokaż komunikat help z dostępnymi komendami.

-s SUBJECT, --subject SUBJECT

Pokaż plan dla wybranego przedmiotu. Możliwe podanie jest wyłącznie części nazwy przedmiotu.

λ python pylan.py -s rachunkowo
┏━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Subject           ┃ Date       ┃ Start Time ┃ End Time ┃ Location ┃
┡━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
│ Rachunkowość      │ 28/05/2022 │ 15.15      │ 16.45    │   C-20   │
│ Rachunkowość [ćw] │ 28/05/2022 │ 17.00      │ 18.30    │   C-20   │
│ Rachunkowość      │ 03/07/2022 │ 11.30      │ 13.00    │  WZ-310  │
└───────────────────┴────────────┴────────────┴──────────┴──────────┘

-d REQUESTED_DATE, --date REQUESTED_DATE

Pokaż plan dla wybranej daty przekazanej w formacie dd/mm/yyyy.

λ python pylan.py -d 28/05/2022
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Subject                             ┃ Date       ┃ Start Time ┃ End Time ┃ Location ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
│ Testowanie aplikacji                │ 28/05/2022 │ 08.00      │ 09.30    │   C-2    │
│ Warsztaty z przedsiębiorczości [ćw] │ 28/05/2022 │ 09.45      │ 11.15    │   C-4    │
│ Testowanie aplikacji                │ 28/05/2022 │ 11.30      │ 15.00    │   C-25   │
│ Rachunkowość                        │ 28/05/2022 │ 15.15      │ 16.45    │   C-20   │
│ Rachunkowość [ćw]                   │ 28/05/2022 │ 17.00      │ 18.30    │   C-20   │
└─────────────────────────────────────┴────────────┴────────────┴──────────┴──────────┘

-n, --next

Pokaż plan na najbliższy weekend.

λ python pylan.py -n
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━┓
┃ Subject                                     ┃ Date       ┃ Start Time ┃ End Time ┃ Location ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━┩
│ Testowanie aplikacji                        │ 28/05/2022 │ 08.00      │ 09.30    │   C-2    │
│ Warsztaty z przedsiębiorczości [ćw]         │ 28/05/2022 │ 09.45      │ 11.15    │   C-4    │
│ Testowanie aplikacji                        │ 28/05/2022 │ 11.30      │ 15.00    │   C-25   │
│ Rachunkowość                                │ 28/05/2022 │ 15.15      │ 16.45    │   C-20   │
│ Rachunkowość [ćw]                           │ 28/05/2022 │ 17.00      │ 18.30    │   C-20   │
│ Serwisy e-learningowe 2.0                   │ 29/05/2022 │ 08.00      │ 11.15    │   C-36   │
│ Programowanie aplikacji wieloplatformowych  │ 29/05/2022 │ 11.30      │ 15.00    │   C-36   │
│ Programowanie aplikacji rozproszonych w C#  │ 29/05/2022 │ 15.15      │ 18.30    │   C-36   │
└─────────────────────────────────────────────┴────────────┴────────────┴──────────┴──────────┘

Użyty Link do planu:

https://wzr.ug.edu.pl/.csv/plan_st.php?f1=N22-32&f2=4&jp=cf4f962e1fd3c99dd511843f647d568fb7957663

Możliwe jest użycie innego planu, wystarczy zmienić link do planu w pliku link_plan.txt.