def get(self, request): sports = Sport.objects.all().order_by('name') sport_data = {} for sport in sports: if sport.name not in protected_sports: activities_df = pd.DataFrame( list( Activity.objects.filter(sport=sport.id).values( "duration", "distance"))) setattr(sport, "total_count", len(activities_df)) if activities_df.empty: setattr(sport, "total_distance", 0) setattr(sport, "total_duration", 0) else: setattr(sport, "total_distance", round(activities_df['distance'].sum(), 2)) setattr( sport, "total_duration", remove_microseconds(activities_df['duration'].sum())) return render( request, self.template_name, { 'sports': sports, 'page': 'all_sports', 'form_field_ids': get_all_form_field_ids(), **sport_data })
def get(self, request): sports = models.Sport.objects.all().order_by("name") sport_data = {} for sport in sports: if sport.name not in configuration.protected_sports: activities_df = pd.DataFrame( list( models.Activity.objects.filter(sport=sport.id).values( "duration", "distance"))) setattr(sport, "total_count", len(activities_df)) if activities_df.empty: setattr(sport, "total_distance", 0) setattr(sport, "total_duration", 0) else: setattr(sport, "total_distance", round(activities_df["distance"].sum(), 2)) setattr( sport, "total_duration", remove_microseconds(activities_df["duration"].sum())) return render( request, self.template_name, { "sports": sports, "page": "all_sports", "form_field_ids": get_all_form_field_ids(), **sport_data }, )
def get(self, request, sports_name_slug): log.debug(f"got sports name: {sports_name_slug}") if sports_name_slug == 'undefined': log.warning(f"could not find sport - redirecting to home") return HttpResponseRedirect(reverse('home')) sport_id = Sport.objects.get(slug=sports_name_slug).id activities = self.get_activities(sport_id=sport_id) map_context = super(SportsView, self).get(request=request, list_of_activities=activities) sports = Sport.objects.all().order_by('name') summary = get_summary_of_activities(activities=activities) if activities: script_history, div_history = plot_history(activities=activities, sport_model=Sport, settings_model=Settings) map_context['script_history'] = script_history map_context['div_history'] = div_history try: sport = model_to_dict(Sport.objects.get(slug=sports_name_slug)) sport['slug'] = sports_name_slug except ObjectDoesNotExist: log.critical("this sport does not exist") raise Http404 return render( request, self.template_name, { **map_context, 'activities': activities, 'sports': sports, 'summary': summary, 'sport': sport, 'form_field_ids': get_all_form_field_ids() })
def edit_sport_view(request, sports_name_slug): sports = models.Sport.objects.all().order_by("name") sport = models.Sport.objects.get(slug=sports_name_slug) if sport.name in configuration.protected_sports: messages.warning(request, f"Can't edit sport '{sport.name}'") return HttpResponseRedirect(f"/sport/{sport.slug}") form = AddSportsForm(request.POST or None, instance=sport) if request.method == "POST": if form.is_valid(): log.debug(f"got valid form: {form.cleaned_data}") form.save() messages.success( request, f"Successfully modified '{form.cleaned_data['name']}' Sport") return HttpResponseRedirect(f"/sport/{sport.slug}/edit/") else: log.warning(f"form invalid: {form.errors}") return render( request, "sport/edit_sport.html", { "sports": sports, "sport": sport, "form": form, "form_field_ids": get_all_form_field_ids() }, )
def get(self, request, *args, **kwargs): sports = Sport.objects.all().order_by("name") activity = Activity.objects.get(id=kwargs["pk"]) return render( request, self.template_name, {"sports": sports, "activity": activity, "form_field_ids": get_all_form_field_ids()}, )
def get(self, request, *args, **kwargs): sports = Sport.objects.all().order_by("name") log.debug(f"activities to be deleted: {self.activities}") return render( request, self.template_name, {"sports": sports, "activities": self.activities, "form_field_ids": get_all_form_field_ids()}, )
def get(self, request, *args, **kwargs): sports = Sport.objects.all().order_by('name') activity = Activity.objects.get(id=kwargs['pk']) return render( request, self.template_name, { 'sports': sports, 'activity': activity, 'form_field_ids': get_all_form_field_ids() })
def get(self, request, *args, **kwargs): sports = Sport.objects.all().order_by('name') log.debug(f"activities to be deleted: {self.activities}") return render( request, self.template_name, { 'sports': sports, 'activities': self.activities, 'form_field_ids': get_all_form_field_ids() })
def get(self, request, *args, **kwargs): sports = Sport.objects.all().order_by('name') sport = Sport.objects.get(slug=kwargs['slug']) if sport.name in protected_sports: messages.warning(request, f"Can't delete sport '{sport.name}'") return HttpResponseRedirect(f"/sport/{sport.slug}") return render( request, self.template_name, { 'sports': sports, 'sport': sport, 'form_field_ids': get_all_form_field_ids() })
def get(self, request, *args, **kwargs): sports = models.Sport.objects.all().order_by("name") sport = models.Sport.objects.get(slug=kwargs["slug"]) if sport.name in configuration.protected_sports: messages.warning(request, f"Can't delete sport '{sport.name}'") return HttpResponseRedirect(f"/sport/{sport.slug}") return render( request, self.template_name, { "sports": sports, "sport": sport, "form_field_ids": get_all_form_field_ids() })
def get(self, request, sports_name_slug): log.debug(f"got sports name: {sports_name_slug}") settings = models.get_settings() if sports_name_slug == "undefined": log.warning("could not find sport - redirecting to home") return HttpResponseRedirect(reverse("home")) sport = models.Sport.objects.get(slug=sports_name_slug) activities = self.get_activity_data_for_plots(sport_id=sport.id) context = {} sports = models.Sport.objects.all().order_by("name") summary = get_summary_of_all_activities(sport_slug=sports_name_slug) if activities: script_history, div_history = plot_history( activities=activities, sport_model=models.Sport, number_of_days=settings.number_of_days, ) context["script_history"] = script_history context["div_history"] = div_history context["activities_selected_for_plot"] = True else: context["activities_selected_for_plot"] = False map_context = super(SportsView, self).get(request=request, list_of_activities=activities) if sport.evaluates_for_awards: top_awards = get_flat_list_of_pks_of_activities_in_top_awards( configuration.rank_limit, sports_name_slug) context["top_awards"] = top_awards try: sport = model_to_dict( models.Sport.objects.get(slug=sports_name_slug)) sport["slug"] = sports_name_slug except ObjectDoesNotExist: log.critical("this sport does not exist") raise Http404 page = 0 return render( request, self.template_name, { **map_context, **context, "current_page": page, "is_last_page": False, "sports": sports, "summary": summary, "sport": sport, "form_field_ids": get_all_form_field_ids(), }, )
def get(self, request, activity_id): activity = Activity.objects.get(id=activity_id) context = super(ActivityView, self).get(request=request, list_of_activities=[activity]) activity_context = { "sports": Sport.objects.all().order_by("name"), "activity": activity, "form_field_ids": get_all_form_field_ids(), } if activity.trace_file: script_time_series, div_time_series = plot_time_series(activity) activity_context["script_time_series"] = script_time_series activity_context["div_time_series"] = div_time_series laps = Lap.objects.filter(trace=activity.trace_file, trigger="manual") if laps: activity_context["laps"] = laps return render(request, self.template_name, {**context, **activity_context})
def add_activity_view(request): sports = Sport.objects.all().order_by("name") if request.method == "POST": form = AddActivityForm(request.POST) if form.is_valid(): instance = form.save() instance.save() messages.success(request, f"Successfully added '{form.cleaned_data['name']}'") return HttpResponseRedirect(reverse("home")) else: log.warning(f"form invalid: {form.errors}") else: form = AddActivityForm() return render( request, "activity/add_activity.html", {"sports": sports, "form": form, "form_field_ids": get_all_form_field_ids()}, )
def get(self, request, activity_id): activity = Activity.objects.get(id=activity_id) context = super(ActivityView, self).get(request=request, list_of_activities=[activity]) activity_context = { 'sports': Sport.objects.all().order_by('name'), 'activity': activity, 'form_field_ids': get_all_form_field_ids(), } if activity.trace_file: script_time_series, div_time_series = plot_time_series(activity) activity_context['script_time_series'] = script_time_series activity_context['div_time_series'] = div_time_series laps = Lap.objects.filter(trace=activity.trace_file, trigger='manual') if laps: activity_context['laps'] = laps return render(request, self.template_name, { **context, **activity_context })
def add_sport_view(request): sports = Sport.objects.all().order_by('name') if request.method == 'POST': form = AddSportsForm(request.POST) if form.is_valid(): instance = form.save() instance.save() messages.success( request, f"Successfully added '{form.cleaned_data['name']}'") return HttpResponseRedirect(reverse('sports')) else: log.warning(f"form invalid: {form.errors}") else: form = AddSportsForm() return render( request, 'sport/add_sport.html', { 'sports': sports, 'form': form, 'page': 'add_sport', 'form_field_ids': get_all_form_field_ids() })
def edit_activity_view(request, activity_id): form_field_ids = get_all_form_field_ids() sports = Sport.objects.all().order_by("name") activity = Activity.objects.get(id=activity_id) activity_form = EditActivityForm(request.POST or None, instance=activity) laps = Lap.objects.filter(trace=activity.trace_file, trigger="manual") has_laps = True if laps else False if has_laps: LapFormSet = modelformset_factory(Lap, fields=("label",)) formset = LapFormSet(request.POST or None, queryset=laps) form_field_ids = _add_formset_field_ids(form_field_ids, formset) else: formset = None if request.method == "POST": if activity_form.is_valid(): activity_form.save() if has_laps: if formset.is_valid(): formset.save() messages.success(request, f"Successfully modified '{activity_form.cleaned_data['name']}'") return HttpResponseRedirect(f"/activity/{activity_id}") else: log.warning(f"form invalid: {activity_form.errors}") if has_laps: log.warning(f"form invalid: {activity_form.errors}") return render( request, "activity/edit_activity.html", { "activity_form": activity_form, "sports": sports, "activity": activity, "formset": formset, "has_laps": has_laps, "form_field_ids": form_field_ids, }, )
def edit_sport_view(request, sports_name_slug): sports = Sport.objects.all().order_by('name') sport = Sport.objects.get(slug=sports_name_slug) if sport.name in protected_sports: messages.warning(request, f"Can't edit sport '{sport.name}'") return HttpResponseRedirect(f"/sport/{sport.slug}") form = AddSportsForm(request.POST or None, instance=sport) if request.method == 'POST': if form.is_valid(): log.debug(f"got valid form: {form.cleaned_data}") form.save() messages.success( request, f"Successfully modified '{form.cleaned_data['name']}'") return HttpResponseRedirect(f'/sport/{sport.slug}/edit/') else: log.warning(f"form invalid: {form.errors}") return render( request, 'sport/edit_sport.html', { 'sports': sports, 'sport': sport, 'form': form, 'form_field_ids': get_all_form_field_ids() })