diff --git a/TipPy/__init__.py b/TipPy/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/TipPy/asgi.py b/TipPy/asgi.py
new file mode 100644
index 0000000..5b074cb
--- /dev/null
+++ b/TipPy/asgi.py
@@ -0,0 +1,16 @@
+"""
+ASGI config for TipPy project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TipPy.settings')
+
+application = get_asgi_application()
diff --git a/TipPy/settings.py b/TipPy/settings.py
new file mode 100644
index 0000000..8f867af
--- /dev/null
+++ b/TipPy/settings.py
@@ -0,0 +1,153 @@
+"""
+Django settings for TipPy project.
+
+Generated by 'django-admin startproject' using Django 4.0.6.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.0/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/4.0/ref/settings/
+"""
+
+from pathlib import Path
+import os
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'django-insecure-jiw8js(^@d)no7tv(oq+ugl3kj=f8@j-kz3bj530&!%!$cjqj9'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+
+# Application definition
+
+INSTALLED_APPS = [
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ 'django.contrib.humanize',
+ 'tipp'
+]
+
+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',
+]
+
+ROOT_URLCONF = 'TipPy.urls'
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [BASE_DIR / 'templates']
+ ,
+ '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',
+ ],
+ },
+ },
+]
+
+WSGI_APPLICATION = 'TipPy.wsgi.application'
+WSGI_APPLICATION = 'TipPy.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/4.0/ref/settings/#databases
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.postgresql_psycopg2',
+ 'NAME': 'tippy',
+ 'USER': 'tippy',
+ 'PASSWORD': 'tippy',
+ 'HOST': 'localhost',
+ 'PORT': '5432',
+ }
+}
+
+# Password validation
+# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+ {
+ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+ },
+ {
+ 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+ },
+]
+
+# Internationalization
+# https://docs.djangoproject.com/en/4.0/topics/i18n/
+
+LANGUAGE_CODE = 'de-de'
+
+TIME_ZONE = 'Europe/Berlin'
+
+USE_I18N = True
+
+USE_TZ = True
+
+# Absolute filesystem path to the directory that will hold user-uploaded files.
+# Example: "/home/media/media.lawrence.com/media/"
+MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash.
+# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
+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: "/home/media/media.lawrence.com/static/"
+MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/4.0/howto/static-files/
+STATIC_URL = 'static/'
+STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
+
+if not DEBUG:
+ STATIC_ROOT = ''
+
+STATICFILES_DIRS = [
+ #os.path.join(BASE_DIR, 'static/'),
+]
+
+# STATIC_ROOT=os.path.join(BASE_DIR,"static/")
+# STATIC_URL = 'static/'
+# STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
+
+# Default primary key field type
+# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
diff --git a/TipPy/urls.py b/TipPy/urls.py
new file mode 100644
index 0000000..1a005a5
--- /dev/null
+++ b/TipPy/urls.py
@@ -0,0 +1,13 @@
+from django.contrib import admin, auth
+from django.urls import include, path, re_path
+
+urlpatterns = [
+ path('', include('tipp.urls')),
+ path('admin/', admin.site.urls),
+# re_path(r'^login$', auth.views.login, {
+# 'template_name': 'login.html'}
+# ),
+# re_path(r'^logout$', auth.views.logout, {
+# 'next_page': '/'}),
+]
+
diff --git a/TipPy/wsgi.py b/TipPy/wsgi.py
new file mode 100644
index 0000000..a6b19d5
--- /dev/null
+++ b/TipPy/wsgi.py
@@ -0,0 +1,16 @@
+"""
+WSGI config for TipPy project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TipPy.settings')
+
+application = get_wsgi_application()
diff --git a/tipp/models.py b/tipp/models.py
index e272d25..db1235a 100644
--- a/tipp/models.py
+++ b/tipp/models.py
@@ -19,11 +19,13 @@ along with TipPy. If not, see .
"""
from django.db import models
-from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
class UserProfile(models.Model):
- user = models.OneToOneField(User)
+ user = models.OneToOneField(
+ User,
+ on_delete=models.CASCADE
+ )
avatar = models.ImageField(upload_to="profiles/", blank=True)
def __unicode__(self):
@@ -58,8 +60,14 @@ class Match(models.Model):
group = models.IntegerField()
matchday = models.IntegerField()
matchday_name = models.CharField(max_length=128)
- idTeam1 = models.ForeignKey(Team, related_name='+')
- idTeam2 = models.ForeignKey(Team, related_name='+')
+ idTeam1 = models.ForeignKey(
+ Team, related_name='+',
+ on_delete=models.CASCADE
+ )
+ idTeam2 = models.ForeignKey(
+ Team, related_name='+',
+ on_delete=models.CASCADE
+ )
pointsTeam1 = models.SmallIntegerField()
pointsTeam2 = models.SmallIntegerField()
finished = models.BooleanField()
@@ -70,8 +78,14 @@ class Match(models.Model):
return (str(self.matchID))
class Tipp(models.Model):
- matchID = models.ForeignKey(Match)
- tipperID = models.ForeignKey(User)
+ matchID = models.ForeignKey(
+ Match,
+ on_delete=models.CASCADE
+ )
+ tipperID = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
pointsTeam1 = models.PositiveSmallIntegerField()
pointsTeam2 = models.PositiveSmallIntegerField()
score = models.PositiveIntegerField(
@@ -88,7 +102,10 @@ class Mandant(models.Model):
return self.name
class Score(models.Model):
- client = models.ForeignKey(Mandant)
+ client = models.ForeignKey(
+ Mandant,
+ on_delete=models.CASCADE
+ )
exact_high = models.PositiveSmallIntegerField()
exact = models.PositiveSmallIntegerField()
diff = models.PositiveSmallIntegerField()
@@ -97,8 +114,14 @@ class Score(models.Model):
return str(self.client)
class chart(models.Model):
- team = models.ForeignKey(Team)
- competition = models.ForeignKey(Competition)
+ team = models.ForeignKey(
+ Team,
+ on_delete=models.CASCADE
+ )
+ competition = models.ForeignKey(
+ Competition,
+ on_delete=models.CASCADE
+ )
points = models.PositiveSmallIntegerField()
diff = models.SmallIntegerField()
games = models.PositiveSmallIntegerField()
@@ -107,8 +130,14 @@ class chart(models.Model):
unique_together = ("team", "competition")
class RelUserMandant(models.Model):
- user = models.ForeignKey(User)
- mandant = models.ForeignKey(Mandant)
+ user = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
+ mandant = models.ForeignKey(
+ Mandant,
+ on_delete=models.CASCADE
+ )
class Meta:
unique_together = ("user", "mandant")
@@ -119,7 +148,10 @@ class Post(models.Model):
content = models.TextField()
published = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
- author = models.ForeignKey(User)
+ author = models.ForeignKey(
+ User,
+ on_delete=models.CASCADE
+ )
class Meta:
ordering = ['-created']
@@ -128,8 +160,14 @@ class Post(models.Model):
return u'%s' % self.created
class RelPostMandant(models.Model):
- post = models.ForeignKey(Post)
- mandant = models.ForeignKey(Mandant)
+ post = models.ForeignKey(
+ Post,
+ on_delete=models.CASCADE
+ )
+ mandant = models.ForeignKey(
+ Mandant,
+ on_delete=models.CASCADE
+ )
class Meta:
unique_together = ("post", "mandant")
diff --git a/tipp/openliga.py b/tipp/openliga.py
index 6fbcf20..ef78824 100644
--- a/tipp/openliga.py
+++ b/tipp/openliga.py
@@ -18,7 +18,13 @@
# You should have received a copy of the GNU General Public License
# along with TipPy. If not, see .
#
-import sys, locale, suds, urllib2, psycopg2
+import sys
+import locale
+from suds.client import Client
+import urllib.request
+import urllib.error
+import urllib.parse
+import psycopg2
class OpenLiga(object):
version = "0.1"
@@ -37,21 +43,21 @@ class OpenLiga(object):
# get a SUDS client object
if self.proxyurl is None:
try:
- self.client = suds.client.Client(
+ self.client = Client(
'http://www.openligadb.de/'
+ 'Webservices/Sportsdata.asmx?WSDL')
- except (urllib2.URLError):
+ except (urllib.error.URLError):
self.error += "Connect to webservice failed."
else:
try:
t = suds.transport.http.HttpTransport()
- proxy = urllib2.ProxyHandler({'http':proxyurl})
- opener = urllib2.build_opener(proxy)
+ proxy = urllib.request.ProxyHandler({'http':proxyurl})
+ opener = urllib.request.build_opener(proxy)
t.urlopener = opener
self.client = suds.client.Client(
'http://www.openligadb.de/Webservices/'
+ 'Sportsdata.asmx?WSDL', transport=t)
- except urllib2.URLError as e:
+ except urllib.error.URLError as e:
self.error += "Connect to webservice failed " \
+ "(via proxy " + proxyurl + "): " + str(e) + "\n"
diff --git a/tipp/urls.py b/tipp/urls.py
new file mode 100644
index 0000000..3403e3c
--- /dev/null
+++ b/tipp/urls.py
@@ -0,0 +1,31 @@
+from django.contrib.auth import views as auth_views
+from django.urls import re_path
+from django.conf.urls import include
+from django.conf import settings
+from django.conf.urls.static import static
+from . import views
+
+urlpatterns = [
+ re_path(r'^$', views.home, name='home'),
+ re_path(r'^getSeason/(?P.*)/(?P\d{4})$',
+ views.getSeason),
+ re_path(r'^update/(?P.*)/(?P\d{4})/(?P\d{2})$',
+ views.update, name='update'),
+ re_path(r'^matchday/(?P.{3,})/(?P\d{4})/(?P\d{2})$',
+ views.matchday, name='matchday'),
+ re_path(r'^charts/(?P\w{3,})/(?P\d{4})$', views.charts,
+ name='charts'),
+ re_path(r'^charts/(?P\w{3,})/(?P\d{4})/(?P\w{1,})$',
+ views.charts, name='charts'),
+ re_path(r'^accounts/profile/(\d+)', views.profile),
+ re_path(r'^accounts/', include('django.contrib.auth.urls')),
+ re_path(r'^blog/newpost$', views.newBlogpost),
+ re_path(r'^blog/(?P\d)$', views.blogindex),
+ re_path(r'^about$', views.about),
+ re_path(r'^accounts/login/', auth_views.LoginView.as_view()),
+ re_path(r'^logout', auth_views.LogoutView.as_view())
+]
+
+if settings.DEBUG is True:
+ urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
+ urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/tipp/views.py b/tipp/views.py
index 3635d3a..890fb8c 100644
--- a/tipp/views.py
+++ b/tipp/views.py
@@ -17,41 +17,30 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with TipPy. If not, see .
-"""
-from django.http import HttpResponse
-from django.shortcuts import render_to_response, redirect, render, \
- get_object_or_404
-from django.contrib.auth import authenticate, login
-from django.contrib.auth.models import User
+"""
+import django.shortcuts
from django.contrib.auth.decorators import login_required
-from django.contrib.auth.views import password_reset, \
- password_reset_confirm
-from django.core.context_processors import csrf
from django.core.exceptions import ObjectDoesNotExist
-from django.core.urlresolvers import reverse
-from django.core.paginator import Paginator, InvalidPage, EmptyPage, \
+from django.core.paginator import Paginator, EmptyPage, \
PageNotAnInteger
+from django.http import HttpResponseRedirect
from django.utils import timezone
-from django.utils.text import slugify
-from django.db.models import Sum, Max
+from django.db.models import Sum
from django.conf import settings
from os.path import join as pjoin
from tipp.models import *
from tipp.forms import *
-from openliga import *
+from tipp.openliga import *
from datetime import datetime
from PIL import Image as PImage
-import urllib2, pytz, os, sys
-
-# setting utf-8 as default encoding to avoid errors in file
-# uploads and form data
-reload(sys)
-sys.setdefaultencoding('utf8')
+import pytz
+import os
timezoneLocal = pytz.timezone('Europe/Berlin')
+
def about(request):
- return render(request, 'about.html')
+ return django.shortcuts.render(request, 'about.html')
@login_required
@@ -60,11 +49,12 @@ def home(request):
season = get_current_season()
md = get_current_md(ls)
- return redirect("matchday",
- ls = ls,
- season = season,
- matchday=str(md).zfill(2)
- )
+ return django.shortcuts.redirect("matchday",
+ ls=ls,
+ season=season,
+ matchday=str(md).zfill(2)
+ )
+
@login_required
def profile(request, pk):
@@ -75,7 +65,7 @@ def profile(request, pk):
img = profile.avatar.name
else:
img = None
-
+
debug = []
debug.append('avatar: ' + str(img))
@@ -87,7 +77,7 @@ def profile(request, pk):
)
if user_form.is_valid() and profile_form.is_valid():
-
+
user = user_form.save()
profile = profile_form.save(commit=False)
@@ -102,49 +92,52 @@ def profile(request, pk):
# create thumbnail
imfn = pjoin(settings.MEDIA_ROOT, profile.avatar.name)
im = PImage.open(imfn)
- im.thumbnail((50,50), PImage.ANTIALIAS)
+ im.thumbnail((50, 50), PImage.ANTIALIAS)
im.save(settings.MEDIA_ROOT + profile.avatar.name)
if 'avatar-clear' in request.POST:
if 'on' in request.POST['avatar-clear']:
image = pjoin(settings.MEDIA_ROOT, img)
- debug.append('Is the image ' + str(image)
- + ' a regular file? '
- + str(os.path.isfile(image))
- )
+ debug.append('Is the image ' + str(image)
+ + ' a regular file? '
+ + str(os.path.isfile(image))
+ )
if os.path.isfile(image):
os.remove(image)
profile.save()
for item in request.POST:
- debug.append(str(item) + " -> "
- + str(request.POST[item])
- )
+ debug.append(str(item) + " -> "
+ + str(request.POST[item])
+ )
# Invalid form or forms - mistakes or something else?
# Print problems to the terminal.
# They'll also be shown to the user.
else:
- print user_form.errors, profile_form.errors
+ print(
+ user_form.errors,
+ profile_form.errors
+ )
- return redirect( '/accounts/profile/' + str(user.id) )
+ return django.shortcuts.redirect('/accounts/profile/' + str(user.id))
# Not a HTTP POST, so we render our form using two ModelForm
# instances. These forms will be blank, ready for user input.
else:
user_form = UserForm(
- initial={ 'last_name': user.last_name,
- 'first_name': user.first_name,
- 'email': user.email },
+ initial={'last_name': user.last_name,
+ 'first_name': user.first_name,
+ 'email': user.email},
instance=user
)
profile_form = UserProfileForm(instance=profile)
- return render(request, 'registration/profile.html', {
- 'user_form': user_form,
+ return django.shortcuts.render(request, 'registration/profile.html', {
+ 'user_form': user_form,
'profile_form': profile_form,
'debug': debug,
'img': img}
- )
+ )
@login_required
@@ -152,14 +145,13 @@ def getSeason(request, ls, season):
ol = OpenLiga()
teams = ol.getTeams(str(season), ls)
season = ol.getSeason(str(season), ls)
- md = get_current_md(ls)
return_vals = []
for team in teams[0]:
t = Team(
teamID=team['teamID'],
name=team['teamName'],
- iconURL = team['teamIconURL']
+ iconURL=team['teamIconURL']
)
"""
@@ -167,36 +159,34 @@ def getSeason(request, ls, season):
"""
try:
to = Team.objects.get(teamID=int(t.teamID))
+ if to.iconURL is None:
+ t.save(update_fields=['iconURL'])
except Team.DoesNotExist:
t.save()
- if to.iconURL is None:
- t.save(update_fields=['iconURL'])
-
-
for match in season[0]:
- m = Match(matchID=unicode(match['matchID']),
- matchDateTime=datetime.strptime(
- unicode(match['matchDateTime']), '%Y-%m-%d %H:%M:%S'),
- group=int(match['groupID']),
- matchday=int(match['groupOrderID']),
- matchday_name=unicode(match['groupName']),
- idTeam1=Team.objects.get(teamID=int(match['idTeam1'])),
- idTeam2=Team.objects.get(teamID=int(match['idTeam2'])),
- pointsTeam1=match['pointsTeam1'],
- pointsTeam2=match['pointsTeam2'],
- finished=bool(match['matchIsFinished']),
- season=match['leagueSaison'],
- leagueShortcut=match['leagueShortcut']
- )
+ m = Match(matchID=match['matchID'],
+ matchDateTime=match['matchDateTime'],
+ group=int(match['groupID']),
+ matchday=int(match['groupOrderID']),
+ matchday_name=match['groupName'],
+ idTeam1=Team.objects.get(teamID=int(match['idTeam1'])),
+ idTeam2=Team.objects.get(teamID=int(match['idTeam2'])),
+ pointsTeam1=match['pointsTeam1'],
+ pointsTeam2=match['pointsTeam2'],
+ finished=bool(match['matchIsFinished']),
+ season=match['leagueSaison'],
+ leagueShortcut=match['leagueShortcut']
+ )
m.save()
- return redirect("matchday",
- ls=ls,
- season=get_current_season(),
- matchday=str(get_current_md(ls)).zfill(2)
- )
-
+ return django.shortcuts.redirect("matchday",
+ ls=ls,
+ season=get_current_season(),
+ matchday=str(get_current_md(ls)).zfill(2)
+ )
+
+
@login_required
def update(request, ls, season, cur_md):
"""
@@ -205,7 +195,7 @@ def update(request, ls, season, cur_md):
"""
ol = OpenLiga()
- md_matches = ol.getMatchday(str(season), int(cur_md) ,ls)
+ md_matches = ol.getMatchday(str(season), int(cur_md), ls)
# Achtung: DateTimeField prüfen
for match in md_matches[0]:
@@ -214,40 +204,46 @@ def update(request, ls, season, cur_md):
try:
for result in matchResults[0]:
if result['resultName'] == "Halbzeit":
- pointsTeam1=int(result['pointsTeam1'])
- pointsTeam2=int(result['pointsTeam2'])
+ pointsTeam1 = int(result['pointsTeam1'])
+ pointsTeam2 = int(result['pointsTeam2'])
elif result['resultName'] == "Endergebnis":
- pointsTeam1=int(result['pointsTeam1'])
- pointsTeam2=int(result['pointsTeam2'])
+ pointsTeam1 = int(result['pointsTeam1'])
+ pointsTeam2 = int(result['pointsTeam2'])
+ break
elif str(result['resultName']) == u"nach Verlängerung":
- pointsTeam1=int(result['pointsTeam1'])
- pointsTeam2=int(result['pointsTeam2'])
+ pointsTeam1 = int(result['pointsTeam1'])
+ pointsTeam2 = int(result['pointsTeam2'])
else:
- pointsTeam1=-1
- pointsTeam2=-1
+ pointsTeam1 = -1
+ pointsTeam2 = -1
except:
- pointsTeam1=-1
- pointsTeam2=-1
-
+ pointsTeam1 = -1
+ pointsTeam2 = -1
- m = Match(matchID=unicode(match['matchID']),
- matchDateTime=match['matchDateTime'],
- pointsTeam1=pointsTeam1,
- pointsTeam2=pointsTeam2,
- finished=bool(match['matchIsFinished']),
- )
+ m = Match(matchID=match['matchID'],
+ matchDateTime=match['matchDateTime'],
+ pointsTeam1=pointsTeam1,
+ pointsTeam2=pointsTeam2,
+ finished=bool(match['matchIsFinished']),
+ )
m.save(update_fields=['matchDateTime', 'pointsTeam1', 'pointsTeam2', 'finished'])
- pointsTeam1=-1
- pointsTeam2=-1
+ pointsTeam1 = -1
+ pointsTeam2 = -1
- # evaluate scores
- scores = Score.objects.get(client=Mandant.objects.get(name='huse'))
- finished_matches=Match.objects.filter(
- finished=True,
+ # evaluate scores
+ """ get mandants current user is related """
+ mandants = RelUserMandant.objects.filter(user=request.user). \
+ values_list('mandant', flat=True)
+
+ # scores = Score.objects.get(client=Mandant.objects.get(name='huse'))
+ scores = Score.objects.get(client=mandants[0])
+
+ finished_matches = Match.objects.filter(
+ finished=True,
leagueShortcut=ls,
season=season,
- matchday = cur_md
+ matchday=cur_md
)
for match in finished_matches:
tipps = Tipp.objects.filter(matchID=match.matchID)
@@ -256,8 +252,8 @@ def update(request, ls, season, cur_md):
goals_total = match.pointsTeam1 + match.pointsTeam2
# Tipp is acurate
- if (tipp.pointsTeam1 == match.pointsTeam1
- and tipp.pointsTeam2 == match.pointsTeam2):
+ if (tipp.pointsTeam1 == match.pointsTeam1
+ and tipp.pointsTeam2 == match.pointsTeam2):
if goals_total >= 5:
score = scores.exact_high
else:
@@ -266,29 +262,29 @@ def update(request, ls, season, cur_md):
tipp.score = score
tipp.save()
continue
-
+
# who won?
winnerReal = None
if match.pointsTeam1 > match.pointsTeam2:
winnerReal = 1
- elif (match.pointsTeam2 > match.pointsTeam1):
+ elif match.pointsTeam2 > match.pointsTeam1:
winnerReal = 2
- elif (match.pointsTeam1 == match.pointsTeam2):
+ elif match.pointsTeam1 == match.pointsTeam2:
winnerReal = 0
winnerTipp = None
if tipp.pointsTeam1 > tipp.pointsTeam2:
winnerTipp = 1
- elif (tipp.pointsTeam2 > tipp.pointsTeam1):
+ elif tipp.pointsTeam2 > tipp.pointsTeam1:
winnerTipp = 2
- elif (tipp.pointsTeam1 == tipp.pointsTeam2):
+ elif tipp.pointsTeam1 == tipp.pointsTeam2:
winnerTipp = 0
-
+
diffReal = match.pointsTeam1 - match.pointsTeam2
diffTipp = tipp.pointsTeam1 - tipp.pointsTeam2
- if ( winnerTipp == winnerReal ):
- if ( diffTipp == diffReal ):
+ if winnerTipp == winnerReal:
+ if diffTipp == diffReal:
score = scores.diff
else:
score = scores.tendency
@@ -301,11 +297,12 @@ def update(request, ls, season, cur_md):
tipp.save()
continue
- return redirect("matchday",
- ls=ls,
- season=season,
- matchday=cur_md
- )
+ return django.shortcuts.redirect("matchday",
+ ls=ls,
+ season=season,
+ matchday=cur_md
+ )
+
@login_required
def matchday(request, ls, season, matchday, template_name='md.html'):
@@ -314,8 +311,8 @@ def matchday(request, ls, season, matchday, template_name='md.html'):
has_refresh = True
""" get matches of the matchday """
- md_matches = Match.objects.filter(leagueShortcut=ls, season=season,
- matchday=int(matchday)).order_by('matchDateTime')
+ md_matches = Match.objects.filter(leagueShortcut=ls, season=season,
+ matchday=int(matchday)).order_by('matchDateTime')
""" get the current user """
user = User.objects.get(username=request.user.username)
@@ -323,7 +320,7 @@ def matchday(request, ls, season, matchday, template_name='md.html'):
""" get mandants current user is related """
mandants = RelUserMandant.objects.filter(user=request.user). \
values_list('mandant', flat=True)
-
+
""" get mates """
mandant_dict = {}
for m in mandants:
@@ -332,8 +329,8 @@ def matchday(request, ls, season, matchday, template_name='md.html'):
rs = RelUserMandant.objects.filter(mandant=m)
for r in rs:
- mandant_dict[mandant.description].append({
- 'mate': r.user,
+ mandant_dict[mandant.description].append({
+ 'mate': r.user,
'tipps': [],
'sum_score': 0
})
@@ -350,7 +347,7 @@ def matchday(request, ls, season, matchday, template_name='md.html'):
"""
try:
tipp = Tipp.objects.get(tipperID=user.id,
- matchID=match.matchID)
+ matchID=match.matchID)
except ObjectDoesNotExist:
tipp = None
@@ -363,52 +360,52 @@ def matchday(request, ls, season, matchday, template_name='md.html'):
if tipp is not None:
""" Tipp exists an needs an UPDATE"""
tipp = Tipp(id=tipp.pk,
- matchID=match,
- tipperID=user,
- pointsTeam1=data['tippTeam1'],
- pointsTeam2=data['tippTeam2']
- )
+ matchID=match,
+ tipperID=user,
+ pointsTeam1=data['tippTeam1'],
+ pointsTeam2=data['tippTeam2']
+ )
tipp.save()
- else:
+ else:
""" do INSERT """
- tipp = Tipp( matchID=match,
- tipperID=user,
- pointsTeam1=data['tippTeam1'],
- pointsTeam2=data['tippTeam2'])
+ tipp = Tipp(matchID=match,
+ tipperID=user,
+ pointsTeam1=data['tippTeam1'],
+ pointsTeam2=data['tippTeam2'])
tipp.save()
match_started = timezone.now() >= match.matchDateTime
if tipp is not None:
f = TippForm(prefix=str(match.matchID),
- initial={'tippTeam1': tipp.pointsTeam1,
- 'tippTeam2': tipp.pointsTeam2}
- )
+ initial={'tippTeam1': tipp.pointsTeam1,
+ 'tippTeam2': tipp.pointsTeam2}
+ )
else:
f = TippForm(prefix=str(match.matchID))
item = {}
- item['matchDateTime'] = (match.matchDateTime. \
- astimezone(timezoneLocal).strftime('%a %d.%m, %H:%M'))
+ item['matchDateTime'] = (match.matchDateTime.
+ astimezone(timezoneLocal).strftime('%a %d.%m, %H:%M'))
- item['iconTeam1']= str(match.idTeam1.icon)
+ item['iconTeam1'] = str(match.idTeam1.icon)
item['iconURLTeam1'] = str(match.idTeam1.iconURL)
- item['nameTeam1']= str(match.idTeam1)
- item['abbrTeam1']= str(match.idTeam1.abbr)
+ item['nameTeam1'] = str(match.idTeam1.name)
+ item['abbrTeam1'] = str(match.idTeam1.abbr)
item['iconTeam2'] = str(match.idTeam2.icon)
item['iconURLTeam2'] = str(match.idTeam2.iconURL)
- item['nameTeam2'] = str(match.idTeam2)
- item['abbrTeam2']= str(match.idTeam2.abbr)
+ item['nameTeam2'] = str(match.idTeam2.name)
+ item['abbrTeam2'] = str(match.idTeam2.abbr)
item['started'] = match_started
item['finished'] = match.finished
item['md_name'] = match.matchday_name
- if (match.pointsTeam1 == -1 or match.pointsTeam2 == -1):
+ if (match.pointsTeam1 == -1 or match.pointsTeam2 == -1):
item['matchResult'] = "-:-"
else:
item['matchResult'] = str(match.pointsTeam1) + ":" \
- + str(match.pointsTeam2)
+ + str(match.pointsTeam2)
item['tippFormTeam1'] = f['tippTeam1']
item['tippFormTeam2'] = f['tippTeam2']
@@ -422,27 +419,26 @@ def matchday(request, ls, season, matchday, template_name='md.html'):
for mate in mandant_dict[mandant]:
try:
matetipp = Tipp.objects.get(tipperID=mate['mate'],
- matchID=match.matchID)
+ matchID=match.matchID)
if match_started is True:
if matetipp.score is None:
score = u'\u231B'
else:
score = matetipp.score
- mate['tipps'].append(str(matetipp.pointsTeam1)
- + ":" + str(matetipp.pointsTeam2)
- + "(" + str(score) + ")")
+ mate['tipps'].append(str(matetipp.pointsTeam1)
+ + ":" + str(matetipp.pointsTeam2)
+ + "(" + str(score) + ")")
if match.finished is True:
mate['sum_score'] += matetipp.score
else:
- mate['tipps'].append(u'\u2714')
+ mate['tipps'].append(u'\u2714')
except Exception as e:
- mate['tipps'].append(u'\u2717')
-
- """ sort items in mandant_dict by score """
- mandant_dict[mandant] = sorted(mandant_dict[mandant],
- key=lambda k: k['sum_score'], reverse=True)
+ mate['tipps'].append(u'\u2717')
+ """ sort items in mandant_dict by score """
+ mandant_dict[mandant] = sorted(mandant_dict[mandant],
+ key=lambda k: k['sum_score'], reverse=True)
matches.append(item)
@@ -454,54 +450,54 @@ def matchday(request, ls, season, matchday, template_name='md.html'):
try:
avatar = UserProfile.objects.get(user_id=post.author_id). \
avatar.name
- except:
+ except:
avatar = None
- posts.append( (post, avatar) )
+ posts.append((post, avatar))
try:
- cur_group = matches[0]['md_name']
+ cur_group = matches[0]['md_name']
except:
cur_group = "N/A"
debug += str(mandant_dict)
- return render(request, 'md.html', {
- 'debug': debug,
- #'mds_season': mds_in_season,
+ return django.shortcuts.render(request, 'md.html', {
+ 'debug': debug,
+ # 'mds_season': mds_in_season,
'cur_md': matchday,
'md_name': cur_group,
- 'matches': matches,
+ 'matches': matches,
'ls': ls,
'season': season,
'username': user,
'mandant_dict': mandant_dict,
- #'tipp_mates': sorted(tipp_mates, key=lambda k: k['sum_score'],
- #reverse=True),
+ # 'tipp_mates': sorted(tipp_mates, key=lambda k: k['sum_score'],
+ # reverse=True),
'posts': posts,
'has_refresh': has_refresh
})
-@login_required
-def charts(request, ls, season, pos='default',
- template_name='charts.html'):
+@login_required
+def charts(request, ls, season, pos='default',
+ template_name='charts.html'):
debug = ''
if pos == 'default':
- if get_current_md(ls) < 18:
+ if get_current_md(ls) < 18:
pos = 'hin'
- matches = Match.objects.filter(leagueShortcut=ls,
- season=season, matchday__lte=17)
- else:
+ matches = Match.objects.filter(leagueShortcut=ls,
+ season=season, matchday__lte=17)
+ else:
pos = 'rueck'
- matches = Match.objects.filter(leagueShortcut=ls,
- season=season, matchday__gte=18)
+ matches = Match.objects.filter(leagueShortcut=ls,
+ season=season, matchday__gte=18)
elif pos == 'hin':
- matches = Match.objects.filter(leagueShortcut=ls,
- season=season, matchday__lte=17)
+ matches = Match.objects.filter(leagueShortcut=ls,
+ season=season, matchday__lte=17)
elif pos == 'rueck':
- matches = Match.objects.filter(leagueShortcut=ls,
- season=season, matchday__gte=18)
+ matches = Match.objects.filter(leagueShortcut=ls,
+ season=season, matchday__gte=18)
else:
matches = Match.objects.filter(leagueShortcut=ls, season=season)
@@ -522,25 +518,26 @@ def charts(request, ls, season, pos='default',
for userid in users:
# get user object, then fetch matches for user
user = User.objects.get(id=userid)
- score = Tipp.objects.filter(matchID__in=matches, \
- tipperID=user).aggregate(Sum('score'))
-
+ score = Tipp.objects.filter(matchID__in=matches,
+ tipperID=user).aggregate(Sum('score'))
+
if score['score__sum'] is None:
user_dict[user.first_name] = 0
else:
user_dict[user.first_name] = score['score__sum']
- mandant_dict[mandant.name] = sorted(user_dict.items(),
- key=lambda x: x[1], reverse=True)
+ mandant_dict[mandant.name] = sorted(user_dict.items(),
+ key=lambda x: x[1], reverse=True)
- return render(request, template_name, {
- #'debug': debug,
+ return django.shortcuts.render(request, template_name, {
+ # 'debug': debug,
'mandant_dict': mandant_dict,
'season': season,
'ls': ls,
'pos': pos
})
+
@login_required
def blogindex(request, page):
# get the blog posts that are published
@@ -555,9 +552,9 @@ def blogindex(request, page):
try:
avatar = UserProfile.objects.get(user_id=post.author_id). \
avatar.name
- except:
+ except:
avatar = None
- post_list.append( (post, avatar) )
+ post_list.append((post, avatar))
p = Paginator(post_list, 5)
@@ -568,13 +565,14 @@ def blogindex(request, page):
except EmptyPage:
posts = p.page(p.num_pages)
- return render(request, 'blogindex.html', {
+ return django.shortcuts.render(request, 'blogindex.html', {
'posts': posts,
'ls': get_current_ls(),
'season': get_current_season(),
'page': page
})
-
+
+
@login_required
def newBlogpost(request):
debug = ''
@@ -583,10 +581,10 @@ def newBlogpost(request):
mandants = RelUserMandant.objects.filter(user=request.user). \
values_list('mandant', flat=True)
choices = []
- if mandants.count > 1:
+ if mandants.count() > 1:
has_mandant = True
for m in Mandant.objects.filter(id__in=mandants):
- choices.append( (m.name, m.description) )
+ choices.append((m.name, m.description))
if request.method == 'POST':
form_bp = BlogpostForm(request.POST)
@@ -602,31 +600,32 @@ def newBlogpost(request):
if has_mandant is True and form_mandant.is_valid():
data = form_mandant.cleaned_data
for m in data['mandants']:
- debug += str(m) + " "
- m = RelPostMandant(post=p,
- mandant=Mandant.objects.get(name=m))
+ debug += str(m) + " "
+ m = RelPostMandant(post=p,
+ mandant=Mandant.objects.get(name=m))
m.save()
else:
- m = RelPostMandant(post=p,
- mandant=Mandant.objects.get(id=mandants[0]))
+ m = RelPostMandant(post=p,
+ mandant=Mandant.objects.get(id=mandants[0]))
m.save()
- return redirect( '/blog/1')
+ return django.shortcuts.redirect('/blog/1')
blogpostForm = BlogpostForm()
form_mandant = MandantsForm()
form_mandant.fields["mandants"].choices = choices
cnt_mandants = len(choices)
- return render(request, 'newblogpost.html', {
- 'debug': debug,
+ return django.shortcuts.render(request, 'newblogpost.html', {
+ 'debug': debug,
'form_bp': blogpostForm,
'form_mandants': form_mandant,
- 'cnt_mandants' : cnt_mandants,
+ 'cnt_mandants': cnt_mandants,
'ls': get_current_ls(),
'season': get_current_season()
})
+
def logout(request):
"""
Log users out and re-direct them to the main page.
@@ -634,6 +633,7 @@ def logout(request):
logout(request)
return HttpResponseRedirect('/')
+
def get_current_md(ls):
"""
get current matchday()
@@ -646,14 +646,15 @@ def get_current_md(ls):
try:
ol = OpenLiga()
cur_md = ol.getCurrentGroup(ls)
- except:
+ except:
cur_md = {'groupName': u"1. Spieltag", 'groupOrderID': 1}
- return(cur_md['groupOrderID'])
+ return (cur_md['groupOrderID'])
+
def get_current_ls():
- return("bl1")
+ return ("bl1")
+
def get_current_season():
- return("2016")
-
+ return ("2022")
diff --git a/tippy/__init__.py b/tippy/__init__.py
deleted file mode 100644
index cd7ca49..0000000
--- a/tippy/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-__version__ = '1.0.1'
diff --git a/tippy/settings.py b/tippy/settings.py
deleted file mode 100644
index b0ff94a..0000000
--- a/tippy/settings.py
+++ /dev/null
@@ -1,188 +0,0 @@
-"""
-Django settings for tippy project.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/1.7/topics/settings/
-
-For the full list of settings and their values, see
-https://docs.djangoproject.com/en/1.7/ref/settings/
-"""
-
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-import os
-BASE_DIR = os.path.dirname(os.path.dirname(__file__))
-
-# Django settings for tippy project.
-DEBUG = True
-TEMPLATE_DEBUG = DEBUG
-
-ADMINS = (
- ('Martin Bley', 'martin@mb-oss.de'),
-)
-
-MANAGERS = ADMINS
-
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'NAME': 'tippy',
- 'USER': 'tippy',
- 'PASSWORD': 'tippy',
- 'HOST': 'localhost',
- 'PORT': '5432',
- }
-}
-
-# Hosts/domain names that are valid for this site; required if DEBUG is False
-# See https://docs.djangoproject.com/en/1.4/ref/settings/#allowed-hosts
-ALLOWED_HOSTS = ['*']
-
-# 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'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'de-de'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-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: "/home/media/media.lawrence.com/media/"
-MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
-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: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = '/home/martin/dev/TipPy/src/static/'
-MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
-
-# URL prefix for static files.
-# Example: "http://media.lawrence.com/static/"
-STATIC_URL = '/static/'
-
-# Additional locations of static files
-STATICFILES_DIRS = (
- # 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.
- '/home/martin/dev/TipPy/src/tippy/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',
-)
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = '-7%ge^nl1b0t0694%ws&0$ft_lo)j4l1f-qv#ku^=$)s(sw6us'
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
-)
-
-MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- # Uncomment the next line for simple clickjacking protection:
- # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
-)
-
-ROOT_URLCONF = 'tippy.urls'
-
-# Python dotted path to the WSGI application used by Django's runserver.
-WSGI_APPLICATION = 'tippy.wsgi.application'
-
-TEMPLATE_DIRS = (
- [os.path.join(BASE_DIR, 'templates')]
-)
-
-INSTALLED_APPS = (
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'django.contrib.humanize',
- # Uncomment the next line to enable the admin:
- 'django.contrib.admin',
- # Uncomment the next line to enable admin documentation:
- 'django.contrib.admindocs',
- 'tipp',
-)
-
-# URL of the login page.
-LOGIN_URL = '/login'
-
-# 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 = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse'
- }
- },
- 'handlers': {
- 'mail_admins': {
- 'level': 'ERROR',
- 'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- }
- },
- 'loggers': {
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': True,
- },
- }
-}
-
-EMAIL_USE_TLS = True
-EMAIL_HOST = 'hermes.mb-oss.de'
-EMAIL_PORT = 25
-EMAIL_HOST_USER = 'tippy@mb-oss.de'
-#EMAIL_HOST_PASSWORD = 'p@ssword'
-
-DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
-SERVER_EMAIL = EMAIL_HOST_USER
-
-SESSION_COOKIE_AGE = 7200
-
-AUTH_PROFILE_MODULE = 'tippy.UserProfile'
-
-
diff --git a/tippy/urls.py b/tippy/urls.py
deleted file mode 100644
index 08fe992..0000000
--- a/tippy/urls.py
+++ /dev/null
@@ -1,45 +0,0 @@
-from django.conf.urls import patterns, include, url
-from django.conf import settings
-
-# Uncomment the next two lines to enable the admin:
-from django.contrib import admin
-admin.autodiscover()
-
-urlpatterns = patterns('',
- # Examples:
- url(r'^$', 'tipp.views.home', name='home'),
- url(r'^login$', 'django.contrib.auth.views.login', {
- 'template_name': 'login.html'}),
- url(r'^logout$', 'django.contrib.auth.views.logout', {
- 'next_page': '/'}),
- url(r'^getSeason/(?P.*)/(?P\d{4})$',
- 'tipp.views.getSeason'),
- url(r'^update/(?P.*)/(?P\d{4})/(?P\d{2})$',
- 'tipp.views.update', name='update'),
- url(r'^matchday/(?P.{3,})/(?P\d{4})/(?P\d{2})$',
- 'tipp.views.matchday', name='matchday'),
- url(r'^charts/(?P\w{3,})/(?P\d{4})$', 'tipp.views.charts',
- name='charts'),
- url(r'^charts/(?P\w{3,})/(?P\d{4})/(?P\w{1,})$',
- 'tipp.views.charts', name='charts'),
- url(r'^accounts/profile/(\d+)', 'tipp.views.profile'),
- url(r'^accounts/', include('django.contrib.auth.urls')),
- url(r'^blog/newpost$', 'tipp.views.newBlogpost'),
- url(r'^blog/(?P\d)$', 'tipp.views.blogindex'),
- url(r'^about$', 'tipp.views.about'),
-
- # Uncomment the admin/doc line below to enable admin documentation:
- # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
-
- # Uncomment the next line to enable the admin:
- url(r'^admin/', include(admin.site.urls)),
-)
-
-if settings.DEBUG:
- urlpatterns += patterns('',
- url(r'^media/(?P.*)$', 'django.views.static.serve', {
- 'document_root': settings.MEDIA_ROOT,
- }),
-)
-
-
diff --git a/tippy/wsgi.py b/tippy/wsgi.py
deleted file mode 100644
index 1c590e4..0000000
--- a/tippy/wsgi.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""
-WSGI config for tippy 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.
-
-"""
-import os
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "tippy.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)