From 283575af92e513d5fb666df911651c7e0d2336c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= <zebuline@entrouvert.com>
Date: Fri, 9 Jul 2021 16:01:42 +0200
Subject: [PATCH 05/23] misc: fix super-with-arguments pylint error (#55505)

---
 chrono/agendas/models.py         | 14 ++---
 chrono/api/utils.py              |  4 +-
 chrono/api/views.py              |  2 +-
 chrono/manager/forms.py          |  8 +--
 chrono/manager/views.py          | 88 ++++++++++++++++----------------
 chrono/manager/widgets.py        |  2 +-
 chrono/urls_utils.py             |  2 +-
 chrono/utils/requests_wrapper.py |  2 +-
 chrono/views.py                  |  4 +-
 9 files changed, 63 insertions(+), 63 deletions(-)

diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py
index a8e84fa..469cd17 100644
--- a/chrono/agendas/models.py
+++ b/chrono/agendas/models.py
@@ -275,7 +275,7 @@ class Agenda(models.Model):
                 self.default_view = 'month'
             else:
                 self.default_view = 'day'
-        super(Agenda, self).save(*args, **kwargs)
+        super().save(*args, **kwargs)
 
     @property
     def base_slug(self):
@@ -1042,7 +1042,7 @@ class TimePeriod(models.Model):
     def save(self, *args, **kwargs):
         if self.agenda:
             assert self.agenda.kind == 'virtual', "a time period can only reference a virtual agenda"
-        super(TimePeriod, self).save(*args, **kwargs)
+        super().save(*args, **kwargs)
 
     @property
     def weekday_str(self):
@@ -1229,7 +1229,7 @@ class MeetingType(models.Model):
         assert self.agenda.kind != 'virtual', "a meetingtype can't reference a virtual agenda"
         if not self.slug:
             self.slug = generate_slug(self, agenda=self.agenda)
-        super(MeetingType, self).save(*args, **kwargs)
+        super().save(*args, **kwargs)
 
     @property
     def base_slug(self):
@@ -1340,7 +1340,7 @@ class Event(models.Model):
         self.check_full()
         if not self.slug:
             self.slug = generate_slug(self, seen_slugs=seen_slugs, agenda=self.agenda)
-        return super(Event, self).save(*args, **kwargs)
+        return super().save(*args, **kwargs)
 
     @property
     def base_slug(self):
@@ -1803,7 +1803,7 @@ class Booking(models.Model):
 
     def save(self, *args, **kwargs):
         with transaction.atomic():
-            super(Booking, self).save(*args, **kwargs)
+            super().save(*args, **kwargs)
             initial_values = self.event.full, self.event.almost_full
             self.event.check_full()
             if (self.event.full, self.event.almost_full) != initial_values:
@@ -1931,7 +1931,7 @@ class Desk(models.Model):
         assert self.agenda.kind != 'virtual', "a desk can't reference a virtual agenda"
         if not self.slug:
             self.slug = generate_slug(self, agenda=self.agenda)
-        super(Desk, self).save(*args, **kwargs)
+        super().save(*args, **kwargs)
 
     @property
     def base_slug(self):
@@ -2382,7 +2382,7 @@ class UnavailabilityCalendar(models.Model):
     def save(self, *args, **kwargs):
         if not self.slug:
             self.slug = generate_slug(self)
-        super(UnavailabilityCalendar, self).save(*args, **kwargs)
+        super().save(*args, **kwargs)
 
     def can_be_managed(self, user):
         if user.is_staff:
diff --git a/chrono/api/utils.py b/chrono/api/utils.py
index 2646b8b..89afd7b 100644
--- a/chrono/api/utils.py
+++ b/chrono/api/utils.py
@@ -26,7 +26,7 @@ class Response(DRFResponse):
         # add reason for compatibility (https://dev.entrouvert.org/issues/24025)
         if data is not None and 'err_class' in data:
             data['reason'] = data['err_class']
-        super(Response, self).__init__(data=data, *args, **kwargs)
+        super().__init__(data=data, *args, **kwargs)
 
 
 class APIError(Exception):
@@ -35,7 +35,7 @@ class APIError(Exception):
 
     def __init__(self, *args, **kwargs):
         self.__dict__.update(kwargs)
-        super(APIError, self).__init__(*args)
+        super().__init__(*args)
 
     def to_response(self):
         data = {
diff --git a/chrono/api/views.py b/chrono/api/views.py
index c1e60dc..8b510df 100644
--- a/chrono/api/views.py
+++ b/chrono/api/views.py
@@ -1103,7 +1103,7 @@ class StringOrListField(serializers.ListField):
     def to_internal_value(self, data):
         if isinstance(data, str):
             data = [s.strip() for s in data.split(',')]
-        return super(StringOrListField, self).to_internal_value(data)
+        return super().to_internal_value(data)
 
 
 class SlotsSerializer(SlotSerializer):
diff --git a/chrono/manager/forms.py b/chrono/manager/forms.py
index e620f86..d346fe5 100644
--- a/chrono/manager/forms.py
+++ b/chrono/manager/forms.py
@@ -107,7 +107,7 @@ class AgendaEditForm(forms.ModelForm):
         ]
 
     def __init__(self, *args, **kwargs):
-        super(AgendaEditForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
         if kwargs['instance'].kind != 'events':
             del self.fields['booking_form_url']
             del self.fields['event_display_template']
@@ -126,7 +126,7 @@ class AgendaBookingDelaysForm(forms.ModelForm):
         ]
 
     def __init__(self, *args, **kwargs):
-        super(AgendaBookingDelaysForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
         if kwargs['instance'].kind != 'virtual':
             self.fields['minimal_booking_delay'].required = True
             self.fields['maximal_booking_delay'].required = True
@@ -583,7 +583,7 @@ class VirtualMemberForm(forms.ModelForm):
         fields = ['real_agenda']
 
     def __init__(self, *args, **kwargs):
-        super(VirtualMemberForm, self).__init__(*args, **kwargs)
+        super().__init__(*args, **kwargs)
         self.fields['real_agenda'].queryset = Agenda.objects.filter(kind='meetings').exclude(
             virtual_agendas=self.instance.virtual_agenda
         )
@@ -604,7 +604,7 @@ class ImportEventsForm(forms.Form):
 
     def __init__(self, agenda_pk, **kwargs):
         self.agenda_pk = agenda_pk
-        super(ImportEventsForm, self).__init__(**kwargs)
+        super().__init__(**kwargs)
 
     def clean_events_csv_file(self):
         content = self.cleaned_data['events_csv_file'].read()
diff --git a/chrono/manager/views.py b/chrono/manager/views.py
index 1da0530..81a6552 100644
--- a/chrono/manager/views.py
+++ b/chrono/manager/views.py
@@ -119,7 +119,7 @@ class HomepageView(ListView):
     model = Agenda
 
     def get_queryset(self):
-        queryset = super(HomepageView, self).get_queryset()
+        queryset = super().get_queryset()
         if not self.request.user.is_staff:
             group_ids = [x.id for x in self.request.user.groups.all()]
             queryset = queryset.filter(Q(view_role_id__in=group_ids) | Q(edit_role_id__in=group_ids))
@@ -749,7 +749,7 @@ class AgendaAddView(CreateView):
     def dispatch(self, request, *args, **kwargs):
         if not request.user.is_staff:
             raise PermissionDenied()
-        return super(AgendaAddView, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_success_url(self):
         return reverse('chrono-manager-agenda-settings', kwargs={'pk': self.object.id})
@@ -773,7 +773,7 @@ class AgendasImportView(FormView):
     def dispatch(self, request, *args, **kwargs):
         if not request.user.is_staff:
             raise PermissionDenied()
-        return super(AgendasImportView, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def form_valid(self, form):
         try:
@@ -849,7 +849,7 @@ class AgendasImportView(FormView):
         if global_noop:
             messages.info(self.request, _('No data found.'))
 
-        return super(AgendasImportView, self).form_valid(form)
+        return super().form_valid(form)
 
 
 agendas_import = AgendasImportView.as_view()
@@ -865,13 +865,13 @@ class ViewableAgendaMixin(object):
         self.set_agenda(**kwargs)
         if not self.check_permissions(request.user):
             raise PermissionDenied()
-        return super(ViewableAgendaMixin, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def check_permissions(self, user):
         return self.agenda.can_be_viewed(user)
 
     def get_context_data(self, **kwargs):
-        context = super(ViewableAgendaMixin, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['agenda'] = self.agenda
         return context
 
@@ -944,10 +944,10 @@ class AgendaDeleteView(DeleteView):
     def dispatch(self, request, *args, **kwargs):
         if not request.user.is_staff:
             raise PermissionDenied()
-        return super(AgendaDeleteView, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_context_data(self, **kwargs):
-        context = super(AgendaDeleteView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['cannot_delete'] = Booking.objects.filter(
             event__agenda=self.get_object(),
             event__start_datetime__gt=now(),
@@ -961,7 +961,7 @@ class AgendaDeleteView(DeleteView):
         context = self.get_context_data()
         if context['cannot_delete']:
             raise PermissionDenied()
-        return super(AgendaDeleteView, self).delete(request, *args, **kwargs)
+        return super().delete(request, *args, **kwargs)
 
 
 agenda_delete = AgendaDeleteView.as_view()
@@ -1043,10 +1043,10 @@ class AgendaDateView(DateMixin, ViewableAgendaMixin):
                     kwargs={'pk': kwargs['pk'], 'year': date.year, 'month': date.month, 'day': date.day},
                 )
             )
-        return super(AgendaDateView, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_context_data(self, **kwargs):
-        context = super(AgendaDateView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['agenda'] = self.agenda
         if self.agenda.kind != 'events':
             try:
@@ -1209,7 +1209,7 @@ agenda_day_view = AgendaDayView.as_view()
 
 class AgendaMonthView(AgendaDateView, MonthArchiveView):
     def get_queryset(self):
-        qs = super(AgendaMonthView, self).get_queryset()
+        qs = super().get_queryset()
         if self.agenda.kind != 'events':
             return qs
         return Event.annotate_queryset(qs).order_by('start_datetime', 'label')
@@ -1236,7 +1236,7 @@ class AgendaMonthView(AgendaDateView, MonthArchiveView):
         return ['chrono/manager_%s_agenda_month_view.html' % self.agenda.kind]
 
     def get_context_data(self, **kwargs):
-        context = super(AgendaMonthView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         if self.agenda.kind == 'events':
             context['cancellation_reports'] = EventCancellationReport.objects.filter(
                 event__agenda=self.agenda,
@@ -1439,10 +1439,10 @@ class ManagedAgendaSubobjectMixin(object):
         self.agenda = self.get_object().agenda
         if not self.agenda.can_be_managed(request.user):
             raise PermissionDenied()
-        return super(ManagedAgendaSubobjectMixin, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_context_data(self, **kwargs):
-        context = super(ManagedAgendaSubobjectMixin, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['agenda'] = self.object.agenda
         return context
 
@@ -1460,7 +1460,7 @@ class ManagedDeskMixin(object):
             raise Http404()
         if not self.desk.agenda.can_be_managed(request.user):
             raise PermissionDenied()
-        return super(ManagedDeskMixin, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_form_kwargs(self):
         kwargs = super().get_form_kwargs()
@@ -1470,7 +1470,7 @@ class ManagedDeskMixin(object):
         return kwargs
 
     def get_context_data(self, **kwargs):
-        context = super(ManagedDeskMixin, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['desk'] = self.desk
         context['agenda'] = self.desk.agenda
         return context
@@ -1486,10 +1486,10 @@ class ManagedDeskSubobjectMixin(object):
         self.desk = self.get_object().desk
         if not self.desk.agenda.can_be_managed(request.user):
             raise PermissionDenied()
-        return super(ManagedDeskSubobjectMixin, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_context_data(self, **kwargs):
-        context = super(ManagedDeskSubobjectMixin, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['desk'] = self.object.desk
         context['agenda'] = self.object.desk.agenda
         return context
@@ -1509,10 +1509,10 @@ class ManagedTimePeriodMixin(object):
 
         if not self.agenda.can_be_managed(request.user):
             raise PermissionDenied()
-        return super(ManagedTimePeriodMixin, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_context_data(self, **kwargs):
-        context = super(ManagedTimePeriodMixin, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['agenda'] = self.agenda
         return context
 
@@ -1571,7 +1571,7 @@ class AgendaSettings(ManagedAgendaMixin, DetailView):
         return self.agenda
 
     def get_context_data(self, **kwargs):
-        context = super(AgendaSettings, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         if self.agenda.accept_meetings():
             context['meeting_types'] = self.object.iter_meetingtypes()
         if self.agenda.kind == 'virtual':
@@ -1661,7 +1661,7 @@ class AgendaImportEventsSampleView(TemplateView):
     content_type = 'text/csv'
 
     def get_context_data(self, **kwargs):
-        context = super(AgendaImportEventsSampleView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         some_future_date = datetime.datetime.now() + datetime.timedelta(days=10)
         some_future_date = some_future_date.replace(hour=14, minute=0, second=0)
         context['some_future_date'] = some_future_date
@@ -1697,7 +1697,7 @@ class AgendaImportEventsView(ManagedAgendaMixin, FormView):
                     _('Event "%s" start date has changed. Do not forget to notify the registrants.')
                     % (event.label or event.slug),
                 )
-        return super(AgendaImportEventsView, self).form_valid(form)
+        return super().form_valid(form)
 
 
 agenda_import_events = AgendaImportEventsView.as_view()
@@ -1884,7 +1884,7 @@ class EventDetailView(ViewableAgendaMixin, DetailView):
         return ['chrono/manager_event_detail.html']
 
     def get_context_data(self, **kwargs):
-        context = super(EventDetailView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['user_can_manage'] = self.agenda.can_be_managed(self.request.user)
         event = self.get_object()
         context['booked'] = event.booking_set.filter(
@@ -1924,7 +1924,7 @@ class EventDeleteView(ManagedAgendaMixin, DeleteView):
     pk_url_kwarg = 'event_pk'
 
     def get_context_data(self, **kwargs):
-        context = super(EventDeleteView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['cannot_delete'] = bool(
             self.object.booking_set.filter(cancellation_datetime__isnull=True).exists()
             and self.object.start_datetime > now()
@@ -1937,7 +1937,7 @@ class EventDeleteView(ManagedAgendaMixin, DeleteView):
         context = self.get_context_data()
         if context['cannot_delete']:
             raise PermissionDenied()
-        return super(EventDeleteView, self).delete(request, *args, **kwargs)
+        return super().delete(request, *args, **kwargs)
 
     def get_success_url(self):
         if self.request.GET.get('next') == 'settings' or self.request.POST.get('next') == 'settings':
@@ -2189,7 +2189,7 @@ class MeetingTypeDeleteView(ManagedAgendaSubobjectMixin, DeleteView):
     model = MeetingType
 
     def get_context_data(self, **kwargs):
-        context = super(MeetingTypeDeleteView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         meeting_type = self.get_object()
         context['cannot_delete'] = False
 
@@ -2257,7 +2257,7 @@ class AgendaAddTimePeriodView(ManagedDeskMixin, FormView):
                 process_time_period_add_form(form, desk=desk)
         else:
             process_time_period_add_form(form, desk=self.desk)
-        return super(AgendaAddTimePeriodView, self).form_valid(form)
+        return super().form_valid(form)
 
 
 agenda_add_time_period = AgendaAddTimePeriodView.as_view()
@@ -2272,7 +2272,7 @@ class VirtualAgendaAddTimePeriodView(ManagedAgendaMixin, FormView):
 
     def form_valid(self, form):
         process_time_period_add_form(form, agenda=self.agenda)
-        return super(VirtualAgendaAddTimePeriodView, self).form_valid(form)
+        return super().form_valid(form)
 
 
 virtual_agenda_add_time_period = VirtualAgendaAddTimePeriodView.as_view()
@@ -2353,7 +2353,7 @@ class DeskDeleteView(ManagedAgendaSubobjectMixin, DeleteView):
         return super().get_queryset().filter(agenda__kind='meetings')
 
     def get_context_data(self, **kwargs):
-        context = super(DeskDeleteView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['cannot_delete'] = Booking.objects.filter(
             event__desk=self.get_object(), event__start_datetime__gt=now(), cancellation_datetime__isnull=True
         ).exists()
@@ -2365,7 +2365,7 @@ class DeskDeleteView(ManagedAgendaSubobjectMixin, DeleteView):
         context = self.get_context_data()
         if context['cannot_delete']:
             raise PermissionDenied()
-        return super(DeskDeleteView, self).delete(request, *args, **kwargs)
+        return super().delete(request, *args, **kwargs)
 
 
 desk_delete = DeskDeleteView.as_view()
@@ -2393,10 +2393,10 @@ class VirtualMemberDeleteView(DeleteView):
         self.agenda = self.get_object().virtual_agenda
         if not self.agenda.can_be_managed(request.user):
             raise PermissionDenied()
-        return super(VirtualMemberDeleteView, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
     def get_context_data(self, **kwargs):
-        context = super(VirtualMemberDeleteView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['agenda'] = self.agenda
         return context
 
@@ -2481,7 +2481,7 @@ class TimePeriodExceptionListView(ManagedDeskMixin, ListView):
         )
 
     def get_context_data(self, **kwargs):
-        context = super(TimePeriodExceptionListView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['user_can_manage'] = self.desk.agenda.can_be_managed(self.request.user)
         return context
 
@@ -2494,7 +2494,7 @@ class TimePeriodExceptionExtractListView(TimePeriodExceptionListView):
 
     def get_queryset(self):
         # but limit queryset
-        return super(TimePeriodExceptionExtractListView, self).get_queryset()[:10]
+        return super().get_queryset()[:10]
 
 
 time_period_exception_extract_list = TimePeriodExceptionExtractListView.as_view()
@@ -2511,7 +2511,7 @@ class TimePeriodExceptionDeleteView(ManagedTimePeriodExceptionMixin, DeleteView)
             if success_url in referer:
                 return success_url
 
-        success_url = super(TimePeriodExceptionDeleteView, self).get_success_url()
+        success_url = super().get_success_url()
         if self.desk and 'from_popup' in self.request.GET:
             success_url = '{}?display_exceptions={}'.format(success_url, self.desk.pk)
         return success_url
@@ -2551,7 +2551,7 @@ class DeskImportTimePeriodExceptionsView(ManagedAgendaSubobjectMixin, UpdateView
     template_name = 'chrono/manager_import_exceptions.html'
 
     def get_context_data(self, **kwargs):
-        context = super(DeskImportTimePeriodExceptionsView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         desk = self.get_object()
         context['exception_sources'] = desk.timeperiodexceptionsource_set.all()
         context['desk'] = desk
@@ -2599,7 +2599,7 @@ class DeskImportTimePeriodExceptionsView(ManagedAgendaSubobjectMixin, UpdateView
             return self.form_invalid(form)
 
         messages.info(self.request, _('Exceptions will be imported in a few minutes.'))
-        return super(DeskImportTimePeriodExceptionsView, self).form_valid(form)
+        return super().form_valid(form)
 
 
 desk_import_time_period_exceptions = DeskImportTimePeriodExceptionsView.as_view()
@@ -2640,7 +2640,7 @@ class TimePeriodExceptionSourceReplaceView(ManagedDeskSubobjectMixin, UpdateView
     template_name = 'chrono/manager_replace_exceptions.html'
 
     def get_queryset(self):
-        queryset = super(TimePeriodExceptionSourceReplaceView, self).get_queryset()
+        queryset = super().get_queryset()
         return queryset.filter(ics_filename__isnull=False)
 
     def import_file(self, desk, form):
@@ -2663,7 +2663,7 @@ class TimePeriodExceptionSourceReplaceView(ManagedDeskSubobjectMixin, UpdateView
             return self.form_invalid(form)
 
         messages.info(self.request, _('Exceptions will be synchronized in a few minutes.'))
-        return super(TimePeriodExceptionSourceReplaceView, self).form_valid(form)
+        return super().form_valid(form)
 
 
 time_period_exception_source_replace = TimePeriodExceptionSourceReplaceView.as_view()
@@ -2673,7 +2673,7 @@ class TimePeriodExceptionSourceRefreshView(ManagedDeskSubobjectMixin, DetailView
     model = TimePeriodExceptionSource
 
     def get_queryset(self):
-        queryset = super(TimePeriodExceptionSourceRefreshView, self).get_queryset()
+        queryset = super().get_queryset()
         return queryset.filter(ics_url__isnull=False)
 
     def import_file(self, desk):
@@ -3062,7 +3062,7 @@ class UnavailabilityCalendarSettings(ManagedUnavailabilityCalendarMixin, DetailV
     model = UnavailabilityCalendar
 
     def get_context_data(self, **kwargs):
-        context = super(UnavailabilityCalendarSettings, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['unavailability_calendar'] = self.object
         return context
 
@@ -3101,7 +3101,7 @@ class UnavailabilityCalendarAddUnavailabilityView(ManagedUnavailabilityCalendarM
         return kwargs
 
     def get_context_data(self, **kwargs):
-        context = super(UnavailabilityCalendarAddUnavailabilityView, self).get_context_data(**kwargs)
+        context = super().get_context_data(**kwargs)
         context['base_template'] = 'chrono/manager_unavailability_calendar_settings.html'
         context['cancel_url'] = reverse(
             'chrono-manager-unavailability-calendar-settings', kwargs={'pk': self.unavailability_calendar.pk}
diff --git a/chrono/manager/widgets.py b/chrono/manager/widgets.py
index a5f8f53..abe752b 100644
--- a/chrono/manager/widgets.py
+++ b/chrono/manager/widgets.py
@@ -55,7 +55,7 @@ class TimeWidget(TimeInput):
     input_type = 'time'
 
     def __init__(self, **kwargs):
-        super(TimeWidget, self).__init__(**kwargs)
+        super().__init__(**kwargs)
         self.attrs['step'] = '300'  # 5 minutes
         self.attrs['pattern'] = '[0-9]{2}:[0-9]{2}'
 
diff --git a/chrono/urls_utils.py b/chrono/urls_utils.py
index b4c7024..02aba8f 100644
--- a/chrono/urls_utils.py
+++ b/chrono/urls_utils.py
@@ -26,7 +26,7 @@ else:
 
 class DecoratedURLPattern(URLPattern):
     def resolve(self, *args, **kwargs):
-        result = super(DecoratedURLPattern, self).resolve(*args, **kwargs)
+        result = super().resolve(*args, **kwargs)
         if result:
             result.func = self._decorate_with(result.func)
         return result
diff --git a/chrono/utils/requests_wrapper.py b/chrono/utils/requests_wrapper.py
index fcb291c..4b95d31 100644
--- a/chrono/utils/requests_wrapper.py
+++ b/chrono/utils/requests_wrapper.py
@@ -130,7 +130,7 @@ class Requests(RequestsSession):
 
         kwargs['timeout'] = kwargs.get('timeout') or settings.REQUESTS_TIMEOUT
 
-        response = super(Requests, self).request(method, url, **kwargs)
+        response = super().request(method, url, **kwargs)
         if log_errors and (response.status_code // 100 != 2):
             extra = {}
             if django_request:
diff --git a/chrono/views.py b/chrono/views.py
index 2ce6833..dd294f1 100644
--- a/chrono/views.py
+++ b/chrono/views.py
@@ -37,7 +37,7 @@ class LoginView(auth_views.LoginView):
             return HttpResponseRedirect(
                 resolve_url('mellon_login') + '?next=' + quote(request.GET.get('next'))
             )
-        return super(LoginView, self).get(request, *args, **kwargs)
+        return super().get(request, *args, **kwargs)
 
 
 class LogoutView(auth_views.LogoutView):
@@ -45,7 +45,7 @@ class LogoutView(auth_views.LogoutView):
     def dispatch(self, request, *args, **kwargs):
         if any(get_idps()):
             return HttpResponseRedirect(resolve_url('mellon_logout'))
-        return super(LogoutView, self).dispatch(request, *args, **kwargs)
+        return super().dispatch(request, *args, **kwargs)
 
 
 def homepage(request, *args, **kwargs):
-- 
2.30.2

