- clone the project
- create a virtualenv
- setup and create postgresql db with these credentials:
- dbname: sarydb
- dbuser: saryuser
- dbpassword: sarypassword
- navigate to the main directory which
manage.py
lives - install requirements
pip install -r requirements.txt
- migrate database
python manage.py migrate --settings=sary_exam.local-settings
- create admin user
python manage.py createsupseruser --settings=sary_exam.local-settings
- run up the server
python manage.py runserver --settings=sary_exam.local-settings
- to run tests
python manage.py test --settings=sary_exam.local-settings
- install docker and docker-compose
- run
docker-compose up --build
P.S:
- You can change Database credentials to whatever you want but make sure to change it in .env file
- The created dbuser should have
createdb
role in order to run the tests successfully - The .env file must not be shared on git but this is for just demo
After running up the server go to http://localhost:8000/swagger/
User can sort reservations by reservation time by specifying query param ordering
in the URL, and add -
to the field you sort for to reverse the result
Example:
- Ascending
api/restaurant/reservation/get_today_reservations/?ordering=reserve_start_time
- Descending
api/restaurant/reservation/get_today_reservations/?ordering=-reserve_start_time
User can filter reservation by table by specifying query param table__table_number
in the URL. And also for a date range with query param created
.
In date range you can specify an exact date or range by using for ex. __gte
Examples:
- filter for table 5
api/restaurant/reservation/get_all_reservations/?table__table_number=5
- filter for table 5 and 12
api/restaurant/reservation/get_all_reservations/?table__table_number=5,12
- filter for a date range
api/restaurant/reservation/get_all_reservations/?created__gt=2021-08-01&created__lte=2021-08-09
User:
username: string
employee_number: int(unique, max_digits=4)
is_admin: boolean(default=False)
password: string(min_char=6)
Table:
table_number: int(unique)
table_number_of_seats: int
Reservation:
table: foreignkey(Table)
reserve_start_time: time
reserve_end_time: time
created: date