admin.py 3.21 KB
Newer Older
1
"""
2
3
api/admin.py

4
5
6
7
Django admin interface configuration.

https://docs.djangoproject.com/en/1.11/ref/contrib/admin/
"""
8
9
10
11
12
# Future Imports
from __future__ import (absolute_import, division, print_function,
                        unicode_literals)

# Django Imports
13
from django.contrib import admin
David Haynes's avatar
David Haynes committed
14
from django.contrib.gis.admin import OSMGeoAdmin
15
# App Imports
David Haynes's avatar
David Haynes committed
16
from .models import Facility, Schedule, OpenTime, Category, Location, Alert
17

Ben Waters's avatar
Ben Waters committed
18
class FacilityAdmin(admin.ModelAdmin):
19
    """
David Haynes's avatar
David Haynes committed
20
21
22
    Custom Admin panel for the Facility model.

    Allows admins to create new facilities through the admin interface.
23
    """
David Haynes's avatar
David Haynes committed
24
    # Allow filtering by the following fields
David Haynes's avatar
David Haynes committed
25
    list_filter = ['facility_category', 'facility_location']
David Haynes's avatar
David Haynes committed
26
27
    # Modify the rendered layout of the "create a new facility" page
    # We are basically reordering things to look nicer to the user here
28
29
    fieldsets = (
        (None, {
30
            'fields': ('facility_name', 'logo', 'facility_category', 'facility_location',
31
                       'main_schedule', 'special_schedules', 
32
                       'facility_product_tags', 'tapingo_url','phone_number', 'note', 'owners'),
33
        }),
34
    )
35

36
37
38
39
40
41
42
43
44
45
class OpenTimeInline(admin.TabularInline):
    """
    A table of time periods that represent an "open time" for a Facility.

    https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.TabularInline
    """
    # Columns correspond to each attribute in the OpenTime table
    model = OpenTime
    # 7 days of the week, so only have 7 rows
    max_num = 7
46
47
48
49
50
51
52
53
54
55
    extra = 7
    # We are basically reordering things to look nicer to the user here
    fieldsets = (
        (None, {
            'fields': (
                ('start_day', 'start_time'),
                ('end_day', 'end_time')
            ),
        }),
    )
56

57
class ScheduleAdmin(admin.ModelAdmin):
58
    """
David Haynes's avatar
David Haynes committed
59
60
61
62
63
    Custom Admin panel for the Schedule model.

    Allows admins to create new schedules through the admin interface.
    Additionally, we append the OpenTimeInline table to allow for open times to
    be defined for the schedule we are creating.
64
    """
David Haynes's avatar
David Haynes committed
65
    # Allow filtering by the following fields
66
    list_display = ['name', 'modified']
David Haynes's avatar
David Haynes committed
67
    # Append the OpenTimeInline table to the end of our admin panel
68
    inlines = [OpenTimeInline, ]
David Haynes's avatar
David Haynes committed
69
    # Modify the rendered layout of the "create a new facility" page
70
71
    fieldsets = (
        (None, {
72
73
74
            'fields': ('name',
                       # Pair valid_start and valid_end together on the same
                       # line
David Haynes's avatar
David Haynes committed
75
                       ('valid_start', 'valid_end'),
76
                       'twenty_four_hours',
77
78
                       'schedule_for_removal',
                       'promote_to_main')
David Haynes's avatar
David Haynes committed
79
        }),
80
    )
81

David Haynes's avatar
David Haynes committed
82
# Register the custom administration panels
83
# https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#modeladmin-objects
Ben Waters's avatar
Ben Waters committed
84
admin.site.register(Facility, FacilityAdmin)
85
admin.site.register(Schedule, ScheduleAdmin)
David Haynes's avatar
David Haynes committed
86
# https://docs.djangoproject.com/en/1.11/ref/contrib/gis/admin/#osmgeoadmin
87
88
89
OSMGeoAdmin.default_lon = -8605757.16502
OSMGeoAdmin.default_lat = 4697457.00333
OSMGeoAdmin.default_zoom = 15
David Haynes's avatar
David Haynes committed
90
admin.site.register(Location, OSMGeoAdmin)
91
92
# Use the default ModelAdmin interface for these
admin.site.register(Category)
David Haynes's avatar
David Haynes committed
93
admin.site.register(Alert)