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