passing tests - views.py split over multiple files
This commit is contained in:
@@ -1 +0,0 @@
|
||||
E408191@CZ27LT9RCGN72.1380:1549472010
|
||||
12
rowers/views/__init__.py
Normal file
12
rowers/views/__init__.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from .analysisviews import *
|
||||
from .apiviews import *
|
||||
from .errorviews import *
|
||||
from .exportviews import *
|
||||
from .importviews import *
|
||||
from .otherviews import *
|
||||
from .paymentviews import *
|
||||
from .planviews import *
|
||||
from .racesviews import *
|
||||
from .teamviews import *
|
||||
from .userviews import *
|
||||
from .workoutviews import *
|
||||
@@ -401,7 +401,7 @@ def cum_flex(request,theuser=0,
|
||||
def planrequired_view(request):
|
||||
messages.info(request,"This functionality requires Coach or Self-Coach membership")
|
||||
|
||||
return HttpResponseRedirect(reverse(paidplans_view))
|
||||
return HttpResponseRedirect(reverse('paidplans'))
|
||||
|
||||
@user_passes_test(hasplannedsessions,login_url="/rowers/paidplans",
|
||||
message="This functionality requires a Coach or Self-Coach plan",
|
||||
@@ -2149,7 +2149,7 @@ def user_multiflex_select(request,
|
||||
'name': 'Compare Select'
|
||||
},
|
||||
{
|
||||
'url':reverse(multi_compare_view),
|
||||
'url':reverse('multi_compare_view'),
|
||||
'name': 'Comparison Chart'
|
||||
}
|
||||
]
|
||||
|
||||
@@ -118,7 +118,7 @@ def workout_strava_upload_view(request,id=0):
|
||||
os.remove(tcxfile)
|
||||
except WindowsError:
|
||||
pass
|
||||
url = reverse(workout_edit_view,kwargs={'id':w.id})
|
||||
url = reverse('workout_edit_view',kwargs={'id':w.id})
|
||||
|
||||
|
||||
messages.info(request,mes)
|
||||
@@ -235,7 +235,7 @@ def workout_runkeeper_upload_view(request,id=0):
|
||||
runkeeperid = runkeeperstuff.getidfromresponse(response)
|
||||
w.uploadedtorunkeeper = runkeeperid
|
||||
w.save()
|
||||
url = reverse(workout_edit_view, kwargs={'id':w.id})
|
||||
url = reverse('workout_edit_view', kwargs={'id':w.id})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
@@ -300,7 +300,7 @@ def workout_underarmour_upload_view(request,id=0):
|
||||
underarmourid = underarmourstuff.getidfromresponse(response)
|
||||
w.uploadedtounderarmour = underarmourid
|
||||
w.save()
|
||||
url = reverse(workout_edit_view,kwargs={'id':w.id})
|
||||
url = reverse('workout_edit_view',kwargs={'id':w.id})
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
@@ -367,7 +367,7 @@ def workout_sporttracks_upload_view(request,id=0):
|
||||
message = "Upload to SportTracks was successful"
|
||||
messages.info(request,message)
|
||||
|
||||
url = reverse(workout_edit_view,kwargs={'id':w.id})
|
||||
url = reverse('workout_edit_view',kwargs={'id':w.id})
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
s = response
|
||||
@@ -528,7 +528,7 @@ def rower_c2_token_refresh(request):
|
||||
message = "Something went wrong (refreshing tokens). Please reauthorize:"
|
||||
messages.error(request,message)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -556,7 +556,7 @@ def rower_underarmour_token_refresh(request):
|
||||
successmessage = "Tokens refreshed. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -584,7 +584,7 @@ def rower_tp_token_refresh(request):
|
||||
successmessage = "Tokens refreshed. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -613,7 +613,7 @@ def rower_sporttracks_token_refresh(request):
|
||||
successmessage = "Tokens refreshed. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -629,7 +629,7 @@ def rower_process_callback(request):
|
||||
message = "The resource owner or authorization server denied the request"
|
||||
messages.error(request,message)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -639,7 +639,7 @@ def rower_process_callback(request):
|
||||
message += ' Contact info@rowsandall.com if this behavior persists.'
|
||||
messages.error(request,message)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -658,7 +658,7 @@ def rower_process_callback(request):
|
||||
successmessage = "Tokens stored. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -681,7 +681,7 @@ def rower_process_polarcallback(request):
|
||||
message = "access error"
|
||||
|
||||
messages.error(request,message)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -700,7 +700,7 @@ def rower_process_polarcallback(request):
|
||||
|
||||
successmessage = "Tokens stored. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -720,7 +720,7 @@ def rower_process_stravacallback(request):
|
||||
message = "access error"
|
||||
|
||||
messages.error(request,message)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -743,12 +743,12 @@ def rower_process_stravacallback(request):
|
||||
|
||||
successmessage = "Tokens stored. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
message = "Something went wrong with the Strava authorization"
|
||||
messages.error(request,message)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -762,7 +762,7 @@ def rower_process_runkeepercallback(request):
|
||||
|
||||
if access_token == 0:
|
||||
messages.error(request,"Something went wrong importing the token")
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -775,7 +775,7 @@ def rower_process_runkeepercallback(request):
|
||||
|
||||
successmessage = "Tokens stored. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -803,7 +803,7 @@ def rower_process_sporttrackscallback(request):
|
||||
|
||||
successmessage = "Tokens stored. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -830,7 +830,7 @@ def rower_process_underarmourcallback(request):
|
||||
|
||||
successmessage = "Tokens stored. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -856,7 +856,7 @@ def rower_process_tpcallback(request):
|
||||
|
||||
successmessage = "Tokens stored. Good to go"
|
||||
messages.info(request,successmessage)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -908,7 +908,7 @@ def workout_stravaimport_view(request,message="",userid=0):
|
||||
return HttpResponseRedirect("/rowers/me/stravaauthorize/")
|
||||
message = "Something went wrong in workout_stravaimport_view"
|
||||
messages.error(request,message)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
workouts = []
|
||||
@@ -999,7 +999,7 @@ def workout_runkeeperimport_view(request,message="",userid=0):
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts = []
|
||||
@@ -1098,7 +1098,7 @@ def workout_polarimport_view(request,userid=0):
|
||||
a = exercises.status_code
|
||||
if a == 401:
|
||||
messages.error(request,'Not authorized. You need to connect to Polar first')
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
except:
|
||||
pass
|
||||
@@ -1164,7 +1164,7 @@ def workout_sporttracksimport_view(request,message="",userid=0):
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts = []
|
||||
@@ -1231,7 +1231,7 @@ def c2listdebug_view(request,page=1,message=""):
|
||||
if settings.DEBUG:
|
||||
return HttpResponse(res)
|
||||
else:
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
else:
|
||||
workouts = []
|
||||
@@ -1285,7 +1285,7 @@ def workout_getc2workout_all(request,page=1,message=""):
|
||||
workoutid = c2stuff.create_async_workout(alldata,
|
||||
request.user,c2id)
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@@ -1310,7 +1310,7 @@ def workout_c2import_view(request,page=1,userid=0,message=""):
|
||||
if (res.status_code != 200):
|
||||
message = "Something went wrong in workout_c2import_view (C2 token refresh)"
|
||||
messages.error(request,message)
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
workouts = []
|
||||
@@ -1380,7 +1380,7 @@ def workout_getimportview(request,externalid,source = 'c2'):
|
||||
res = importsources[source].get_workout(request.user,externalid)
|
||||
if not res[0]:
|
||||
messages.error(request,res[1])
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -1393,7 +1393,7 @@ def workout_getimportview(request,externalid,source = 'c2'):
|
||||
try:
|
||||
if strokedata == 0:
|
||||
messages.error(request,'An error occurred importing the workout from Concept2')
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
except ValueError:
|
||||
pass
|
||||
@@ -1552,7 +1552,7 @@ def workout_getsporttracksworkout_all(request):
|
||||
w.uploadedtosporttracks=sporttracksid
|
||||
w.save()
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@@ -1566,7 +1566,7 @@ def workout_getstravaworkout_all(request):
|
||||
else:
|
||||
messages.error(request,"Couldn't import Strava workouts ")
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
@@ -1598,7 +1598,7 @@ def workout_getstravaworkout_next(request):
|
||||
|
||||
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
from statements import *
|
||||
|
||||
def paidplans_view(request):
|
||||
if not request.user.is_anonymous():
|
||||
r = getrequestrower(request)
|
||||
|
||||
@@ -401,7 +401,7 @@ def plannedsession_teamcreate_view(request,
|
||||
teaminitial = [str(teams[0].id)]
|
||||
else:
|
||||
messages.info(request,"You have no teams established yet. We are redirecting you to the Team Management page.")
|
||||
url = reverse(rower_teams_view)
|
||||
url = reverse('rower_teams_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
startdate,enddate = get_dates_timeperiod(request)
|
||||
|
||||
@@ -103,9 +103,9 @@ from rowers.models import (
|
||||
FavoriteForm,BaseFavoriteFormSet,SiteAnnouncement,BasePlannedSessionFormSet,
|
||||
get_course_timezone
|
||||
)
|
||||
from rowers.metrics import rowingmetrics,defaultfavoritecharts
|
||||
from rowers import metrics
|
||||
from rowers import courses
|
||||
from rowers.metrics import rowingmetrics,defaultfavoritecharts,nometrics
|
||||
from rowers import metrics as metrics
|
||||
from rowers import courses as courses
|
||||
import rowers.uploads as uploads
|
||||
from django.forms.formsets import formset_factory
|
||||
from django.forms import modelformset_factory
|
||||
@@ -116,22 +116,22 @@ from time import strftime,strptime,mktime,time,daylight
|
||||
import os,sys
|
||||
import datetime
|
||||
import iso8601
|
||||
import c2stuff
|
||||
from c2stuff import c2_open
|
||||
from runkeeperstuff import runkeeper_open
|
||||
from sporttracksstuff import sporttracks_open
|
||||
from tpstuff import tp_open
|
||||
import rowers.c2stuff as c2stuff
|
||||
from rowers.c2stuff import c2_open
|
||||
from rowers.runkeeperstuff import runkeeper_open
|
||||
from rowers.sporttracksstuff import sporttracks_open
|
||||
from rowers.tpstuff import tp_open
|
||||
from iso8601 import ParseError
|
||||
import stravastuff
|
||||
from stravastuff import strava_open
|
||||
import polarstuff
|
||||
import sporttracksstuff
|
||||
import underarmourstuff
|
||||
from underarmourstuff import underarmour_open
|
||||
import tpstuff
|
||||
import runkeeperstuff
|
||||
import ownapistuff
|
||||
from ownapistuff import TEST_CLIENT_ID, TEST_CLIENT_SECRET, TEST_REDIRECT_URI
|
||||
import rowers.stravastuff as stravastuff
|
||||
from rowers.stravastuff import strava_open
|
||||
import rowers.polarstuff as polarstuff
|
||||
import rowers.sporttracksstuff as sporttracksstuff
|
||||
import rowers.underarmourstuff as underarmourstuff
|
||||
from rowers.underarmourstuff import underarmour_open
|
||||
import rowers.tpstuff as tpstuff
|
||||
import rowers.runkeeperstuff as runkeeperstuff
|
||||
import rowers.ownapistuff as ownapistuff
|
||||
from rowers.ownapistuff import TEST_CLIENT_ID, TEST_CLIENT_SECRET, TEST_REDIRECT_URI
|
||||
from rowsandall_app.settings import (
|
||||
C2_CLIENT_ID, C2_REDIRECT_URI, C2_CLIENT_SECRET,
|
||||
STRAVA_CLIENT_ID, STRAVA_REDIRECT_URI, STRAVA_CLIENT_SECRET,
|
||||
@@ -181,7 +181,7 @@ from scipy.signal import savgol_filter
|
||||
from django.shortcuts import render_to_response
|
||||
from Cookie import SimpleCookie
|
||||
from shutil import copyfile,move
|
||||
import mytypes
|
||||
import rowers.mytypes as mytypes
|
||||
from rowingdata import rower as rrower
|
||||
from rowingdata import main as rmain
|
||||
from rowingdata import rowingdata as rrdata
|
||||
@@ -200,7 +200,7 @@ import mpld3
|
||||
from mpld3 import plugins
|
||||
import stravalib
|
||||
from stravalib.exc import ActivityUploadFailed,TimeoutExceeded
|
||||
from weather import get_wind_data,get_airport_code,get_metar_data
|
||||
from rowers.weather import get_wind_data,get_airport_code,get_metar_data
|
||||
|
||||
from oauth2_provider.models import Application,Grant,AccessToken
|
||||
|
||||
@@ -228,6 +228,33 @@ class JSONResponse(HttpResponse):
|
||||
kwargs['content_type'] = 'application/json'
|
||||
super(JSONResponse, self).__init__(content, **kwargs)
|
||||
|
||||
def getfavorites(r,row):
|
||||
workouttype = 'ote'
|
||||
if row.workouttype in mytypes.otwtypes:
|
||||
workouttype = 'otw'
|
||||
|
||||
matchworkouttypes = [workouttype,'all']
|
||||
|
||||
workoutsource = row.workoutsource
|
||||
if 'speedcoach2' in row.workoutsource:
|
||||
workoutsource = 'speedcoach2'
|
||||
|
||||
try:
|
||||
favorites = FavoriteChart.objects.filter(user=r,
|
||||
workouttype__in=matchworkouttypes).order_by("id")
|
||||
favorites2 = FavoriteChart.objects.filter(user=r,
|
||||
workouttype__in=[workoutsource]).order_by("id")
|
||||
|
||||
favorites = favorites | favorites2
|
||||
|
||||
|
||||
maxfav = len(favorites)-1
|
||||
except:
|
||||
favorites = None
|
||||
maxfav = 0
|
||||
|
||||
return favorites,maxfav
|
||||
|
||||
|
||||
def getrequestrower(request,rowerid=0,userid=0,notpermanent=False):
|
||||
|
||||
@@ -365,23 +392,23 @@ from rowers.serializers import RowerSerializer,WorkoutSerializer
|
||||
from rest_framework import status,permissions,generics
|
||||
from rest_framework.decorators import api_view, renderer_classes
|
||||
|
||||
from permissions import IsOwnerOrNot
|
||||
from rowers.permissions import IsOwnerOrNot
|
||||
|
||||
import plots
|
||||
import mailprocessing
|
||||
import rowers.plots as plots
|
||||
import rowers.mailprocessing as mailprocessing
|
||||
|
||||
from io import BytesIO
|
||||
from scipy.special import lambertw
|
||||
|
||||
from dataprep import timedeltaconv
|
||||
from dataprep import getsmallrowdata_db
|
||||
from rowers.dataprep import timedeltaconv
|
||||
from rowers.dataprep import getsmallrowdata_db
|
||||
|
||||
from scipy.interpolate import griddata
|
||||
|
||||
#LOCALTIMEZONE = tz('Etc/UTC')
|
||||
USER_LANGUAGE = 'en-US'
|
||||
|
||||
from interactiveplots import *
|
||||
from rowers.interactiveplots import *
|
||||
from rowers.celery import result as celery_result
|
||||
|
||||
# Define the API documentation
|
||||
@@ -852,14 +879,14 @@ def getidfromuri(uri):
|
||||
|
||||
|
||||
|
||||
from utils import (
|
||||
from rowers.utils import (
|
||||
geo_distance,serialize_list,deserialize_list,uniqify,
|
||||
str2bool,range_to_color_hex,absolute,myqueue,get_call,
|
||||
calculate_age,rankingdistances,rankingdurations,
|
||||
is_ranking_piece,my_dict_from_instance,wavg,NoTokenError
|
||||
)
|
||||
|
||||
import datautils
|
||||
import rowers.datautils as datautils
|
||||
|
||||
from rowers.models import checkworkoutuser,checkaccessuser
|
||||
|
||||
@@ -1142,7 +1169,7 @@ def trydf(df,aantal,column):
|
||||
|
||||
return s
|
||||
|
||||
import teams
|
||||
import rowers.teams as teams
|
||||
from rowers.models import C2WorldClassAgePerformance
|
||||
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ def rower_calcdps_view(request):
|
||||
|
||||
messages.info(request,"Your workouts are being updated in the background. You will receive email when this is done.")
|
||||
|
||||
url = reverse(workouts_view)
|
||||
url = reverse('workouts_view')
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@login_required()
|
||||
|
||||
@@ -514,9 +514,9 @@ def workout_update_cp_view(request,id=0):
|
||||
dataprep.runcpupdate(r)
|
||||
|
||||
if row.workouttype in mytypes.otwtypes:
|
||||
url = reverse(otwrankings_view)
|
||||
url = reverse('otwrankings_view')
|
||||
else:
|
||||
url = reverse(oterankings_view)
|
||||
url = reverse('oterankings_view')
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@@ -944,7 +944,7 @@ def team_comparison_select(request,
|
||||
'name': firstworkout.name
|
||||
},
|
||||
{
|
||||
'url':reverse(team_comparison_select,kwargs={'id':id,'teamid':teamid}),
|
||||
'url':reverse('team_comparison_select',kwargs={'id':id,'teamid':teamid}),
|
||||
'name':'Compare Select'
|
||||
},
|
||||
]
|
||||
@@ -955,7 +955,7 @@ def team_comparison_select(request,
|
||||
'name':'Workouts'
|
||||
},
|
||||
{
|
||||
'url':reverse(team_comparison_select,kwargs={'teamid':teamid}),
|
||||
'url':reverse('team_comparison_select',kwargs={'teamid':teamid}),
|
||||
'name': 'Compare Select'
|
||||
},
|
||||
|
||||
@@ -2428,7 +2428,6 @@ def instroke_view(request,id=0):
|
||||
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
from metrics import nometrics
|
||||
rowdata = rrdata(csvfile=w.csvfilename)
|
||||
try:
|
||||
instrokemetrics = rowdata.get_instroke_columns()
|
||||
@@ -2880,33 +2879,6 @@ def workout_workflow_config2_view(request,userid=0):
|
||||
})
|
||||
|
||||
|
||||
def getfavorites(r,row):
|
||||
workouttype = 'ote'
|
||||
if row.workouttype in mytypes.otwtypes:
|
||||
workouttype = 'otw'
|
||||
|
||||
matchworkouttypes = [workouttype,'all']
|
||||
|
||||
workoutsource = row.workoutsource
|
||||
if 'speedcoach2' in row.workoutsource:
|
||||
workoutsource = 'speedcoach2'
|
||||
|
||||
try:
|
||||
favorites = FavoriteChart.objects.filter(user=r,
|
||||
workouttype__in=matchworkouttypes).order_by("id")
|
||||
favorites2 = FavoriteChart.objects.filter(user=r,
|
||||
workouttype__in=[workoutsource]).order_by("id")
|
||||
|
||||
favorites = favorites | favorites2
|
||||
|
||||
|
||||
maxfav = len(favorites)-1
|
||||
except:
|
||||
favorites = None
|
||||
maxfav = 0
|
||||
|
||||
return favorites,maxfav
|
||||
|
||||
|
||||
# Workflow View
|
||||
@login_required()
|
||||
|
||||
Reference in New Issue
Block a user