This is a Django Rest API for fetching and creating trips and schedules.
Simply do:
pip install django-trips
Add the app into your installed apps in your project's settings file.
INSTALLED_APPS = [
...
'django_trips',
]
python manage.py migrate
Add the following to your root urls.py
or to your desired file location.
urlpatterns = [
...
path('trips/', include(('django_trips.api.urls', 'trips-api'), namespace='trips-api')),
]
You can replace trips/
to any namespace you like for the api.
Before you generate random scripts, make sure you have the required settings available in your project. If you want to use the default settings set USE_DEFAULT_TRIPS=True
.
The script depends upon these variables, if you don't want to use the default settings set the
following settings.
TRIP_DESTINATIONS
TRIP_DEPARTURE_LOCATION
TRIP_LOCATIONS = TRIP_DEPARTURE_LOCATION + TRIP_DESTINATIONS
TRIP_HOSTS
TRIP_FACILITIES
TRIP_CATEGORIES
TRIP_GEARS
python manage.py generate_trips --batch_size=100
Change the batch_size
variable to create as much of trips you want.
The following pages are served in the development:
Page | Method | URL |
---|---|---|
Scheduled Trips List | GET | http://localhost:8000/api/trips/ |
Available Trips List | GET | http://localhost:8000/api/trips/by/availability/ |
Search Trip | GET | http://localhost:8000/api/trips?name=Boston/ |
Single Trip | GET | http://localhost:8000/api/trip/trip-id-or-slug/ |
Update Trip | PUT | http://localhost:8000/api/trip/trip-id-or-slug/ |
Update Trip | PATCH | http://localhost:8000/api/trip/trip-id-or-slug/ |
Delete Trip | DELETE | http://localhost:8000/api/trip/trip-id-or-slug/ |
Destination | GET | http://localhost:8000/api/destinations/ |
Destination Detail | GET | http://localhost:8000/api/destination/location-slug |
All Trip Bookings | GET | http://localhost:8000/api/trip/bookings |
Single Bookings | GET | http://localhost:8000/api/trip/booking/id |
Single Trip Bookings | GET | http://localhost:8000/api/trip//bookings |
Authentication |
---|
SessionAuthentication |
BasicAuthentication |
Permissions |
---|
IsAuthenticated |
http://localhost:8000/api/trips/
This endpoint is used to list all the trips by schedule using the GET request type. These trips have specified
(fixed) schedule. These trips use django model TripSchedule
for creating their schedule. Once the schedule is expired,
these trips do not renew automatically.
These are the trip with "static" schedule data.
http://localhost:8000/api/trips/by/availability/
There is another mechanism which would like you to define dynamic trips schedule. Which is using TripAvailability
model. In this model you can define the recurrence of any trip, weekly, daily, or monthly and these trip may
auto-renew themselves. They come handy when you have dynamic trips schedule.
http://localhost:8000/api/trip/id-or-slug?destination=<destination name, destination name 2,>
Search specific trips. Here are the params that can be passed while searching. You can also mix the params together to narrow down the search.
param | description | example |
---|---|---|
name (str) | Find trips that contains specific name. | /api/trips/?name=Boston |
destination[] | Filter trips with specific destinations. | destination=Boston,London |
price_from (str) | Find trips that has price greater than or equal to the given amount | /api/trips/?price_from=200 |
price_to (str) | Find trips that has price less than or equal to the given amount | /api/trips/?price_to=200 |
duration_from (int) | Find trips having duration greater than or equal to the given number | /api/trips/?duration_from=2 |
duration_to (int) | Find trips having duration less than or equal to the given number | /api/trips/?duration_to=10 |
date_from (date) | Find trips that are scheduled greater than or specified date <yyyy-mm-dd> |
/api/trips/?date_from=2020-01-02 |
date_to (date) | Find trips that are scheduled less than or equal to specified date<yyyy-mm-dd> |
/api/trips/?date_from=2020-01-02 |
http://localhost:8000/api/trip/id-or-slug
This endpoint is used to fetch a single trip using GET request type.
http://localhost:8000/api/trip/trip-id-or-slug/
This endpoint is used to update a single trip using PUT request type. You would need to pass the complete trip object.
reset_of_params = {}
data = {
'age_limit': 39,
**reset_of_params,
}
http://localhost:8000/api/trip/trip-id-or-slug/
data = {
'age_limit': 39,
}
http://localhost:8000/api/trip/trip-id-or-slug/
This endpoint is used to delete a single trip using DELETE request type.
http://localhost:8000/api/destinations/
This endpoint is used to fetch all destinations available.
http://localhost:8000/api/destination/destination-slug
Given a slug, this endpoint provides detail about a single trip.
http://localhost:8000/api/trip/bookings
Get all the trips list using the GET
request method.
Create trip booking by giving the following "example" data in the POST
request.
{
"name": "tom latham",
"trip": "5-days-trip-to-city-center",
"phone_number": "tom",
"cnic_number": "1234234-23423",
"email": "a@gmail.com",
"target_date": "2021-09-01",
"message": "Tom booking# 1"
}
http://localhost:8000/api/trip/booking/<booking-id>/
Retrieve, Update & Delete a single trip booking.
http://localhost:8000/api/trip/<trip-slug>bookings/
Retrieve all bookings of a single trip.
Kick the docker build using the following command.
make build
This task may take few minutes.
Once the build has been completed, spin up the docker and migrate the database.
> make run
> make shell
> make update_db
Create a superuser with username admin
.
> make shell
> python manage.py createsuperuser
Create batch of trips. Run the following command inside docker shell.
> python manage.py generate_trips --batch_size=100
OR
> make random_trips
Run tests using the following command.
make tests
Action | Command |
---|---|
Run Server | make run |
Trail Logs | make logs |
Attach sever | make attach |
Stop server | make stop |
* Destroy docker container. | make destory |
* caution, this will remove all your data.
Contributions are welcome!