Merge branch 'release/v16.6.11'
This commit is contained in:
@@ -108,7 +108,7 @@ class InstantPlanSelectForm(forms.Form):
|
|||||||
datechoice = forms.ChoiceField(choices=datechoices,initial='enddate',label='Plan by target, start or end date',
|
datechoice = forms.ChoiceField(choices=datechoices,initial='enddate',label='Plan by target, start or end date',
|
||||||
widget=forms.RadioSelect)
|
widget=forms.RadioSelect)
|
||||||
notes = forms.CharField(required=False,
|
notes = forms.CharField(required=False,
|
||||||
max_length=200,label='Course Notes',
|
max_length=200,label='Plan Notes',
|
||||||
widget=forms.Textarea)
|
widget=forms.Textarea)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
@@ -184,7 +184,7 @@ class TrainingPlanBillingForm(forms.Form):
|
|||||||
paymenttype = forms.CharField(max_length=255,required=True)
|
paymenttype = forms.CharField(max_length=255,required=True)
|
||||||
enddate = forms.DateField(widget=forms.HiddenInput)
|
enddate = forms.DateField(widget=forms.HiddenInput)
|
||||||
name = forms.CharField(max_length=255,required=False)
|
name = forms.CharField(max_length=255,required=False)
|
||||||
notes = forms.CharField(max_length=255,required=True)
|
notes = forms.CharField(max_length=255,required=False)
|
||||||
status = forms.CharField(max_length=255,required=True)
|
status = forms.CharField(max_length=255,required=True)
|
||||||
tac= forms.BooleanField(required=True,initial=False)
|
tac= forms.BooleanField(required=True,initial=False)
|
||||||
|
|
||||||
|
|||||||
@@ -348,18 +348,25 @@ def handle_strava_sync(stravatoken,workoutid,filename,name,activity_type,descrip
|
|||||||
try:
|
try:
|
||||||
act = client.update_activity(res.id,activity_type=activity_type,
|
act = client.update_activity(res.id,activity_type=activity_type,
|
||||||
description=description,device_name='Rowsandall.com')
|
description=description,device_name='Rowsandall.com')
|
||||||
|
dologging('stravalog.log','Updating activity {id} to {type}'.format(
|
||||||
|
id=workoutid,
|
||||||
|
type=activity_type
|
||||||
|
))
|
||||||
except TypeError: # pragma: no cover
|
except TypeError: # pragma: no cover
|
||||||
act = client.update_activity(res.id,activity_type=activity_type,
|
act = client.update_activity(res.id,activity_type=activity_type,
|
||||||
description=description)
|
description=description)
|
||||||
|
dologging('stravalog.log','Updating activity {id} to {type}'.format(
|
||||||
|
id=workoutid,
|
||||||
|
type=activity_type
|
||||||
|
))
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
e = sys.exc_info()[0]
|
e = sys.exc_info()[0]
|
||||||
t = time.localtime()
|
|
||||||
timestamp = bytes('{t}'.format(t=time.strftime('%b-%d-%Y_%H%M', t)),'utf-8')
|
|
||||||
with open('stravalog.log','ab') as f:
|
|
||||||
f.write(b'\n')
|
|
||||||
f.write(timestamp)
|
|
||||||
f.write(str(e))
|
|
||||||
|
|
||||||
|
dologging('stravalog.log','Update activity failed with error {e} for {id} to {type}'.format(
|
||||||
|
id=workoutid,
|
||||||
|
type=activity_type,
|
||||||
|
e=e
|
||||||
|
))
|
||||||
try:
|
try:
|
||||||
os.remove(filename)
|
os.remove(filename)
|
||||||
except: # pragma: no cover
|
except: # pragma: no cover
|
||||||
|
|||||||
@@ -269,6 +269,24 @@ class ChallengesTest(TestCase):
|
|||||||
response = self.c.get(url)
|
response = self.c.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
def test_coursemapcompare_view(self):
|
||||||
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
|
self.assertTrue(login)
|
||||||
|
|
||||||
|
url = reverse('course_mapcompare_view',kwargs={'id':self.ThyroBaantje.id})
|
||||||
|
response = self.c.get(url)
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
def test_coursecompare_view(self):
|
||||||
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
|
self.assertTrue(login)
|
||||||
|
|
||||||
|
url = reverse('course_compare_view',kwargs={'id':self.ThyroBaantje.id})
|
||||||
|
response = self.c.get(url)
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_course_create_edit_delete(self):
|
def test_course_create_edit_delete(self):
|
||||||
login = self.c.login(username=self.u.username, password=self.password)
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
self.assertTrue(login)
|
self.assertTrue(login)
|
||||||
@@ -553,6 +571,25 @@ class ChallengesTest(TestCase):
|
|||||||
response = self.c.post(url)
|
response = self.c.post(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
@patch('rowers.views.racesviews.myqueue')
|
||||||
|
def test_course_view(self, mocked_myqueue):
|
||||||
|
login = self.c.login(username=self.u, password=self.password)
|
||||||
|
self.assertTrue(login)
|
||||||
|
|
||||||
|
url = reverse('workout_summary_edit_view',kwargs={'id':encoder.encode_hex(self.wthyro.id)})
|
||||||
|
|
||||||
|
response = self.c.get(url)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
|
formdata = {
|
||||||
|
'course': self.ThyroBaantje.id
|
||||||
|
}
|
||||||
|
|
||||||
|
response = self.c.post(url, formdata, follow=True)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
|
|
||||||
@patch('rowers.views.racesviews.myqueue')
|
@patch('rowers.views.racesviews.myqueue')
|
||||||
def test_virtualevent_view(self,mocked_myqueue):
|
def test_virtualevent_view(self,mocked_myqueue):
|
||||||
login = self.c.login(username=self.u.username, password=self.password)
|
login = self.c.login(username=self.u.username, password=self.password)
|
||||||
@@ -764,6 +801,11 @@ class ChallengesTest(TestCase):
|
|||||||
response = self.c.get(url)
|
response = self.c.get(url)
|
||||||
self.assertEqual(response.status_code,200)
|
self.assertEqual(response.status_code,200)
|
||||||
|
|
||||||
|
# workout_mapcompare
|
||||||
|
url = reverse('workout_course_view', kwargs={'id':encoder.encode_hex(self.wthyro.id)})
|
||||||
|
response = self.c.get(url)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
|
||||||
# post to compare
|
# post to compare
|
||||||
form_data = {
|
form_data = {
|
||||||
'workouts':[self.wthyro2.id],
|
'workouts':[self.wthyro2.id],
|
||||||
|
|||||||
@@ -249,6 +249,8 @@ def purchase_checkouts_view(request):
|
|||||||
messages.error(request,"There was an error in the payment form")
|
messages.error(request,"There was an error in the payment form")
|
||||||
url = reverse("purchase_checkouts_view")
|
url = reverse("purchase_checkouts_view")
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
|
else:
|
||||||
|
messages.error(request,"There was an error in the payment form")
|
||||||
|
|
||||||
url = reverse('rower_select_instantplan') # pragma: no cover
|
url = reverse('rower_select_instantplan') # pragma: no cover
|
||||||
if 'plan' in request.POST: # pragma: no cover
|
if 'plan' in request.POST: # pragma: no cover
|
||||||
|
|||||||
@@ -2670,6 +2670,8 @@ def rower_view_instantplan(request,id='',userid=0):
|
|||||||
|
|
||||||
create_sessions_from_json(plansteps,r,startdate,r.user)
|
create_sessions_from_json(plansteps,r,startdate,r.user)
|
||||||
|
|
||||||
|
messages.info(request,'Your Sessions have been added')
|
||||||
|
|
||||||
url = reverse('plannedsessions_view')
|
url = reverse('plannedsessions_view')
|
||||||
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
timeperiod = startdate.strftime('%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
|
||||||
url = url+'?when='+timeperiod
|
url = url+'?when='+timeperiod
|
||||||
@@ -2745,7 +2747,7 @@ def add_instantplan_view(request):
|
|||||||
if not request.user.is_staff: # pragma: no cover
|
if not request.user.is_staff: # pragma: no cover
|
||||||
raise PermissionDenied("Not Allowed")
|
raise PermissionDenied("Not Allowed")
|
||||||
|
|
||||||
r = getrequestrower(request)
|
r = request.user.rower
|
||||||
|
|
||||||
if request.method == 'POST': # pragma: no cover
|
if request.method == 'POST': # pragma: no cover
|
||||||
form = InstantPlanForm(request.POST,request.FILES)
|
form = InstantPlanForm(request.POST,request.FILES)
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ def workout_video_create_view(request,id=0):
|
|||||||
metricsgroups = metricsform.cleaned_data['groups']
|
metricsgroups = metricsform.cleaned_data['groups']
|
||||||
try:
|
try:
|
||||||
video_id = get_video_id(url)
|
video_id = get_video_id(url)
|
||||||
except ValueError:
|
except ValueError: # pragma: no cover
|
||||||
messages.error(request,"Not a valid YouTube video link")
|
messages.error(request,"Not a valid YouTube video link")
|
||||||
video_id = None
|
video_id = None
|
||||||
if 'save_button' in request.POST:
|
if 'save_button' in request.POST:
|
||||||
@@ -2646,7 +2646,7 @@ def workout_view(request,id=0,raceresult=0,sessionresult=0,nocourseraceresult=0)
|
|||||||
longitudes = rowdata.df[' longitude']
|
longitudes = rowdata.df[' longitude']
|
||||||
mapscript,mapdiv = leaflet_chart(latitudes,longitudes,row.name,raceresult=raceresult)
|
mapscript,mapdiv = leaflet_chart(latitudes,longitudes,row.name,raceresult=raceresult)
|
||||||
records = VirtualRaceResult.objects.filter(workoutid=row.id,userid=row.user.user.id,coursecompleted=True)
|
records = VirtualRaceResult.objects.filter(workoutid=row.id,userid=row.user.user.id,coursecompleted=True)
|
||||||
if records.count()>0:
|
if records.count()>0: # pragma: no cover
|
||||||
courses = list(set([record.course for record in records]))
|
courses = list(set([record.course for record in records]))
|
||||||
|
|
||||||
|
|
||||||
@@ -4751,7 +4751,7 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
records = VirtualRaceResult.objects.filter(workoutid=row.id,userid=row.user.user.id,coursecompleted=True)
|
records = VirtualRaceResult.objects.filter(workoutid=row.id,userid=row.user.user.id,coursecompleted=True)
|
||||||
if records.count()>0:
|
if records.count()>0: # pragma: no cover
|
||||||
courses = list(set([record.course for record in records]))
|
courses = list(set([record.course for record in records]))
|
||||||
|
|
||||||
|
|
||||||
@@ -6430,6 +6430,7 @@ def workout_summary_edit_view(request,id,message="",successmessage=""
|
|||||||
):
|
):
|
||||||
row = get_workout_by_opaqueid(request,id)
|
row = get_workout_by_opaqueid(request,id)
|
||||||
r = getrower(request.user)
|
r = getrower(request.user)
|
||||||
|
|
||||||
breadcrumbs = [
|
breadcrumbs = [
|
||||||
{
|
{
|
||||||
'url':'/rowers/list-workouts/',
|
'url':'/rowers/list-workouts/',
|
||||||
|
|||||||
Reference in New Issue
Block a user