Skip to content

rzymski/reservationSystem

Repository files navigation


Aplikacja webowa stworzona w Django 4.2.6 i pythonie 3.11.1


Zawartość REDME

  1. 📆 Opis aplikacji
  2. 📜 Funkcjonalność
  3. 💻 Uruchomienie aplikacji lokalnie
  4. 🔧 Konfiguracja
  5. 📡 Wdrożenie na serwer pythonanywhere
  6. 🌐 Działanie aplikacji

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

Funkcjonalność

  1. Kalendarz
  2. Dodawanie, edytowanie, usuwanie dostępnych terminów
  3. Dodawanie, edytowanie, usuwanie rezerwacji
  4. Dodawanie, edytowanie, usuwanie propozycji terminów
  5. Zatwierdzanie i odrzucanie rezerwacji/propozycji terminów
  6. Filtr kalendarza (wybrani usługodawcy lub klienci)
  7. Tabela z dostępnymi terminami 8)[x] Tabela z rezerwacjami
  8. Wyszukiwarka do tabel 10)[x] Filtry do tabel (zakres dat, użytkownik)
  9. Profil użytkownika
  10. Powiadomienia na stronie i przez email-a
  11. Rejestracja i Logowanie
  12. Panel administracyjny
  13. Dwa motywy (jasny i ciemny)
  14. Statystyki

Instrukcja uruchomienia aplikacji lokalnie:

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'

Konfiguracja:

Przydatne polecenia:

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

Wdrożenie na serwer pythonanywhere:

Uruchomienie konsoli w pythonanywhere:

W sekcji Consoles
Uruchamiamy konsole: uruchomienie konsoli w pythonanywhere

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

Dodanie aplikacji do serwera: Add a new web app --> ... --> Manual Configuration --> Python 3.10 --> ...
Dodanie aplikacji do serwera

Ustawienia w sekcji Web:


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())
Ustawienia aplikacji na serwerze

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

Przeładowanie aplikacji na serwerze: Przeladowanie aplikacji na serwerze

Działanie aplikacji

Można sprawdzić działanie aplikacji w:

Kalendarz:

Kalendarz

Tabele z dostepnymi terminami i rezerwacjamai:

Tabele z dostepnymi terminami i rezerwacjamai

Panel rejestracyjny:

Profil użytkownika

Panel logowania:

Panel logowania

Profil użytkownika:

Profil użytkownika

Panel administracyjny:

Panel administracyjny