* Vietnamese translation incomplete

Transport views and templates

Transport views and templates (English fallback)

Aug. 17, 2025

Posted by admin

Nhom

Notes

 

βœ… Template Coverage Analysis - COMPLETE COVERAGE

Views vs Templates Coverage:

View Function

Template Required

Template Exists

Status

transport_home

transport_home.html

βœ…

Complete

flight_search

flight_search.html

βœ…

Complete

flight_detail

flight_detail.html

βœ…

Complete

transit_search

transit_search.html

βœ…

Complete

transit_detail

transit_detail.html

βœ…

Complete

flight_list

flight_list.html

βœ…

Complete

transit_list

transit_list.html

βœ…

Complete

Result: βœ… ALL TEMPLATES EXIST - NO MISSING TEMPLATES

 

 

πŸš€ Detailed View & Template Analysis

 

 

1. transport_home View & Template

Purpose: Main transportation dashboard with overview and navigation

View Logic:

def transport_home(request):

    """Main transportation page with overview and stats"""

    context = {

        'airport_count': Airport.objects.filter(is_active=True).count(),

        'airline_count': Airline.objects.filter(is_active=True).count(),

        'station_count': TransportStation.objects.filter(is_active=True).count(),

        'city_count': City.objects.count(),

    }

    return render(request, 'transport/transport_home.html', context)

Business Logic:

  • Statistics Dashboard: Real-time counts of active transportation infrastructure
  • Navigation Hub: Central access point to all transport services
  • Performance Optimized: Simple counts without complex joins

Template Features (transport_home.html):

  • Multilingual Support: Full Vietnamese/English switching
  • Statistics Cards: Visual display of infrastructure counts
  • Service Cards: Flight search, transit search, quick links
  • Responsive Design: Bootstrap cards with icons
  • Call-to-Action: Direct links to search functions

User Experience Flow:

1. User lands on transport home page

2. Sees infrastructure statistics (airports, airlines, stations, cities)

3. Chooses between flight search or transit search

4. Navigates to appropriate search interface

 

 

2. flight_search View & Template

Purpose: Flight booking search with advanced filtering

View Logic:

def flight_search(request):

    """Flight search page with results"""

    airports = Airport.objects.filter(is_active=True).select_related('city', 'city__country')

    flights = None

    

    if request.GET.get('origin') and request.GET.get('destination'):

        origin_code = request.GET.get('origin')

        destination_code = request.GET.get('destination')

        departure_date = request.GET.get('departure_date')

        

        flights_qs = Flight.objects.filter(

            origin_airport__iata_code=origin_code,

            destination_airport__iata_code=destination_code,

            status__in=['SCHEDULED', 'DELAYED']

        ).select_related(

            'airline', 'aircraft', 'origin_airport__city', 'destination_airport__city'

        )

        

        if departure_date:

            try:

                dep_date = datetime.strptime(departure_date, '%Y-%m-%d').date()

                flights_qs = flights_qs.filter(departure_time__date=dep_date)

            except ValueError:

                pass

        

        flights = flights_qs.order_by('departure_time')[:20]  # Limit to 20 results

Business Logic:

  • Dynamic Search: Shows form initially, results after search
  • IATA Code Filtering: Uses standard airport codes for search
  • Status Filtering: Only shows bookable flights (SCHEDULED/DELAYED)
  • Performance Optimization: select_related for efficient database queries
  • Result Limiting: Prevents performance issues with large datasets
  • Date Validation: Graceful handling of invalid date formats

Template Features (flight_search.html):

  • Search Form: Origin/destination airport selectors with IATA codes
  • Date Picker: Departure date selection
  • Multilingual Dropdowns: Airport names in user's preferred language
  • Results Display: Flight cards with pricing and timing
  • Error Handling: Graceful handling of no results
  • Responsive Design: Mobile-friendly search interface

Search Flow:

1. User selects origin airport (dropdown with IATA codes)

2. User selects destination airport

3. User chooses departure date (optional)

4. System filters flights by route and status

5. Results displayed with flight details and pricing

6. User can click through to flight details

 

 

3. flight_detail View & Template

Purpose: Comprehensive flight information page

View Logic:

def flight_detail(request, flight_id):

    """Flight detail page"""

    flight = get_object_or_404(

        Flight.objects.select_related(

            'airline', 'aircraft', 'origin_airport__city__country', 

            'destination_airport__city__country'

        ),

        pk=flight_id

    )

    return render(request, 'transport/flight_detail.html', {'flight': flight})

Business Logic:

  • Single Flight Focus: Detailed view of specific flight
  • Comprehensive Data: All related information in one query
  • Performance Optimized: select_related prevents N+1 queries
  • 404 Handling: Graceful handling of invalid flight IDs

Template Features (flight_detail.html):

  • Flight Information Card: Complete flight details
  • Aircraft Details: Plane type, capacity, specifications
  • Airline Information: Carrier details and branding
  • Route Information: Origin and destination with city/country
  • Pricing Display: All class pricing (Economy, Business, First)
  • Operational Details: Gate, terminal, status information
  • Booking Integration: Links to booking systems

Detail Flow:

1. User clicks on flight from search results

2. System loads complete flight information

3. Displays comprehensive flight details

4. User can proceed to booking or return to search

 

 

4. transit_search View & Template

Purpose: Ground transportation search and booking

View Logic:

def transit_search(request):

    """Transit search page with results"""

    stations = TransportStation.objects.filter(is_active=True).select_related('city')

    transits = None

    

    if request.GET.get('origin_station') and request.GET.get('destination_station'):

        origin_id = request.GET.get('origin_station')

        destination_id = request.GET.get('destination_station')

        departure_date = request.GET.get('departure_date')

        transit_type = request.GET.get('transit_type')

        

        transits_qs = Transit.objects.filter(

            origin_station_id=origin_id,

            destination_station_id=destination_id,

        ).select_related(

            'operator', 'origin_station__city', 'destination_station__city'

        )

        

        if departure_date:

            try:

                dep_date = datetime.strptime(departure_date, '%Y-%m-%d').date()

                transits_qs = transits_qs.filter(departure_time__date=dep_date)

            except ValueError:

                pass

        

        if transit_type:

            transits_qs = transits_qs.filter(type=transit_type)

        

        transits = transits_qs.order_by('departure_time')[:20]

Business Logic:

  • Multi-Modal Search: Supports bus, train, ferry, metro, taxi, car rental
  • Station-Based Routing: Uses transport stations instead of airports
  • Type Filtering: Additional filter by transportation mode
  • Flexible Search: Date and type filters are optional
  • Operator Integration: Includes transportation company information

Template Features (transit_search.html):

  • Station Selector: Dropdown of active transportation stations
  • Transport Type Filter: Bus, train, ferry, metro, taxi options
  • Date Selection: Optional departure date picker
  • Results Display: Transit options with operator and pricing
  • Multi-modal Results: Different transport types in same results
  • Booking Integration: Links to operator booking systems

Transit Search Flow:

1. User selects origin transport station

2. User selects destination transport station  

3. User optionally filters by transport type (bus, train, etc.)

4. User optionally selects departure date

5. System searches available transit options

6. Results show all matching services

7. User can view details or book directly

 

 

5. transit_detail View & Template

Purpose: Detailed ground transportation service information

View Logic:

def transit_detail(request, transit_id):

    """Transit detail page"""

    transit = get_object_or_404(

        Transit.objects.select_related(

            'operator', 'origin_station__city__country', 

            'destination_station__city__country'

        ),

        pk=transit_id

    )

    return render(request, 'transport/transit_detail.html', {'transit': transit})

Business Logic:

  • Service-Specific Details: Individual transit service information
  • Operator Information: Transportation company details
  • Geographic Context: Station locations with city/country context
  • Optimized Queries: Efficient data loading with select_related

Template Features (transit_detail.html):

  • Service Information: Route name, vehicle number, platform
  • Operator Details: Company information and contact details
  • Pricing Display: Standard and premium pricing options
  • Schedule Information: Departure/arrival times and duration
  • Station Details: Origin and destination with addresses
  • Special Notes: Service-specific information in multiple languages
  • Booking Links: Direct links to operator booking systems

 

 

6. flight_list View & Template (Legacy)

Purpose: Administrative flight listing with statistics

View Logic:

def flight_list(request):

    flights_qs = Flight.objects.select_related(

        'airline', 'aircraft', 'origin_airport__city__country', 

        'destination_airport__city__country'

    ).order_by('-departure_time')

    

    scheduled_count = flights_qs.filter(status='SCHEDULED').count()

    delayed_count = flights_qs.filter(status='DELAYED').count()

    

    flights = flights_qs[:50]  # Limit to 50 recent flights

Business Logic:

  • Administrative View: Operations team flight monitoring
  • Status Statistics: Real-time count of flight statuses
  • Recent Flights: Shows most recent departures first
  • Performance Limited: Caps at 50 flights for fast loading

Template Features (flight_list.html):

  • Statistics Dashboard: Scheduled vs delayed flight counts
  • Tabular Display: Comprehensive flight information table
  • Status Indicators: Visual status displays with color coding
  • Sortable Columns: Departure time, airline, route sorting
  • Administrative Tools: Links to flight management functions

 

 

7. transit_list View & Template (Legacy)

Purpose: Administrative transit service monitoring

View Logic:

def transit_list(request):

    transits_qs = Transit.objects.select_related(

        'operator', 'origin_station__city__country', 

        'destination_station__city__country'

    ).order_by('-departure_time')

    

    train_count = transits_qs.filter(type='TRAIN').count()

    bus_count = transits_qs.filter(type='BUS').count()

    metro_count = transits_qs.filter(type='METRO').count()

    taxi_count = transits_qs.filter(type='TAXI').count()

    ferry_count = transits_qs.filter(type='FERRY').count()

    

    transits = transits_qs[:50]  # Limit to 50 recent transits

Business Logic:

  • Multi-Modal Statistics: Counts by transportation type
  • Operations Dashboard: Real-time service monitoring
  • Type-Based Analytics: Understanding service distribution
  • Performance Management: Limited results for fast display

Template Features (transit_list.html):

  • Service Type Statistics: Visual breakdown by transport mode
  • Service Listings: Comprehensive transit service table
  • Operator Information: Transportation company details
  • Route Display: Origin to destination with timing
  • Administrative Controls: Service management tools

 

 

πŸ”„ Template Integration Patterns

Common Design Elements:

  1. Base Template: All extend 'blog/base.html' for consistency
  2. Multilingual Support: {% load i18n %} with conditional language displays
  3. Bootstrap Framework: Responsive design with consistent styling
  4. Icon Integration: FontAwesome icons for visual enhancement
  5. Form Handling: Proper form validation and error handling

 

 

User Journey Flow:

transport_home.html (Dashboard)

    ↓

flight_search.html (Search Form + Results)

    ↓

flight_detail.html (Detailed Information)

OR

transport_home.html (Dashboard)

    ↓

transit_search.html (Ground Transport Search)

    ↓

transit_detail.html (Service Details)

 

 

Administrative Flow:

flight_list.html (Operations Dashboard)

    ↓

flight_detail.html (Flight Management)

transit_list.html (Service Monitoring)

    ↓

transit_detail.html (Service Management)

Result: The transport system has complete template coverage with professional, multilingual templates supporting both customer-facing search functionality and administrative operations management. No additional templates are needed

 

 

 

Based on the transport views and templates in your workspace, here's an analysis of the transport system:

Transport Views Analysis (apps/transport/views.py)

Main Views Structure:

  1. transport_home - Dashboard with transport statistics
  2. flight_search - Flight search with filtering capabilities
  3. flight_detail - Individual flight details
  4. transit_search - Transit search (bus, train, metro, ferry, taxi)
  5. transit_detail - Individual transit details
  6. Legacy views - flight_list and transit_list for backward compatibility

Key Features:

Flight System:

  • Search functionality: Origin/destination by IATA codes, departure date filtering
  • Status filtering: Only shows SCHEDULED and DELAYED flights
  • Database optimization: Uses select_related for efficient queries
  • Result limiting: Maximum 20 results to prevent performance issues

Transit System:

  • Multi-modal support: BUS, TRAIN, METRO, FERRY, TAXI
  • Dynamic route mapping: Builds available routes JSON for frontend filtering
  • Advanced search: Origin/destination stations, date, and transit type filtering
  • Smart filtering: Frontend uses route data to show only valid destination options

Performance Optimizations:

  • Efficient queriesselect_related for foreign key relationships
  • Result pagination: Limited to 20/50 results
  • Cached route data: Pre-computed available routes for transit search

Template Analysis

Multi-language Support:

  • Vietnamese/English: Dynamic language switching using request.LANGUAGE_CODE
  • Localized content: All station names, city names, and descriptions support both languages

Flight Templates:

  • Search interface: (template/transport/flight_search.html)
  • Detail view: (template/transport/flight_detail.html)
  • List view: (template/transport/flight_list.html)

Transit Templates:

  • Search interface: (template/transport/transit_search.html)
  • Detail view: (template/transport/transit_detail.html)
  • List view: (template/transport/transit_list.html)

JavaScript Features:

  • Dynamic filtering: Transit type tabs filter available stations
  • Smart destination filtering: Only shows reachable destinations from selected origin
  • Route validation: Uses Django-generated route data to validate connections

UI/UX Elements:

  • Bootstrap 5: Modern responsive design
  • FontAwesome icons: Transport type indicators (plane, bus, train, ship, subway)
  • Color coding: Different colors for each transport type
  • Price display: Standard and premium pricing options
  • Status badges: Flight/transit status indicators

URL Structure (apps/transport/urls.py)

Integration Points:

  • Tour booking system: Connected to tour_operators for flight bookings
  • Admin interface: Comprehensive admin setup in admin.py
  • Database models: Referenced models include Flight, Transit, Airport, TransportStation, etc.

This transport system provides a comprehensive multi-modal transportation search and booking platform with strong internationalization support and efficient database queries.

 

 

Transport System Detailed Workflow

Based on the transport views and templates, here's the complete workflow for your Django travel application:

🏠 1. Transport Home Page (/transport/)

View: transport_home

def transport_home(request):

    context = {

        'airport_count': Airport.objects.filter(is_active=True).count(),

        'airline_count': Airline.objects.filter(is_active=True).count(),

        'station_count': TransportStation.objects.filter(is_active=True).count(),

        'city_count': City.objects.count(),

    }

    return render(request, 'transport/transport_home.html', context)

 

Workflow:

  1. User visits /transport/
  2. System counts active airports, airlines, stations, and cities
  3. Displays dashboard with transport statistics and navigation options
  4. User chooses between Flight Search or Transit Search

✈️ 2. Flight Search Workflow (/transport/flights/)

Step 1: Initial Page Load

def flight_search(request):

    airports = Airport.objects.filter(is_active=True).select_related('city', 'city__country')

    flights = None

 

Step 2: User Input & Search

  1. User selects:
    • Origin airport (IATA code)
    • Destination airport (IATA code)
    • Departure date (optional)
  2. Form submission triggers GET request with parameters:
    • ?origin=SGN&destination=HAN&departure_date=2024-08-20

Step 3: Backend Processing

if request.GET.get('origin') and request.GET.get('destination'):

    origin_code = request.GET.get('origin')

    destination_code = request.GET.get('destination')

    departure_date = request.GET.get('departure_date')

   

    flights_qs = Flight.objects.filter(

        origin_airport__iata_code=origin_code,

        destination_airport__iata_code=destination_code,

        status__in=['SCHEDULED', 'DELAYED']

    ).select_related(...)

 

Step 4: Results Display

  • Shows matching flights with airline, aircraft, times, prices
  • Limited to 20 results for performance
  • Each flight has "View Details" link

Step 5: Flight Detail (/transport/flights/{id}/)

def flight_detail(request, flight_id):

    flight = get_object_or_404(Flight.objects.select_related(...), pk=flight_id)

 

🚌 3. Transit Search Workflow (/transport/transit/)

Step 1: Page Load with Route Mapping

def transit_search(request):

    stations = TransportStation.objects.filter(is_active=True).select_related('city')

   

    # Build route mapping for JavaScript

    available_routes = {}

    all_transits = Transit.objects.select_related('origin_station', 'destination_station')

    for transit in all_transits:

        origin_id = transit.origin_station_id

        if origin_id not in available_routes:

            available_routes[origin_id] = set()

        available_routes[origin_id].add(transit.destination_station_id)

   

    route_data_json = json.dumps({str(k): list(v) for k, v in available_routes.items()})

 

Step 2: Frontend Filtering (JavaScript)

  1. Transit Type Selection:
    • User clicks Bus/Train/Ferry/Metro tab
    • JavaScript filters stations by type

 

    • document.querySelectorAll('[data-transit-type]').forEach(tab => {
    •     tab.addEventListener('click', function() {
    •         const transitType = this.dataset.transitType;
    •         filterStations(transitType);
    •     });
    • });Origin Station Selection:
    • JavaScript uses route_data to filter destination options
    • Only shows reachable destinations
  1.  

Step 3: Search Execution

  • if request.GET.get('origin_station') and request.GET.get('destination_station'):
  •     origin_id = request.GET.get('origin_station')
  •     destination_id = request.GET.get('destination_station')
  •     departure_date = request.GET.get('departure_date')
  •     transit_type = request.GET.get('transit_type')
  •    
  •     transits_qs = Transit.objects.filter(
  •         origin_station_id=origin_id,
  •         destination_station_id=destination_id,
  •     ).select_related('operator', 'origin_station__city', 'destination_station__city')Step 4: Results & Detail
  • Displays matching transit options
  • Links to transit detail page (/transport/transit/{id}/)

 


πŸ“Š 4. Legacy Views Workflow

Flight List (/transport/flights/list/)

def flight_list(request):

    flights_qs = Flight.objects.select_related(...).order_by('-departure_time')

   

    # Statistics calculation

    scheduled_count = flights_qs.filter(status='SCHEDULED').count()

    delayed_count = flights_qs.filter(status='DELAYED').count()

   

    flights = flights_qs[:50]  # Recent 50 flights

 

Transit List (/transport/transits/)

def transit_list(request):

    transits_qs = Transit.objects.select_related(...).order_by('-departure_time')

   

    # Statistics by type

    train_count = transits_qs.filter(type='TRAIN').count()

    bus_count = transits_qs.filter(type='BUS').count()

    # ... other types

   

    transits = transits_qs[:50]  # Recent 50 transits


πŸ”„ Complete User Journey Example

Scenario: User books Ho Chi Minh to Hanoi bus

  1. Home Page → User sees transport statistics
  2. Transit Search → Clicks "Transit Search"
  3. Select Bus Tab → JavaScript filters to show only bus stations
  4. Choose Origin → Selects "Ho Chi Minh City Bus Terminal"
  5. Smart Filtering → Destination dropdown shows only reachable cities
  6. Choose Destination → Selects "Hanoi Bus Station"
  7. Set Date → Picks departure date
  8. Search → System queries database for matching routes
  9. Results → Shows FUTA bus options with times/prices
  10. Detail View → User clicks on specific departure for full details
  11. Booking → (Integration point with booking system)

🎯 Key Technical Features

Performance Optimizations:

  • select_related() for efficient database queries
  • Result limiting (20 flights, 50 list items)
  • Cached route mapping for frontend filtering

User Experience:

  • Smart filtering: Only valid destinations shown
  • Real-time updates: Tab switching filters stations instantly
  • Multi-language: Vietnamese/English support
  • Responsive design: Bootstrap 5 mobile-friendly interface

Data Integration:

  • DSVN Railway: Vietnamese train system integration
  • FUTA Bus: Vietnamese bus network integration
  • Multiple operators: Airlines, bus companies, ferry services
  • Multi-modal: Seamless flight + transit booking

This workflow provides a comprehensive, user-friendly transport search and booking system with intelligent filtering and optimal performance.

 

Vietnamese translation is not available for this article. Showing English content:

Nhom

Notes

 

βœ… Template Coverage Analysis - COMPLETE COVERAGE

Views vs Templates Coverage:

View Function

Template Required

Template Exists

Status

transport_home

transport_home.html

βœ…

Complete

flight_search

flight_search.html

βœ…

Complete

flight_detail

flight_detail.html

βœ…

Complete

transit_search

transit_search.html

βœ…

Complete

transit_detail

transit_detail.html

βœ…

Complete

flight_list

flight_list.html

βœ…

Complete

transit_list

transit_list.html

βœ…

Complete

Result: βœ… ALL TEMPLATES EXIST - NO MISSING TEMPLATES

 

 

πŸš€ Detailed View & Template Analysis

 

 

1. transport_home View & Template

Purpose: Main transportation dashboard with overview and navigation

View Logic:

def transport_home(request):

    """Main transportation page with overview and stats"""

    context = {

        'airport_count': Airport.objects.filter(is_active=True).count(),

        'airline_count': Airline.objects.filter(is_active=True).count(),

        'station_count': TransportStation.objects.filter(is_active=True).count(),

        'city_count': City.objects.count(),

    }

    return render(request, 'transport/transport_home.html', context)

Business Logic:

  • Statistics Dashboard: Real-time counts of active transportation infrastructure
  • Navigation Hub: Central access point to all transport services
  • Performance Optimized: Simple counts without complex joins

Template Features (transport_home.html):

  • Multilingual Support: Full Vietnamese/English switching
  • Statistics Cards: Visual display of infrastructure counts
  • Service Cards: Flight search, transit search, quick links
  • Responsive Design: Bootstrap cards with icons
  • Call-to-Action: Direct links to search functions

User Experience Flow:

1. User lands on transport home page

2. Sees infrastructure statistics (airports, airlines, stations, cities)

3. Chooses between flight search or transit search

4. Navigates to appropriate search interface

 

 

2. flight_search View & Template

Purpose: Flight booking search with advanced filtering

View Logic:

def flight_search(request):

    """Flight search page with results"""

    airports = Airport.objects.filter(is_active=True).select_related('city', 'city__country')

    flights = None

    

    if request.GET.get('origin') and request.GET.get('destination'):

        origin_code = request.GET.get('origin')

        destination_code = request.GET.get('destination')

        departure_date = request.GET.get('departure_date')

        

        flights_qs = Flight.objects.filter(

            origin_airport__iata_code=origin_code,

            destination_airport__iata_code=destination_code,

            status__in=['SCHEDULED', 'DELAYED']

        ).select_related(

            'airline', 'aircraft', 'origin_airport__city', 'destination_airport__city'

        )

        

        if departure_date:

            try:

                dep_date = datetime.strptime(departure_date, '%Y-%m-%d').date()

                flights_qs = flights_qs.filter(departure_time__date=dep_date)

            except ValueError:

                pass

        

        flights = flights_qs.order_by('departure_time')[:20]  # Limit to 20 results

Business Logic:

  • Dynamic Search: Shows form initially, results after search
  • IATA Code Filtering: Uses standard airport codes for search
  • Status Filtering: Only shows bookable flights (SCHEDULED/DELAYED)
  • Performance Optimization: select_related for efficient database queries
  • Result Limiting: Prevents performance issues with large datasets
  • Date Validation: Graceful handling of invalid date formats

Template Features (flight_search.html):

  • Search Form: Origin/destination airport selectors with IATA codes
  • Date Picker: Departure date selection
  • Multilingual Dropdowns: Airport names in user's preferred language
  • Results Display: Flight cards with pricing and timing
  • Error Handling: Graceful handling of no results
  • Responsive Design: Mobile-friendly search interface

Search Flow:

1. User selects origin airport (dropdown with IATA codes)

2. User selects destination airport

3. User chooses departure date (optional)

4. System filters flights by route and status

5. Results displayed with flight details and pricing

6. User can click through to flight details

 

 

3. flight_detail View & Template

Purpose: Comprehensive flight information page

View Logic:

def flight_detail(request, flight_id):

    """Flight detail page"""

    flight = get_object_or_404(

        Flight.objects.select_related(

            'airline', 'aircraft', 'origin_airport__city__country', 

            'destination_airport__city__country'

        ),

        pk=flight_id

    )

    return render(request, 'transport/flight_detail.html', {'flight': flight})

Business Logic:

  • Single Flight Focus: Detailed view of specific flight
  • Comprehensive Data: All related information in one query
  • Performance Optimized: select_related prevents N+1 queries
  • 404 Handling: Graceful handling of invalid flight IDs

Template Features (flight_detail.html):

  • Flight Information Card: Complete flight details
  • Aircraft Details: Plane type, capacity, specifications
  • Airline Information: Carrier details and branding
  • Route Information: Origin and destination with city/country
  • Pricing Display: All class pricing (Economy, Business, First)
  • Operational Details: Gate, terminal, status information
  • Booking Integration: Links to booking systems

Detail Flow:

1. User clicks on flight from search results

2. System loads complete flight information

3. Displays comprehensive flight details

4. User can proceed to booking or return to search

 

 

4. transit_search View & Template

Purpose: Ground transportation search and booking

View Logic:

def transit_search(request):

    """Transit search page with results"""

    stations = TransportStation.objects.filter(is_active=True).select_related('city')

    transits = None

    

    if request.GET.get('origin_station') and request.GET.get('destination_station'):

        origin_id = request.GET.get('origin_station')

        destination_id = request.GET.get('destination_station')

        departure_date = request.GET.get('departure_date')

        transit_type = request.GET.get('transit_type')

        

        transits_qs = Transit.objects.filter(

            origin_station_id=origin_id,

            destination_station_id=destination_id,

        ).select_related(

            'operator', 'origin_station__city', 'destination_station__city'

        )

        

        if departure_date:

            try:

                dep_date = datetime.strptime(departure_date, '%Y-%m-%d').date()

                transits_qs = transits_qs.filter(departure_time__date=dep_date)

            except ValueError:

                pass

        

        if transit_type:

            transits_qs = transits_qs.filter(type=transit_type)

        

        transits = transits_qs.order_by('departure_time')[:20]

Business Logic:

  • Multi-Modal Search: Supports bus, train, ferry, metro, taxi, car rental
  • Station-Based Routing: Uses transport stations instead of airports
  • Type Filtering: Additional filter by transportation mode
  • Flexible Search: Date and type filters are optional
  • Operator Integration: Includes transportation company information

Template Features (transit_search.html):

  • Station Selector: Dropdown of active transportation stations
  • Transport Type Filter: Bus, train, ferry, metro, taxi options
  • Date Selection: Optional departure date picker
  • Results Display: Transit options with operator and pricing
  • Multi-modal Results: Different transport types in same results
  • Booking Integration: Links to operator booking systems

Transit Search Flow:

1. User selects origin transport station

2. User selects destination transport station  

3. User optionally filters by transport type (bus, train, etc.)

4. User optionally selects departure date

5. System searches available transit options

6. Results show all matching services

7. User can view details or book directly

 

 

5. transit_detail View & Template

Purpose: Detailed ground transportation service information

View Logic:

def transit_detail(request, transit_id):

    """Transit detail page"""

    transit = get_object_or_404(

        Transit.objects.select_related(

            'operator', 'origin_station__city__country', 

            'destination_station__city__country'

        ),

        pk=transit_id

    )

    return render(request, 'transport/transit_detail.html', {'transit': transit})

Business Logic:

  • Service-Specific Details: Individual transit service information
  • Operator Information: Transportation company details
  • Geographic Context: Station locations with city/country context
  • Optimized Queries: Efficient data loading with select_related

Template Features (transit_detail.html):

  • Service Information: Route name, vehicle number, platform
  • Operator Details: Company information and contact details
  • Pricing Display: Standard and premium pricing options
  • Schedule Information: Departure/arrival times and duration
  • Station Details: Origin and destination with addresses
  • Special Notes: Service-specific information in multiple languages
  • Booking Links: Direct links to operator booking systems

 

 

6. flight_list View & Template (Legacy)

Purpose: Administrative flight listing with statistics

View Logic:

def flight_list(request):

    flights_qs = Flight.objects.select_related(

        'airline', 'aircraft', 'origin_airport__city__country', 

        'destination_airport__city__country'

    ).order_by('-departure_time')

    

    scheduled_count = flights_qs.filter(status='SCHEDULED').count()

    delayed_count = flights_qs.filter(status='DELAYED').count()

    

    flights = flights_qs[:50]  # Limit to 50 recent flights

Business Logic:

  • Administrative View: Operations team flight monitoring
  • Status Statistics: Real-time count of flight statuses
  • Recent Flights: Shows most recent departures first
  • Performance Limited: Caps at 50 flights for fast loading

Template Features (flight_list.html):

  • Statistics Dashboard: Scheduled vs delayed flight counts
  • Tabular Display: Comprehensive flight information table
  • Status Indicators: Visual status displays with color coding
  • Sortable Columns: Departure time, airline, route sorting
  • Administrative Tools: Links to flight management functions

 

 

7. transit_list View & Template (Legacy)

Purpose: Administrative transit service monitoring

View Logic:

def transit_list(request):

    transits_qs = Transit.objects.select_related(

        'operator', 'origin_station__city__country', 

        'destination_station__city__country'

    ).order_by('-departure_time')

    

    train_count = transits_qs.filter(type='TRAIN').count()

    bus_count = transits_qs.filter(type='BUS').count()

    metro_count = transits_qs.filter(type='METRO').count()

    taxi_count = transits_qs.filter(type='TAXI').count()

    ferry_count = transits_qs.filter(type='FERRY').count()

    

    transits = transits_qs[:50]  # Limit to 50 recent transits

Business Logic:

  • Multi-Modal Statistics: Counts by transportation type
  • Operations Dashboard: Real-time service monitoring
  • Type-Based Analytics: Understanding service distribution
  • Performance Management: Limited results for fast display

Template Features (transit_list.html):

  • Service Type Statistics: Visual breakdown by transport mode
  • Service Listings: Comprehensive transit service table
  • Operator Information: Transportation company details
  • Route Display: Origin to destination with timing
  • Administrative Controls: Service management tools

 

 

πŸ”„ Template Integration Patterns

Common Design Elements:

  1. Base Template: All extend 'blog/base.html' for consistency
  2. Multilingual Support: {% load i18n %} with conditional language displays
  3. Bootstrap Framework: Responsive design with consistent styling
  4. Icon Integration: FontAwesome icons for visual enhancement
  5. Form Handling: Proper form validation and error handling

 

 

User Journey Flow:

transport_home.html (Dashboard)

    ↓

flight_search.html (Search Form + Results)

    ↓

flight_detail.html (Detailed Information)

OR

transport_home.html (Dashboard)

    ↓

transit_search.html (Ground Transport Search)

    ↓

transit_detail.html (Service Details)

 

 

Administrative Flow:

flight_list.html (Operations Dashboard)

    ↓

flight_detail.html (Flight Management)

transit_list.html (Service Monitoring)

    ↓

transit_detail.html (Service Management)

Result: The transport system has complete template coverage with professional, multilingual templates supporting both customer-facing search functionality and administrative operations management. No additional templates are needed

 

 

 

Based on the transport views and templates in your workspace, here's an analysis of the transport system:

Transport Views Analysis (apps/transport/views.py)

Main Views Structure:

  1. transport_home - Dashboard with transport statistics
  2. flight_search - Flight search with filtering capabilities
  3. flight_detail - Individual flight details
  4. transit_search - Transit search (bus, train, metro, ferry, taxi)
  5. transit_detail - Individual transit details
  6. Legacy views - flight_list and transit_list for backward compatibility

Key Features:

Flight System:

  • Search functionality: Origin/destination by IATA codes, departure date filtering
  • Status filtering: Only shows SCHEDULED and DELAYED flights
  • Database optimization: Uses select_related for efficient queries
  • Result limiting: Maximum 20 results to prevent performance issues

Transit System:

  • Multi-modal support: BUS, TRAIN, METRO, FERRY, TAXI
  • Dynamic route mapping: Builds available routes JSON for frontend filtering
  • Advanced search: Origin/destination stations, date, and transit type filtering
  • Smart filtering: Frontend uses route data to show only valid destination options

Performance Optimizations:

  • Efficient queriesselect_related for foreign key relationships
  • Result pagination: Limited to 20/50 results
  • Cached route data: Pre-computed available routes for transit search

Template Analysis

Multi-language Support:

  • Vietnamese/English: Dynamic language switching using request.LANGUAGE_CODE
  • Localized content: All station names, city names, and descriptions support both languages

Flight Templates:

  • Search interface: (template/transport/flight_search.html)
  • Detail view: (template/transport/flight_detail.html)
  • List view: (template/transport/flight_list.html)

Transit Templates:

  • Search interface: (template/transport/transit_search.html)
  • Detail view: (template/transport/transit_detail.html)
  • List view: (template/transport/transit_list.html)

JavaScript Features:

  • Dynamic filtering: Transit type tabs filter available stations
  • Smart destination filtering: Only shows reachable destinations from selected origin
  • Route validation: Uses Django-generated route data to validate connections

UI/UX Elements:

  • Bootstrap 5: Modern responsive design
  • FontAwesome icons: Transport type indicators (plane, bus, train, ship, subway)
  • Color coding: Different colors for each transport type
  • Price display: Standard and premium pricing options
  • Status badges: Flight/transit status indicators

URL Structure (apps/transport/urls.py)

Integration Points:

  • Tour booking system: Connected to tour_operators for flight bookings
  • Admin interface: Comprehensive admin setup in admin.py
  • Database models: Referenced models include Flight, Transit, Airport, TransportStation, etc.

This transport system provides a comprehensive multi-modal transportation search and booking platform with strong internationalization support and efficient database queries.

 

 

Transport System Detailed Workflow

Based on the transport views and templates, here's the complete workflow for your Django travel application:

🏠 1. Transport Home Page (/transport/)

View: transport_home

def transport_home(request):

    context = {

        'airport_count': Airport.objects.filter(is_active=True).count(),

        'airline_count': Airline.objects.filter(is_active=True).count(),

        'station_count': TransportStation.objects.filter(is_active=True).count(),

        'city_count': City.objects.count(),

    }

    return render(request, 'transport/transport_home.html', context)

 

Workflow:

  1. User visits /transport/
  2. System counts active airports, airlines, stations, and cities
  3. Displays dashboard with transport statistics and navigation options
  4. User chooses between Flight Search or Transit Search

✈️ 2. Flight Search Workflow (/transport/flights/)

Step 1: Initial Page Load

def flight_search(request):

    airports = Airport.objects.filter(is_active=True).select_related('city', 'city__country')

    flights = None

 

Step 2: User Input & Search

  1. User selects:
    • Origin airport (IATA code)
    • Destination airport (IATA code)
    • Departure date (optional)
  2. Form submission triggers GET request with parameters:
    • ?origin=SGN&destination=HAN&departure_date=2024-08-20

Step 3: Backend Processing

if request.GET.get('origin') and request.GET.get('destination'):

    origin_code = request.GET.get('origin')

    destination_code = request.GET.get('destination')

    departure_date = request.GET.get('departure_date')

   

    flights_qs = Flight.objects.filter(

        origin_airport__iata_code=origin_code,

        destination_airport__iata_code=destination_code,

        status__in=['SCHEDULED', 'DELAYED']

    ).select_related(...)

 

Step 4: Results Display

  • Shows matching flights with airline, aircraft, times, prices
  • Limited to 20 results for performance
  • Each flight has "View Details" link

Step 5: Flight Detail (/transport/flights/{id}/)

def flight_detail(request, flight_id):

    flight = get_object_or_404(Flight.objects.select_related(...), pk=flight_id)

 

🚌 3. Transit Search Workflow (/transport/transit/)

Step 1: Page Load with Route Mapping

def transit_search(request):

    stations = TransportStation.objects.filter(is_active=True).select_related('city')

   

    # Build route mapping for JavaScript

    available_routes = {}

    all_transits = Transit.objects.select_related('origin_station', 'destination_station')

    for transit in all_transits:

        origin_id = transit.origin_station_id

        if origin_id not in available_routes:

            available_routes[origin_id] = set()

        available_routes[origin_id].add(transit.destination_station_id)

   

    route_data_json = json.dumps({str(k): list(v) for k, v in available_routes.items()})

 

Step 2: Frontend Filtering (JavaScript)

  1. Transit Type Selection:
    • User clicks Bus/Train/Ferry/Metro tab
    • JavaScript filters stations by type

 

    • document.querySelectorAll('[data-transit-type]').forEach(tab => {
    •     tab.addEventListener('click', function() {
    •         const transitType = this.dataset.transitType;
    •         filterStations(transitType);
    •     });
    • });Origin Station Selection:
    • JavaScript uses route_data to filter destination options
    • Only shows reachable destinations
  1.  

Step 3: Search Execution

  • if request.GET.get('origin_station') and request.GET.get('destination_station'):
  •     origin_id = request.GET.get('origin_station')
  •     destination_id = request.GET.get('destination_station')
  •     departure_date = request.GET.get('departure_date')
  •     transit_type = request.GET.get('transit_type')
  •    
  •     transits_qs = Transit.objects.filter(
  •         origin_station_id=origin_id,
  •         destination_station_id=destination_id,
  •     ).select_related('operator', 'origin_station__city', 'destination_station__city')Step 4: Results & Detail
  • Displays matching transit options
  • Links to transit detail page (/transport/transit/{id}/)

 


πŸ“Š 4. Legacy Views Workflow

Flight List (/transport/flights/list/)

def flight_list(request):

    flights_qs = Flight.objects.select_related(...).order_by('-departure_time')

   

    # Statistics calculation

    scheduled_count = flights_qs.filter(status='SCHEDULED').count()

    delayed_count = flights_qs.filter(status='DELAYED').count()

   

    flights = flights_qs[:50]  # Recent 50 flights

 

Transit List (/transport/transits/)

def transit_list(request):

    transits_qs = Transit.objects.select_related(...).order_by('-departure_time')

   

    # Statistics by type

    train_count = transits_qs.filter(type='TRAIN').count()

    bus_count = transits_qs.filter(type='BUS').count()

    # ... other types

   

    transits = transits_qs[:50]  # Recent 50 transits


πŸ”„ Complete User Journey Example

Scenario: User books Ho Chi Minh to Hanoi bus

  1. Home Page → User sees transport statistics
  2. Transit Search → Clicks "Transit Search"
  3. Select Bus Tab → JavaScript filters to show only bus stations
  4. Choose Origin → Selects "Ho Chi Minh City Bus Terminal"
  5. Smart Filtering → Destination dropdown shows only reachable cities
  6. Choose Destination → Selects "Hanoi Bus Station"
  7. Set Date → Picks departure date
  8. Search → System queries database for matching routes
  9. Results → Shows FUTA bus options with times/prices
  10. Detail View → User clicks on specific departure for full details
  11. Booking → (Integration point with booking system)

🎯 Key Technical Features

Performance Optimizations:

  • select_related() for efficient database queries
  • Result limiting (20 flights, 50 list items)
  • Cached route mapping for frontend filtering

User Experience:

  • Smart filtering: Only valid destinations shown
  • Real-time updates: Tab switching filters stations instantly
  • Multi-language: Vietnamese/English support
  • Responsive design: Bootstrap 5 mobile-friendly interface

Data Integration:

  • DSVN Railway: Vietnamese train system integration
  • FUTA Bus: Vietnamese bus network integration
  • Multiple operators: Airlines, bus companies, ferry services
  • Multi-modal: Seamless flight + transit booking

This workflow provides a comprehensive, user-friendly transport search and booking system with intelligent filtering and optimal performance.

 

Attached Files

0 files found.

You are viewing this article in public mode. Some features may be limited.