Database Project - Marcin Mikuła, Dominik Grzesik
Temat projektu
Aplikacja internetowa, pozwalająca na rezerwację miejsca w wybranym porcie.
Technologie
- Baza danych MongoDB Atlas
- Django Famework Frontedn i Backend
Funkcjonalności
Aplikacja internetowa pozwala na rezerwację miejsca w wyszukanym porcie.
Rysunek 1: Lista wszystkich portów z opcją wyszukiwania po nazwie.
Każdy port ma swoje sektory, których ofertę użytkownik otrzymuje po podaniu danych jachtu. Jachty mają określone wymiary: długość, głębokość i szerokość. Dodatkowo obowiązkowy do podania jest też typ jachtu: mieczowy bądź balastowy. Łodzi mieczowych nie dotyczy ograniczenie na głębokość, jako że miecz można schować. Zanurzenie łodzi balastowych, jako że jest stałe, może być zbyt duże i dana rezerwacja może nie być możliwa - w ofercie nie będzie sektorów z tą bądź mniejszą głębokością.
Rysunek 2: Formularz na dane łodzi potrzebne do wyszukania dostępnych sektorów.
Rysunek 3: Efekt wypełnienia formularza oraz wyszukania wyników.
- Pierwszy z nich, typu “równoległy”, to taki, do którego jachty cumują równolegle. Ograniczeniem jest długość sektora, w pewnym momencie następny jacht się już nie zmieści.
-
Drugi typ to “prostopadły”, zawierający miejsca, w których jachty cumują prostopadle do pomostu. Ograniczeniem tutaj jest wspólna dla wszystkich miejsc danego sektora maksymalna szerokość łodzi. W momencie rezerwacji danego miejsca znika ono z oferty i nie można go zarezerwować.
Rysunek 4: Dostępne miejsca w wybranym sektorze prostopadłym
- Oba typy sektorów mają również określoną głębokość, czyli maksymalne zanurzenie jachtu.
- edytować, tzn. zmieniać datę rozpoczęcia i zakończenia rezerwacji
- usuwać, czyli anulować.
-
Widoki:
views.port_list - lista portów:
views.sectors - lista sektorów:
views.slots - list miejsc:
views.reserve - wykonywanie rezerwacji:
views.reservation - podgląd na rezerwację o danym numerze:
views.edit_reservation - edytowanie bądź usuwanie rezerwacji:
-
Formularze:
-
Routing:
-
Wyświetlanie informacji następuje w plikach .html:
ports.html:
sectors.html:
slots.html:
reservations.html:
results.html - w zależności od wykonanej akcji, dostajemy specjalny komunikat/informację, ostrzeżenie:
Rodzaje sektorów:
W momencie wybrania miejsca użytkownik zostaje poproszony o podanie danych potrzebnych do wykonania rezerwacji:
Rysunek 5: Formularz danych potrzebny do podania w momencie rezerwacji.
W momencie wykonania rezerwacji klient dostaje obowiązkowy do zapisania bądź zapamiętania numer rezerwacji:
Rysunek 6: Komunikat z koniecznym do zapisania numerem rezerwacji.
Będzie on potrzebny do podania w momencie próby znalezienia rezerwacji w zakładce rezerwacje:
Rysunek 7: Wyszukiwanie rezerwacji o danym numerze.
Aktywne rezerwacje można:
Rysunek 8: Opcje usuwania lub edytowania rezerwacji.
Rysunek 9: Rezultat edycji wybranej rezerwacji.
Baza danych MongoDB Atlas
Baza danych PortDB składa się z 3 kolekcji o przykładowych dokumentach:
Port z tablicą sektorów, z których każdy, jeśli typu prostopadłego, zawiera tablicę miejsc do rezerwacji:
Reservation
oraz Yacht
V. Django Framework
Do bazy danych podpinamy się przez pymongo: