diff --git a/crashreport_stats/templatetags/crashreport_stats_tags.py b/crashreport_stats/templatetags/crashreport_stats_tags.py
index 452be17..1a69c1f 100644
--- a/crashreport_stats/templatetags/crashreport_stats_tags.py
+++ b/crashreport_stats/templatetags/crashreport_stats_tags.py
@@ -1,8 +1,9 @@
 """Django template tags for crashreport statistics."""
 
-from django import template
+from django.template import Library, loader
 
-register = template.Library()
+
+register = Library()
 
 
 @register.simple_tag
@@ -10,10 +11,10 @@
     title="General Information", uuid="e1c0cc95-ab8d-461a-a768-cb8d9d7adb04"
 ):
     """Render general device information."""
-    t = template.loader.get_template(
+    template = loader.get_template(
         "crashreport_stats/tags/device_overview.html"
     )
-    return t.render(
+    return template.render(
         {"uuid": uuid, "title": title, "element_name": "device_overview"}
     )
 
@@ -23,10 +24,10 @@
     title="Crashreports", uuid="e1c0cc95-ab8d-461a-a768-cb8d9d7adb04"
 ):
     """Render device crashreport table."""
-    t = template.loader.get_template(
+    template = loader.get_template(
         "crashreport_stats/tags/device_crashreport_table.html"
     )
-    return t.render(
+    return template.render(
         {
             "uuid": uuid,
             "title": title,
@@ -40,10 +41,10 @@
     title="Update History", uuid="e1c0cc95-ab8d-461a-a768-cb8d9d7adb04"
 ):
     """Render device update history."""
-    t = template.loader.get_template(
+    template = loader.get_template(
         "crashreport_stats/tags/device_update_history.html"
     )
-    return t.render(
+    return template.render(
         {
             "uuid": uuid,
             "title": title,
@@ -57,10 +58,10 @@
     title="Report History", uuid="e1c0cc95-ab8d-461a-a768-cb8d9d7adb04"
 ):
     """Render device report history."""
-    t = template.loader.get_template(
+    template = loader.get_template(
         "crashreport_stats/tags/device_report_history.html"
     )
-    return t.render(
+    return template.render(
         {"uuid": uuid, "title": title, "element_name": "device_report_history"}
     )
 
@@ -68,10 +69,8 @@
 @register.simple_tag
 def versions_table(title="FP2 OS Versions", is_official_release="1"):
     """Render versions table."""
-    t = template.loader.get_template(
-        "crashreport_stats/tags/versions_table.html"
-    )
-    return t.render(
+    template = loader.get_template("crashreport_stats/tags/versions_table.html")
+    return template.render(
         {
             "title": title,
             "is_official_release": is_official_release,
@@ -85,10 +84,10 @@
     title="FP2 Version Distribution", is_official_release="1"
 ):
     """Render versions pie chart."""
-    t = template.loader.get_template(
+    template = loader.get_template(
         "crashreport_stats/tags/versions_pie_chart.html"
     )
-    return t.render(
+    return template.render(
         {
             "title": title,
             "is_official_release": is_official_release,
@@ -102,10 +101,10 @@
     title="FP2 Version Distribution", is_official_release="1"
 ):
     """Render versions area chart."""
-    t = template.loader.get_template(
+    template = loader.get_template(
         "crashreport_stats/tags/versions_area_chart.html"
     )
-    return t.render(
+    return template.render(
         {
             "title": title,
             "is_official_release": is_official_release,
@@ -117,10 +116,10 @@
 @register.simple_tag
 def versions_bar_chart(title="Version Stability", is_official_release="1"):
     """Render versions bar chart."""
-    t = template.loader.get_template(
+    template = loader.get_template(
         "crashreport_stats/tags/versions_bar_chart.html"
     )
-    return t.render(
+    return template.render(
         {
             "title": title,
             "is_official_release": is_official_release,
diff --git a/hiccup/allauth_adapters.py b/hiccup/allauth_adapters.py
index 584fe54..6a7c064 100644
--- a/hiccup/allauth_adapters.py
+++ b/hiccup/allauth_adapters.py
@@ -37,13 +37,13 @@
         Returns: The newly created user from the local database.
 
         """
-        u = DefaultSocialAccountAdapter.save_user(
+        user = DefaultSocialAccountAdapter.save_user(
             self, request, sociallogin, form=None
         )
-        if u.email.split("@")[1] == "fairphone.com":
-            g = Group.objects.get(name="FairphoneSoftwareTeam")
-            g.user_set.add(u)
-        return u
+        if user.email.split("@")[1] == "fairphone.com":
+            group = Group.objects.get(name="FairphoneSoftwareTeam")
+            group.user_set.add(user)
+        return user
 
     def populate_user(
         self, request: HttpRequest, sociallogin: SocialLogin, data: dict
@@ -63,12 +63,12 @@
         Returns: The user from the database.
 
         """
-        u = DefaultSocialAccountAdapter.populate_user(
+        user = DefaultSocialAccountAdapter.populate_user(
             self, request, sociallogin, data
         )
-        if not u.email.split("@")[1] == "fairphone.com":
+        if not user.email.split("@")[1] == "fairphone.com":
             raise PermissionDenied()
-        return u
+        return user
 
 
 class FormAccountAdapter(DefaultAccountAdapter):
diff --git a/hiccup/settings.py b/hiccup/settings.py
index 434c0fc..833c02d 100644
--- a/hiccup/settings.py
+++ b/hiccup/settings.py
@@ -208,5 +208,5 @@
 
 try:
     from local_settings import *  # noqa: F403,F401 pylint: disable=W0401,W0614
-except ImportError as e:
+except ImportError:
     pass
diff --git a/hiccup/urls.py b/hiccup/urls.py
index 83fb1e0..e917b60 100644
--- a/hiccup/urls.py
+++ b/hiccup/urls.py
@@ -4,7 +4,9 @@
 from django.contrib import admin
 from drf_yasg import openapi
 
-api_info = openapi.Info(title="Hiccup API", default_version="v1")
+api_info = openapi.Info(  # pylint: disable=C0103
+    title="Hiccup API", default_version="v1"
+)
 
 urlpatterns = [
     url(r"^hiccup/admin/", admin.site.urls),
