Aplikacja webowa stworzona w Django 4.2.6 i pythonie 3.11.1
- 📆 Opis aplikacji
- 📜 Funkcjonalność
- 💻 Uruchomienie aplikacji lokalnie
- 🔧 Konfiguracja
- 📡 Wdrożenie na serwer pythonanywhere
- 🌐 Działanie aplikacji
Aplikacja stworzona jako temat pracy inżynierskiej.
Celem pracy było stworzenie aplikacji, która umożliwiałaby użytkownikom ustalenie terminów spotkań bez osoby pośredniczącej.
Przyjmuje się, że w aplikacji są 4 rodzaje użytkowników: administrator
, usługodawcy
, klienci
i niezalogowani użytkownicy
.
Terminy spotkań mają 4 stany: propozycja terminu
, dostępny termin
, termin z propozycją spotkania
i zatwierdzony termin
.
Niezalogowani użytkownicy mogą tylko przeglądać kalendarz i tabele z terminami.
Klienci mogą dodawać własne propozycje terminów
oraz proponować spotkania w dostepnych terminach usługodawców. (tworzyć niepotwierdzone rezerwacje)
Usługodawcy mogą akceptować/odrzucać propozycje klientów oraz ustalać własne dostępne terminy
.
Administrator ma możliwość zmiany wszystkich terminów, zmiany powiadomień i zarządza wszystkimi użytkownikami.
Wszelkie zmiany w terminach automatycznie wysyłają powiadomienia do wszystkich stron związanych z danym terminem.
- Kalendarz
- Dodawanie, edytowanie, usuwanie dostępnych terminów
- Dodawanie, edytowanie, usuwanie rezerwacji
- Dodawanie, edytowanie, usuwanie propozycji terminów
- Zatwierdzanie i odrzucanie rezerwacji/propozycji terminów
- Filtr kalendarza (wybrani usługodawcy lub klienci)
- Tabela z dostępnymi terminami 8)[x] Tabela z rezerwacjami
- Wyszukiwarka do tabel 10)[x] Filtry do tabel (zakres dat, użytkownik)
- Profil użytkownika
- Powiadomienia na stronie i przez email-a
- Rejestracja i Logowanie
- Panel administracyjny
- Dwa motywy (jasny i ciemny)
- Statystyki
Tworzymy wirtualne środowisko
python -m venv venv
Aktywujemy wirtualne środowisko
.\venv\Scripts\activate
Instalujemy wszystkie potrzebne biblioteki z pliku requirements.txt
pip install -r .\requirements.txt
Uruchomienie projektu Django
python manage.py runserver 'nrPortu opcjonalnie'
Tworzenie migracji po zmianie modelów
python manage.py makemigrations appName --name changeName
Zatwierdzenie migracji
python manage.py migrate
Tworzenie super użytkownika
python manage.py createsuperuser
Klonujemy repozytorium:
git clone https://github.com/rzymski/reservationSystem.git
Tworzymy wirtaulne środowisko:
mkvirtualenv --python=/usr/bin/python3.10 venv
Pobieramy wszystkie potrzebne pakiety z requirements.txt:
pip install -r ./reservationSystem/requirements.txt
Source code: /home/nazwaUzytkownika/reservationSystem (nazwa głównego folderu projektu i nazwa repozytorium na github-ie)
Working directory: /home/nazwaUzytkownika
Virtualenv: /home/nazwaUzytkownika/.virtualenvs/venv
Static files:
URL: /static/
DIRECTORY: /home/nazwaUzytkownika/reservationSystem/staticfiles
URL: /media/
DIRECTORY: /home/nazwaUzytkownika/reservationSystem/media
WSGI configuration file:
import os
import sys
path = os.path.expanduser('~/reservationSystem') # nazwa głównego folderu projektu i nazwa repozytorium na github-ie
if path not in sys.path:
sys.path.insert(0, path)
os.environ['DJANGO_SETTINGS_MODULE'] = 'reservationSystem.settings' # nazwa głównej aplikacji z settings.py
from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler
application = StaticFilesHandler(get_wsgi_application())
Po skonfigurowaniu warto również dla pewności jeszcze raz upewnić się, że pliki statyczne są załadowane.
Polecenie do przeładowania plików statycznych:
python manage.py collectstatic
Można sprawdzić działanie aplikacji w:
Kalendarz:
Tabele z dostepnymi terminami i rezerwacjamai:
Panel rejestracyjny:
Panel logowania:
Profil użytkownika:
Panel administracyjny: