diff --git a/rowers/dataprep.py b/rowers/dataprep.py index 89266aba..fb7ef68c 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -117,6 +117,30 @@ from scipy.signal import savgol_filter import datetime +def polarization_index(df,rower): + df['dt'] = df['time'].diff()/6.e4 + # remove rest (spm<15) + df.dropna(axis=0,inplace=True) + df['dt'] = df['dt'].clip(upper=4,lower=0) + + + masklow = (df['power']>0) & (df['power']=rower.pw_at) & (df['power']rower.pw_an) + + + time_low_pw = df.loc[masklow,'dt'].sum() + time_mid_pw = df.loc[maskmid,'dt'].sum() + time_high_pw = df.loc[maskhigh,'dt'].sum() + + frac_low = time_low_pw/(time_low_pw+time_mid_pw+time_high_pw) + frac_mid = time_mid_pw/(time_low_pw+time_mid_pw+time_high_pw) + frac_high = time_high_pw/(time_low_pw+time_mid_pw+time_high_pw) + + index = math.log10(frac_high*100.*frac_low/frac_mid) + + return index + def get_latlon(id): try: diff --git a/rowers/forms.py b/rowers/forms.py index c0ee89fd..f5d0e68b 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -358,6 +358,7 @@ class TeamUploadOptionsForm(forms.Form): class Meta: fields = ['make_plot','plottype'] + # This form is used on the Workout Split page class WorkoutSplitForm(forms.Form): splitchoices = ( @@ -513,15 +514,20 @@ class DateRangeForm(forms.Form): startdate = forms.DateField( initial=timezone.now()-datetime.timedelta(days=365), # widget=SelectDateWidget(years=range(1990,2050)), - widget=AdminDateWidget(), + widget=AdminDateWidget(format='%Y-%m-%d'), label='Start Date') enddate = forms.DateField( initial=timezone.now(), - widget=AdminDateWidget(), + widget=AdminDateWidget(format='%Y-%m-%d'), label='End Date') class Meta: fields = ['startdate','enddate'] + input_formats=("%Y-%m-%d") + dateTimeOptions = { + 'format': '%Y-%m-%d', + 'autoclose': True, + } class FitnessMetricForm(forms.Form): startdate = forms.DateField( @@ -1201,6 +1207,19 @@ class WorkoutRaceSelectForm(forms.Form): # self.fields['evaluate_after'] = +# Form to select team by rower +class RowerTeamForm(forms.Form): + team = forms.ModelChoiceField( + queryset=Team.objects.all(), + required=False, + ) + + def __init__(self, user, *args, **kwargs): + super(RowerTeamForm, self).__init__(*args, **kwargs) + + self.fields['team'].queryset = Team.objects.filter(manager=user) + + class PlannedSessionTeamForm(forms.Form): team = forms.ModelMultipleChoiceField( queryset=Team.objects.all(), diff --git a/rowers/metrics.py b/rowers/metrics.py index 1e7d55b1..c06debdd 100644 --- a/rowers/metrics.py +++ b/rowers/metrics.py @@ -11,6 +11,8 @@ import pandas as pd from scipy import optimize from django.utils import timezone +from math import log10 + nometrics = [ 'originalvelo', 'cumdist', @@ -359,6 +361,7 @@ This value should be fairly constant across all stroke rates.""", ) + def calc_trimp(df,sex,hrmax,hrmin,hrftp): if sex == 'male': f = 1.92 diff --git a/rowers/models.py b/rowers/models.py index 37a13822..63318e39 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2982,6 +2982,9 @@ def auto_delete_image_on_delete(sender,instance, **kwargs): print("couldn't find the file "+instance.filename) + + + # Form to update Workout data class WorkoutForm(ModelForm): # duration = forms.TimeInput(format='%H:%M:%S.%f') diff --git a/rowers/plannedsessions.py b/rowers/plannedsessions.py index 34642a46..8682aaa7 100644 --- a/rowers/plannedsessions.py +++ b/rowers/plannedsessions.py @@ -486,6 +486,10 @@ def remove_rower_session(r,ps): return 1 +def get_team(request): + teamid = request.GET.get('team') + return teamid + def get_dates_timeperiod(request,startdatestring='',enddatestring='', defaulttimeperiod='thisweek'): # set start end date according timeperiod diff --git a/rowers/templates/menu_plan.html b/rowers/templates/menu_plan.html index 7177f790..9c5d823d 100644 --- a/rowers/templates/menu_plan.html +++ b/rowers/templates/menu_plan.html @@ -61,11 +61,6 @@  Add Session -
  • - -  Add Group Session - -
  • Plan Microcycle @@ -78,6 +73,31 @@
  • + {% if request.user|user_teams %} +
  • + + + +
  • + {% endif %}

     

    diff --git a/rowers/templates/plannedsession_multicreate.html b/rowers/templates/plannedsession_multicreate.html index 2981a7b0..581e8a85 100644 --- a/rowers/templates/plannedsession_multicreate.html +++ b/rowers/templates/plannedsession_multicreate.html @@ -5,7 +5,11 @@ {% block title %}Plan entire microcycle{% endblock %} {% block main %} +{% if team %} +

    Create Group Sessions for {{ team.name }}

    +{% else %}

    Create Sessions for {{ rower.user.first_name }} {{ rower.user.last_name }}

    +{% endif %}