Update settings and urls to fix new deprecations

This commit is contained in:
Tom Price
2016-03-31 12:33:46 +01:00
parent 98ee9bb0db
commit d43e4b2465
3 changed files with 169 additions and 164 deletions

View File

@@ -10,6 +10,7 @@ https://docs.djangoproject.com/en/1.7/ref/settings/
# Build paths inside the project like this: os.path.join(BASE_DIR, ...) # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) BASE_DIR = os.path.dirname(os.path.dirname(__file__))
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
@@ -18,13 +19,12 @@ SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/ # See https://docs.djangoproject.com/en/1.7/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret! # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = os.environ.get('SECRET_KEY') if os.environ.get('SECRET_KEY') else 'gxhy(a#5mhp289_=6xx$7jh=eh$ymxg^ymc+di*0c*geiu3p_e' SECRET_KEY = os.environ.get('SECRET_KEY') if os.environ.get(
'SECRET_KEY') else 'gxhy(a#5mhp289_=6xx$7jh=eh$ymxg^ymc+di*0c*geiu3p_e'
# SECURITY WARNING: don't run with debug turned on in production! # SECURITY WARNING: don't run with debug turned on in production!
DEBUG = bool(int(os.environ.get('DEBUG'))) if os.environ.get('DEBUG') else True DEBUG = bool(int(os.environ.get('DEBUG'))) if os.environ.get('DEBUG') else True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = ['pyrigs.nottinghamtec.co.uk', 'rigs.nottinghamtec.co.uk', 'pyrigs.herokuapp.com'] ALLOWED_HOSTS = ['pyrigs.nottinghamtec.co.uk', 'rigs.nottinghamtec.co.uk', 'pyrigs.herokuapp.com']
INTERNAL_IPS = ['127.0.0.1'] INTERNAL_IPS = ['127.0.0.1']
@@ -33,7 +33,6 @@ ADMINS = (
('Tom Price', 'tomtom5152@gmail.com') ('Tom Price', 'tomtom5152@gmail.com')
) )
# Application definition # Application definition
INSTALLED_APPS = ( INSTALLED_APPS = (
@@ -69,7 +68,6 @@ ROOT_URLCONF = 'PyRIGS.urls'
WSGI_APPLICATION = 'PyRIGS.wsgi.application' WSGI_APPLICATION = 'PyRIGS.wsgi.application'
# Database # Database
# https://docs.djangoproject.com/en/1.7/ref/settings/#databases # https://docs.djangoproject.com/en/1.7/ref/settings/#databases
DATABASES = { DATABASES = {
@@ -81,6 +79,7 @@ DATABASES = {
if not DEBUG: if not DEBUG:
import dj_database_url import dj_database_url
DATABASES['default'] = dj_database_url.config() DATABASES['default'] = dj_database_url.config()
# Logging # Logging
@@ -111,12 +110,12 @@ LOGGING = {
'mail_admins': { 'mail_admins': {
'class': 'django.utils.log.AdminEmailHandler', 'class': 'django.utils.log.AdminEmailHandler',
'level': 'ERROR', 'level': 'ERROR',
# But the emails are plain text by default - HTML is nicer # But the emails are plain text by default - HTML is nicer
'include_html': True, 'include_html': True,
}, },
}, },
'loggers': { 'loggers': {
# Again, default Django configuration to email unhandled exceptions # Again, default Django configuration to email unhandled exceptions
'django.request': { 'django.request': {
'handlers': ['mail_admins'], 'handlers': ['mail_admins'],
'level': 'ERROR', 'level': 'ERROR',
@@ -183,19 +182,7 @@ USE_L10N = True
USE_TZ = True USE_TZ = True
DATETIME_INPUT_FORMATS = ('%Y-%m-%dT%H:%M','%Y-%m-%dT%H:%M:%S') DATETIME_INPUT_FORMATS = ('%Y-%m-%dT%H:%M', '%Y-%m-%dT%H:%M:%S')
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.core.context_processors.request",
"django.contrib.messages.context_processors.messages",
)
# Static files (CSS, JavaScript, Images) # Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/ # https://docs.djangoproject.com/en/1.7/howto/static-files/
@@ -206,10 +193,28 @@ STATIC_DIRS = (
os.path.join(BASE_DIR, 'static/') os.path.join(BASE_DIR, 'static/')
) )
TEMPLATE_DIRS = ( TEMPLATES = [
os.path.join(BASE_DIR, 'templates'), {
) 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.core.context_processors.request",
"django.contrib.messages.context_processors.messages",
]
},
},
]
USE_GRAVATAR=True USE_GRAVATAR = True
TERMS_OF_HIRE_URL = "http://www.nottinghamtec.co.uk/terms.pdf" TERMS_OF_HIRE_URL = "http://www.nottinghamtec.co.uk/terms.pdf"

View File

@@ -6,7 +6,7 @@ from registration.backends.default.views import RegistrationView
import RIGS import RIGS
from RIGS import regbackend from RIGS import regbackend
urlpatterns = patterns('', urlpatterns = [
# Examples: # Examples:
# url(r'^$', 'PyRIGS.views.home', name='home'), # url(r'^$', 'PyRIGS.views.home', name='home'),
# url(r'^blog/', include('blog.urls')), # url(r'^blog/', include('blog.urls')),
@@ -18,7 +18,7 @@ urlpatterns = patterns('',
url('^user/', include('registration.backends.default.urls')), url('^user/', include('registration.backends.default.urls')),
url(r'^admin/', include(admin.site.urls)), url(r'^admin/', include(admin.site.urls)),
) ]
if settings.DEBUG: if settings.DEBUG:
urlpatterns += staticfiles_urlpatterns() urlpatterns += staticfiles_urlpatterns()

View File

@@ -1,4 +1,5 @@
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from django.contrib.auth.views import password_reset
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from RIGS import models, views, rigboard, finance, ical, versioning, forms from RIGS import models, views, rigboard, finance, ical, versioning, forms
from django.views.generic import RedirectView from django.views.generic import RedirectView
@@ -6,153 +7,152 @@ from django.views.generic import RedirectView
from PyRIGS.decorators import permission_required_with_403 from PyRIGS.decorators import permission_required_with_403
from PyRIGS.decorators import api_key_required from PyRIGS.decorators import api_key_required
urlpatterns = patterns('', urlpatterns = [
# Examples: # Examples:
# url(r'^$', 'PyRIGS.views.home', name='home'), # url(r'^$', 'PyRIGS.views.home', name='home'),
# url(r'^blog/', include('blog.urls')), # url(r'^blog/', include('blog.urls')),
url('^$', login_required(views.Index.as_view()), name='index'), url('^$', login_required(views.Index.as_view()), name='index'),
url(r'^closemodal/$', views.CloseModal.as_view(), name='closemodal'), url(r'^closemodal/$', views.CloseModal.as_view(), name='closemodal'),
url('^user/login/$', 'RIGS.views.login', name='login'), url('^user/login/$', views.login, name='login'),
url(r'^user/password_reset/$', 'django.contrib.auth.views.password_reset', {'password_reset_form':forms.PasswordReset}), url(r'^user/password_reset/$', password_reset, {'password_reset_form': forms.PasswordReset}),
# People # People
url(r'^people/$', permission_required_with_403('RIGS.view_person')(views.PersonList.as_view()), url(r'^people/$', permission_required_with_403('RIGS.view_person')(views.PersonList.as_view()),
name='person_list'), name='person_list'),
url(r'^people/add/$', url(r'^people/add/$',
permission_required_with_403('RIGS.add_person')(views.PersonCreate.as_view()), permission_required_with_403('RIGS.add_person')(views.PersonCreate.as_view()),
name='person_create'), name='person_create'),
url(r'^people/(?P<pk>\d+)/$', url(r'^people/(?P<pk>\d+)/$',
permission_required_with_403('RIGS.view_person')(views.PersonDetail.as_view()), permission_required_with_403('RIGS.view_person')(views.PersonDetail.as_view()),
name='person_detail'), name='person_detail'),
url(r'^people/(?P<pk>\d+)/history/$', url(r'^people/(?P<pk>\d+)/history/$',
permission_required_with_403('RIGS.view_person')(versioning.VersionHistory.as_view()), permission_required_with_403('RIGS.view_person')(versioning.VersionHistory.as_view()),
name='person_history', kwargs={'model': models.Person}), name='person_history', kwargs={'model': models.Person}),
url(r'^people/(?P<pk>\d+)/edit/$', url(r'^people/(?P<pk>\d+)/edit/$',
permission_required_with_403('RIGS.change_person')(views.PersonUpdate.as_view()), permission_required_with_403('RIGS.change_person')(views.PersonUpdate.as_view()),
name='person_update'), name='person_update'),
# Organisations # Organisations
url(r'^organisations/$', url(r'^organisations/$',
permission_required_with_403('RIGS.view_organisation')(views.OrganisationList.as_view()), permission_required_with_403('RIGS.view_organisation')(views.OrganisationList.as_view()),
name='organisation_list'), name='organisation_list'),
url(r'^organisations/add/$', url(r'^organisations/add/$',
permission_required_with_403('RIGS.add_organisation')(views.OrganisationCreate.as_view()), permission_required_with_403('RIGS.add_organisation')(views.OrganisationCreate.as_view()),
name='organisation_create'), name='organisation_create'),
url(r'^organisations/(?P<pk>\d+)/$', url(r'^organisations/(?P<pk>\d+)/$',
permission_required_with_403('RIGS.view_organisation')(views.OrganisationDetail.as_view()), permission_required_with_403('RIGS.view_organisation')(views.OrganisationDetail.as_view()),
name='organisation_detail'), name='organisation_detail'),
url(r'^organisations/(?P<pk>\d+)/history/$', url(r'^organisations/(?P<pk>\d+)/history/$',
permission_required_with_403('RIGS.view_organisation')(versioning.VersionHistory.as_view()), permission_required_with_403('RIGS.view_organisation')(versioning.VersionHistory.as_view()),
name='organisation_history', kwargs={'model': models.Organisation}), name='organisation_history', kwargs={'model': models.Organisation}),
url(r'^organisations/(?P<pk>\d+)/edit/$', url(r'^organisations/(?P<pk>\d+)/edit/$',
permission_required_with_403('RIGS.change_organisation')(views.OrganisationUpdate.as_view()), permission_required_with_403('RIGS.change_organisation')(views.OrganisationUpdate.as_view()),
name='organisation_update'), name='organisation_update'),
# Venues # Venues
url(r'^venues/$', url(r'^venues/$',
permission_required_with_403('RIGS.view_venue')(views.VenueList.as_view()), permission_required_with_403('RIGS.view_venue')(views.VenueList.as_view()),
name='venue_list'), name='venue_list'),
url(r'^venues/add/$', url(r'^venues/add/$',
permission_required_with_403('RIGS.add_venue')(views.VenueCreate.as_view()), permission_required_with_403('RIGS.add_venue')(views.VenueCreate.as_view()),
name='venue_create'), name='venue_create'),
url(r'^venues/(?P<pk>\d+)/$', url(r'^venues/(?P<pk>\d+)/$',
permission_required_with_403('RIGS.view_venue')(views.VenueDetail.as_view()), permission_required_with_403('RIGS.view_venue')(views.VenueDetail.as_view()),
name='venue_detail'), name='venue_detail'),
url(r'^venues/(?P<pk>\d+)/history/$', url(r'^venues/(?P<pk>\d+)/history/$',
permission_required_with_403('RIGS.view_venue')(versioning.VersionHistory.as_view()), permission_required_with_403('RIGS.view_venue')(versioning.VersionHistory.as_view()),
name='venue_history', kwargs={'model': models.Venue}), name='venue_history', kwargs={'model': models.Venue}),
url(r'^venues/(?P<pk>\d+)/edit/$', url(r'^venues/(?P<pk>\d+)/edit/$',
permission_required_with_403('RIGS.change_venue')(views.VenueUpdate.as_view()), permission_required_with_403('RIGS.change_venue')(views.VenueUpdate.as_view()),
name='venue_update'), name='venue_update'),
# Rigboard # Rigboard
url(r'^rigboard/$', login_required(rigboard.RigboardIndex.as_view()), name='rigboard'), url(r'^rigboard/$', login_required(rigboard.RigboardIndex.as_view()), name='rigboard'),
url(r'^rigboard/calendar/$', login_required()(rigboard.WebCalendar.as_view()), name='web_calendar'), url(r'^rigboard/calendar/$', login_required()(rigboard.WebCalendar.as_view()), name='web_calendar'),
url(r'^rigboard/calendar/(?P<view>(month|week|day))/$', login_required()(rigboard.WebCalendar.as_view()), name='web_calendar'), url(r'^rigboard/calendar/(?P<view>(month|week|day))/$', login_required()(rigboard.WebCalendar.as_view()),
url(r'^rigboard/calendar/(?P<view>(month|week|day))/(?P<date>(\d{4}-\d{2}-\d{2}))/$', login_required()(rigboard.WebCalendar.as_view()), name='web_calendar'), name='web_calendar'),
url(r'^rigboard/archive/$', RedirectView.as_view(permanent=True,pattern_name='event_archive')), url(r'^rigboard/calendar/(?P<view>(month|week|day))/(?P<date>(\d{4}-\d{2}-\d{2}))/$',
url(r'^rigboard/activity/$', login_required()(rigboard.WebCalendar.as_view()), name='web_calendar'),
permission_required_with_403('RIGS.view_event')(versioning.ActivityTable.as_view()), url(r'^rigboard/archive/$', RedirectView.as_view(permanent=True, pattern_name='event_archive')),
name='activity_table'), url(r'^rigboard/activity/$',
url(r'^rigboard/activity/feed/$', permission_required_with_403('RIGS.view_event')(versioning.ActivityTable.as_view()),
permission_required_with_403('RIGS.view_event')(versioning.ActivityFeed.as_view()), name='activity_table'),
name='activity_feed'), url(r'^rigboard/activity/feed/$',
permission_required_with_403('RIGS.view_event')(versioning.ActivityFeed.as_view()),
name='activity_feed'),
url(r'^event/(?P<pk>\d+)/$', url(r'^event/(?P<pk>\d+)/$',
permission_required_with_403('RIGS.view_event')(rigboard.EventDetail.as_view()), permission_required_with_403('RIGS.view_event')(rigboard.EventDetail.as_view()),
name='event_detail'), name='event_detail'),
url(r'^event/(?P<pk>\d+)/print/$', url(r'^event/(?P<pk>\d+)/print/$',
permission_required_with_403('RIGS.view_event')(rigboard.EventPrint.as_view()), permission_required_with_403('RIGS.view_event')(rigboard.EventPrint.as_view()),
name='event_print'), name='event_print'),
url(r'^event/create/$', url(r'^event/create/$',
permission_required_with_403('RIGS.add_event')(rigboard.EventCreate.as_view()), permission_required_with_403('RIGS.add_event')(rigboard.EventCreate.as_view()),
name='event_create'), name='event_create'),
url(r'^event/(?P<pk>\d+)/edit/$', url(r'^event/(?P<pk>\d+)/edit/$',
permission_required_with_403('RIGS.change_event')(rigboard.EventUpdate.as_view()), permission_required_with_403('RIGS.change_event')(rigboard.EventUpdate.as_view()),
name='event_update'), name='event_update'),
url(r'^event/(?P<pk>\d+)/duplicate/$', url(r'^event/(?P<pk>\d+)/duplicate/$',
permission_required_with_403('RIGS.add_event')(rigboard.EventDuplicate.as_view()), permission_required_with_403('RIGS.add_event')(rigboard.EventDuplicate.as_view()),
name='event_duplicate'), name='event_duplicate'),
url(r'^event/archive/$', login_required()(rigboard.EventArchive.as_view()), url(r'^event/archive/$', login_required()(rigboard.EventArchive.as_view()),
name='event_archive'), name='event_archive'),
url(r'^event/(?P<pk>\d+)/history/$', url(r'^event/(?P<pk>\d+)/history/$',
permission_required_with_403('RIGS.view_event')(versioning.VersionHistory.as_view()), permission_required_with_403('RIGS.view_event')(versioning.VersionHistory.as_view()),
name='event_history', kwargs={'model': models.Event}), name='event_history', kwargs={'model': models.Event}),
# Finance
url(r'^invoice/$',
permission_required_with_403('RIGS.view_invoice')(finance.InvoiceIndex.as_view()),
name='invoice_list'),
url(r'^invoice/archive/$',
permission_required_with_403('RIGS.view_invoice')(finance.InvoiceArchive.as_view()),
name='invoice_archive'),
url(r'^invoice/waiting/$',
permission_required_with_403('RIGS.add_invoice')(finance.InvoiceWaiting.as_view()),
name='invoice_waiting'),
url(r'^event/(?P<pk>\d+)/invoice/$',
permission_required_with_403('RIGS.add_invoice')(finance.InvoiceEvent.as_view()),
name='invoice_event'),
# Finance url(r'^invoice/(?P<pk>\d+)/$',
url(r'^invoice/$', permission_required_with_403('RIGS.view_invoice')(finance.InvoiceDetail.as_view()),
permission_required_with_403('RIGS.view_invoice')(finance.InvoiceIndex.as_view()), name='invoice_detail'),
name='invoice_list'), url(r'^invoice/(?P<pk>\d+)/print/$',
url(r'^invoice/archive/$', permission_required_with_403('RIGS.view_invoice')(finance.InvoicePrint.as_view()),
permission_required_with_403('RIGS.view_invoice')(finance.InvoiceArchive.as_view()), name='invoice_print'),
name='invoice_archive'), url(r'^invoice/(?P<pk>\d+)/void/$',
url(r'^invoice/waiting/$', permission_required_with_403('RIGS.change_invoice')(finance.InvoiceVoid.as_view()),
permission_required_with_403('RIGS.add_invoice')(finance.InvoiceWaiting.as_view()), name='invoice_void'),
name='invoice_waiting'), url(r'^payment/create/$',
permission_required_with_403('RIGS.add_payment')(finance.PaymentCreate.as_view()),
name='payment_create'),
url(r'^payment/(?P<pk>\d+)/delete/$',
permission_required_with_403('RIGS.add_payment')(finance.PaymentDelete.as_view()),
name='payment_delete'),
url(r'^event/(?P<pk>\d+)/invoice/$', # User editing
permission_required_with_403('RIGS.add_invoice')(finance.InvoiceEvent.as_view()), url(r'^user/$', login_required(views.ProfileDetail.as_view()), name='profile_detail'),
name='invoice_event'), url(r'^user/(?P<pk>\d+)/$',
permission_required_with_403('RIGS.view_profile')(views.ProfileDetail.as_view()),
name='profile_detail'),
url(r'^user/edit/$', login_required(views.ProfileUpdateSelf.as_view()),
name='profile_update_self'),
url(r'^user/reset_api_key$', login_required(views.ResetApiKey.as_view(permanent=False)), name='reset_api_key'),
url(r'^invoice/(?P<pk>\d+)/$', # ICS Calendar - API key authentication
permission_required_with_403('RIGS.view_invoice')(finance.InvoiceDetail.as_view()), url(r'^ical/(?P<api_pk>\d+)/(?P<api_key>\w+)/rigs.ics$', api_key_required(ical.CalendarICS()), name="ics_calendar"),
name='invoice_detail'),
url(r'^invoice/(?P<pk>\d+)/print/$',
permission_required_with_403('RIGS.view_invoice')(finance.InvoicePrint.as_view()),
name='invoice_print'),
url(r'^invoice/(?P<pk>\d+)/void/$',
permission_required_with_403('RIGS.change_invoice')(finance.InvoiceVoid.as_view()),
name='invoice_void'),
url(r'^payment/create/$',
permission_required_with_403('RIGS.add_payment')(finance.PaymentCreate.as_view()),
name='payment_create'),
url(r'^payment/(?P<pk>\d+)/delete/$',
permission_required_with_403('RIGS.add_payment')(finance.PaymentDelete.as_view()),
name='payment_delete'),
# User editing # API
url(r'^user/$', login_required(views.ProfileDetail.as_view()), name='profile_detail'), url(r'^api/(?P<model>\w+)/$', login_required(views.SecureAPIRequest.as_view()), name="api_secure"),
url(r'^user/(?P<pk>\d+)/$', url(r'^api/(?P<model>\w+)/(?P<pk>\d+)/$', login_required(views.SecureAPIRequest.as_view()), name="api_secure"),
permission_required_with_403('RIGS.view_profile')(views.ProfileDetail.as_view()),
name='profile_detail'),
url(r'^user/edit/$', login_required(views.ProfileUpdateSelf.as_view()),
name='profile_update_self'),
url(r'^user/reset_api_key$', login_required(views.ResetApiKey.as_view(permanent=False)), name='reset_api_key'),
# ICS Calendar - API key authentication
url(r'^ical/(?P<api_pk>\d+)/(?P<api_key>\w+)/rigs.ics$', api_key_required(ical.CalendarICS()), name="ics_calendar"),
# API
url(r'^api/(?P<model>\w+)/$', login_required(views.SecureAPIRequest.as_view()), name="api_secure"),
url(r'^api/(?P<model>\w+)/(?P<pk>\d+)/$', login_required(views.SecureAPIRequest.as_view()), name="api_secure"),
# Legacy URL's
url(r'^rig/show/(?P<pk>\d+)/$', RedirectView.as_view(permanent=True,pattern_name='event_detail')),
url(r'^bookings/$', RedirectView.as_view(permanent=True,pattern_name='rigboard')),
url(r'^bookings/past/$', RedirectView.as_view(permanent=True,pattern_name='event_archive')),
)
# Legacy URL's
url(r'^rig/show/(?P<pk>\d+)/$', RedirectView.as_view(permanent=True, pattern_name='event_detail')),
url(r'^bookings/$', RedirectView.as_view(permanent=True, pattern_name='rigboard')),
url(r'^bookings/past/$', RedirectView.as_view(permanent=True, pattern_name='event_archive')),
]