Exemplo n.º 1
0
 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
         })
Exemplo n.º 2
0
 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
         },
     )
Exemplo n.º 3
0
 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()
         })
Exemplo n.º 4
0
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()
        },
    )
Exemplo n.º 5
0
 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()},
     )
Exemplo n.º 6
0
 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()},
     )
Exemplo n.º 7
0
 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()
         })
Exemplo n.º 8
0
 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()
         })
Exemplo n.º 9
0
 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()
         })
Exemplo n.º 10
0
 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()
         })
Exemplo n.º 11
0
 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(),
         },
     )
Exemplo n.º 12
0
 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})
Exemplo n.º 13
0
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()},
    )
Exemplo n.º 14
0
 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
     })
Exemplo n.º 15
0
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()
        })
Exemplo n.º 16
0
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,
        },
    )
Exemplo n.º 17
0
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()
        })