port to new django, AI automated
This commit is contained in:
@@ -1 +0,0 @@
|
||||
{"_module": "oauth2client.client", "token_expiry": "2018-12-18T12:55:20Z", "access_token": "ya29.Gl12BuJlFBtRZSBtMkxubhfG8rYDsLUgc1yKMpO9_aE3tmi4sLFGLq_Djq5R9zr1919oZAobX0oaD6bTj3s4i9kqWfw0gpOGKJKRHM1Y9gHc0JsCe2kChNszu_RCAaE", "token_uri": "https://accounts.google.com/o/oauth2/token", "invalid": false, "token_response": {"access_token": "ya29.Gl12BuJlFBtRZSBtMkxubhfG8rYDsLUgc1yKMpO9_aE3tmi4sLFGLq_Djq5R9zr1919oZAobX0oaD6bTj3s4i9kqWfw0gpOGKJKRHM1Y9gHc0JsCe2kChNszu_RCAaE", "scope": "https://www.googleapis.com/auth/calendar", "expires_in": 3600, "token_type": "Bearer"}, "client_id": "34462582242-4kpdvvbi27ajt4u22uitqurpve9o8ipj.apps.googleusercontent.com", "id_token": null, "client_secret": "y4t9XBrJdCODPTO5UvtONWWn", "revoke_uri": "https://accounts.google.com/o/oauth2/revoke", "_class": "OAuth2Credentials", "refresh_token": "1/txixroRJyyVmuENPpaXyB_bGeXa1XV-pClAxqKHk_5-JW1qGFE0Gl-WlgCu1Eizq", "user_agent": null}
|
||||
Binary file not shown.
@@ -1,37 +1,41 @@
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.conf import settings
|
||||
import re
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import HttpResponseRedirect
|
||||
|
||||
|
||||
class EnforceLoginMiddleware:
|
||||
"""
|
||||
Middlware class which requires the user to be authenticated for all urls except
|
||||
those defined in PUBLIC_URLS in settings.py. PUBLIC_URLS should be a tuple of regular
|
||||
expresssions for the urls you want anonymous users to have access to. If PUBLIC_URLS
|
||||
is not defined, it falls back to LOGIN_URL or failing that '/accounts/login/'.
|
||||
Requests for urls not matching PUBLIC_URLS get redirected to LOGIN_URL with next set
|
||||
to original path of the unauthenticted request.
|
||||
Middleware class which requires the user to be authenticated for all urls except
|
||||
those defined in PUBLIC_URLS in settings.py. PUBLIC_URLS should be a tuple of regular
|
||||
expressions for the urls you want anonymous users to have access to. If PUBLIC_URLS
|
||||
is not defined, it falls back to LOGIN_URL or failing that '/accounts/login/'.
|
||||
Requests for urls not matching PUBLIC_URLS get redirected to LOGIN_URL with next set
|
||||
to original path of the unauthenticated request.
|
||||
Any urls statically served by django are excluded from this check. To enforce the same
|
||||
validation on these set SERVE_STATIC_TO_PUBLIC to False.
|
||||
"""
|
||||
|
||||
def __init__(self, get_response):
|
||||
self.login_url = getattr(settings, 'LOGIN_URL', '/accounts/login/')
|
||||
self.get_response = get_response
|
||||
self.login_url = getattr(settings, "LOGIN_URL", "/accounts/login/")
|
||||
|
||||
if hasattr(settings, 'PUBLIC_URLS'):
|
||||
if hasattr(settings, "PUBLIC_URLS"):
|
||||
public_urls = [re.compile(url) for url in settings.PUBLIC_URLS]
|
||||
else:
|
||||
public_urls = [(re.compile("^%s/?$" % (self.login_url[1:])))]
|
||||
if getattr(settings, 'SERVE_STATIC_TO_PUBLIC', True):
|
||||
root_urlconf = __import__(settings.ROOT_URLCONF)
|
||||
public_urls.extend([re.compile(url.regex)
|
||||
for url in root_urlconf.urls.urlpatterns
|
||||
if url.__dict__.get('_callback_str') == 'django.views.static.serve'
|
||||
])
|
||||
public_urls = [re.compile("^%s/?$" % (self.login_url[1:]))]
|
||||
|
||||
self.public_urls = tuple(public_urls)
|
||||
|
||||
def __call__(self, request):
|
||||
# Check if user needs to be redirected to login
|
||||
redirect_response = self.check_login(request)
|
||||
if redirect_response:
|
||||
return redirect_response
|
||||
|
||||
return self.get_response(request)
|
||||
|
||||
def check_login(self, request):
|
||||
"""
|
||||
Redirect anonymous users to login_url from non public urls
|
||||
"""
|
||||
@@ -40,52 +44,63 @@ class EnforceLoginMiddleware:
|
||||
for url in self.public_urls:
|
||||
if url.match(request.path[1:]):
|
||||
return None
|
||||
return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path))
|
||||
return HttpResponseRedirect(
|
||||
"%s?next=%s" % (self.login_url, request.path)
|
||||
)
|
||||
except AttributeError:
|
||||
return HttpResponseRedirect("%s?next=%s" % (self.login_url, request.path))
|
||||
|
||||
return self.get_response(request)
|
||||
return None
|
||||
|
||||
|
||||
class DetectDevice:
|
||||
"""
|
||||
Middleware to detect the device type from user agent string.
|
||||
"""
|
||||
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
device = self.mobile(request)
|
||||
request.device = self.detect_device(request)
|
||||
return self.get_response(request)
|
||||
|
||||
request.device = device
|
||||
response = self.get_response(request)
|
||||
return response
|
||||
|
||||
def mobile(self, request):
|
||||
def detect_device(self, request):
|
||||
device = {}
|
||||
|
||||
ua = request.META.get('HTTP_USER_AGENT', '').lower()
|
||||
ua = request.META.get("HTTP_USER_AGENT", "").lower()
|
||||
|
||||
if ua.find("iphone") > 0:
|
||||
device['iphone'] = "iphone" + re.search("iphone os (\d)", ua).groups(0)[0]
|
||||
if "iphone" in ua:
|
||||
match = re.search(r"iphone os (\d)", ua)
|
||||
if match:
|
||||
device["iphone"] = "iphone" + match.group(1)
|
||||
else:
|
||||
device["iphone"] = "iphone"
|
||||
|
||||
if ua.find("ipad") > 0:
|
||||
device['ipad'] = "ipad"
|
||||
if "ipad" in ua:
|
||||
device["ipad"] = "ipad"
|
||||
|
||||
if ua.find("android") > 0:
|
||||
device['android'] = "android" + re.search("android (\d\.\d)", ua).groups(0)[0].translate(None, '.')
|
||||
if "android" in ua:
|
||||
match = re.search(r"android (\d\.\d)", ua)
|
||||
if match:
|
||||
version = match.group(1).replace(".", "")
|
||||
device["android"] = "android" + version
|
||||
else:
|
||||
device["android"] = "android"
|
||||
|
||||
if ua.find("blackberry") > 0:
|
||||
device['blackberry'] = "blackberry"
|
||||
if "blackberry" in ua:
|
||||
device["blackberry"] = "blackberry"
|
||||
|
||||
if ua.find("windows phone os 7") > 0:
|
||||
device['winphone7'] = "winphone7"
|
||||
if "windows phone os 7" in ua:
|
||||
device["winphone7"] = "winphone7"
|
||||
|
||||
if ua.find("iemobile") > 0:
|
||||
device['winmo'] = "winmo"
|
||||
if "iemobile" in ua:
|
||||
device["winmo"] = "winmo"
|
||||
|
||||
if not device: # either desktop, or something we don't care about.
|
||||
device['baseline'] = "baseline"
|
||||
if not device:
|
||||
# either desktop, or something we don't care about.
|
||||
device["baseline"] = "baseline"
|
||||
|
||||
# spits out device names for CSS targeting, to be applied to <html> or <body>.
|
||||
device['classes'] = " ".join(v for (k, v) in device.items())
|
||||
device["classes"] = " ".join(v for (k, v) in device.items())
|
||||
|
||||
return device
|
||||
|
||||
@@ -1,233 +1,205 @@
|
||||
# Setting the path
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
gettext = lambda s: s
|
||||
BASE_DIR = Path(__file__).resolve().parent
|
||||
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
|
||||
DATA_PATH = os.environ.get('BLECHREIZ_DATA', default=os.path.join(PROJECT_PATH, "data"))
|
||||
|
||||
|
||||
# Django settings for blechreiz project.
|
||||
|
||||
DEBUG = True
|
||||
TEMPLATE_DEBUG = DEBUG
|
||||
|
||||
ADMINS = (
|
||||
('Martin Bauer', 'bauer_martin@gmx.de'),
|
||||
)
|
||||
ADMINS = [
|
||||
("Martin Bauer", "bauer_martin@gmx.de"),
|
||||
]
|
||||
|
||||
MANAGERS = ADMINS
|
||||
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': os.path.join(DATA_PATH, 'database.sqlite'),
|
||||
"default": {
|
||||
"ENGINE": "django.db.backends.sqlite3",
|
||||
"NAME": os.path.join(PROJECT_PATH, "database.sqlite"),
|
||||
}
|
||||
}
|
||||
|
||||
# Default primary key field type
|
||||
DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"
|
||||
|
||||
# Email
|
||||
|
||||
EMAIL_HOST = 'smtp.blechreiz.com'
|
||||
EMAIL_HOST_USER = 'm02b721a'
|
||||
EMAIL_HOST_PASSWORD = '9Hp4WG5bZ2WVPX5z'
|
||||
EMAIL_HOST = "smtp.blechreiz.com"
|
||||
EMAIL_HOST_USER = "m02b721a"
|
||||
EMAIL_HOST_PASSWORD = "9Hp4WG5bZ2WVPX5z"
|
||||
EMAIL_USE_TLS = False
|
||||
|
||||
|
||||
# Hosts/domain names that are valid for this site; required if DEBUG is False
|
||||
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
|
||||
ALLOWED_HOSTS = []
|
||||
ALLOWED_HOSTS = ["localhost", "127.0.0.1", ".blechreiz.com", ".bauer.technology"]
|
||||
|
||||
# Local time zone for this installation. Choices can be found here:
|
||||
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
|
||||
# although not all choices may be available on all operating systems.
|
||||
# In a Windows environment this must be set to your system time zone.
|
||||
TIME_ZONE = 'Europe/Berlin'
|
||||
# Local time zone for this installation.
|
||||
TIME_ZONE = "Europe/Berlin"
|
||||
|
||||
# Language code for this installation. All choices can be found here:
|
||||
# http://www.i18nguy.com/unicode/language-identifiers.html
|
||||
LANGUAGE_CODE = 'de'
|
||||
# Language code for this installation.
|
||||
LANGUAGE_CODE = "de"
|
||||
|
||||
SITE_ID = 1
|
||||
|
||||
# If you set this to False, Django will make some optimizations so as not
|
||||
# to load the internationalization machinery.
|
||||
# Internationalization
|
||||
USE_I18N = True
|
||||
|
||||
# If you set this to False, Django will not format dates, numbers and
|
||||
# calendars according to the current locale.
|
||||
USE_L10N = True
|
||||
|
||||
# If you set this to False, Django will not use timezone-aware datetimes.
|
||||
USE_TZ = True
|
||||
|
||||
# Absolute filesystem path to the directory that will hold user-uploaded files.
|
||||
# Example: "/var/www/example.com/media/"
|
||||
MEDIA_ROOT = PROJECT_PATH + "/media"
|
||||
MEDIA_ROOT = PROJECT_PATH + "/media/"
|
||||
|
||||
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
|
||||
# trailing slash.
|
||||
# Examples: "http://example.com/media/", "http://media.example.com/"
|
||||
MEDIA_URL = '/media/'
|
||||
# URL that handles the media served from MEDIA_ROOT.
|
||||
MEDIA_URL = "/media/"
|
||||
|
||||
# Absolute path to the directory static files should be collected to.
|
||||
# Don't put anything in this directory yourself; store your static files
|
||||
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
|
||||
# Example: "/var/www/example.com/static/"
|
||||
STATIC_ROOT = PROJECT_PATH + '/static_collection'
|
||||
STATIC_ROOT = PROJECT_PATH + "/static_collection"
|
||||
|
||||
# URL prefix for static files.
|
||||
# Example: "http://example.com/static/", "http://static.example.com/"
|
||||
STATIC_URL = '/static/'
|
||||
STATIC_URL = "/static/"
|
||||
|
||||
LOGIN_URL = "/musicians/login"
|
||||
PUBLIC_URLS = ("^musicians/login/?$", "^musicians/login/usernames/?$", "^eventplanner_gcal/gcalApiCallback*")
|
||||
PUBLIC_URLS = (
|
||||
"^musicians/login/?$",
|
||||
"^musicians/login/usernames/?$",
|
||||
"^eventplanner_gcal/gcalApiCallback*",
|
||||
)
|
||||
|
||||
# Additional locations of static files
|
||||
STATICFILES_DIRS = (
|
||||
#PROJECT_PATH + '/static',
|
||||
# Put strings here, like "/home/html/static" or "C:/www/django/static".
|
||||
# Always use forward slashes, even on Windows.
|
||||
# Don't forget to use absolute paths, not relative paths.
|
||||
)
|
||||
STATICFILES_DIRS = [
|
||||
PROJECT_PATH + "/static",
|
||||
]
|
||||
|
||||
# List of finder classes that know how to find static files in
|
||||
# various locations.
|
||||
STATICFILES_FINDERS = (
|
||||
'django.contrib.staticfiles.finders.FileSystemFinder',
|
||||
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
|
||||
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
|
||||
)
|
||||
# List of finder classes that know how to find static files in various locations.
|
||||
STATICFILES_FINDERS = [
|
||||
"django.contrib.staticfiles.finders.FileSystemFinder",
|
||||
"django.contrib.staticfiles.finders.AppDirectoriesFinder",
|
||||
]
|
||||
|
||||
# Make this unique, and don't share it with anybody.
|
||||
SECRET_KEY = 'x$8&9s6t%eeg=wyhar87934wh_s$dbpm(73g4ho&n)9_wogj6p'
|
||||
SECRET_KEY = "x$8&9s6t%eeg=wyhar87934wh_s$dbpm(73g4ho&n)9_wogj6p"
|
||||
|
||||
MIDDLEWARE = [
|
||||
"django.middleware.security.SecurityMiddleware",
|
||||
"django.contrib.sessions.middleware.SessionMiddleware",
|
||||
"django.middleware.common.CommonMiddleware",
|
||||
"django.middleware.csrf.CsrfViewMiddleware",
|
||||
"django.contrib.auth.middleware.AuthenticationMiddleware",
|
||||
"django.contrib.messages.middleware.MessageMiddleware",
|
||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||
"blechreiz.middleware.EnforceLoginMiddleware",
|
||||
"blechreiz.middleware.DetectDevice",
|
||||
]
|
||||
|
||||
ROOT_URLCONF = "blechreiz.urls"
|
||||
|
||||
# Python dotted path to the WSGI application used by Django's runserver.
|
||||
WSGI_APPLICATION = "blechreiz.wsgi.application"
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [
|
||||
PROJECT_PATH + '/templates',
|
||||
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
||||
"DIRS": [
|
||||
PROJECT_PATH + "/templates",
|
||||
],
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
# Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
|
||||
# list if you haven't customized them:
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.template.context_processors.i18n',
|
||||
'django.template.context_processors.request',
|
||||
'django.template.context_processors.media',
|
||||
'django.template.context_processors.static',
|
||||
'sekizai.context_processors.sekizai',
|
||||
"APP_DIRS": True,
|
||||
"OPTIONS": {
|
||||
"context_processors": [
|
||||
"django.template.context_processors.debug",
|
||||
"django.template.context_processors.request",
|
||||
"django.contrib.auth.context_processors.auth",
|
||||
"django.contrib.messages.context_processors.messages",
|
||||
"django.template.context_processors.i18n",
|
||||
"django.template.context_processors.media",
|
||||
"django.template.context_processors.static",
|
||||
"sekizai.context_processors.sekizai",
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
MIDDLEWARE = (
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'whitenoise.middleware.WhiteNoiseMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
'django.contrib.messages.middleware.MessageMiddleware',
|
||||
#'blechreiz.middleware.EnforceLoginMiddleware',
|
||||
'blechreiz.middleware.DetectDevice',
|
||||
# Uncomment the next line for simple clickjacking protection:
|
||||
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
)
|
||||
|
||||
ROOT_URLCONF = 'blechreiz.urls'
|
||||
|
||||
# Python dotted path to the WSGI application used by Django's runserver.
|
||||
WSGI_APPLICATION = 'blechreiz.wsgi.application'
|
||||
|
||||
|
||||
INSTALLED_APPS = (
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.sites',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.admin',
|
||||
'django.contrib.admindocs',
|
||||
'crispy_forms', # better looking forms ( bootstrap )
|
||||
'sekizai', # for the addtoblock directive in templates
|
||||
'rest_framework', # for event management api
|
||||
|
||||
# Own Things
|
||||
'bootstrapTheme', # Theme
|
||||
'website', # Blechreiz Website in general
|
||||
'musicians', # User Management
|
||||
'eventplanner', # Event Management
|
||||
'eventplanner_gcal', # Event Management Sync with Google Calendar
|
||||
'simpleforum', # Messages ( Forum )
|
||||
'location_field', # custom location field used in Event Management
|
||||
'scoremanager', # manager of scores, repertoire etc.
|
||||
# 'imagestore',
|
||||
# 'sorl.thumbnail',
|
||||
# 'tagging'
|
||||
)
|
||||
INSTALLED_APPS = [
|
||||
"django.contrib.admin",
|
||||
"django.contrib.auth",
|
||||
"django.contrib.contenttypes",
|
||||
"django.contrib.sessions",
|
||||
"django.contrib.sites",
|
||||
"django.contrib.messages",
|
||||
"django.contrib.staticfiles",
|
||||
# Third-party apps
|
||||
"crispy_forms",
|
||||
"crispy_bootstrap5",
|
||||
"sekizai",
|
||||
"rest_framework",
|
||||
# Own apps
|
||||
"bootstrapTheme",
|
||||
"website",
|
||||
"musicians",
|
||||
"eventplanner",
|
||||
"eventplanner_gcal",
|
||||
"simpleforum",
|
||||
"location_field",
|
||||
"scoremanager",
|
||||
# 'imagestore', # Disabled
|
||||
]
|
||||
|
||||
IMAGESTORE_TEMPLATE = "website/base.html"
|
||||
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',),
|
||||
'PAGINATE_BY': 10
|
||||
"DEFAULT_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated"],
|
||||
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
|
||||
"PAGE_SIZE": 10,
|
||||
}
|
||||
|
||||
|
||||
GCAL_COUPLING = {
|
||||
'eventPrefix': 'Blechreiz: ',
|
||||
'developerKey': 'blechreiz-homepage',
|
||||
'clientId': '34462582242-4kpdvvbi27ajt4u22uitqurpve9o8ipj.apps.googleusercontent.com',
|
||||
'client_secret': 'y4t9XBrJdCODPTO5UvtONWWn',
|
||||
'credentials_file': DATA_PATH + '/calendarCredentials.dat',
|
||||
'push_url': "https://blechreiz.bauer.technology/eventplanner_gcal/gcalApiCallback",
|
||||
"eventPrefix": "Blechreiz: ",
|
||||
"developerKey": "blechreiz-homepage",
|
||||
"clientId": "34462582242-4kpdvvbi27ajt4u22uitqurpve9o8ipj.apps.googleusercontent.com",
|
||||
"client_secret": "y4t9XBrJdCODPTO5UvtONWWn",
|
||||
"credentials_file": PROJECT_PATH + "/calendarCredentials.dat",
|
||||
"push_url": "https://blechreiz.bauer.technology/eventplanner_gcal/gcalApiCallback",
|
||||
}
|
||||
GOOGLE_MAPS_API_KEY = 'AIzaSyCf9Lm5ckjmVd08scTOd7fB1dC_UCoumKg'
|
||||
GCAL_SYNC_ENABLED = True
|
||||
|
||||
|
||||
CRISPY_TEMPLATE_PACK = 'bootstrap'
|
||||
# Crispy Forms configuration
|
||||
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
|
||||
CRISPY_TEMPLATE_PACK = "bootstrap5"
|
||||
|
||||
# A sample logging configuration. The only tangible logging
|
||||
# performed by this configuration is to send an email to
|
||||
# the site admins on every HTTP 500 error when DEBUG=False.
|
||||
# See http://docs.djangoproject.com/en/dev/topics/logging for
|
||||
# more details on how to customize your logging configuration.
|
||||
|
||||
# Logging configuration
|
||||
LOGGING = {
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
'formatters': {
|
||||
'verbose': {
|
||||
'format': '{levelname} {asctime} {module} {message}',
|
||||
'style': '{',
|
||||
"version": 1,
|
||||
"disable_existing_loggers": False,
|
||||
"handlers": {
|
||||
"file": {
|
||||
"level": "DEBUG",
|
||||
"class": "logging.FileHandler",
|
||||
"filename": PROJECT_PATH + "/eventplanner.log",
|
||||
},
|
||||
'simple': {
|
||||
'format': '{levelname} {asctime} {message}',
|
||||
'style': '{',
|
||||
"console": {
|
||||
"level": "DEBUG",
|
||||
"class": "logging.StreamHandler",
|
||||
},
|
||||
},
|
||||
'handlers': {
|
||||
'file': {
|
||||
'level': 'DEBUG',
|
||||
'class': 'logging.FileHandler',
|
||||
'filename': DATA_PATH + '/eventplanner.log',
|
||||
"loggers": {
|
||||
"eventplanner_gcal": {
|
||||
"handlers": ["file", "console"],
|
||||
"level": "DEBUG",
|
||||
"propagate": True,
|
||||
},
|
||||
"eventplanner": {
|
||||
"handlers": ["file", "console"],
|
||||
"level": "DEBUG",
|
||||
"propagate": True,
|
||||
},
|
||||
},
|
||||
'loggers': {
|
||||
'eventplanner_gcal': {
|
||||
'handlers': ['file'],
|
||||
'level': 'DEBUG',
|
||||
'propagate': True,
|
||||
},
|
||||
'eventplanner': {
|
||||
'handler': ['file'],
|
||||
'level': 'DEBUG',
|
||||
'propagate': True,
|
||||
}
|
||||
},
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,28 +1,21 @@
|
||||
from django.conf.urls import include, url
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
import simpleforum.views
|
||||
|
||||
import eventplanner.urls
|
||||
import musicians.urls
|
||||
import website.urls
|
||||
import scoremanager.urls
|
||||
import eventplanner_gcal.urls
|
||||
|
||||
from . import settings
|
||||
from django.conf import settings
|
||||
from django.conf.urls.static import static
|
||||
from django.contrib import admin
|
||||
from django.urls import include, path, re_path
|
||||
|
||||
admin.autodiscover()
|
||||
from simpleforum import views as simpleforum_views
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^', include(website.urls)),
|
||||
url(r'^events/', include(eventplanner.urls.urlpatterns)),
|
||||
url(r'^musicians/', include(musicians.urls.urlpatterns)),
|
||||
url(r'^scores/', include(scoremanager.urls.urlpatterns)),
|
||||
url(r'^messages/$', simpleforum.views.message_view),
|
||||
url(r'^admin/', admin.site.urls),
|
||||
url(r'^location_field/', include('location_field.urls')),
|
||||
url(r'^eventplanner_gcal/', include(eventplanner_gcal.urls)),
|
||||
# url(r'^gallery/', include(imagestore.urls, namespace='imagestore') ),
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
path("", include("website.urls")),
|
||||
path("events/", include("eventplanner.urls")),
|
||||
path("musicians/", include("musicians.urls")),
|
||||
path("scores/", include("scoremanager.urls")),
|
||||
path("messages/", simpleforum_views.message_view),
|
||||
path("admin/", admin.site.urls),
|
||||
path("location_field/", include("location_field.urls")),
|
||||
path("eventplanner_gcal/", include("eventplanner_gcal.urls")),
|
||||
# url(r'^gallery/', include('imagestore.urls', namespace='imagestore')),
|
||||
]
|
||||
|
||||
if settings.DEBUG:
|
||||
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
||||
@@ -1,32 +1,16 @@
|
||||
"""
|
||||
WSGI config for blechreiz project.
|
||||
|
||||
This module contains the WSGI application used by Django's development server
|
||||
and any production WSGI deployments. It should expose a module-level variable
|
||||
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
|
||||
this application via the ``WSGI_APPLICATION`` setting.
|
||||
|
||||
Usually you will have the standard Django WSGI application here, but it also
|
||||
might make sense to replace the whole Django WSGI application with a custom one
|
||||
that later delegates to the Django one. For example, you could introduce WSGI
|
||||
middleware here, or combine a Django application with an application of another
|
||||
framework.
|
||||
It exposes the WSGI callable as a module-level variable named ``application``.
|
||||
|
||||
For more information on this file, see
|
||||
https://docs.djangoproject.com/en/5.1/howto/deployment/wsgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
# We defer to a DJANGO_SETTINGS_MODULE already in the environment. This breaks
|
||||
# if running multiple sites in the same mod_wsgi process. To fix this, use
|
||||
# mod_wsgi daemon mode with each site in its own daemon process, or use
|
||||
# os.environ["DJANGO_SETTINGS_MODULE"] = "blechreiz.settings"
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blechreiz.settings")
|
||||
|
||||
# This application object is used by any WSGI server configured to use this
|
||||
# file. This includes Django's development server, if the WSGI_APPLICATION
|
||||
# setting points here.
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
application = get_wsgi_application()
|
||||
|
||||
# Apply WSGI middleware here.
|
||||
# from helloworld.wsgi import HelloWorldApplication
|
||||
# application = HelloWorldApplication(application)
|
||||
|
||||
Reference in New Issue
Block a user