Merge branch 'develop' of https://bitbucket.org/sanderroosendaal/rowsandall into develop
This commit is contained in:
2523
008fc633-d9d4-4abc-9812-e22014e19498.tcx
Normal file
2523
008fc633-d9d4-4abc-9812-e22014e19498.tcx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,6 +3,7 @@ apipkg==1.5
|
|||||||
appdirs==1.4.3
|
appdirs==1.4.3
|
||||||
arcgis==1.6.0
|
arcgis==1.6.0
|
||||||
arrow==0.13.1
|
arrow==0.13.1
|
||||||
|
asn1crypto==0.24.0
|
||||||
atomicwrites==1.3.0
|
atomicwrites==1.3.0
|
||||||
attrs==19.1.0
|
attrs==19.1.0
|
||||||
backcall==0.1.0
|
backcall==0.1.0
|
||||||
@@ -24,29 +25,30 @@ cookies==2.2.1
|
|||||||
coreapi==2.3.3
|
coreapi==2.3.3
|
||||||
coreschema==0.0.4
|
coreschema==0.0.4
|
||||||
coverage==4.5.3
|
coverage==4.5.3
|
||||||
|
cryptography==2.6.1
|
||||||
cycler==0.10.0
|
cycler==0.10.0
|
||||||
dask==1.1.4
|
dask==1.1.4
|
||||||
decorator==4.4.0
|
decorator==4.4.0
|
||||||
defusedxml==0.5.0
|
defusedxml==0.5.0
|
||||||
Django==1.9.5
|
Django==2.1.7
|
||||||
django-analytical==2.5.0
|
django-analytical==2.5.0
|
||||||
django-async-messages==0.3.1
|
django-async-messages==0.3.1
|
||||||
django-braces==1.13.0
|
django-braces==1.13.0
|
||||||
django-classy-tags==0.8.0
|
django-classy-tags==0.8.0
|
||||||
django-cookie-law==2.0.1
|
django-cookie-law==2.0.1
|
||||||
django-cors-headers==2.4.0
|
django-cors-headers==2.5.2
|
||||||
django-countries==5.3.3
|
django-countries==5.3.3
|
||||||
django-datetime-widget==0.9.3
|
django-datetime-widget==0.9.3
|
||||||
django-debug-toolbar==1.4
|
django-debug-toolbar==1.11
|
||||||
django-extensions==2.1.6
|
django-extensions==2.1.6
|
||||||
django-htmlmin==0.10.0
|
django-htmlmin==0.11.0
|
||||||
django-leaflet==0.24.0
|
django-leaflet==0.24.0
|
||||||
django-mailbox==4.7.1
|
django-mailbox==4.7.1
|
||||||
django-oauth-toolkit==0.10.0
|
django-oauth-toolkit==1.2.0
|
||||||
django-oauth2-provider==0.2.6.1
|
django-oauth2-provider==0.2.6.1
|
||||||
django-rest-framework==0.1.0
|
django-rest-framework==0.1.0
|
||||||
django-rest-swagger==2.2.0
|
django-rest-swagger==2.2.0
|
||||||
django-rq==1.3.0
|
django-rq==1.3.1
|
||||||
django-rq-dashboard==0.3.3
|
django-rq-dashboard==0.3.3
|
||||||
django-ses==0.8.10
|
django-ses==0.8.10
|
||||||
django-shell-plus==1.1.7
|
django-shell-plus==1.1.7
|
||||||
@@ -54,7 +56,7 @@ django-social-share==1.3.2
|
|||||||
django-suit==0.2.26
|
django-suit==0.2.26
|
||||||
django-suit-rq==1.0.1
|
django-suit-rq==1.0.1
|
||||||
django-tz-detect==0.2.9
|
django-tz-detect==0.2.9
|
||||||
djangorestframework==3.5.4
|
djangorestframework==3.9.2
|
||||||
docopt==0.6.2
|
docopt==0.6.2
|
||||||
docutils==0.14
|
docutils==0.14
|
||||||
entrypoints==0.3
|
entrypoints==0.3
|
||||||
@@ -63,7 +65,6 @@ factory-boy==2.11.1
|
|||||||
Faker==1.0.4
|
Faker==1.0.4
|
||||||
fitparse==1.1.0
|
fitparse==1.1.0
|
||||||
future==0.17.1
|
future==0.17.1
|
||||||
GDAL==2.3.3
|
|
||||||
geocoder==1.38.1
|
geocoder==1.38.1
|
||||||
holoviews==1.11.3
|
holoviews==1.11.3
|
||||||
html5lib==1.0.1
|
html5lib==1.0.1
|
||||||
@@ -75,13 +76,14 @@ idna==2.8
|
|||||||
image==1.5.27
|
image==1.5.27
|
||||||
importlib-resources==1.0.2
|
importlib-resources==1.0.2
|
||||||
ipykernel==5.1.0
|
ipykernel==5.1.0
|
||||||
ipython==7.3.0
|
ipython==7.4.0
|
||||||
ipython-genutils==0.2.0
|
ipython-genutils==0.2.0
|
||||||
ipywidgets==7.4.2
|
ipywidgets==7.4.2
|
||||||
iso8601==0.1.12
|
iso8601==0.1.12
|
||||||
isodate==0.6.0
|
isodate==0.6.0
|
||||||
itypes==1.1.0
|
itypes==1.1.0
|
||||||
jedi==0.13.3
|
jedi==0.13.3
|
||||||
|
jeepney==0.4
|
||||||
Jinja2==2.10
|
Jinja2==2.10
|
||||||
jsonschema==3.0.1
|
jsonschema==3.0.1
|
||||||
jupyter==1.0.0
|
jupyter==1.0.0
|
||||||
@@ -89,7 +91,7 @@ jupyter-client==5.2.4
|
|||||||
jupyter-console==6.0.0
|
jupyter-console==6.0.0
|
||||||
jupyter-core==4.4.0
|
jupyter-core==4.4.0
|
||||||
jupyterlab==0.35.4
|
jupyterlab==0.35.4
|
||||||
jupyterlab-server==0.2.0
|
jupyterlab-server==0.3.0
|
||||||
keyring==18.0.0
|
keyring==18.0.0
|
||||||
kiwisolver==1.0.1
|
kiwisolver==1.0.1
|
||||||
kombu==4.3.0
|
kombu==4.3.0
|
||||||
@@ -109,7 +111,7 @@ nose-parameterized==0.6.0
|
|||||||
notebook==5.7.6
|
notebook==5.7.6
|
||||||
numpy==1.16.2
|
numpy==1.16.2
|
||||||
oauth2==1.9.0.post1
|
oauth2==1.9.0.post1
|
||||||
oauthlib==1.0.3
|
oauthlib==3.0.1
|
||||||
openapi-codec==1.3.2
|
openapi-codec==1.3.2
|
||||||
packaging==19.0
|
packaging==19.0
|
||||||
pandas==0.24.2
|
pandas==0.24.2
|
||||||
@@ -152,10 +154,11 @@ ratelim==0.1.6
|
|||||||
redis==3.2.1
|
redis==3.2.1
|
||||||
requests==2.21.0
|
requests==2.21.0
|
||||||
requests-oauthlib==1.2.0
|
requests-oauthlib==1.2.0
|
||||||
rowingdata==2.2.3
|
rowingdata==2.2.5
|
||||||
rowingphysics==0.5.0
|
rowingphysics==0.5.0
|
||||||
rq==0.13.0
|
rq==0.13.0
|
||||||
scipy==1.2.1
|
scipy==1.2.1
|
||||||
|
SecretStorage==3.1.1
|
||||||
Send2Trash==1.5.0
|
Send2Trash==1.5.0
|
||||||
shell==1.0.1
|
shell==1.0.1
|
||||||
shortuuid==0.5.0
|
shortuuid==0.5.0
|
||||||
@@ -182,7 +185,6 @@ vine==1.3.0
|
|||||||
wcwidth==0.1.7
|
wcwidth==0.1.7
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
widgetsnbextension==3.4.2
|
widgetsnbextension==3.4.2
|
||||||
winkerberos==0.7.0
|
|
||||||
xmltodict==0.12.0
|
xmltodict==0.12.0
|
||||||
yamjam==0.1.7
|
yamjam==0.1.7
|
||||||
yamllint==1.15.0
|
yamllint==1.15.0
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ from rowers.models import strokedatafields
|
|||||||
#allowedcolumns = [item[0] for item in rowingmetrics]
|
#allowedcolumns = [item[0] for item in rowingmetrics]
|
||||||
allowedcolumns = [key for key,value in strokedatafields.items()]
|
allowedcolumns = [key for key,value in strokedatafields.items()]
|
||||||
|
|
||||||
from async_messages import messages as a_messages
|
#from async_messages import messages as a_messages
|
||||||
import os
|
import os
|
||||||
import zipfile
|
import zipfile
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
@@ -920,12 +920,6 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
for key, value in checks.items():
|
for key, value in checks.items():
|
||||||
if not value:
|
if not value:
|
||||||
allchecks = 0
|
allchecks = 0
|
||||||
if consistencychecks:
|
|
||||||
a_messages.error(
|
|
||||||
r.user, 'Failed consistency check: ' + key + ', autocorrected')
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
# a_messages.error(r.user,'Failed consistency check: '+key+', not corrected')
|
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -1148,9 +1142,6 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
|
|
||||||
# submit email task to send email about breakthrough workout
|
# submit email task to send email about breakthrough workout
|
||||||
if isbreakthrough:
|
if isbreakthrough:
|
||||||
a_messages.info(
|
|
||||||
r.user, 'It looks like you have a new breakthrough workout'
|
|
||||||
)
|
|
||||||
if r.getemailnotifications and not r.emailbounced:
|
if r.getemailnotifications and not r.emailbounced:
|
||||||
job = myqueue(queuehigh,handle_sendemail_breakthrough,
|
job = myqueue(queuehigh,handle_sendemail_breakthrough,
|
||||||
w.id,
|
w.id,
|
||||||
@@ -1161,7 +1152,6 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
|
|||||||
|
|
||||||
# submit email task to send email about breakthrough workout
|
# submit email task to send email about breakthrough workout
|
||||||
if ishard:
|
if ishard:
|
||||||
a_messages.info(r.user, 'That was a pretty hard workout')
|
|
||||||
if r.getemailnotifications and not r.emailbounced:
|
if r.getemailnotifications and not r.emailbounced:
|
||||||
job = myqueue(queuehigh,handle_sendemail_hard,
|
job = myqueue(queuehigh,handle_sendemail_hard,
|
||||||
w.id,
|
w.id,
|
||||||
@@ -1733,7 +1723,7 @@ def getsmallrowdata_db(columns, ids=[], doclean=True, workstrokesonly=True):
|
|||||||
row = rdata(w.csvfilename)
|
row = rdata(w.csvfilename)
|
||||||
try:
|
try:
|
||||||
row.set_instroke_metrics()
|
row.set_instroke_metrics()
|
||||||
except AttributeError:
|
except (AttributeError,TypeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ def login_required_message(function=None, message=default_message):
|
|||||||
to the log-in page if necessary.
|
to the log-in page if necessary.
|
||||||
"""
|
"""
|
||||||
actual_decorator = user_passes_test(
|
actual_decorator = user_passes_test(
|
||||||
lambda u: u.is_authenticated(),
|
lambda u: u.is_authenticated,
|
||||||
message=message,
|
message=message,
|
||||||
)
|
)
|
||||||
if function:
|
if function:
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
|||||||
try:
|
try:
|
||||||
datafilename = datafile.name
|
datafilename = datafile.name
|
||||||
fileformat = get_file_type('media/' + datafilename)
|
fileformat = get_file_type('media/' + datafilename)
|
||||||
|
raise ValueError
|
||||||
except IOError:
|
except IOError:
|
||||||
datafilename = datafile.name + '.gz'
|
datafilename = datafile.name + '.gz'
|
||||||
fileformat = get_file_type('media/' + datafilename)
|
fileformat = get_file_type('media/' + datafilename)
|
||||||
@@ -108,11 +109,8 @@ def make_new_workout_from_email(rower, datafile, name, cntr=0,testing=False):
|
|||||||
print('Fileformat = ',fileformat)
|
print('Fileformat = ',fileformat)
|
||||||
|
|
||||||
|
|
||||||
if fileformat == 'unknown':
|
f,e = os.path.splitext(datafilename)
|
||||||
# extension = datafilename[-4:].lower()
|
if fileformat == 'unknown' and 'txt' not in e:
|
||||||
# fcopy = "media/"+datafilename[:-4]+"_copy"+extension
|
|
||||||
# with open('media/'+datafilename, 'r') as f_in, open(fcopy, 'w') as f_out:
|
|
||||||
# shutil.copyfileobj(f_in,f_out)
|
|
||||||
fcopy = "media/"+datafilename
|
fcopy = "media/"+datafilename
|
||||||
if not testing:
|
if not testing:
|
||||||
if settings.CELERY:
|
if settings.CELERY:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import io
|
|||||||
|
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
from django_mailbox.models import Message, MessageAttachment,Mailbox
|
from django_mailbox.models import Message, MessageAttachment,Mailbox
|
||||||
from django.core.urlresolvers import reverse
|
from django.urls import reverse
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
@@ -213,7 +213,9 @@ class Command(BaseCommand):
|
|||||||
testing = False
|
testing = False
|
||||||
cntr = 0
|
cntr = 0
|
||||||
for attachment in attachments:
|
for attachment in attachments:
|
||||||
extension = attachment.document.name[-3:].lower()
|
filename, extension = os.path.splitext(attachment.document.name)
|
||||||
|
extension = extension.lower()
|
||||||
|
# extension = attachment.document.name[-3:].lower()
|
||||||
try:
|
try:
|
||||||
message = Message.objects.get(id=attachment.message_id)
|
message = Message.objects.get(id=attachment.message_id)
|
||||||
if message.encoded:
|
if message.encoded:
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ queuelow = django_rq.get_queue('low')
|
|||||||
from rowers.tasks import handle_updatefitnessmetric,handle_sendemail_expired
|
from rowers.tasks import handle_updatefitnessmetric,handle_sendemail_expired
|
||||||
from rowers.mytypes import otwtypes
|
from rowers.mytypes import otwtypes
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
from django.http import HttpResponse
|
||||||
|
|
||||||
def getrower(user):
|
def getrower(user):
|
||||||
try:
|
try:
|
||||||
@@ -70,12 +71,19 @@ def do_update(user,mode='rower',days=42):
|
|||||||
|
|
||||||
|
|
||||||
class PowerTimeFitnessMetricMiddleWare(object):
|
class PowerTimeFitnessMetricMiddleWare(object):
|
||||||
def process_request(self, request):
|
def __init__(self, get_response):
|
||||||
|
self.get_response = get_response
|
||||||
|
|
||||||
|
def __call__(self, request):
|
||||||
# Code to be executed before the view is called
|
# Code to be executed before the view is called
|
||||||
if request.user.is_authenticated():
|
if request.user.is_authenticated:
|
||||||
result = do_update(request.user,mode='rower')
|
result = do_update(request.user,mode='rower')
|
||||||
result = do_update(request.user,mode='water')
|
result = do_update(request.user,mode='water')
|
||||||
|
|
||||||
|
response = self.get_response(request)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
|
|
||||||
|
|
||||||
@@ -93,8 +101,11 @@ allowed_paths = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
class GDPRMiddleWare(object):
|
class GDPRMiddleWare(object):
|
||||||
def process_request(self, request):
|
def __init__(self, get_response):
|
||||||
if request.user.is_authenticated() and request.path not in allowed_paths:
|
self.get_response = get_response
|
||||||
|
|
||||||
|
def __call__(self, request):
|
||||||
|
if request.user.is_authenticated and request.path not in allowed_paths:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
nexturl = request.path
|
nexturl = request.path
|
||||||
if 'optin' in nexturl:
|
if 'optin' in nexturl:
|
||||||
@@ -104,9 +115,16 @@ class GDPRMiddleWare(object):
|
|||||||
'/rowers/me/gdpr-optin/?next=%s' % nexturl
|
'/rowers/me/gdpr-optin/?next=%s' % nexturl
|
||||||
)
|
)
|
||||||
|
|
||||||
|
response = self.get_response(request)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
class RowerPlanMiddleWare(object):
|
class RowerPlanMiddleWare(object):
|
||||||
def process_request(self, request):
|
def __init__(self, get_response):
|
||||||
if request.user.is_authenticated() and request.user.rower.rowerplan != 'basic':
|
self.get_response = get_response
|
||||||
|
|
||||||
|
def __call__(self, request):
|
||||||
|
if request.user.is_authenticated and request.user.rower.rowerplan != 'basic':
|
||||||
if request.user.rower.paymenttype == 'single':
|
if request.user.rower.paymenttype == 'single':
|
||||||
if request.user.rower.planexpires < timezone.now().date():
|
if request.user.rower.planexpires < timezone.now().date():
|
||||||
messg = 'Your paid plan has expired. We have reset you to a free basic plan.'
|
messg = 'Your paid plan has expired. We have reset you to a free basic plan.'
|
||||||
@@ -122,3 +140,6 @@ class RowerPlanMiddleWare(object):
|
|||||||
r.user.last_name,
|
r.user.last_name,
|
||||||
str(r.planexpires))
|
str(r.planexpires))
|
||||||
|
|
||||||
|
response = self.get_response(request)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|||||||
@@ -1014,7 +1014,7 @@ class BasePlannedSessionFormSet(BaseFormSet):
|
|||||||
|
|
||||||
# Check if workout is owned by this user
|
# Check if workout is owned by this user
|
||||||
def checkworkoutuser(user,workout):
|
def checkworkoutuser(user,workout):
|
||||||
if user.is_anonymous():
|
if user.is_anonymous:
|
||||||
return False
|
return False
|
||||||
try:
|
try:
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
@@ -1034,7 +1034,7 @@ def checkworkoutuser(user,workout):
|
|||||||
|
|
||||||
# Check if workout may be viewed by this user
|
# Check if workout may be viewed by this user
|
||||||
def checkworkoutuserview(user,workout):
|
def checkworkoutuserview(user,workout):
|
||||||
if user.is_anonymous():
|
if user.is_anonymous:
|
||||||
return False
|
return False
|
||||||
try:
|
try:
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ def handle_check_race_course(self,
|
|||||||
rowdata = rowdata[rowdata['time']>splitsecond]
|
rowdata = rowdata[rowdata['time']>splitsecond]
|
||||||
# we may want to expand the time (interpolate)
|
# we may want to expand the time (interpolate)
|
||||||
rowdata['dt'] = rowdata['time'].apply(
|
rowdata['dt'] = rowdata['time'].apply(
|
||||||
lambda x: safetimedelta(seconds=x)
|
lambda x: safetimedelta(x)
|
||||||
)
|
)
|
||||||
rowdata = rowdata.resample('100ms',on='dt').mean()
|
rowdata = rowdata.resample('100ms',on='dt').mean()
|
||||||
rowdata = rowdata.interpolate()
|
rowdata = rowdata.interpolate()
|
||||||
@@ -624,7 +624,7 @@ def handle_calctrimp(id,
|
|||||||
|
|
||||||
df2['time'] = df2[' ElapsedTime (sec)']
|
df2['time'] = df2[' ElapsedTime (sec)']
|
||||||
df2['time'] = df2['time'].apply(
|
df2['time'] = df2['time'].apply(
|
||||||
lambda x:safetimedelta(seconds=x)
|
lambda x:safetimedelta(x)
|
||||||
)
|
)
|
||||||
|
|
||||||
duration = df['TimeStamp (sec)'].max()-df['TimeStamp (sec)'].min()
|
duration = df['TimeStamp (sec)'].max()-df['TimeStamp (sec)'].min()
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ django.setup()
|
|||||||
import time
|
import time
|
||||||
from celery import app
|
from celery import app
|
||||||
from django_rq import job
|
from django_rq import job
|
||||||
from async_messages import message_user,messages
|
|
||||||
from rowers.models import Workout
|
from rowers.models import Workout
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
<ul class="main-content">
|
<ul class="main-content">
|
||||||
<li class="grid_2 frontitem">
|
<li class="grid_2 frontitem">
|
||||||
<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
|
<form method="post" action="{% url 'login' %}">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ def secondstotimestring(tdelta):
|
|||||||
|
|
||||||
@register.filter
|
@register.filter
|
||||||
def existing_customer(user):
|
def existing_customer(user):
|
||||||
if user.is_anonymous():
|
if user.is_anonymous:
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return payments.is_existing_customer(user.rower)
|
return payments.is_existing_customer(user.rower)
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ from mock import Mock, patch
|
|||||||
import pandas as pd
|
import pandas as pd
|
||||||
import rowers.c2stuff as c2stuff
|
import rowers.c2stuff as c2stuff
|
||||||
|
|
||||||
from django.core.urlresolvers import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import numpy as np
|
import numpy as np
|
||||||
|
|||||||
@@ -6,13 +6,12 @@ from __future__ import unicode_literals
|
|||||||
#from __future__ import print_function
|
#from __future__ import print_function
|
||||||
from .statements import *
|
from .statements import *
|
||||||
|
|
||||||
|
from django.test import SimpleTestCase, override_settings
|
||||||
|
|
||||||
#@pytest.mark.django_db
|
#@pytest.mark.django_db
|
||||||
class TestErrorPages(TestCase):
|
class TestErrorPages(TestCase):
|
||||||
def test_error_handlers(self):
|
def test_error_handlers(self):
|
||||||
|
|
||||||
self.assertTrue(urls.handler404.endswith('.error404_view'))
|
|
||||||
self.assertTrue(urls.handler500.endswith('.error500_view'))
|
|
||||||
factory = RequestFactory()
|
factory = RequestFactory()
|
||||||
request = factory.get('/')
|
request = factory.get('/')
|
||||||
response = error404_view(request)
|
response = error404_view(request)
|
||||||
@@ -26,3 +25,22 @@ class TestErrorPages(TestCase):
|
|||||||
response = error400_view(request)
|
response = error400_view(request)
|
||||||
self.assertEqual(response.status_code, 400)
|
self.assertEqual(response.status_code, 400)
|
||||||
|
|
||||||
|
|
||||||
|
# ROOT_URLCONF must specify the module that contains handler403 = ...
|
||||||
|
#@override_settings(ROOT_URLCONF=__name__)
|
||||||
|
class CustomErrorHandlerTests(TestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.c = Client()
|
||||||
|
|
||||||
|
def test_handler_workout_notfound(self):
|
||||||
|
response = self.c.get('/rowers/workout/121/')
|
||||||
|
# Make assertions on the response here. For example:
|
||||||
|
self.assertEqual(response.status_code, 404)
|
||||||
|
self.assertIn('We could not find' ,str(response.content))
|
||||||
|
|
||||||
|
# def test_handler_500(self):
|
||||||
|
# response = self.c.get('/500/')
|
||||||
|
# # Make assertions on the response here. For example:
|
||||||
|
# self.assertEqual(response.status_code, 500)
|
||||||
|
# self.assertIn('The site developer' ,str(response.content))
|
||||||
|
|
||||||
|
|||||||
@@ -59,8 +59,6 @@ class ViewTest(TestCase):
|
|||||||
form = DocumentsForm(form_data,file_data)
|
form = DocumentsForm(form_data,file_data)
|
||||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||||
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||||
status_code=302,target_status_code=200)
|
status_code=302,target_status_code=200)
|
||||||
|
|
||||||
@@ -69,6 +67,7 @@ class ViewTest(TestCase):
|
|||||||
response = self.c.get('/rowers/workout/'+encoded1+'/', form_data, follow=True)
|
response = self.c.get('/rowers/workout/'+encoded1+'/', form_data, follow=True)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
response = self.c.get('/rowers/workout/'+encoded1+'/edit/', form_data, follow=True)
|
response = self.c.get('/rowers/workout/'+encoded1+'/edit/', form_data, follow=True)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
@@ -77,6 +76,7 @@ class ViewTest(TestCase):
|
|||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
response = self.c.get('/rowers/workout/'+encoded1+'/workflow/',
|
response = self.c.get('/rowers/workout/'+encoded1+'/workflow/',
|
||||||
@@ -157,7 +157,6 @@ class ViewTest(TestCase):
|
|||||||
|
|
||||||
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
response = self.c.post('/rowers/workout/upload/', form_data, follow=True)
|
||||||
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
self.assertRedirects(response, expected_url='/rowers/workout/'+encoded1+'/edit/',
|
||||||
status_code=302,target_status_code=200)
|
status_code=302,target_status_code=200)
|
||||||
@@ -167,6 +166,7 @@ class ViewTest(TestCase):
|
|||||||
response = self.c.get('/rowers/workout/'+encoded1+'/', form_data, follow=True)
|
response = self.c.get('/rowers/workout/'+encoded1+'/', form_data, follow=True)
|
||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
||||||
w = Workout.objects.get(id=1)
|
w = Workout.objects.get(id=1)
|
||||||
f_to_be_deleted = w.csvfilename
|
f_to_be_deleted = w.csvfilename
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ tpapilocation = "https://api.trainingpeaks.com"
|
|||||||
from celery import Celery,app
|
from celery import Celery,app
|
||||||
from django_rq import job
|
from django_rq import job
|
||||||
import time
|
import time
|
||||||
from async_messages import message_user,messages
|
#from async_messages import message_user,messages
|
||||||
|
|
||||||
oauth_data = {
|
oauth_data = {
|
||||||
'client_id': TP_CLIENT_ID,
|
'client_id': TP_CLIENT_ID,
|
||||||
|
|||||||
@@ -349,7 +349,7 @@ def upload_options(body):
|
|||||||
uploadoptions = {}
|
uploadoptions = {}
|
||||||
body = cleanbody(body)
|
body = cleanbody(body)
|
||||||
try:
|
try:
|
||||||
yml = (yaml.load(body))
|
yml = (yaml.safe_load(body))
|
||||||
if yml and 'fromuploadform' in yml:
|
if yml and 'fromuploadform' in yml:
|
||||||
return yml
|
return yml
|
||||||
try:
|
try:
|
||||||
|
|||||||
866
rowers/urls.py
866
rowers/urls.py
File diff suppressed because it is too large
Load Diff
@@ -172,8 +172,8 @@ def histo(request,theuser=0,
|
|||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
mayedit=0
|
mayedit=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember = 1
|
promember = 1
|
||||||
|
|
||||||
@@ -269,9 +269,9 @@ def cum_flex_data(
|
|||||||
if theuser == 0:
|
if theuser == 0:
|
||||||
theuser = request.user.id
|
theuser = request.user.id
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -369,9 +369,9 @@ def histo_data(
|
|||||||
if theuser == 0:
|
if theuser == 0:
|
||||||
theuser = request.user.id
|
theuser = request.user.id
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -575,8 +575,8 @@ def cum_flex(request,theuser=0,
|
|||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
mayedit=0
|
mayedit=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember = 1
|
promember = 1
|
||||||
|
|
||||||
@@ -694,7 +694,7 @@ def rankings_view(request,theuser=0,
|
|||||||
theuser = request.user.id
|
theuser = request.user.id
|
||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
if r.birthdate:
|
if r.birthdate:
|
||||||
age = calculate_age(r.birthdate)
|
age = calculate_age(r.birthdate)
|
||||||
@@ -706,7 +706,7 @@ def rankings_view(request,theuser=0,
|
|||||||
else:
|
else:
|
||||||
worldclasspower = None
|
worldclasspower = None
|
||||||
|
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -1047,7 +1047,7 @@ def rankings_view2(request,theuser=0,
|
|||||||
|
|
||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
wcdurations = []
|
wcdurations = []
|
||||||
wcpower = []
|
wcpower = []
|
||||||
@@ -1114,7 +1114,7 @@ def rankings_view2(request,theuser=0,
|
|||||||
request.session['options'] = options
|
request.session['options'] = options
|
||||||
|
|
||||||
|
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -1466,9 +1466,9 @@ def otwrankings_view(request,theuser=0,
|
|||||||
theuser = request.user.id
|
theuser = request.user.id
|
||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = Rower.objects.get(user=request.user)
|
r = Rower.objects.get(user=request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -1872,9 +1872,9 @@ def oterankings_view(request,theuser=0,
|
|||||||
|
|
||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = Rower.objects.get(user=request.user)
|
r = Rower.objects.get(user=request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -3420,9 +3420,9 @@ def cumstats(request,theuser=0,
|
|||||||
if theuser == 0:
|
if theuser == 0:
|
||||||
theuser = request.user.id
|
theuser = request.user.id
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
|
|||||||
@@ -5,31 +5,40 @@ from __future__ import unicode_literals
|
|||||||
|
|
||||||
from rowers.views.statements import *
|
from rowers.views.statements import *
|
||||||
|
|
||||||
|
from django.core.exceptions import PermissionDenied
|
||||||
|
from django.http import HttpResponse
|
||||||
|
from django.test import SimpleTestCase, override_settings
|
||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
|
||||||
|
def servererror_view(request):
|
||||||
|
raise ValueError
|
||||||
|
|
||||||
# Custom error pages with Rowsandall headers
|
# Custom error pages with Rowsandall headers
|
||||||
def error500_view(request):
|
def error500_view(request):
|
||||||
response = render_to_response('500.html', {},
|
response = render(request,'500.html', {},status=500)
|
||||||
context_instance = RequestContext(request))
|
# context_instance = RequestContext(request))
|
||||||
|
|
||||||
response.status_code = 500
|
response.status_code = 500
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def error404_view(request):
|
def error404_view(request):
|
||||||
response = render_to_response('404.html', {},
|
response = render(request,'404.html', {},status=404)
|
||||||
context_instance = RequestContext(request))
|
# context_instance = RequestContext(request))
|
||||||
|
|
||||||
response.status_code = 404
|
response.status_code = 404
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def error400_view(request):
|
def error400_view(request):
|
||||||
response = render_to_response('400.html', {},
|
response = render(request,'400.html', {},status=400)
|
||||||
context_instance = RequestContext(request))
|
# context_instance = RequestContext(request))
|
||||||
|
|
||||||
response.status_code = 400
|
response.status_code = 400
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def error403_view(request):
|
def error403_view(request,*args, **kwargs):
|
||||||
response = render_to_response('403.html', {},
|
response = render(request,'403.html', {},status=403)
|
||||||
context_instance = RequestContext(request))
|
# context_instance = RequestContext(request))
|
||||||
|
|
||||||
response.status_code = 403
|
response.status_code = 403
|
||||||
return response
|
return response
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ def deactivate_user(request):
|
|||||||
pk = request.user.id
|
pk = request.user.id
|
||||||
user = User.objects.get(pk=pk)
|
user = User.objects.get(pk=pk)
|
||||||
user_form = DeactivateUserForm(instance=user)
|
user_form = DeactivateUserForm(instance=user)
|
||||||
if request.user.is_authenticated() and request.user.id == user.id:
|
if request.user.is_authenticated and request.user.id == user.id:
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
user_form = DeactivateUserForm(request.POST, instance=user)
|
user_form = DeactivateUserForm(request.POST, instance=user)
|
||||||
if user_form.is_valid():
|
if user_form.is_valid():
|
||||||
@@ -80,7 +80,7 @@ def remove_user(request):
|
|||||||
pk = request.user.id
|
pk = request.user.id
|
||||||
user = User.objects.get(pk=pk)
|
user = User.objects.get(pk=pk)
|
||||||
user_form = DeleteUserForm(instance=user)
|
user_form = DeleteUserForm(instance=user)
|
||||||
if request.user.is_authenticated() and request.user.id == user.id:
|
if request.user.is_authenticated and request.user.id == user.id:
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
user_form = DeleteUserForm(request.POST,instance=user)
|
user_form = DeleteUserForm(request.POST,instance=user)
|
||||||
if user_form.is_valid():
|
if user_form.is_valid():
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ from __future__ import unicode_literals
|
|||||||
from rowers.views.statements import *
|
from rowers.views.statements import *
|
||||||
|
|
||||||
def paidplans_view(request):
|
def paidplans_view(request):
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = request.user.rower
|
r = request.user.rower
|
||||||
if r.paymentprocessor != 'braintree' and r.paymenttype == 'recurring':
|
if r.paymentprocessor != 'braintree' and r.paymenttype == 'recurring':
|
||||||
messages.error(request,'Automated payment processing is currently only available through BrainTree (by PayPal). You are currently on a recurring payment plan with PayPal. Contact the site administrator at support@rowsandall.com before you proceed')
|
messages.error(request,'Automated payment processing is currently only available through BrainTree (by PayPal). You are currently on a recurring payment plan with PayPal. Contact the site administrator at support@rowsandall.com before you proceed')
|
||||||
|
|||||||
@@ -495,7 +495,7 @@ def virtualevents_view(request):
|
|||||||
|
|
||||||
races = (races1 | races2).order_by("startdate","start_time")
|
races = (races1 | races2).order_by("startdate","start_time")
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
else:
|
else:
|
||||||
r = None
|
r = None
|
||||||
@@ -687,7 +687,7 @@ def virtualevent_disqualify_view(request,raceid=0,recordid=0):
|
|||||||
|
|
||||||
buttons = []
|
buttons = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -724,7 +724,7 @@ def virtualevent_view(request,id=0):
|
|||||||
|
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
else:
|
else:
|
||||||
r = None
|
r = None
|
||||||
@@ -757,7 +757,7 @@ def virtualevent_view(request,id=0):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -907,7 +907,7 @@ def virtualevent_ranking_view(request,id=0):
|
|||||||
|
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
else:
|
else:
|
||||||
r = None
|
r = None
|
||||||
@@ -940,7 +940,7 @@ def virtualevent_ranking_view(request,id=0):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -1247,7 +1247,7 @@ def virtualevent_addboat_view(request,id=0):
|
|||||||
|
|
||||||
buttons = []
|
buttons = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -1401,7 +1401,7 @@ def virtualevent_register_view(request,id=0):
|
|||||||
|
|
||||||
buttons = []
|
buttons = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -1592,7 +1592,7 @@ def indoorvirtualevent_register_view(request,id=0):
|
|||||||
|
|
||||||
buttons = []
|
buttons = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -1940,7 +1940,7 @@ def virtualevent_edit_view(request,id=0):
|
|||||||
|
|
||||||
buttons = []
|
buttons = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -2039,7 +2039,7 @@ def indoorvirtualevent_edit_view(request,id=0):
|
|||||||
|
|
||||||
buttons = []
|
buttons = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
@@ -2254,7 +2254,7 @@ def virtualevent_submit_result_view(request,id=0,workoutid=0):
|
|||||||
|
|
||||||
buttons = []
|
buttons = []
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
if race_can_register(r,race):
|
if race_can_register(r,race):
|
||||||
buttons += ['registerbutton']
|
buttons += ['registerbutton']
|
||||||
|
|
||||||
|
|||||||
@@ -61,10 +61,7 @@ from rowers.forms import (
|
|||||||
disqualifiers,SearchForm,BillingForm,PlanSelectForm
|
disqualifiers,SearchForm,BillingForm,PlanSelectForm
|
||||||
)
|
)
|
||||||
|
|
||||||
try:
|
from django.urls import reverse, reverse_lazy
|
||||||
from django.core.urlresolvers import reverse, reverse_lazy
|
|
||||||
except ModuleNotFoundError:
|
|
||||||
from django.urls import reverse, reverse_lazy
|
|
||||||
|
|
||||||
from django.core.exceptions import PermissionDenied
|
from django.core.exceptions import PermissionDenied
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
@@ -188,7 +185,7 @@ from rowers.tasks import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
from scipy.signal import savgol_filter
|
from scipy.signal import savgol_filter
|
||||||
from django.shortcuts import render_to_response
|
#from django.shortcuts import render_to_response
|
||||||
try:
|
try:
|
||||||
from Cookie import SimpleCookie
|
from Cookie import SimpleCookie
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
@@ -269,7 +266,7 @@ def getfavorites(r,row):
|
|||||||
return favorites,maxfav
|
return favorites,maxfav
|
||||||
|
|
||||||
def get_workout_default_page(request,id):
|
def get_workout_default_page(request,id):
|
||||||
if request.user.is_anonymous():
|
if request.user.is_anonymous:
|
||||||
return reverse('workout_view',kwargs={'id':id})
|
return reverse('workout_view',kwargs={'id':id})
|
||||||
else:
|
else:
|
||||||
r = Rower.objects.get(user=request.user)
|
r = Rower.objects.get(user=request.user)
|
||||||
@@ -347,10 +344,10 @@ def getrequestplanrower(request,rowerid=0,userid=0,notpermanent=False):
|
|||||||
|
|
||||||
def getrower(user):
|
def getrower(user):
|
||||||
try:
|
try:
|
||||||
if user.is_anonymous():
|
if user.is_anonymous:
|
||||||
return None
|
return None
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
if User.objects.get(id=user).is_anonymous():
|
if User.objects.get(id=user).is_anonymous:
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
@@ -768,7 +765,7 @@ def get_thumbnails(request,id):
|
|||||||
|
|
||||||
|
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if request.user == row.user.user:
|
if request.user == row.user.user:
|
||||||
@@ -999,21 +996,21 @@ from rowers.models import (
|
|||||||
|
|
||||||
# Check if a user is a Coach member
|
# Check if a user is a Coach member
|
||||||
def iscoachmember(user):
|
def iscoachmember(user):
|
||||||
if not user.is_anonymous():
|
if not user.is_anonymous:
|
||||||
try:
|
try:
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
except Rower.DoesNotExist:
|
except Rower.DoesNotExist:
|
||||||
r = Rower(user=user)
|
r = Rower(user=user)
|
||||||
r.save()
|
r.save()
|
||||||
|
|
||||||
result = user.is_authenticated() and (r.rowerplan=='coach')
|
result = user.is_authenticated and (r.rowerplan=='coach')
|
||||||
else:
|
else:
|
||||||
result = False
|
result = False
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def cancreateteam(user):
|
def cancreateteam(user):
|
||||||
if user.is_anonymous():
|
if user.is_anonymous:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -1022,7 +1019,7 @@ def cancreateteam(user):
|
|||||||
r = Rower(user=user)
|
r = Rower(user=user)
|
||||||
r.save()
|
r.save()
|
||||||
|
|
||||||
if user.is_authenticated() and (r.rowerplan=='coach'):
|
if user.is_authenticated and (r.rowerplan=='coach'):
|
||||||
return True
|
return True
|
||||||
elif user.is_athenticated() and r.rowerplan in ['plan','pro']:
|
elif user.is_athenticated() and r.rowerplan in ['plan','pro']:
|
||||||
ts = Team.objects.filter(manager=user)
|
ts = Team.objects.filter(manager=user)
|
||||||
@@ -1031,16 +1028,16 @@ def cancreateteam(user):
|
|||||||
|
|
||||||
# Check if a user can create planned sessions
|
# Check if a user can create planned sessions
|
||||||
def hasplannedsessions(user):
|
def hasplannedsessions(user):
|
||||||
if not user.is_anonymous():
|
if not user.is_anonymous:
|
||||||
try:
|
try:
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
except Rower.DoesNotExist:
|
except Rower.DoesNotExist:
|
||||||
r = Rower(user=user)
|
r = Rower(user=user)
|
||||||
r.save()
|
r.save()
|
||||||
|
|
||||||
result = user.is_authenticated() and (r.rowerplan=='coach' or r.rowerplan=='plan')
|
result = user.is_authenticated and (r.rowerplan=='coach' or r.rowerplan=='plan')
|
||||||
if not result and r.plantrialexpires:
|
if not result and r.plantrialexpires:
|
||||||
result = user.is_authenticated() and r.plantrialexpires >= datetime.date.today()
|
result = user.is_authenticated and r.plantrialexpires >= datetime.date.today()
|
||||||
else:
|
else:
|
||||||
result = False
|
result = False
|
||||||
|
|
||||||
@@ -1050,14 +1047,14 @@ from rowers.utils import isprorower,ProcessorCustomerError
|
|||||||
|
|
||||||
# Check if a user is a Pro member
|
# Check if a user is a Pro member
|
||||||
def ispromember(user):
|
def ispromember(user):
|
||||||
if not user.is_anonymous():
|
if user and not user.is_anonymous:
|
||||||
try:
|
try:
|
||||||
r = Rower.objects.get(user=user)
|
r = Rower.objects.get(user=user)
|
||||||
except Rower.DoesNotExist:
|
except Rower.DoesNotExist:
|
||||||
r = Rower(user=user)
|
r = Rower(user=user)
|
||||||
r.save()
|
r.save()
|
||||||
|
|
||||||
result = user.is_authenticated() and isprorower(r)
|
result = user.is_authenticated and isprorower(r)
|
||||||
else:
|
else:
|
||||||
result = False
|
result = False
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ def workout_forcecurve_view(request,id=0,workstrokesonly=False):
|
|||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
mayedit=0
|
mayedit=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if request.user == row.user.user:
|
if request.user == row.user.user:
|
||||||
@@ -100,9 +100,9 @@ def workout_histo_view(request,id=0):
|
|||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
mayedit=0
|
mayedit=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if request.user == w.user.user:
|
if request.user == w.user.user:
|
||||||
@@ -111,7 +111,7 @@ def workout_histo_view(request,id=0):
|
|||||||
if not promember:
|
if not promember:
|
||||||
return HttpResponseRedirect("/rowers/about/")
|
return HttpResponseRedirect("/rowers/about/")
|
||||||
|
|
||||||
res = interactive_histoall([w])
|
res = interactive_histoall([w],'power',False)
|
||||||
script = res[0]
|
script = res[0]
|
||||||
div = res[1]
|
div = res[1]
|
||||||
|
|
||||||
@@ -404,9 +404,9 @@ def workout_recalcsummary_view(request,id=0):
|
|||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def workouts_join_view(request):
|
def workouts_join_view(request):
|
||||||
promember=0
|
promember=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -822,9 +822,9 @@ def virtualevent_compare_view(request,id=0):
|
|||||||
results = []
|
results = []
|
||||||
|
|
||||||
promember = 0
|
promember = 0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
else:
|
else:
|
||||||
@@ -1022,9 +1022,9 @@ def plannedsession_compare_view(request,id=0,userid=0):
|
|||||||
@login_required()
|
@login_required()
|
||||||
def multi_compare_view(request,id=0,userid=0):
|
def multi_compare_view(request,id=0,userid=0):
|
||||||
promember=0
|
promember=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
|
|
||||||
@@ -1488,7 +1488,7 @@ def workout_fusion_list(request,id=0,message='',successmessage='',
|
|||||||
def workout_view(request,id=0):
|
def workout_view(request,id=0):
|
||||||
request.session['referer'] = absolute(request)['PATH']
|
request.session['referer'] = absolute(request)['PATH']
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
rower = getrower(request.user)
|
rower = getrower(request.user)
|
||||||
else:
|
else:
|
||||||
rower = None
|
rower = None
|
||||||
@@ -2733,7 +2733,7 @@ def workout_workflow_view(request,id):
|
|||||||
row = get_workout_permittedview(request.user,id)
|
row = get_workout_permittedview(request.user,id)
|
||||||
|
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if request.user == row.user.user:
|
if request.user == row.user.user:
|
||||||
@@ -2835,9 +2835,9 @@ def workout_flexchart3_view(request,*args,**kwargs):
|
|||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
mayedit=0
|
mayedit=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if request.user == row.user.user:
|
if request.user == row.user.user:
|
||||||
@@ -2888,7 +2888,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
|
|||||||
else:
|
else:
|
||||||
yparam2 = 'hr'
|
yparam2 = 'hr'
|
||||||
|
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
if favoritenr>=0 and r.showfavoritechartnotes:
|
if favoritenr>=0 and r.showfavoritechartnotes:
|
||||||
try:
|
try:
|
||||||
@@ -2918,7 +2918,7 @@ def workout_flexchart3_view(request,*args,**kwargs):
|
|||||||
workstrokesonly = False
|
workstrokesonly = False
|
||||||
|
|
||||||
if request.method == 'POST' and 'savefavorite' in request.POST:
|
if request.method == 'POST' and 'savefavorite' in request.POST:
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
workstrokesonly = request.POST['workstrokesonlysave']
|
workstrokesonly = request.POST['workstrokesonlysave']
|
||||||
reststrokes = not workstrokesonly
|
reststrokes = not workstrokesonly
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
@@ -3146,9 +3146,9 @@ def workout_otwpowerplot_view(request,id=0,message="",successmessage=""):
|
|||||||
|
|
||||||
promember=0
|
promember=0
|
||||||
mayedit=0
|
mayedit=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if request.user == w.user.user:
|
if request.user == w.user.user:
|
||||||
@@ -3620,9 +3620,9 @@ def workout_map_view(request,id=0):
|
|||||||
mapdiv = ""
|
mapdiv = ""
|
||||||
|
|
||||||
mayedit=0
|
mayedit=0
|
||||||
if not request.user.is_anonymous():
|
if not request.user.is_anonymous:
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
result = request.user.is_authenticated() and ispromember(request.user)
|
result = request.user.is_authenticated and ispromember(request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if request.user == w.user.user:
|
if request.user == w.user.user:
|
||||||
@@ -5253,9 +5253,9 @@ class WorkoutDelete(DeleteView):
|
|||||||
|
|
||||||
mayedit=0
|
mayedit=0
|
||||||
promember=0
|
promember=0
|
||||||
if not self.request.user.is_anonymous():
|
if not self.request.user.is_anonymous:
|
||||||
r = getrower(self.request.user)
|
r = getrower(self.request.user)
|
||||||
result = self.request.user.is_authenticated() and ispromember(self.request.user)
|
result = self.request.user.is_authenticated and ispromember(self.request.user)
|
||||||
if result:
|
if result:
|
||||||
promember=1
|
promember=1
|
||||||
if self.request.user == self.object.user.user:
|
if self.request.user == self.object.user.user:
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ INSTALLED_APPS = [
|
|||||||
'suit_rq',
|
'suit_rq',
|
||||||
'leaflet',
|
'leaflet',
|
||||||
'django_rq',
|
'django_rq',
|
||||||
'django_rq_dashboard',
|
# 'django_rq_dashboard',
|
||||||
# 'translation_manager',
|
# 'translation_manager',
|
||||||
'django_mailbox',
|
'django_mailbox',
|
||||||
'rest_framework',
|
'rest_framework',
|
||||||
@@ -80,8 +80,7 @@ AUTHENTICATION_BACKENDS = (
|
|||||||
'django.contrib.auth.backends.ModelBackend',
|
'django.contrib.auth.backends.ModelBackend',
|
||||||
)
|
)
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = [
|
MIDDLEWARE = [
|
||||||
# 'django.middleware.cache.UpdateCacheMiddleware',
|
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.middleware.common.BrokenLinkEmailsMiddleware',
|
'django.middleware.common.BrokenLinkEmailsMiddleware',
|
||||||
'django.middleware.gzip.GZipMiddleware',
|
'django.middleware.gzip.GZipMiddleware',
|
||||||
@@ -94,10 +93,8 @@ MIDDLEWARE_CLASSES = [
|
|||||||
'corsheaders.middleware.CorsMiddleware',
|
'corsheaders.middleware.CorsMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||||
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
|
|
||||||
'oauth2_provider.middleware.OAuth2TokenMiddleware',
|
'oauth2_provider.middleware.OAuth2TokenMiddleware',
|
||||||
'django.contrib.messages.middleware.MessageMiddleware',
|
'django.contrib.messages.middleware.MessageMiddleware',
|
||||||
'async_messages.middleware.AsyncMiddleware',
|
|
||||||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||||
'tz_detect.middleware.TimezoneMiddleware',
|
'tz_detect.middleware.TimezoneMiddleware',
|
||||||
'rowers.middleware.GDPRMiddleWare',
|
'rowers.middleware.GDPRMiddleWare',
|
||||||
@@ -218,7 +215,8 @@ LANGUAGE_COOKIE_NAME = 'wm_lang'
|
|||||||
# https://docs.djangoproject.com/en/1.9/howto/static-files/
|
# https://docs.djangoproject.com/en/1.9/howto/static-files/
|
||||||
|
|
||||||
STATIC_URL = '/static/'
|
STATIC_URL = '/static/'
|
||||||
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
STATIC_ROOT = BASE_DIR
|
||||||
|
#STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
||||||
|
|
||||||
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
|
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
|
||||||
os.path.join(BASE_DIR, 'static/plots'),]
|
os.path.join(BASE_DIR, 'static/plots'),]
|
||||||
@@ -389,8 +387,7 @@ REST_FRAMEWORK = {
|
|||||||
'DEFAULT_AUTHENTICATION_CLASSES': (
|
'DEFAULT_AUTHENTICATION_CLASSES': (
|
||||||
'rest_framework.authentication.BasicAuthentication',
|
'rest_framework.authentication.BasicAuthentication',
|
||||||
'rest_framework.authentication.SessionAuthentication',
|
'rest_framework.authentication.SessionAuthentication',
|
||||||
'oauth2_provider.ext.rest_framework.OAuth2Authentication',
|
'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
|
||||||
# 'oauth2_provider.contrib.rest_framework.OAuth2Authentication',
|
|
||||||
),
|
),
|
||||||
'PAGE_SIZE': 20,
|
'PAGE_SIZE': 20,
|
||||||
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.LimitOffsetPagination',
|
'DEFAULT_PAGINATION_CLASS':'rest_framework.pagination.LimitOffsetPagination',
|
||||||
|
|||||||
@@ -53,9 +53,9 @@ TEMPLATES[0]['OPTIONS']['debug'] = DEBUG
|
|||||||
|
|
||||||
ALLOWED_HOSTS = []
|
ALLOWED_HOSTS = []
|
||||||
|
|
||||||
#INSTALLED_APPS += ['debug_toolbar',]
|
INSTALLED_APPS += ['debug_toolbar',]
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES += ['debug_toolbar.middleware.DebugToolbarMiddleware',]
|
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware',]
|
||||||
|
|
||||||
CACHES = {
|
CACHES = {
|
||||||
'default': {
|
'default': {
|
||||||
|
|||||||
@@ -5,15 +5,16 @@ The `urlpatterns` list routes URLs to views. For more information please see:
|
|||||||
Examples:
|
Examples:
|
||||||
Function views
|
Function views
|
||||||
1. Add an import: from my_app import views
|
1. Add an import: from my_app import views
|
||||||
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
|
2. Add a URL to urlpatterns: re_path(r'^$', views.home, name='home')
|
||||||
Class-based views
|
Class-based views
|
||||||
1. Add an import: from other_app.views import Home
|
1. Add an import: from other_app.views import Home
|
||||||
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
|
2. Add a URL to urlpatterns: re_path(r'^$', Home.as_view(), name='home')
|
||||||
Including another URLconf
|
Including another URLconf
|
||||||
1. Import the include() function: from django.conf.urls import url, include
|
1. Import the include() function: from django.conf.urls import url, include
|
||||||
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
|
2. Add a URL to urlpatterns: re_path(r'^blog/', include('blog.urls'))
|
||||||
"""
|
"""
|
||||||
from django.conf.urls import url,include
|
from django.conf.urls import url,include
|
||||||
|
from django.urls import path, re_path
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
@@ -24,81 +25,79 @@ from rowers import views as rowersviews
|
|||||||
|
|
||||||
import django
|
import django
|
||||||
|
|
||||||
from django.conf.urls import (
|
|
||||||
handler400, handler403, handler404, handler500
|
|
||||||
)
|
|
||||||
|
|
||||||
handler400 = 'rowers.views.error400_view'
|
import django.views.i18n
|
||||||
handler403 = 'rowers.views.error403_view'
|
|
||||||
handler404 = 'rowers.views.error404_view'
|
|
||||||
handler500 = 'rowers.views.error500_view'
|
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url('^', include('django.contrib.auth.urls')),
|
re_path('^', include('django.contrib.auth.urls')),
|
||||||
url(r'^django-rq/',include('django_rq.urls')),
|
re_path(r'^password_change_done/$',auth_views.PasswordChangeDoneView,name='password_change_done'),
|
||||||
url(r'^password_change_done/$',auth_views.password_change_done,name='password_change_done'),
|
re_path(r'^password_change/$',auth_views.PasswordChangeView,name='password_change'),
|
||||||
# url(r'^password_change_done/$',auth_views.PasswordChangeDoneView,name='password_change_done'),
|
re_path(r'^password_reset/$',
|
||||||
url(r'^password_change/$',auth_views.password_change),
|
auth_views.PasswordResetView,
|
||||||
# url(r'^password_change/$',auth_views.PasswordChangeView,name='password_change'),
|
|
||||||
url(r'^password_reset/$',
|
|
||||||
auth_views.password_reset,
|
|
||||||
# auth_views.PasswordResetView,
|
|
||||||
{'template_name': 'rowers/templates/registration/password_reset.html'},
|
{'template_name': 'rowers/templates/registration/password_reset.html'},
|
||||||
name='password_reset'),
|
name='password_reset'),
|
||||||
url(r'^password_reset/done/$',
|
re_path(r'^password_reset/done/$',
|
||||||
auth_views.password_reset_done,
|
auth_views.PasswordResetDoneView,
|
||||||
# auth_views.PasswordResetDoneView,
|
|
||||||
name='password_reset_done'),
|
name='password_reset_done'),
|
||||||
url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
|
re_path(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
|
||||||
auth_views.password_reset_confirm,
|
auth_views.PasswordResetConfirmView,
|
||||||
# auth_views.PasswordResetConfirmView,
|
|
||||||
name='password_reset_confirm'),
|
name='password_reset_confirm'),
|
||||||
url(r'^reset/done/$',
|
re_path(r'^reset/done/$',
|
||||||
auth_views.password_reset_complete,
|
auth_views.PasswordResetCompleteView,
|
||||||
# auth_views.PasswordResetCompleteView,
|
|
||||||
name='password_reset_complete'),
|
name='password_reset_complete'),
|
||||||
]
|
]
|
||||||
|
|
||||||
urlpatterns += [
|
urlpatterns += [
|
||||||
url(r'^robots\.txt$', TemplateView.as_view(template_name='robots.txt',
|
re_path(r'^robots\.txt$', TemplateView.as_view(template_name='robots.txt',
|
||||||
content_type='text/plain')),
|
content_type='text/plain')),
|
||||||
url(r'^admin/', admin.site.urls),
|
re_path(r'^admin/', admin.site.urls),
|
||||||
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework2')),
|
re_path(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework2')),
|
||||||
url(r'^$',rootview),
|
re_path(r'^$',rootview),
|
||||||
url(r'^getblogs/$',rowersviews.get_blog_posts),
|
re_path(r'^getblogs/$',rowersviews.get_blog_posts),
|
||||||
url(r'^login/',
|
re_path(r'^login/',
|
||||||
auth_views.login,
|
# auth_views.LoginView,
|
||||||
# auth_views.LoginView,
|
auth_views.LoginView,
|
||||||
name='login'),
|
name='login'),
|
||||||
url(r'^logout/$',
|
re_path(r'^logout/$',
|
||||||
auth_views.logout,
|
auth_views.LogoutView,
|
||||||
# auth_views.LogoutView,
|
|
||||||
{'next_page': '/'},
|
{'next_page': '/'},
|
||||||
name='logout',),
|
name='logout',),
|
||||||
url(r'^rowers/',include('rowers.urls')),
|
re_path(r'^rowers/',include('rowers.urls')),
|
||||||
# url(r'^cvkbrno/',include('cvkbrno.urls')),
|
# re_path(r'^cvkbrno/',include('cvkbrno.urls')),
|
||||||
url(r'^admin/rq/',include('django_rq_dashboard.urls')),
|
# re_path(r'^admin/rq/',include('django_rq_dashboard.urls')),
|
||||||
url(r'^call\_back',rowersviews.rower_process_callback),
|
re_path(r'^call\_back',rowersviews.rower_process_callback),
|
||||||
url(r'^stravacall\_back',rowersviews.rower_process_stravacallback),
|
re_path(r'^stravacall\_back',rowersviews.rower_process_stravacallback),
|
||||||
url(r'^sporttracks\_callback',rowersviews.rower_process_sporttrackscallback),
|
re_path(r'^sporttracks\_callback',rowersviews.rower_process_sporttrackscallback),
|
||||||
url(r'^underarmour\_callback',rowersviews.rower_process_underarmourcallback),
|
re_path(r'^underarmour\_callback',rowersviews.rower_process_underarmourcallback),
|
||||||
url(r'^polarflowcallback',rowersviews.rower_process_polarcallback),
|
re_path(r'^polarflowcallback',rowersviews.rower_process_polarcallback),
|
||||||
url(r'^runkeeper\_callback',rowersviews.rower_process_runkeepercallback),
|
re_path(r'^runkeeper\_callback',rowersviews.rower_process_runkeepercallback),
|
||||||
url(r'^tp\_callback',rowersviews.rower_process_tpcallback),
|
re_path(r'^tp\_callback',rowersviews.rower_process_tpcallback),
|
||||||
url(r'^twitter\_callback',rowersviews.rower_process_twittercallback),
|
re_path(r'^twitter\_callback',rowersviews.rower_process_twittercallback),
|
||||||
url(r'^i18n/', include('django.conf.urls.i18n')),
|
re_path(r'^i18n/', include('django.conf.urls.i18n')),
|
||||||
url(r'^tz_detect/', include('tz_detect.urls')),
|
re_path(r'^tz_detect/', include('tz_detect.urls')),
|
||||||
url(r'^jsi18n/', django.views.i18n.javascript_catalog,name='jsi18n'),
|
path('django-rq/', include('django_rq.urls')),
|
||||||
|
# path('500/', rowersviews.error500_view),
|
||||||
|
# re_path(r'^jsi18n/', django.views.i18n.javascript_catalog,name='jsi18n'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
js_info_dict = {
|
||||||
|
'packages': ('recurrence', ),
|
||||||
|
}
|
||||||
|
|
||||||
|
# jsi18n can be anything you like here
|
||||||
|
urlpatterns += [
|
||||||
|
path('jsi18n/', django.views.i18n.JavaScriptCatalog.as_view(), name="javascript-catalog"),
|
||||||
|
]
|
||||||
|
# monkey patch workaround for bug in recurrence library
|
||||||
|
django.views.i18n.javascript_catalog = None
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
import debug_toolbar
|
import debug_toolbar
|
||||||
import django
|
import django
|
||||||
urlpatterns += [
|
urlpatterns += [
|
||||||
# url(r'^__debug__/','debug_toolbar.urls'),
|
# re_path(r'^__debug__/','debug_toolbar.urls'),
|
||||||
url(r'^static/(?P<path>.*)$',
|
re_path(r'^static/(?P<path>.*)$',
|
||||||
django.views.static.serve,
|
django.views.static.serve,
|
||||||
kwargs={'document_root': settings.STATIC_ROOT,}
|
kwargs={'document_root': settings.STATIC_ROOT,}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
from django.shortcuts import render, redirect, render_to_response
|
from django.shortcuts import render, redirect
|
||||||
from django.template.loader import render_to_string
|
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from rowers.forms import LoginForm
|
from rowers.forms import LoginForm
|
||||||
|
|||||||
Reference in New Issue
Block a user