diff --git a/.flake8 b/.flake8
index 212f180554..8c3b32a187 100644
--- a/.flake8
+++ b/.flake8
@@ -1,5 +1,5 @@
 [flake8]
-ignore = C901, W504
+extend-ignore = C901, E203, E701
 max-line-length = 130
 exclude = .git,__pycache__,old,build,dist,*migrations*,*snapshots*
 max-complexity = 10
diff --git a/api/management/commands/add_action_tooltips.py b/api/management/commands/add_action_tooltips.py
index 1d2726f05f..a5e64365f0 100644
--- a/api/management/commands/add_action_tooltips.py
+++ b/api/management/commands/add_action_tooltips.py
@@ -14,76 +14,76 @@ def handle(self, *args, **options):
         tts = [
             [
                 "National Society readiness",
-                "Includes adapting community preparedness, response and DRR measures in view of the pandemic safety measures, especially when they are dealing with compounding disasters. Also includes adjusting contingency plans, updating Risk assessments identifying the different services that will be provided during the current disaster and how do these services fit into the National contingency plans.",
+                "Includes adapting community preparedness, response and DRR measures in view of the pandemic safety measures, especially when they are dealing with compounding disasters. Also includes adjusting contingency plans, updating Risk assessments identifying the different services that will be provided during the current disaster and how do these services fit into the National contingency plans.",  # noqa: E501
             ],
             [
                 "National Society sustainability",
-                "Includes identifying Core organizational budget to maintain the minimum structure of a National Society, available unrestricted reserves and unrestricted income and developing and executing business continuity plans.",
+                "Includes identifying Core organizational budget to maintain the minimum structure of a National Society, available unrestricted reserves and unrestricted income and developing and executing business continuity plans.",  # noqa: E501
             ],
             [
                 "Support to volunteers",
-                "Includes providing insurance for volunteers as well as access to PPE for volunteers to safely fulfil their duties.",
+                "Includes providing insurance for volunteers as well as access to PPE for volunteers to safely fulfil their duties.",  # nqa: E501  # noqa: E501
             ],
             [
                 "Epidemic control measures",
-                "Includes testing, contact tracing and support for quarantine of contacts and isolation of COVID-19 cases not requiring clinical treatment.",
+                "Includes testing, contact tracing and support for quarantine of contacts and isolation of COVID-19 cases not requiring clinical treatment.",  # noqa: E501
             ],
             [
                 "Risk communication, community engagement, and health and hygiene promotion",
-                "Includes approaches such as community-based activities, mass media (local radios, TV, press), social media outreach or face-to-face and interpersonal communication (door to door, community dialogues, community meetings) to promote hygiene and other risk reduction interventions.",
+                "Includes approaches such as community-based activities, mass media (local radios, TV, press), social media outreach or face-to-face and interpersonal communication (door to door, community dialogues, community meetings) to promote hygiene and other risk reduction interventions.",  # noqa: E501
             ],
             [
                 "Community-based surveillance (CBS) for COVID-19",
-                "Includes staff and volunteers who have completed a training and who are actively reporting health risks through the RC/RC approach to CBS. It does not include point-of-entry screenings, call centers, active surveillance or contact tracing.",
+                "Includes staff and volunteers who have completed a training and who are actively reporting health risks through the RC/RC approach to CBS. It does not include point-of-entry screenings, call centers, active surveillance or contact tracing.",  # noqa: E501
             ],
             [
                 "Infection prevention and control (IPC) and WASH (health facilities)",
-                "Includes any form of infection prevention and control (IPC) support provided to health facilities. Support may include donation of personal protective equipment or medical supplies, or other medical, logistics, or coordination support, support for triage of COVID-19 cases, installation of WASH infrastructure to facilitate IPC best practices, and IPC training.",
+                "Includes any form of infection prevention and control (IPC) support provided to health facilities. Support may include donation of personal protective equipment or medical supplies, or other medical, logistics, or coordination support, support for triage of COVID-19 cases, installation of WASH infrastructure to facilitate IPC best practices, and IPC training.",  # noqa: E501
             ],
             [
                 "Infection prevention and control (IPC) and WASH (community)",
-                "Includes community WASH activities such as establishing or rehabilitating a drinking water source, toilet, and/or a handwashing facility.",
+                "Includes community WASH activities such as establishing or rehabilitating a drinking water source, toilet, and/or a handwashing facility.",  # noqa: E501
             ],
             [
                 "Mental health and psychosocial support services (MHPSS)",
-                "Includes direct mental health and psychosocial support services to community members provided through National Society volunteers or staff.",
+                "Includes direct mental health and psychosocial support services to community members provided through National Society volunteers or staff.",  # noqa: E501
             ],
             [
                 "Isolation and clinical case management for COVID-19 cases",
-                "Includes support to health facilities that are actively treating COVID-19 cases or providing observational support and care to COVID-19 cases in isolation. Support can range from donations to staff and volunteer support.",
+                "Includes support to health facilities that are actively treating COVID-19 cases or providing observational support and care to COVID-19 cases in isolation. Support can range from donations to staff and volunteer support.",  # noqa: E501
             ],
             [
                 "Ambulance services for COVID-19 cases",
-                "Includes suspected or confirmed COVID-19 patients who have received ambulance transport services by the National Society.",
+                "Includes suspected or confirmed COVID-19 patients who have received ambulance transport services by the National Society.",  # noqa: E501
             ],
             [
                 "Maintain access to essential health services (community health)",
-                "Includes supporting essential community health services that have been impacted/reduced as a result of COVID-19, such as community-based malaria interventions, NCD support, and immunization campaigns to counteract the reduction in community health services and/or increased need for community health services resulting from COVID-19.",
+                "Includes supporting essential community health services that have been impacted/reduced as a result of COVID-19, such as community-based malaria interventions, NCD support, and immunization campaigns to counteract the reduction in community health services and/or increased need for community health services resulting from COVID-19.",  # noqa: E501
             ],
             [
                 "Maintain access to essential health services (clinical and paramedical)",
-                "Includes supporting health facilities supported to maintain routine essential services such as MCH, NCD, malaria treatment, and other essential services. Support can be through either physical or technical support of volunteers or staff, or support through PPE or medical supplies donation.",
+                "Includes supporting health facilities supported to maintain routine essential services such as MCH, NCD, malaria treatment, and other essential services. Support can be through either physical or technical support of volunteers or staff, or support through PPE or medical supplies donation.",  # noqa: E501
             ],
             [
                 "Management of the dead",
-                "Includes direct burial or cremation of human remains of COVID-19 cases, and supervision of safe burial or cremation in the community.",
+                "Includes direct burial or cremation of human remains of COVID-19 cases, and supervision of safe burial or cremation in the community.",  # noqa: E501
             ],
             ["Support COVID-19 Vaccination", "Includes activities such as service delivery, campaigns, or distribution."],
             [
                 "Community engagement and accountability (CEA), including community feedback mechanisms",
-                "Includes systems and approaches to collect community feedback which could mean recorded /tracked suggestions, comments, complaints, concerns, perceptions, praise, question collected through feedback systems and/or through community perception surveys.",
+                "Includes systems and approaches to collect community feedback which could mean recorded /tracked suggestions, comments, complaints, concerns, perceptions, praise, question collected through feedback systems and/or through community perception surveys.",  # noqa: E501
             ],
             [
                 "Livelihoods, cash support & food aid",
-                "Includes immediate food assistance or measures to protect households’ livelihoods by provisioning for lost sources of income to meet their basic needs and avoid further assets depletion. This can include all types of cash assistance to address basic needs. Also, activities for skills development such as entrepreneurship, marketing and coaching.",
+                "Includes immediate food assistance or measures to protect households’ livelihoods by provisioning for lost sources of income to meet their basic needs and avoid further assets depletion. This can include all types of cash assistance to address basic needs. Also, activities for skills development such as entrepreneurship, marketing and coaching.",  # noqa: E501
             ],
             [
                 "Social care and cohesion, and support to vulnerable groups",
-                "Includes analysis of the specific needs of marginalized groups in the needs assessment, and/or following the PGI minimum standards and/or using equivalent guide on assessing and meeting the needs of marginalized groups.",
+                "Includes analysis of the specific needs of marginalized groups in the needs assessment, and/or following the PGI minimum standards and/or using equivalent guide on assessing and meeting the needs of marginalized groups.",  # noqa: E501
             ],
             [
                 "Shelter and urban settlements",
-                "Includes for example, household items to improve shelter conditions (clothing, bed linen, mattress, blanket, etc.), emergency shelter (tents or tool kits), accommodation in collective facilities (camps, collective centers or quarantine facilities), cash and voucher assistance to cover payment of accommodation (rent or loans), utilities and other related cost directly related with the accommodation.",
+                "Includes for example, household items to improve shelter conditions (clothing, bed linen, mattress, blanket, etc.), emergency shelter (tents or tool kits), accommodation in collective facilities (camps, collective centers or quarantine facilities), cash and voucher assistance to cover payment of accommodation (rent or loans), utilities and other related cost directly related with the accommodation.",  # noqa: E501
             ],
         ]
 
diff --git a/api/management/commands/generate-admin2-shp.py b/api/management/commands/generate-admin2-shp.py
index 402c01ced2..27993f9b0f 100644
--- a/api/management/commands/generate-admin2-shp.py
+++ b/api/management/commands/generate-admin2-shp.py
@@ -4,7 +4,7 @@
 
 
 class Command(BaseCommand):
-    help = "Converting Shapefiles from different sources to custom file for go-api. To run, python manage.py generate-admin2-shp input.shp output.shp --source=fews"
+    help = "Converting Shapefiles from different sources to custom file for go-api. To run, python manage.py generate-admin2-shp input.shp output.shp --source=fews"  # noqa: E501
 
     missing_args_message = "Filename is missing. A shapefile with valid admin polygons is required."
 
@@ -18,7 +18,7 @@ def handle(self, *args, **options):
         output_filename = options["filename"][1]
         try:
             gdf = gpd.read_file(input_filename)
-        except:
+        except Exception:
             raise CommandError("Could not open file")
         if options["source"] == "fews":
             gdf.rename(columns={"shapeName": "name"}, inplace=True)
diff --git a/api/management/commands/import-admin0-data.py b/api/management/commands/import-admin0-data.py
index d025a3e6bc..76b8f6da96 100644
--- a/api/management/commands/import-admin0-data.py
+++ b/api/management/commands/import-admin0-data.py
@@ -1,11 +1,7 @@
 import csv
-import json
-import os
-import sys
 
 from django.contrib.gis.gdal import DataSource
 from django.contrib.gis.geos import GEOSGeometry, MultiPolygon, Point
-from django.contrib.gis.utils import LayerMapping
 from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
 from django.core.management.base import BaseCommand, CommandError
 from django.db import transaction
@@ -14,7 +10,7 @@
 
 
 class Command(BaseCommand):
-    help = "import a shapefile of adminstrative boundary level 0 data to the GO database. To run, python manage.py import-admin0-data input.shp"
+    help = "import a shapefile of adminstrative boundary level 0 data to the GO database. To run, python manage.py import-admin0-data input.shp"  # noqa: E501
 
     missing_args_message = "Filename is missing. A shapefile with valid admin polygons is required."
     region_enum = {"Africa": 0, "Americas": 1, "Asia-Pacific": 2, "Europe": 3, "Middle East and North Africa": 4}
@@ -25,11 +21,11 @@ def add_arguments(self, parser):
         parser.add_argument(
             "--update-bbox",
             action="store_true",
-            help="Update the bbox of the country geometry. Used if you want to overwrite changes that are made by users via the Django Admin",
+            help="Update the bbox of the country geometry. Used if you want to overwrite changes that are made by users via the Django Admin",  # noqa: E501
         )
         parser.add_argument(
             "--update-centroid",
-            help="Update the centroid of the country using a CSV file provided. If the CSV does not have the country iso, then we use the geometric centroid",
+            help="Update the centroid of the country using a CSV file provided. If the CSV does not have the country iso, then we use the geometric centroid",  # noqa: E501
         )
         parser.add_argument("--import-missing", help="Import missing countries for iso codes mentioned in this file.")
         parser.add_argument("--update-iso3", help="Import missing iso3 codes from this file.")
@@ -73,7 +69,7 @@ def handle(self, *args, **options):
 
         try:
             data = DataSource(filename)
-        except:
+        except Exception:
             raise CommandError("Could not open file")
 
         fields = data[0].fields
diff --git a/api/management/commands/import-admin1-data.py b/api/management/commands/import-admin1-data.py
index 74fa51ef46..4d8f0376e1 100644
--- a/api/management/commands/import-admin1-data.py
+++ b/api/management/commands/import-admin1-data.py
@@ -1,10 +1,7 @@
 import csv
-import os
-import sys
 
 from django.contrib.gis.gdal import DataSource
 from django.contrib.gis.geos import GEOSGeometry, MultiPolygon
-from django.contrib.gis.utils import LayerMapping
 from django.core.exceptions import ObjectDoesNotExist
 from django.core.management.base import BaseCommand, CommandError
 from django.db import transaction
@@ -13,7 +10,7 @@
 
 
 class Command(BaseCommand):
-    help = "import a shapefile of administrative boundary level 1 data to the GO database. To run, python manage.py import-admin1-data input.shp"
+    help = "import a shapefile of administrative boundary level 1 data to the GO database. To run, python manage.py import-admin1-data input.shp"  # noqa: E501
 
     missing_args_message = "Filename is missing. A shapefile with valid admin polygons is required."
 
@@ -23,12 +20,12 @@ def add_arguments(self, parser):
         parser.add_argument(
             "--update-bbox",
             action="store_true",
-            help="Update the bbox of the district geometry. Used if you want to overwrite changes that are made by users via the Django Admin",
+            help="Update the bbox of the district geometry. Used if you want to overwrite changes that are made by users via the Django Admin",  # noqa: E501
         )
         parser.add_argument(
             "--update-centroid",
             action="store_true",
-            help="Update the centroid of the district geometry. Used if you want to overwrite changes that are made by users via the Django Admin",
+            help="Update the centroid of the district geometry. Used if you want to overwrite changes that are made by users via the Django Admin",  # noqa: E501
         )
         parser.add_argument("--import-missing", help="Import missing districts for codes mentioned in this file.")
         parser.add_argument("--import-all", action="store_true", help="Import all districts in the shapefile, if possible.")
@@ -55,15 +52,13 @@ def handle(self, *args, **options):
 
         try:
             data = DataSource(filename)
-        except:
+        except Exception:
             raise CommandError("Could not open file")
 
         # loop through each feature in the shapefile
         for feature in data[0]:
             code = feature.get("ADMIN01COD")
             name = feature.get("ADMIN01NAM")
-            country_iso2 = feature.get("ISO2")
-            country_name = feature.get("COUNTRY")
 
             geom_wkt = feature.geom.wkt
             geom = GEOSGeometry(geom_wkt, srid=4326)
@@ -91,7 +86,7 @@ def handle(self, *args, **options):
                 # if there are more than one district with the same code, filter also using name
                 if len(districts) > 1:
                     district = District.objects.filter(code=code, name__icontains=name)
-                    # if we get a match, update geometry. otherwise consider this as missing because it's possible the names aren't matching.
+                    # if we get a match, update geometry. otherwise consider this as missing because it's possible the names aren't matching.  # noqa: E501
                     if len(district):
                         # update geom, centroid and bbox
                         d = district[0]
diff --git a/api/management/commands/import-admin2-data.py b/api/management/commands/import-admin2-data.py
index c2f1d8b22c..b17e9f838a 100644
--- a/api/management/commands/import-admin2-data.py
+++ b/api/management/commands/import-admin2-data.py
@@ -10,7 +10,7 @@
 
 
 class Command(BaseCommand):
-    help = "import a shapefile of administrative boundary level 2 data to the GO database. To run, python manage.py import-admin2-data input.shp"
+    help = "import a shapefile of administrative boundary level 2 data to the GO database. To run, python manage.py import-admin2-data input.shp"  # noqa: E501
 
     missing_args_message = "Filename is missing. A shapefile with valid admin polygons is required."
 
@@ -20,12 +20,12 @@ def add_arguments(self, parser):
         parser.add_argument(
             "--update-bbox",
             action="store_true",
-            help="Update the bbox of the admin2 geometry. Used if you want to overwrite changes that are made by users via the Django Admin",
+            help="Update the bbox of the admin2 geometry. Used if you want to overwrite changes that are made by users via the Django Admin",  # noqa: E501
         )
         parser.add_argument(
             "--update-centroid",
             action="store_true",
-            help="Update the centroid of the admin2 geometry. Used if you want to overwrite changes that are made by users via the Django Admin",
+            help="Update the centroid of the admin2 geometry. Used if you want to overwrite changes that are made by users via the Django Admin",  # noqa: E501
         )
         parser.add_argument("--import-missing", help="Import missing admin2 boundaries for codes mentioned in this file.")
         parser.add_argument(
@@ -54,7 +54,7 @@ def handle(self, *args, **options):
 
         try:
             data = DataSource(filename)
-        except:
+        except Exception:
             raise CommandError("Could not open file")
 
         # loop through each feature in the shapefile
@@ -88,7 +88,7 @@ def handle(self, *args, **options):
                 # if there are more than one admin2 with the same code, filter also using name
                 if len(admin2_objects) > 1:
                     admins2_names = Admin2.objects.filter(code=code, name__icontains=name)
-                    # if we get a match, update geometry. otherwise consider this as missing because it's possible the names aren't matching.
+                    # if we get a match, update geometry. otherwise consider this as missing because it's possible the names aren't matching.  # noqa: E501
                     if len(admins2_names):
                         # update geom, centroid and bbox
                         self.update_admin2_columns(options, admins2_names[0], geom, centroid, bbox)
@@ -135,7 +135,7 @@ def add_admin2(self, options, import_missing, feature, geom, centroid, bbox):
                 admin2.save()
                 if options["update_geom"]:
                     self.update_geom(admin2, geom)
-            except IntegrityError as e:
+            except IntegrityError:
                 print(f"Duplicate object {admin2.name}")
                 pass
 
diff --git a/api/management/commands/import-fdrs.py b/api/management/commands/import-fdrs.py
index e1ee3a6e86..c0425ec5c9 100644
--- a/api/management/commands/import-fdrs.py
+++ b/api/management/commands/import-fdrs.py
@@ -1,7 +1,7 @@
 import csv
 
 from django.core.exceptions import ObjectDoesNotExist
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
 from django.db import transaction
 
 from api.models import Country
diff --git a/api/management/commands/import-gec-code.py b/api/management/commands/import-gec-code.py
index bcd5fb23f4..2048dece00 100644
--- a/api/management/commands/import-gec-code.py
+++ b/api/management/commands/import-gec-code.py
@@ -1,7 +1,7 @@
 import csv
 
 from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
 from django.db import transaction
 
 from api.models import Country, GECCode
diff --git a/api/management/commands/import_admin2s_csv.py b/api/management/commands/import_admin2s_csv.py
index f76aff9143..550fd97da7 100644
--- a/api/management/commands/import_admin2s_csv.py
+++ b/api/management/commands/import_admin2s_csv.py
@@ -26,7 +26,7 @@ def handle(self, *args, **options):
                 adm2_code = row["GOadm2code"]
                 try:
                     adm2 = Admin2.objects.get(code=adm2_code)
-                except:
+                except Exception:
                     adm2 = Admin2()
                 adm2.code = adm2_code
                 adm2.admin1 = district
diff --git a/api/management/commands/import_countries_csv.py b/api/management/commands/import_countries_csv.py
index eebf7aa6c8..734484a772 100644
--- a/api/management/commands/import_countries_csv.py
+++ b/api/management/commands/import_countries_csv.py
@@ -1,7 +1,7 @@
 import csv
 import os
 
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
 from django.db import transaction
 
 from api.models import Country
@@ -71,7 +71,7 @@ def handle(self, *args, **options):
                 all_ids.append(id)
                 try:
                     country = Country.objects.get(pk=id)
-                except:
+                except Exception:
                     country = Country()
                 for key in row.keys():
                     # print(key)
diff --git a/api/management/commands/import_districts_csv.py b/api/management/commands/import_districts_csv.py
index 57b77b3465..37db1935c4 100644
--- a/api/management/commands/import_districts_csv.py
+++ b/api/management/commands/import_districts_csv.py
@@ -1,9 +1,9 @@
 import csv
 
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
 from django.db import transaction
 
-from api.models import Country, District
+from api.models import District
 
 
 def get_bool(value):
@@ -45,7 +45,7 @@ def handle(self, *args, **options):
                 all_ids.append(id)
                 try:
                     district = District.objects.get(pk=id)
-                except:
+                except Exception:
                     district = District()
                 for key in row.keys():
                     # print(key)
@@ -60,7 +60,7 @@ def handle(self, *args, **options):
                 try:
                     district.save()
                     print("SUCCESS", district.name)
-                except:
+                except Exception:
                     print("FAILED", district.name)
                     failures += 1
         print("done importing districts, with %d failures" % failures)
diff --git a/api/management/commands/import_ns_organizational_capacity.py b/api/management/commands/import_ns_organizational_capacity.py
index d28df12c2b..a5f01395b4 100644
--- a/api/management/commands/import_ns_organizational_capacity.py
+++ b/api/management/commands/import_ns_organizational_capacity.py
@@ -1,7 +1,5 @@
-import csv
-
 import pandas as pd
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
 
 from api.models import Country, CountryOrganizationalCapacity
 
diff --git a/api/management/commands/index_and_notify.py b/api/management/commands/index_and_notify.py
index ee4af25836..246d9199ce 100644
--- a/api/management/commands/index_and_notify.py
+++ b/api/management/commands/index_and_notify.py
@@ -25,7 +25,7 @@
 from deployments.models import ERU, Personnel, PersonnelDeployment
 from main.sentry import SentryMonitor
 from notifications.hello import get_hello
-from notifications.models import RecordType, Subscription, SubscriptionType, SurgeAlert
+from notifications.models import RecordType, Subscription, SubscriptionType
 from notifications.notification import send_notification
 from utils.elasticsearch import construct_es_data
 
@@ -34,7 +34,7 @@
 time_1_week = timedelta(days=7)  # for digest mode
 digest_time = int(10314)  # weekday - hour - min for digest timing (5 minutes once a week, Monday dawn)
 daily_retro = int(654)  # hour - min for daily retropective email timing (5 minutes a day) | Should not contain a leading 0!
-max_length = 860  # after this length (at the first space) we cut the sent content. In case of HTML tags we remove tags (to avoid chunked tags)
+max_length = 860  # after this length (at the first space) we cut the sent content. In case of HTML tags we remove tags (to avoid chunked tags)  # noqa: E501
 events_sent_to = {}  # to document sent events before re-sending them via specific following
 template_types = {
     99: "design/generic_notification.html",
@@ -901,13 +901,15 @@ def check_ingest_issues(self, having_ingest_issue):
             send_notification(
                 "API monitor – ingest issues!",
                 ["im@ifrc.org"],  # Could be an ENV var
-                "Ingest issue(s) occured, one of them is "
-                + ingestor_name
-                + ", via CronJob log record id: https://"
-                + settings.BASE_URL
-                + "/admin/api/cronjob/"
-                + str(ingest_issue_id)
-                + ". Please fix it ASAP.",
+                (
+                    "Ingest issue(s) occured, one of them is "
+                    + ingestor_name
+                    + ", via CronJob log record id: https://"
+                    + settings.BASE_URL
+                    + "/admin/api/cronjob/"
+                    + str(ingest_issue_id)
+                    + ". Please fix it ASAP."
+                ),
                 "Ingestion error",
             )
             logger.info(
@@ -953,8 +955,8 @@ def handle(self, *args, **options):
             diff=ExpressionWrapper(F("updated_at") - F("created_at"), output_field=DurationField())
         ).filter(condU & cond2 & Q(diff__gt=timedelta(minutes=1)))
 
-        new_surgealerts = SurgeAlert.objects.filter(cond1)
-        new_pers_deployments = PersonnelDeployment.objects.filter(cond1)
+        # new_surgealerts = SurgeAlert.objects.filter(cond1)
+        # new_pers_deployments = PersonnelDeployment.objects.filter(cond1)
 
         # Merge Weekly Digest into one mail instead of separate ones
         if self.is_digest_mode():
@@ -966,8 +968,8 @@ def handle(self, *args, **options):
             # self.notify(updated_appeals, RecordType.APPEAL, SubscriptionType.EDIT)
             self.notify(new_events, RecordType.EVENT, SubscriptionType.NEW)
             # self.notify(updated_events, RecordType.EVENT, SubscriptionType.EDIT)
-            # temporary switched off while historical data is uploaded: self.notify(new_surgealerts, RecordType.SURGE_ALERT, SubscriptionType.NEW)
-            # temporary switched off while historical data is uploaded: self.notify(new_pers_deployments, RecordType.SURGE_DEPLOYMENT_MESSAGES, SubscriptionType.NEW)
+            # temporary switched off while historical data is uploaded: self.notify(new_surgealerts, RecordType.SURGE_ALERT, SubscriptionType.NEW)  # noqa: E501
+            # temporary switched off while historical data is uploaded: self.notify(new_pers_deployments, RecordType.SURGE_DEPLOYMENT_MESSAGES, SubscriptionType.NEW)  # noqa: E501
 
         # Followed Events
         if self.is_daily_checkup_time():
diff --git a/api/management/commands/index_elasticsearch.py b/api/management/commands/index_elasticsearch.py
index 061e70d8b7..4bdfb8b70c 100644
--- a/api/management/commands/index_elasticsearch.py
+++ b/api/management/commands/index_elasticsearch.py
@@ -1,5 +1,4 @@
 from django.core.management.base import BaseCommand
-from elasticsearch import Elasticsearch
 from elasticsearch.client import IndicesClient
 from elasticsearch.helpers import bulk
 
diff --git a/api/management/commands/ingest_admin1_population.py b/api/management/commands/ingest_admin1_population.py
index 7e1e530154..5ce6df000f 100644
--- a/api/management/commands/ingest_admin1_population.py
+++ b/api/management/commands/ingest_admin1_population.py
@@ -2,7 +2,7 @@
 from django.core.management.base import BaseCommand
 
 from api.logger import logger
-from api.models import Country, District
+from api.models import District
 
 
 class Command(BaseCommand):
diff --git a/api/management/commands/ingest_appeal_docs.py b/api/management/commands/ingest_appeal_docs.py
index 1fcb97c371..abced2a4e8 100644
--- a/api/management/commands/ingest_appeal_docs.py
+++ b/api/management/commands/ingest_appeal_docs.py
@@ -1,7 +1,6 @@
 from collections import defaultdict
 from datetime import datetime, timezone
 
-import brotli
 from bs4 import BeautifulSoup
 from dateutil.relativedelta import relativedelta
 from django.core.exceptions import ObjectDoesNotExist
@@ -69,7 +68,7 @@ def handle(self, *args, **options):
         else:
             body = {
                 "name": "ingest_appeal_docs",
-                "message": f"Error ingesting appeals_docs on url: {baseurl}, error_code: {smoke_response.status} – {smoke_response.reason}",
+                "message": f"Error ingesting appeals_docs on url: {baseurl}, error_code: {smoke_response.status} – {smoke_response.reason}",  # noqa: E501
                 "status": CronJobStatus.ERRONEOUS,
             }
             CronJob.sync_cron(body)
diff --git a/api/management/commands/ingest_appeals.py b/api/management/commands/ingest_appeals.py
index aeea03bb9a..c032f8e75b 100644
--- a/api/management/commands/ingest_appeals.py
+++ b/api/management/commands/ingest_appeals.py
@@ -231,7 +231,7 @@ def parse_appeal_record(self, r, **options):
         # if there is more than one detail, the start date should be the *earliest
         # end date should be the *latest
         details = sorted(r["Details"], key=lambda x: self.parse_date(x["APD_startDate"]))
-        detail0 = details[0]  # first
+        # detail0 = details[0]  # first
         detail1 = details[-1]  # last
         start_date = self.parse_date(r["APP_startDate"])  # not self.parse_date(detail0['APD_startDate'])
         end_date = self.parse_date(r["APP_endDate"])  # not self.parse_date(detail1['APD_endDate'])
diff --git a/api/management/commands/ingest_deployments.py b/api/management/commands/ingest_deployments.py
index 44dc07e1c4..f74efd51af 100644
--- a/api/management/commands/ingest_deployments.py
+++ b/api/management/commands/ingest_deployments.py
@@ -1,12 +1,13 @@
 from datetime import datetime, timezone
 
 import requests
-from django.core.exceptions import ObjectDoesNotExist
+
+# from django.core.exceptions import ObjectDoesNotExist
 from django.core.management.base import BaseCommand
 
 from api.logger import logger
-from api.models import Appeal, AppealDocument
-from deployments.models import ERU, DeployedPerson, Personnel, PersonnelDeployment
+
+# from api.models import Appeal, AppealDocument
 
 
 class Command(BaseCommand):
@@ -20,7 +21,7 @@ def parse_date(self, date_string):
     def handle(self, *args, **options):
         logger.info("Starting Deployment ingest")
 
-        # url = 'https://proxy.hxlstandard.org/data.json?url=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1CBvledFYc_uwlvHTvJE0SYS7_mPGU2L-zhrqbB4KNIA%2Fedit%23gid%3D0&header-row=1' # not enough.
+        # url = 'https://proxy.hxlstandard.org/data.json?url=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1CBvledFYc_uwlvHTvJE0SYS7_mPGU2L-zhrqbB4KNIA%2Fedit%23gid%3D0&header-row=1' # not enough.  # noqa: E501
         url = (
             "https://proxy.hxlstandard.org/data.json?tagger-match-all=on&"
             + "tagger-01-header=year&"
@@ -73,7 +74,7 @@ def handle(self, *args, **options):
             + "tagger-24-tag=%23c6&"
             + "tagger-25-header=comments&"
             + "tagger-25-tag=%23c7&"
-            + "url=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1CBvledFYc_uwlvHTvJE0SYS7_mPGU2L-zhrqbB4KNIA%2Fedit%23gid%3D0&"
+            + "url=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2F1CBvledFYc_uwlvHTvJE0SYS7_mPGU2L-zhrqbB4KNIA%2Fedit%23gid%3D0&"  # noqa: E501
             + "header-row=1"
         )
 
@@ -81,16 +82,16 @@ def handle(self, *args, **options):
         if response.status_code != 200:
             logger.error("Error querying Deployment HXL API")
             raise Exception("Error querying Deployment HXL API")
-        records = response.json()
+        # records = response.json()
 
         # some logging variables
         not_found = []
         existing = []
         created = []
 
-        columns = [a.replace("*", "").replace(" ", "") for a in records[0]]
-        # ['Year', 'AppealCode', 'Region', 'Country', 'Location', 'Disastertype', 'Disastername', 'Name', 'DeployingNS/IFRCOffice', 'Gender', 'Language', 'Position', 'Type', 'SupportedbyNS', 'Availability', 'Expstartdate', 'expduration', 'Alert', 'Deploymentmessage', 'Startofmission', 'Endofmission', 'DeploymentDuration', 'Deployed', 'Rotation', 'Comments']
-        #     0          1          2          3          4          5                    6          7          8                       9          10          11          12          13             14            15              16          17          18                    19                    20                21          22          23          24
+        # columns = [a.replace("*", "").replace(" ", "") for a in records[0]]
+        # ['Year', 'AppealCode', 'Region', 'Country', 'Location', 'Disastertype', 'Disastername', 'Name', 'DeployingNS/IFRCOffice', 'Gender', 'Language', 'Position', 'Type', 'SupportedbyNS', 'Availability', 'Expstartdate', 'expduration', 'Alert', 'Deploymentmessage', 'Startofmission', 'Endofmission', 'DeploymentDuration', 'Deployed', 'Rotation', 'Comments']  # noqa: E501
+        #     0          1          2          3          4          5                    6          7          8                       9          10          11          12          13             14            15              16          17          18                    19                    20                21          22          23          24  # noqa: E501
 
         # if empty name -> Alert, otherwise -> Deployment
 
diff --git a/api/management/commands/ingest_disaster_law.py b/api/management/commands/ingest_disaster_law.py
index c45fbb98c7..313f7e72fe 100644
--- a/api/management/commands/ingest_disaster_law.py
+++ b/api/management/commands/ingest_disaster_law.py
@@ -1,15 +1,9 @@
-import datetime as dt
-import json
-
-import pandas as pd
 import requests
-import xmltodict
 from bs4 import BeautifulSoup
-from dateutil.parser import parse
 from django.core.management.base import BaseCommand
 
 from api.logger import logger
-from api.models import Country, CountryICRCPresence, CronJob, CronJobStatus
+from api.models import Country, CronJob, CronJobStatus
 
 
 class Command(BaseCommand):
@@ -25,7 +19,7 @@ def handle(self, *args, **kwargs):
             soup = BeautifulSoup(response.content, "html.parser")
             try:
                 country_options = soup.find("select", {"data-drupal-selector": "edit-country"}).find_all("option")
-            except Exception as err:
+            except Exception:
                 continue
 
             # Loop through countries and get information
@@ -44,7 +38,7 @@ def handle(self, *args, **kwargs):
                     country_soup = BeautifulSoup(country_page.content, "html.parser")
                     description = country_soup.find("div", {"class": "field--name-field-paragraphs"}).find_all("p")
                     description = "\n".join([para.text for para in description])
-                except Exception as err:
+                except Exception:
                     pass
                 # Add all information to the country list
                 country_list.append({"Country": country_name, "ID": country_id, "URL": country_url, "Description": description})
diff --git a/api/management/commands/ingest_gdacs.py b/api/management/commands/ingest_gdacs.py
index c2a3591468..c356d1cfcd 100644
--- a/api/management/commands/ingest_gdacs.py
+++ b/api/management/commands/ingest_gdacs.py
@@ -1,5 +1,3 @@
-import datetime as dt
-
 import requests
 import xmltodict
 from dateutil.parser import parse
diff --git a/api/management/commands/ingest_icrc.py b/api/management/commands/ingest_icrc.py
index 96561ad1d2..f6e65d90c2 100644
--- a/api/management/commands/ingest_icrc.py
+++ b/api/management/commands/ingest_icrc.py
@@ -1,11 +1,5 @@
-import datetime as dt
-import json
-
-import pandas as pd
 import requests
-import xmltodict
 from bs4 import BeautifulSoup
-from dateutil.parser import parse
 from django.core.management.base import BaseCommand
 
 from api.logger import logger
@@ -19,7 +13,7 @@ def handle(self, *args, **kwargs):
         logger.info("Strating ICRC data ingest")
         response = requests.get(url="https://www.icrc.org/en/where-we-work", headers={"User-Agent": ""})
         if response.status_code != 200:
-            text_to_log = "Error querying ICRC feed at " + url
+            text_to_log = "Error querying ICRC feed at https://www.icrc.org/en/where-we-work"
             logger.error(text_to_log)
             logger.error(response.content)
             body = {
@@ -51,7 +45,7 @@ def handle(self, *args, **kwargs):
                         country_page.raise_for_status()
                         country_soup = BeautifulSoup(country_page.content, "html.parser")
                         description = country_soup.find("div", {"class": "block-introduction"}).find_all()[2].text.strip()
-                    except Exception as err:
+                    except Exception:
                         pass
                 # Append all the information to the list
                 country_list.append(
diff --git a/api/management/commands/ingest_ns_capacity.py b/api/management/commands/ingest_ns_capacity.py
index aaaca8379e..69b7d80d42 100644
--- a/api/management/commands/ingest_ns_capacity.py
+++ b/api/management/commands/ingest_ns_capacity.py
@@ -1,10 +1,6 @@
-import json
-
 import requests
-import xmltodict
 from django.conf import settings
 from django.core.management.base import BaseCommand
-from requests.auth import HTTPBasicAuth
 
 from api.logger import logger
 from api.models import Country, CountryCapacityStrengthening, CronJob, CronJobStatus
@@ -20,7 +16,7 @@ def handle(self, *args, **kwargs):
         OCAC_DATA_API = f"https://data-api.ifrc.org/api/ocacpublic?apiKey={settings.FDRS_APIKEY}"
         resp_ocac = requests.get(OCAC_DATA_API)
         if resp_ocac.status_code != 200:
-            text_to_log = "Error querying OCAC at " + url
+            text_to_log = "Error querying OCAC at " + OCAC_DATA_API
             logger.error(text_to_log)
             logger.error(resp_ocac.content)
             body = {
@@ -32,7 +28,6 @@ def handle(self, *args, **kwargs):
             raise Exception("Error querying OCAC_DATA_API")
 
         resp_ocac_data = resp_ocac.json()
-        final_output = []
         ocaa_count = 0
         for item in resp_ocac_data:
             ocaa_count += 1
diff --git a/api/management/commands/ingest_ns_contact.py b/api/management/commands/ingest_ns_contact.py
index 8b22668b32..1d01dd759f 100644
--- a/api/management/commands/ingest_ns_contact.py
+++ b/api/management/commands/ingest_ns_contact.py
@@ -38,13 +38,13 @@ def handle(self, *args, **kwargs):
         added = 0
         dict_data = xmltodict.parse(response.content)
         for data in dict_data["ArrayOfNationalSocietiesMain"]["NationalSocietiesMain"]:
-            address_1 = data["ADD_address1"] if type(data["ADD_address1"]) == str else None
-            address_2 = data["ADD_address2"] if type(data["ADD_address2"]) == str else None
-            city_code = data["ADD_city_code"] if type(data["ADD_city_code"]) == str else None
-            phone = data["ADD_phone"] if type(data["ADD_phone"]) == str else None
-            website = data["ADD_webSite"] if type(data["ADD_webSite"]) == str else None
-            emails = data["ADD_email"] if type(data["ADD_email"]) == str and data["ADD_email"] != None else None
-            founded_date = data["ADD_orgCreation"] if type(data["ADD_orgCreation"]) == str else None
+            address_1 = data["ADD_address1"] if isinstance(data["ADD_address1"], str) else None
+            address_2 = data["ADD_address2"] if isinstance(data["ADD_address2"], str) else None
+            city_code = data["ADD_city_code"] if isinstance(data["ADD_city_code"], str) else None
+            phone = data["ADD_phone"] if isinstance(data["ADD_phone"], str) else None
+            website = data["ADD_webSite"] if isinstance(data["ADD_webSite"], str) else None
+            emails = data["ADD_email"] if (isinstance(data["ADD_email"], str) and data["ADD_email"] is not None) else None
+            founded_date = data["ADD_orgCreation"] if isinstance(data["ADD_orgCreation"], str) else None
             iso = data["ADD_country_code"]
             # # get the country and try to update the data for those country
             country = Country.objects.filter(iso=iso.upper()).first()
diff --git a/api/management/commands/ingest_ns_directory.py b/api/management/commands/ingest_ns_directory.py
index c5d404f729..f42421a11d 100644
--- a/api/management/commands/ingest_ns_directory.py
+++ b/api/management/commands/ingest_ns_directory.py
@@ -1,5 +1,3 @@
-import json
-
 import requests
 import xmltodict
 from django.conf import settings
@@ -37,7 +35,7 @@ def handle(self, *args, **kwargs):
         added = 0
         dict_data = xmltodict.parse(response.content)
         for data in dict_data["ArrayOfNationalSocietiesContacts"]["NationalSocietiesContacts"]:
-            country_name = data["CON_country"] if type(data["CON_country"]) == str else None
+            country_name = data["CON_country"] if isinstance(data["CON_country"], str) else None
             if country_name is not None:
                 country = Country.objects.filter(name__icontains=country_name).first()
                 if country:
@@ -45,11 +43,13 @@ def handle(self, *args, **kwargs):
                     data = {
                         "first_name": (
                             data["CON_firstName"]
-                            if type(data["CON_firstName"]) == str and data["CON_firstName"] != None
+                            if isinstance(data["CON_firstName"], str) and data["CON_firstName"] is not None
                             else None
                         ),
                         "last_name": (
-                            data["CON_lastName"] if type(data["CON_lastName"]) == str and data["CON_lastName"] != None else None
+                            data["CON_lastName"]
+                            if isinstance(data["CON_lastName"], str) and data["CON_lastName"] is not None
+                            else None
                         ),
                         "position": data["CON_title"],
                         "country": country,
diff --git a/api/management/commands/ingest_ns_document.py b/api/management/commands/ingest_ns_document.py
index 7a525cd8a6..0864b02b7c 100644
--- a/api/management/commands/ingest_ns_document.py
+++ b/api/management/commands/ingest_ns_document.py
@@ -7,13 +7,7 @@
 from django.core.management.base import BaseCommand
 
 from api.logger import logger
-from api.models import (
-    Country,
-    CountryDirectory,
-    CountryKeyDocument,
-    CronJob,
-    CronJobStatus,
-)
+from api.models import Country, CountryKeyDocument, CronJob, CronJobStatus
 
 
 class Command(BaseCommand):
diff --git a/api/management/commands/ingest_ns_initiatives.py b/api/management/commands/ingest_ns_initiatives.py
index d86212a75f..d759702e5c 100644
--- a/api/management/commands/ingest_ns_initiatives.py
+++ b/api/management/commands/ingest_ns_initiatives.py
@@ -1,5 +1,3 @@
-import json
-
 import numpy as np
 import pandas as pd
 import requests
diff --git a/api/management/commands/ingest_who.py b/api/management/commands/ingest_who.py
index c90e2a581b..bdc0704c87 100644
--- a/api/management/commands/ingest_who.py
+++ b/api/management/commands/ingest_who.py
@@ -1,13 +1,10 @@
-import datetime as dt
-
 import requests
 import xmltodict
 from dateutil.parser import parse
 from django.core.management.base import BaseCommand
 
-from api.event_sources import SOURCES
 from api.logger import logger
-from api.models import Country, CronJob, CronJobStatus, Event, Region
+from api.models import Country, CronJob, CronJobStatus, Event
 
 
 class Command(BaseCommand):
@@ -18,7 +15,6 @@ def handle(self, *args, **options):
 
         logger.info("Querying WHO RSS feed for new emergency data")
         # get latest
-        nspace = "{https://www.who.int}"
         ur2 = []
         ur2.append("https://www.who.int/feeds/entity/csr/don/en/rss.xml")
         ur2.append("https://www.who.int/feeds/entity/hac/en/rss.xml")
@@ -185,5 +181,5 @@ def handle(self, *args, **options):
 # delete from api_event_regions where event_id in (select id from api_event where auto_generated_source like 'www.who.int%');
 # delete from api_event where auto_generated_source like 'www.who.int%';
 # --
-# select * from api_event_countries a join api_country b on (a.country_id=b.id) where event_id in (select id from api_event where auto_generated_source like 'www.who.int%');
-# select name from api_event a left join api_event_countries b on (a.id=b.event_id) where b.event_id is null and auto_generated_source like 'www.who.int%';  -- what country is not found
+# select * from api_event_countries a join api_country b on (a.country_id=b.id) where event_id in (select id from api_event where auto_generated_source like 'www.who.int%');  # noqa: E501
+# select name from api_event a left join api_event_countries b on (a.id=b.event_id) where b.event_id is null and auto_generated_source like 'www.who.int%';  -- what country is not found  # noqa: E501
diff --git a/api/management/commands/revoke_staff_status.py b/api/management/commands/revoke_staff_status.py
index b2ebb0533d..5c965ca4d4 100644
--- a/api/management/commands/revoke_staff_status.py
+++ b/api/management/commands/revoke_staff_status.py
@@ -1,4 +1,3 @@
-import requests
 from django.contrib.auth.models import Group, User
 from django.core.management.base import BaseCommand
 from sentry_sdk.crons import monitor
diff --git a/api/management/commands/scrape_pdfs.py b/api/management/commands/scrape_pdfs.py
index 21da3b850b..8696e646e5 100644
--- a/api/management/commands/scrape_pdfs.py
+++ b/api/management/commands/scrape_pdfs.py
@@ -530,7 +530,7 @@ def clean_data_and_save(self, scraped_data):
                     raw_disaster_risk_reduction_people_reached=data["sector"]
                     .get(_s.disaster_Risk_reduction, {})
                     .get(_sfd.people_reached),
-                    # raw_disaster_risk_reduction_people_targeted=data['sector'].get(_s.disaster_Risk_reduction, {}).get(_sfd.people_targeted),
+                    # raw_disaster_risk_reduction_people_targeted=data['sector'].get(_s.disaster_Risk_reduction, {}).get(_sfd.people_targeted),  # noqa: E501
                     raw_disaster_risk_reduction_requirements=data["sector"]
                     .get(_s.disaster_Risk_reduction, {})
                     .get(_sfd.requirements),
@@ -546,7 +546,7 @@ def clean_data_and_save(self, scraped_data):
                     raw_livelihoods_and_basic_needs_people_reached=data["sector"]
                     .get(_s.livelihoods_and_basic_needs, {})
                     .get(_sfd.people_reached),
-                    # raw_livelihoods_and_basic_needs_people_targeted=data['sector'].get(_s.livelihoods_and_basic_needs, {}).get(_sfd.people_targeted),
+                    # raw_livelihoods_and_basic_needs_people_targeted=data['sector'].get(_s.livelihoods_and_basic_needs, {}).get(_sfd.people_targeted),  # noqa: E501
                     raw_livelihoods_and_basic_needs_requirements=data["sector"]
                     .get(_s.livelihoods_and_basic_needs, {})
                     .get(_sfd.requirements),
@@ -564,7 +564,7 @@ def clean_data_and_save(self, scraped_data):
                     raw_protection_gender_and_inclusion_people_reached=data["sector"]
                     .get(_s.protection_gender_inclusion, {})
                     .get(_sfd.people_reached),
-                    # raw_protection_gender_and_inclusion_people_targeted=data['sector'].get(_s.protection_gender_inclusion, {}).get(_sfd.people_targeted),
+                    # raw_protection_gender_and_inclusion_people_targeted=data['sector'].get(_s.protection_gender_inclusion, {}).get(_sfd.people_targeted),  # noqa: E501
                     raw_protection_gender_and_inclusion_requirements=data["sector"]
                     .get(_s.protection_gender_inclusion, {})
                     .get(_sfd.requirements),
@@ -578,7 +578,7 @@ def clean_data_and_save(self, scraped_data):
                     raw_water_sanitation_and_hygiene_people_reached=data["sector"]
                     .get(_s.Water_sanitation_hygiene, {})
                     .get(_sfd.people_reached),
-                    # raw_water_sanitation_and_hygiene_people_targeted=data['sector'].get(_s.Water_sanitation_hygiene, {}).get(_sfd.people_targeted),
+                    # raw_water_sanitation_and_hygiene_people_targeted=data['sector'].get(_s.Water_sanitation_hygiene, {}).get(_sfd.people_targeted),  # noqa: E501
                     raw_water_sanitation_and_hygiene_requirements=data["sector"]
                     .get(_s.Water_sanitation_hygiene, {})
                     .get(_sfd.requirements),
@@ -603,7 +603,7 @@ def clean_data_and_save(self, scraped_data):
                     disaster_risk_reduction_people_reached=cleaners.clean_number(
                         data["sector"].get(_s.disaster_Risk_reduction, {}).get(_sfd.people_reached)
                     ),
-                    # disaster_risk_reduction_people_targeted=cleaners.clean_number(data['sector'].get(_s.disaster_Risk_reduction, {}).get(_sfd.people_targeted)),
+                    # disaster_risk_reduction_people_targeted=cleaners.clean_number(data['sector'].get(_s.disaster_Risk_reduction, {}).get(_sfd.people_targeted)),  # noqa: E501
                     disaster_risk_reduction_requirements=cleaners.clean_number(
                         data["sector"].get(_s.disaster_Risk_reduction, {}).get(_sfd.requirements)
                     ),
@@ -621,14 +621,14 @@ def clean_data_and_save(self, scraped_data):
                     livelihoods_and_basic_needs_people_reached=cleaners.clean_number(
                         data["sector"].get(_s.livelihoods_and_basic_needs, {}).get(_sfd.people_reached)
                     ),
-                    # livelihoods_and_basic_needs_people_targeted=cleaners.clean_number(data['sector'].get(_s.livelihoods_and_basic_needs, {}).get(_sfd.people_targeted)),
+                    # livelihoods_and_basic_needs_people_targeted=cleaners.clean_number(data['sector'].get(_s.livelihoods_and_basic_needs, {}).get(_sfd.people_targeted)),  # noqa: E501
                     livelihoods_and_basic_needs_requirements=cleaners.clean_number(
                         data["sector"].get(_s.livelihoods_and_basic_needs, {}).get(_sfd.requirements)
                     ),
                     migration_female=cleaners.clean_number(data["sector"].get(_s.migration, {}).get(_sfd.female)),
                     migration_male=cleaners.clean_number(data["sector"].get(_s.migration, {}).get(_sfd.male)),
                     migration_people_reached=cleaners.clean_number(data["sector"].get(_s.migration, {}).get(_sfd.people_reached)),
-                    # migration_people_targeted=cleaners.clean_number(data['sector'].get(_s.migration, {}).get(_sfd.people_targeted)),
+                    # migration_people_targeted=cleaners.clean_number(data['sector'].get(_s.migration, {}).get(_sfd.people_targeted)),  # noqa: E501
                     migration_requirements=cleaners.clean_number(data["sector"].get(_s.migration, {}).get(_sfd.requirements)),
                     protection_gender_and_inclusion_female=cleaners.clean_number(
                         data["sector"].get(_s.protection_gender_inclusion, {}).get(_sfd.female)
@@ -639,7 +639,7 @@ def clean_data_and_save(self, scraped_data):
                     protection_gender_and_inclusion_people_reached=cleaners.clean_number(
                         data["sector"].get(_s.protection_gender_inclusion, {}).get(_sfd.people_reached)
                     ),
-                    # protection_gender_and_inclusion_people_targeted=cleaners.clean_number(data['sector'].get(_s.protection_gender_inclusion, {}).get(_sfd.people_targeted)),
+                    # protection_gender_and_inclusion_people_targeted=cleaners.clean_number(data['sector'].get(_s.protection_gender_inclusion, {}).get(_sfd.people_targeted)),  # noqa: E501
                     protection_gender_and_inclusion_requirements=cleaners.clean_number(
                         data["sector"].get(_s.protection_gender_inclusion, {}).get(_sfd.requirements)
                     ),
@@ -657,7 +657,7 @@ def clean_data_and_save(self, scraped_data):
                     water_sanitation_and_hygiene_people_reached=cleaners.clean_number(
                         data["sector"].get(_s.Water_sanitation_hygiene, {}).get(_sfd.people_reached)
                     ),
-                    # water_sanitation_and_hygiene_people_targeted=cleaners.clean_number(data['sector'].get(_s.Water_sanitation_hygiene, {}).get(_sfd.people_targeted)),
+                    # water_sanitation_and_hygiene_people_targeted=cleaners.clean_number(data['sector'].get(_s.Water_sanitation_hygiene, {}).get(_sfd.people_targeted)),  # noqa: E501
                     water_sanitation_and_hygiene_requirements=cleaners.clean_number(
                         data["sector"].get(_s.Water_sanitation_hygiene, {}).get(_sfd.requirements)
                     ),
@@ -747,7 +747,7 @@ def clean_data_and_save(self, scraped_data):
                     current_operation_budget=cleaners.clean_number(data["meta"].get(_mfd.current_operation_budget)),
                     dref_allocated=cleaners.clean_number(data["meta"].get(_mfd.dref_allocated)),
                     glide_number=(
-                        data["meta"].get(_mfd.glide_number)[:18] if data["meta"].get(_mfd.glide_number) != None else None
+                        data["meta"].get(_mfd.glide_number)[:18] if data["meta"].get(_mfd.glide_number) is not None else None
                     ),
                     num_of_people_to_be_assisted=cleaners.clean_number(data["meta"].get(_mfd.num_of_people_to_be_assisted)),
                     disaster_risk_reduction_female=cleaners.clean_number(
@@ -830,7 +830,7 @@ def clean_data_and_save(self, scraped_data):
                 )
                 ea_to_add.append(new_ea)
 
-        ## None of the records get inserted if any of them fails, but it would be faster this way
+        # # None of the records get inserted if any of them fails, but it would be faster this way
         # logger.info('Adding new EPoA records to DB (count: {})'.format(len(epoa_to_add)))
         # EmergencyOperationsDataset.objects.bulk_create(epoa_to_add)
         # logger.info('Adding new OU records to DB (count: {})'.format(len(ou_to_add)))
diff --git a/api/management/commands/set_in_search_init.py b/api/management/commands/set_in_search_init.py
index fa8e0532b3..1ee95bcbdb 100644
--- a/api/management/commands/set_in_search_init.py
+++ b/api/management/commands/set_in_search_init.py
@@ -1,9 +1,7 @@
 from django.core.management.base import BaseCommand
 from django.db import transaction
-from django.db.models import Q
 
 from api.logger import logger
-from api.models import Country
 
 
 class Command(BaseCommand):
@@ -13,12 +11,12 @@ class Command(BaseCommand):
     def handle(self, *args, **options):
         try:
             # Update countries which should appear in search
-            inc_c = Country.objects.filter(independent=True, is_deprecated=False, record_type=1).update(in_search=True)
+            # inc_c = Country.objects.filter(independent=True, is_deprecated=False, record_type=1).update(in_search=True)
             # Update countries which should NOT appear in search
             # independent can be null too thus why negated check
-            exc_c = Country.objects.filter(~Q(independent=True) | Q(is_deprecated=True) | ~Q(record_type=1)).update(
-                in_search=False
-            )
+            # exc_c = Country.objects.filter(~Q(independent=True) | Q(is_deprecated=True) | ~Q(record_type=1)).update(
+            #     in_search=False
+            # )
             logger.info("Successfully set in_search for Countries")
         except Exception as ex:
             logger.error(f"Failed to set in_search for Countries. Error: {str(ex)}")
diff --git a/api/management/commands/set_num_affected.py b/api/management/commands/set_num_affected.py
index 9c1f355f1f..f2267c350e 100644
--- a/api/management/commands/set_num_affected.py
+++ b/api/management/commands/set_num_affected.py
@@ -1,6 +1,6 @@
 from django.core.management.base import BaseCommand
 
-from api.models import Appeal, Event
+from api.models import Event
 
 
 class Command(BaseCommand):
diff --git a/api/management/commands/sync_molnix.py b/api/management/commands/sync_molnix.py
index fd4c4d2ed4..9929263f5a 100644
--- a/api/management/commands/sync_molnix.py
+++ b/api/management/commands/sync_molnix.py
@@ -1,8 +1,6 @@
-import json
-
 from dateutil import parser as date_parser
 from django.conf import settings
-from django.core.management.base import BaseCommand, CommandError
+from django.core.management.base import BaseCommand
 from django.db import transaction
 from sentry_sdk.crons import monitor
 
@@ -185,12 +183,12 @@ def get_go_event(tags):
             event_id = tag["name"].replace("OP-", "").strip()
             try:
                 event_id_int = int(event_id)
-            except:
+            except Exception:
                 logger.warning("%s tag is not a valid OP- tag" % event_id)
                 continue
             try:
                 event = Event.objects.get(id=event_id_int)
-            except:
+            except Exception:
                 logger.warning("Emergency with ID %d not found" % event_id_int)
                 prt("Emergency not found", 0, event_id_int)
                 continue
@@ -202,12 +200,12 @@ def get_go_country(countries, country_id):
     """
     Given a Molnix country ID, returns GO country id
     """
-    if not country_id in countries:
+    if country_id not in countries:
         return None
     iso = countries[country_id]
     try:
         country = Country.objects.get(iso=iso, independent=True)
-    except:
+    except Exception:
         logger.warning("Country with unknown ISO: %s" % iso)
         return None
     return country
@@ -296,7 +294,7 @@ def sync_deployments(molnix_deployments, molnix_api, countries):
         try:
             personnel = Personnel.objects.get(molnix_id=md["id"])
             created = False
-        except:
+        except Exception:
             personnel = Personnel(molnix_id=md["id"])
             created = True
         # print('personnel found', personnel)
@@ -308,7 +306,7 @@ def sync_deployments(molnix_deployments, molnix_api, countries):
             continue
         try:
             deployment = PersonnelDeployment.objects.get(is_molnix=True, event_deployed_to=event)
-        except:
+        except Exception:
             logger.warning("Did not import Deployment with Molnix ID %d. Invalid Event." % md["id"])
             prt("Did not import Deployment. Invalid Event", md["id"])
             continue
@@ -317,7 +315,7 @@ def sync_deployments(molnix_deployments, molnix_api, countries):
         try:
             if md["position_id"]:
                 surge_alert = SurgeAlert.objects.get(molnix_id=md["position_id"])
-        except:
+        except Exception:
             logger.warning("%d deployment did not find SurgeAlert with Molnix position_id %d." % (md["id"], md["position_id"]))
             prt("Deployment did not find SurgeAlert", md["id"], md["position_id"])
             continue
@@ -328,7 +326,7 @@ def sync_deployments(molnix_deployments, molnix_api, countries):
         try:
             if md["person"] and "sex" in md["person"]:
                 gender = md["person"]["sex"]
-        except:
+        except Exception:
             logger.warning("Did not find gender info in %d" % md["id"])
             continue
 
@@ -341,7 +339,7 @@ def sync_deployments(molnix_deployments, molnix_api, countries):
                 and "city" in md["contact"]["addresses"][0]
             ):
                 location = md["contact"]["addresses"][0]["city"]
-        except:
+        except Exception:
             logger.warning("Did not find city info in %d" % md["id"])
             continue
 
@@ -384,7 +382,7 @@ def sync_deployments(molnix_deployments, molnix_api, countries):
                 country_name = NS_MATCHING_OVERRIDES[incoming_name]
                 try:
                     country_from = Country.objects.get(name_en=country_name)
-                except:
+                except Exception:
                     warning = "Mismatch in NS name: %s" % md["incoming"]["name"]
                     logger.warning(warning)
                     warnings.append(warning)
@@ -392,7 +390,7 @@ def sync_deployments(molnix_deployments, molnix_api, countries):
                 try:
                     country_from = Country.objects.get(society_name=incoming_name, independent=True)
                     # maybe somewhen:  .filter(society_name__iexact=incoming_name, independent=True).first()
-                except:
+                except Exception:
                     # FIXME: Catch possibility of .get() returning multiple records
                     # even though that should ideally never happen
                     warning = "NS Name not found for Deployment ID: %d with secondment_incoming %s" % (
diff --git a/api/management/commands/triggers_to_db.py b/api/management/commands/triggers_to_db.py
index 15bce0e611..4e5b362312 100644
--- a/api/management/commands/triggers_to_db.py
+++ b/api/management/commands/triggers_to_db.py
@@ -1,9 +1,6 @@
-from django.conf import settings
 from django.core.management.base import BaseCommand
 from django.db import connection
 
-from api.logger import logger
-
 
 class Command(BaseCommand):
     help = "Set triggers for updating previous_updated fields in api_event, _appeal, _fieldreport tables"
@@ -11,7 +8,7 @@ class Command(BaseCommand):
     @staticmethod
     def apply(*_):
         return
-        ################## only one time change ###################
+        # ################# only one time change ###################
         with connection.cursor() as cursor:
             cursor.execute(
                 """
diff --git a/api/management/commands/update-admin0-with-id.py b/api/management/commands/update-admin0-with-id.py
index 8c1181ac31..152c0f1b31 100644
--- a/api/management/commands/update-admin0-with-id.py
+++ b/api/management/commands/update-admin0-with-id.py
@@ -8,7 +8,7 @@
 
 
 class Command(BaseCommand):
-    help = "update admin0 geometries from a shapefile that has ICRC column headers along with ids from Go database. To run, python manage.py update-admin0-with-id input.shp"
+    help = "update admin0 geometries from a shapefile that has ICRC column headers along with ids from Go database. To run, python manage.py update-admin0-with-id input.shp"  # noqa: E501
 
     missing_args_message = "Filename is missing."
 
@@ -21,7 +21,7 @@ def handle(self, *args, **options):
 
         try:
             data = DataSource(filename)
-        except:
+        except Exception:
             raise CommandError("Could not open file")
 
         for feature in data[0]:
diff --git a/api/management/commands/update-mapbox-tilesets.py b/api/management/commands/update-mapbox-tilesets.py
index 0c9efe4e7b..008a99fef4 100644
--- a/api/management/commands/update-mapbox-tilesets.py
+++ b/api/management/commands/update-mapbox-tilesets.py
@@ -7,7 +7,7 @@
 
 
 class Command(BaseCommand):
-    help = "This command produces a countries.geojson and districts.geojson, and uploads them to Mapbox. It is the source for all GO Maps."
+    help = "This command produces a countries.geojson and districts.geojson, and uploads them to Mapbox. It is the source for all GO Maps."  # noqa: E501
 
     missing_args_message = "Argument missing. Specify --update-countries, --update-districts or --update-all."
 
@@ -58,8 +58,8 @@ def update_countries(self, staging):
             print("Exporting countries...")
 
             try:
-                os.remove(f"/tmp/countries.geojson")
-            except FileNotFoundError as e:
+                os.remove("/tmp/countries.geojson")
+            except FileNotFoundError:
                 pass
 
             subprocess.check_call(
@@ -70,7 +70,7 @@ def update_countries(self, staging):
                     "/tmp/countries.geojson",
                     self.connection_string,
                     "-sql",
-                    "select cd.country_id, cd.geom, c.name, c.name_es, c.name_fr, c.name_ar, c.iso, c.region_id, c.iso3, c.independent, c.is_deprecated, c.disputed, c.fdrs, c.record_type from api_countrygeoms cd, api_country c where cd.country_id = c.id and c.record_type=1",
+                    "select cd.country_id, cd.geom, c.name, c.name_es, c.name_fr, c.name_ar, c.iso, c.region_id, c.iso3, c.independent, c.is_deprecated, c.disputed, c.fdrs, c.record_type from api_countrygeoms cd, api_country c where cd.country_id = c.id and c.record_type=1",  # noqa: E501
                 ]
             )
             print("Countries written to /tmp/countries.geojson")
@@ -82,8 +82,8 @@ def update_countries(self, staging):
             print("Exporting country centroids...")
 
             try:
-                os.remove(f"/tmp/country-centroids.geojson")
-            except FileNotFoundError as e:
+                os.remove("/tmp/country-centroids.geojson")
+            except FileNotFoundError:
                 pass
 
             subprocess.check_call(
@@ -96,7 +96,7 @@ def update_countries(self, staging):
                     "/tmp/country-centroids.geojson",
                     self.connection_string,
                     "-sql",
-                    "select id as country_id, name_en as name, name_ar, name_es, name_fr, independent, disputed, is_deprecated, iso, iso3, record_type, fdrs, region_id, centroid from api_country where centroid is not null",
+                    "select id as country_id, name_en as name, name_ar, name_es, name_fr, independent, disputed, is_deprecated, iso, iso3, record_type, fdrs, region_id, centroid from api_country where centroid is not null",  # noqa: E501
                 ]
             )
         except Exception as e:
@@ -105,7 +105,7 @@ def update_countries(self, staging):
 
         try:
             print("Update Mapbox tileset source for countries...")
-            tileset_source_name = f"go-countries-src-staging" if staging else f"go-countries-src"
+            tileset_source_name = "go-countries-src-staging" if staging else "go-countries-src"
             subprocess.check_call(
                 ["tilesets", "upload-source", "--replace", "go-ifrc", tileset_source_name, "/tmp/countries.geojson"]
             )
@@ -115,7 +115,7 @@ def update_countries(self, staging):
 
         try:
             print("Update Mapbox tileset for countries... and sleeping a minute")
-            tileset_name = f"go-ifrc.go-countries-staging" if staging else f"go-ifrc.go-countries"
+            tileset_name = "go-ifrc.go-countries-staging" if staging else "go-ifrc.go-countries"
             subprocess.check_call(["tilesets", "publish", tileset_name])
             time.sleep(60)
         except Exception as e:
@@ -124,7 +124,7 @@ def update_countries(self, staging):
 
         try:
             print("Update Mapbox tileset source for country centroids...")
-            tileset_source_name = f"go-country-centroids-staging" if staging else f"go-country-centroids"
+            tileset_source_name = "go-country-centroids-staging" if staging else "go-country-centroids"
             subprocess.check_call(
                 [
                     "tilesets",
@@ -135,16 +135,16 @@ def update_countries(self, staging):
                     "/tmp/country-centroids.geojson",
                 ]
             )
-        except Exception as e:
+        except Exception:
             print("Failed to update tileset source for country centroids")
             raise
 
         try:
             print("Update Mapbox tileset for country centroids... and sleeping a minute")
-            tileset_name = f"go-ifrc.go-country-centroids-staging" if staging else f"go-ifrc.go-country-centroids"
+            tileset_name = "go-ifrc.go-country-centroids-staging" if staging else "go-ifrc.go-country-centroids"
             subprocess.check_call(["tilesets", "publish", tileset_name])
             time.sleep(60)
-        except Exception as e:
+        except Exception:
             print("Failed to update tileset for country centroids")
             raise
 
@@ -153,8 +153,8 @@ def update_districts(self, staging):
             print("Exporting districts...")
 
             try:
-                os.remove(f"/tmp/distrcits.geojson")
-            except FileNotFoundError as e:
+                os.remove("/tmp/distrcits.geojson")
+            except FileNotFoundError:
                 pass
 
             # FIXME eventually should be name_en, name_es etc.
@@ -168,7 +168,7 @@ def update_districts(self, staging):
                     "/tmp/districts.geojson",
                     self.connection_string,
                     "-sql",
-                    "select cd.district_id, cd.geom, c.name, c.code, c.country_id, c.is_enclave, c.is_deprecated, country.iso as country_iso, country.iso3 as country_iso3, country.name as country_name, country.name_es as country_name_es, country.name_fr as country_name_fr, country.name_ar as country_name_ar from api_districtgeoms cd, api_district c, api_country country where cd.district_id = c.id and cd.geom is not null and country.id=c.country_id",
+                    "select cd.district_id, cd.geom, c.name, c.code, c.country_id, c.is_enclave, c.is_deprecated, country.iso as country_iso, country.iso3 as country_iso3, country.name as country_name, country.name_es as country_name_es, country.name_fr as country_name_fr, country.name_ar as country_name_ar from api_districtgeoms cd, api_district c, api_country country where cd.district_id = c.id and cd.geom is not null and country.id=c.country_id",  # noqa: E501
                 ]
             )
             print("Districts written to /tmp/districts.geojson")
@@ -180,8 +180,8 @@ def update_districts(self, staging):
             print("Exporting district centroids...")
 
             try:
-                os.remove(f"/tmp/district-centroids.geojson")
-            except FileNotFoundError as e:
+                os.remove("/tmp/district-centroids.geojson")
+            except FileNotFoundError:
                 pass
 
             # FIXME eventually should be name_en, name_es etc.
@@ -195,7 +195,7 @@ def update_districts(self, staging):
                     "/tmp/district-centroids.geojson",
                     self.connection_string,
                     "-sql",
-                    "select d.id as district_id, d.country_id as country_id, d.name, d.code, d.is_deprecated, d.is_enclave, c.iso as country_iso, c.iso3 as country_iso3, c.name as country_name, c.name_es as country_name_es, c.name_fr as country_name_fr, c.name_ar as country_name_ar, d.centroid from api_district d join api_country c on d.country_id=c.id where d.centroid is not null",
+                    "select d.id as district_id, d.country_id as country_id, d.name, d.code, d.is_deprecated, d.is_enclave, c.iso as country_iso, c.iso3 as country_iso3, c.name as country_name, c.name_es as country_name_es, c.name_fr as country_name_fr, c.name_ar as country_name_ar, d.centroid from api_district d join api_country c on d.country_id=c.id where d.centroid is not null",  # noqa: E501
                 ]
             )
         except Exception as e:
@@ -204,7 +204,7 @@ def update_districts(self, staging):
 
         try:
             print("Update Mapbox tileset source for districts...")
-            tileset_source_name = f"go-districts-src-staging" if staging else f"go-districts-src-1"
+            tileset_source_name = "go-districts-src-staging" if staging else "go-districts-src-1"
             subprocess.check_call(
                 ["tilesets", "upload-source", "--replace", "go-ifrc", tileset_source_name, "/tmp/districts.geojson"]
             )
@@ -214,27 +214,27 @@ def update_districts(self, staging):
 
         try:
             print("Update Mapbox tileset for districts... and sleeping a minute")
-            tileset_name = f"go-ifrc.go-districts-staging" if staging else f"go-ifrc.go-districts-1"
+            tileset_name = "go-ifrc.go-districts-staging" if staging else "go-ifrc.go-districts-1"
             subprocess.check_call(["tilesets", "publish", tileset_name])
             time.sleep(60)
-        except Exception as e:
+        except Exception:
             print("Failed to update tileset for districts")
             raise
 
         try:
             print("Update Mapbox tileset source for district centroids...")
-            tileset_source_name = f"go-district-centroids-staging" if staging else f"go-district-centroids"
+            tileset_source_name = "go-district-centroids-staging" if staging else "go-district-centroids"
             subprocess.check_call(
                 ["tilesets", "upload-source", "--replace", "go-ifrc", tileset_source_name, "/tmp/district-centroids.geojson"]
             )
-        except Exception as e:
+        except Exception:
             print("Failed to update tileset source for district centroid")
             raise
         try:
             print("Update Mapbox tileset for district centroids... [no sleep]")
-            tileset_name = f"go-ifrc.go-district-centroids-staging" if staging else f"go-ifrc.go-district-centroids"
+            tileset_name = "go-ifrc.go-district-centroids-staging" if staging else "go-ifrc.go-district-centroids"
             subprocess.check_call(["tilesets", "publish", tileset_name])
-        except Exception as e:
+        except Exception:
             print("Failed to update tileset for distrct centroids")
             raise
 
@@ -334,7 +334,7 @@ def prepare_admin2_geojson(self, iso):
         # query the database and create geojson
         try:
             os.remove(f"/tmp/{iso}.geojson")
-        except FileNotFoundError as e:
+        except FileNotFoundError:
             pass
 
         status = subprocess.run(
@@ -345,7 +345,7 @@ def prepare_admin2_geojson(self, iso):
                 f"/tmp/{iso}.geojson",
                 self.connection_string,
                 "-sql",
-                f"select d.id as admin1_id, d.name as admin1_name, ad.name, ad.id, ad.code, adg.geom from api_country as c, api_district as d, api_admin2 as ad, api_admin2geoms as adg where c.id=d.country_id and c.iso3='{iso}' and ad.admin1_id=d.id and adg.admin2_id = ad.id",
+                f"select d.id as admin1_id, d.name as admin1_name, ad.name, ad.id, ad.code, adg.geom from api_country as c, api_district as d, api_admin2 as ad, api_admin2geoms as adg where c.id=d.country_id and c.iso3='{iso}' and ad.admin1_id=d.id and adg.admin2_id = ad.id",  # noqa: E501
             ]
         )
         if status:
@@ -357,7 +357,7 @@ def prepare_admin2_geojson(self, iso):
                     f"/tmp/{iso}-centroids.geojson",
                     self.connection_string,
                     "-sql",
-                    f"select d.id as admin1_id, d.name as admin1_name, ad.name, ad.id, ad.code, ad.centroid from api_country as c, api_district as d, api_admin2 as ad where c.id=d.country_id and c.iso3='{iso}' and ad.admin1_id=d.id",
+                    f"select d.id as admin1_id, d.name as admin1_name, ad.name, ad.id, ad.code, ad.centroid from api_country as c, api_district as d, api_admin2 as ad where c.id=d.country_id and c.iso3='{iso}' and ad.admin1_id=d.id",  # noqa: E501
                 ]
             )
 
diff --git a/api/management/commands/update-sovereign-and-disputed.py b/api/management/commands/update-sovereign-and-disputed.py
index 5a039e3dd5..a397f78a46 100644
--- a/api/management/commands/update-sovereign-and-disputed.py
+++ b/api/management/commands/update-sovereign-and-disputed.py
@@ -1,14 +1,14 @@
 import csv
 
-from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
-from django.core.management.base import BaseCommand, CommandError
+from django.core.exceptions import ObjectDoesNotExist
+from django.core.management.base import BaseCommand
 from django.db import transaction
 
 from api.models import Country
 
 
 class Command(BaseCommand):
-    help = "update the sovereign country and disputed status for all the countries from a CSV file. To run, python manage.py update-sovereign-and-disputed file.csv"
+    help = "update the sovereign country and disputed status for all the countries from a CSV file. To run, python manage.py update-sovereign-and-disputed file.csv"  # noqa: E501
     missing_args_message = "Filename is missing. A CSV file is required."
 
     def add_arguments(self, parser):
diff --git a/api/molnix_utils.py b/api/molnix_utils.py
index 15110e5e3a..85a53f8082 100644
--- a/api/molnix_utils.py
+++ b/api/molnix_utils.py
@@ -82,7 +82,7 @@ def get_deployments(self):
     def get_position(self, id):
         try:
             return self.call_api(path="positions/%d" % id)
-        except:
+        except Exception:
             return None
 
     def get_countries(self):
diff --git a/api/scrapers/cleaners.py b/api/scrapers/cleaners.py
index 5040e66c85..d25d377be0 100644
--- a/api/scrapers/cleaners.py
+++ b/api/scrapers/cleaners.py
@@ -12,7 +12,7 @@ def clean_number(num_in_str):
         try:
             num = int(re.sub(",", "", match.group()))
             return num
-        except:
+        except Exception:
             return None
     else:
         return None
@@ -41,7 +41,7 @@ def clean_date(date_in_str):
         try:
             date = datetime.strptime(match.group(), "%d %B %Y")
             return date
-        except:
+        except Exception:
             return None
     else:
         return None
diff --git a/api/scrapers/config.py b/api/scrapers/config.py
index 1ccb80f632..9c1215d9d4 100644
--- a/api/scrapers/config.py
+++ b/api/scrapers/config.py
@@ -97,7 +97,7 @@ class MetaFields:
         "Operation manager:",
         "National Society Focal Point:",
         "Amount requested for the appeal:",
-        "IFRC Project Manager \(responsible for implementation, compliances, monitoring and reporting\):",  # noqa
+        r"IFRC Project Manager \(responsible for implementation, compliances, monitoring and reporting\):",  # noqa
         "Period covered by this update:",
     ],
 }
diff --git a/api/serializers.py b/api/serializers.py
index 1f6c66eeb1..371f5370a4 100644
--- a/api/serializers.py
+++ b/api/serializers.py
@@ -38,7 +38,6 @@
     CountryDirectory,
     CountryICRCPresence,
     CountryKeyDocument,
-    CountryKeyFigure,
     CountryLink,
     CountryOfFieldReportToReview,
     CountryOrganizationalCapacity,
@@ -434,19 +433,6 @@ class Meta:
         )
 
 
-class CountryKeyFigureSerializer(ModelSerializer):
-    class Meta:
-        model = CountryKeyFigure
-        fields = (
-            "country",
-            "figure",
-            "deck",
-            "source",
-            "visibility",
-            "id",
-        )
-
-
 class RegionSnippetTableauSerializer(ModelSerializer):
     region = RegionSerializer()
     visibility_display = serializers.CharField(source="get_visibility_display", read_only=True)
diff --git a/api/tasks.py b/api/tasks.py
index 70010362be..99d3fad112 100644
--- a/api/tasks.py
+++ b/api/tasks.py
@@ -66,12 +66,12 @@ def generate_url(url, export_id, user, title):
                 width="32"
             >
             <path
-                d="M50.284 18.637a5.14 5.14 0 00-5.136-5.135 5.139 5.139 0 00-5.135 5.135 5.141 5.141 0 005.135 5.138 5.146 5.146 0 005.136-5.138M28.416 63.032a5.143 5.143 0 00-5.138 5.138 5.14 5.14 0 005.138 5.133 5.14 5.14 0 005.136-5.133 5.143 5.143 0 00-5.136-5.138M45.151 34.057a7.021 7.021 0 00-7.02 7.025 7.02 7.02 0 0014.04 0 7.021 7.021 0 00-7.02-7.025M61.883 63.032a5.143 5.143 0 00-5.135 5.138 5.138 5.138 0 005.135 5.133 5.14 5.14 0 005.136-5.133 5.143 5.143 0 00-5.136-5.138"
+                d="M50.284 18.637a5.14 5.14 0 00-5.136-5.135 5.139 5.139 0 00-5.135 5.135 5.141 5.141 0 005.135 5.138 5.146 5.146 0 005.136-5.138M28.416 63.032a5.143 5.143 0 00-5.138 5.138 5.14 5.14 0 005.138 5.133 5.14 5.14 0 005.136-5.133 5.143 5.143 0 00-5.136-5.138M45.151 34.057a7.021 7.021 0 00-7.02 7.025 7.02 7.02 0 0014.04 0 7.021 7.021 0 00-7.02-7.025M61.883 63.032a5.143 5.143 0 00-5.135 5.138 5.138 5.138 0 005.135 5.133 5.14 5.14 0 005.136-5.133 5.143 5.143 0 00-5.136-5.138"  # noqa: E501
                 class="st1"
                 fill="#F5333F"
             />
             <path
-                d="M61.883 75.769c-4.19 0-7.601-3.41-7.601-7.602 0-2.32 1.05-4.4 2.696-5.794L49.726 50.26a10.205 10.205 0 01-4.575 1.085c-1.648 0-3.196-.397-4.577-1.085l-7.252 12.113a7.571 7.571 0 012.693 5.794c0 4.191-3.408 7.602-7.599 7.602-4.19 0-7.601-3.41-7.601-7.602 0-4.19 3.41-7.601 7.601-7.601.984 0 1.926.196 2.791.54l7.303-12.2a10.236 10.236 0 01-3.63-7.827c0-5.254 3.947-9.58 9.038-10.189v-4.762c-3.606-.59-6.368-3.72-6.368-7.49 0-4.192 3.41-7.602 7.601-7.602s7.599 3.41 7.599 7.601c0 3.77-2.762 6.9-6.366 7.49v4.763c5.093.611 9.038 4.935 9.038 10.19a10.23 10.23 0 01-3.633 7.826l7.306 12.2a7.544 7.544 0 012.791-.54c4.191 0 7.599 3.41 7.599 7.601s-3.41 7.602-7.602 7.602m-49.286-34.65c0-5.485 3.44-10.057 9.194-10.057 4.194 0 7.715 2.236 8.226 6.562h-3.281c-.32-2.524-2.524-3.818-4.945-3.818-4.117 0-5.834 3.627-5.834 7.313s1.717 7.313 5.834 7.313c3.44.056 5.32-2.016 5.376-5.268h-5.106v-2.556h8.173v10.11h-2.151l-.51-2.257c-1.803 2.043-3.44 2.715-5.78 2.715-5.754 0-9.196-4.57-9.196-10.057M44.826 0C20.07 0 0 20.069 0 44.828c0 24.755 20.071 44.826 44.826 44.826 24.757 0 44.826-20.071 44.826-44.826C89.652 20.068 69.582 0 44.826 0"
+                d="M61.883 75.769c-4.19 0-7.601-3.41-7.601-7.602 0-2.32 1.05-4.4 2.696-5.794L49.726 50.26a10.205 10.205 0 01-4.575 1.085c-1.648 0-3.196-.397-4.577-1.085l-7.252 12.113a7.571 7.571 0 012.693 5.794c0 4.191-3.408 7.602-7.599 7.602-4.19 0-7.601-3.41-7.601-7.602 0-4.19 3.41-7.601 7.601-7.601.984 0 1.926.196 2.791.54l7.303-12.2a10.236 10.236 0 01-3.63-7.827c0-5.254 3.947-9.58 9.038-10.189v-4.762c-3.606-.59-6.368-3.72-6.368-7.49 0-4.192 3.41-7.602 7.601-7.602s7.599 3.41 7.599 7.601c0 3.77-2.762 6.9-6.366 7.49v4.763c5.093.611 9.038 4.935 9.038 10.19a10.23 10.23 0 01-3.633 7.826l7.306 12.2a7.544 7.544 0 012.791-.54c4.191 0 7.599 3.41 7.599 7.601s-3.41 7.602-7.602 7.602m-49.286-34.65c0-5.485 3.44-10.057 9.194-10.057 4.194 0 7.715 2.236 8.226 6.562h-3.281c-.32-2.524-2.524-3.818-4.945-3.818-4.117 0-5.834 3.627-5.834 7.313s1.717 7.313 5.834 7.313c3.44.056 5.32-2.016 5.376-5.268h-5.106v-2.556h8.173v10.11h-2.151l-.51-2.257c-1.803 2.043-3.44 2.715-5.78 2.715-5.754 0-9.196-4.57-9.196-10.057M44.826 0C20.07 0 0 20.069 0 44.828c0 24.755 20.071 44.826 44.826 44.826 24.757 0 44.826-20.071 44.826-44.826C89.652 20.068 69.582 0 44.826 0"  # noqa: E501
                 class="st1"
                 fill="#F5333F"
             />
diff --git a/api/test_scrapers.py b/api/test_scrapers.py
index c9971f09d0..4a124317a9 100644
--- a/api/test_scrapers.py
+++ b/api/test_scrapers.py
@@ -1,5 +1,4 @@
 import time
-from datetime import timedelta
 
 from django.contrib.auth.models import User
 from django.test import TestCase
@@ -15,7 +14,7 @@
     SubscriptionType,
 )
 
-from .models import Appeal, Event, FieldReport
+from .models import Appeal, FieldReport
 
 
 def get_user():
@@ -196,7 +195,7 @@ def setUp(self):
         country1 = Country.objects.create(name="1", region=region)
         country2 = Country.objects.create(name="2", region=region)
         appeal1 = Appeal.objects.create(aid="test1", name="appeal", atype=2, code="1", country=country1)
-        appeal2 = Appeal.objects.create(aid="test2", name="appeal", atype=2, code="2", country=country2)
+        Appeal.objects.create(aid="test2", name="appeal", atype=2, code="2", country=country2)
         time.sleep(1)
         appeal1.name = "something new"
         appeal1.save()
diff --git a/api/test_views.py b/api/test_views.py
index 44b639a00a..9d0a2227d7 100644
--- a/api/test_views.py
+++ b/api/test_views.py
@@ -333,12 +333,8 @@ def test_historical_events(self):
         appeal1 = AppealFactory.create(
             event=event1, dtype=dtype1, num_beneficiaries=9000, amount_requested=10000, amount_funded=1899999
         )
-        appeal2 = AppealFactory.create(
-            event=event2, dtype=dtype2, num_beneficiaries=90023, amount_requested=100440, amount_funded=12299999
-        )
-        appeal2 = AppealFactory.create(
-            event=event3, dtype=dtype2, num_beneficiaries=91000, amount_requested=10000888, amount_funded=678888
-        )
+        AppealFactory.create(event=event2, dtype=dtype2, num_beneficiaries=90023, amount_requested=100440, amount_funded=12299999)
+        AppealFactory.create(event=event3, dtype=dtype2, num_beneficiaries=91000, amount_requested=10000888, amount_funded=678888)
         response = self.client.get("/api/v2/go-historical/").json()
         self.assertEqual(response["count"], 3)  # should give event that have appeal associated with and num_affected=null
         self.assertEqual(sorted([event1.id, event2.id, event3.id]), sorted([data["id"] for data in response["results"]]))
@@ -362,8 +358,8 @@ def test_admin2_api(self):
         country = models.Country.objects.create(name="Nepal", iso3="NPL", region=region)
         admin1_1 = models.District.objects.create(name="admin1 1", code="NPL01", country=country)
         admin1_2 = models.District.objects.create(name="admin1 2", code="NPL02", country=country)
-        admin2_1 = models.Admin2.objects.create(name="test 1", admin1=admin1_1, code="1")
-        admin2_2 = models.Admin2.objects.create(name="test 2", admin1=admin1_2, code="2")
+        models.Admin2.objects.create(name="test 1", admin1=admin1_1, code="1")
+        models.Admin2.objects.create(name="test 2", admin1=admin1_2, code="2")
 
         # test fetching all admin2-s
         response = self.client.get("/api/v2/admin2/").json()
diff --git a/api/views.py b/api/views.py
index a5d2baac89..6ea078360d 100644
--- a/api/views.py
+++ b/api/views.py
@@ -4,10 +4,9 @@
 from django.conf import settings
 from django.contrib.auth import authenticate
 from django.contrib.auth.models import User
-from django.db import models
-from django.db.models import Avg, Case, Count, F, OuterRef, Q, Subquery, Sum, When
+from django.db.models import Case, Count, F, Q, Sum, When
 from django.db.models.fields import IntegerField
-from django.db.models.functions import Coalesce, TruncMonth, TruncYear
+from django.db.models.functions import TruncMonth, TruncYear
 from django.http import HttpResponse, JsonResponse
 from django.template.loader import render_to_string
 from django.utils import timezone
@@ -28,10 +27,6 @@
     AggregateHeaderFiguresInputSerializer,
     AggregateHeaderFiguresSerializer,
     AreaAggregateSerializer,
-    CountryDisasterTypeCountSerializer,
-    CountryDisasterTypeMonthlySerializer,
-    CountryKeyFigureInputSerializer,
-    CountryKeyFigureSerializer,
     ProjectPrimarySectorsSerializer,
     ProjectSecondarySectorsSerializer,
     SearchInputSerializer,
diff --git a/country_plan/management/commands/ingest_country_plan_file.py b/country_plan/management/commands/ingest_country_plan_file.py
index 51de2371da..a911c505aa 100644
--- a/country_plan/management/commands/ingest_country_plan_file.py
+++ b/country_plan/management/commands/ingest_country_plan_file.py
@@ -1,6 +1,6 @@
 import logging
 from datetime import datetime
-from typing import Optional, Tuple, Union
+from typing import Optional, Tuple
 
 import requests
 from django.conf import settings
diff --git a/databank/management/commands/fdrs_annual_income.py b/databank/management/commands/fdrs_annual_income.py
index f17ed925fa..a41d962cb1 100644
--- a/databank/management/commands/fdrs_annual_income.py
+++ b/databank/management/commands/fdrs_annual_income.py
@@ -15,7 +15,7 @@ class Command(BaseCommand):
     def handle(self, *args, **kwargs):
         for overview in CountryOverview.objects.all():
             country_fdrs_code = overview.country.fdrs
-            fdrs_api = f"https://data-api.ifrc.org/api/data?indicator=KPI_IncomeLC_CHF&KPI_Don_Code={country_fdrs_code}&apiKey={settings.FDRS_APIKEY}"
+            fdrs_api = f"https://data-api.ifrc.org/api/data?indicator=KPI_IncomeLC_CHF&KPI_Don_Code={country_fdrs_code}&apiKey={settings.FDRS_APIKEY}"  # noqa: E501
             fdrs_entities = requests.get(fdrs_api)
             if fdrs_entities.status_code != 200:
                 return
diff --git a/databank/management/commands/ingest_acaps.py b/databank/management/commands/ingest_acaps.py
index 7ca6bfc420..28ab823ef3 100644
--- a/databank/management/commands/ingest_acaps.py
+++ b/databank/management/commands/ingest_acaps.py
@@ -1,15 +1,12 @@
-import datetime as dt
 import time
 
 import pandas as pd
 import requests
-import xmltodict
-from dateutil.parser import parse
 from django.conf import settings
 from django.core.management.base import BaseCommand
 
 from api.logger import logger
-from api.models import Country, CountryType, CronJob, CronJobStatus, DisasterType
+from api.models import CountryType
 from databank.models import AcapsSeasonalCalender, CountryOverview
 
 
diff --git a/databank/management/commands/ingest_climate.py b/databank/management/commands/ingest_climate.py
index 8bd4334193..f90914864f 100644
--- a/databank/management/commands/ingest_climate.py
+++ b/databank/management/commands/ingest_climate.py
@@ -17,7 +17,7 @@ def handle(self, *args, **options):
             country_iso3 = co.country.iso3
             if country_iso3:
                 response = requests.get(
-                    f"https://climateknowledgeportal.worldbank.org/api/v1/cru-x0.5_climatology_tasmin,tas,tasmax,pr_climatology_monthly_1991-2020_mean_historical_cru_ts4.07_mean/{country_iso3}?_format=json"
+                    f"https://climateknowledgeportal.worldbank.org/api/v1/cru-x0.5_climatology_tasmin,tas,tasmax,pr_climatology_monthly_1991-2020_mean_historical_cru_ts4.07_mean/{country_iso3}?_format=json"  # noqa: E501
                 )
                 response.raise_for_status()
             try:
@@ -52,6 +52,6 @@ def handle(self, *args, **options):
                                 "precipitation": v[0],
                             }
                             CountryKeyClimate.objects.create(overview=co, **data)
-            except Exception as ex:
+            except Exception:
                 logger.error("Error in ingesting climate data", exc_info=True)
                 continue
diff --git a/databank/management/commands/ingest_unicef.py b/databank/management/commands/ingest_unicef.py
index e675de6945..786b6f0b77 100644
--- a/databank/management/commands/ingest_unicef.py
+++ b/databank/management/commands/ingest_unicef.py
@@ -13,7 +13,7 @@ class Command(BaseCommand):
 
     def handle(self, *args, **kwargs):
         for overview in CO.objects.all():
-            UNICEF_API = f"https://sdmx.data.unicef.org/ws/public/sdmxapi/rest/data/UNICEF,DM,1.0/{overview.country.iso3}.DM_POP_U18._T._T.?format=sdmx-json"
+            UNICEF_API = f"https://sdmx.data.unicef.org/ws/public/sdmxapi/rest/data/UNICEF,DM,1.0/{overview.country.iso3}.DM_POP_U18._T._T.?format=sdmx-json"  # noqa: E501
             unicef_entities = requests.get(UNICEF_API)
             if unicef_entities.status_code != 200:
                 continue
diff --git a/databank/management/commands/ingest_worldbank.py b/databank/management/commands/ingest_worldbank.py
index b0e5d35276..9a6eef5f2b 100644
--- a/databank/management/commands/ingest_worldbank.py
+++ b/databank/management/commands/ingest_worldbank.py
@@ -8,7 +8,7 @@
 from api.models import Country, CountryType
 from databank.models import CountryOverview as CO
 
-from .sources.utils import catch_error, get_country_by_iso3
+from .sources.utils import get_country_by_iso3
 
 logger = logging.getLogger(__name__)
 
@@ -55,7 +55,7 @@ def handle(self, *args, **kwargs):
                                 "page": page,
                             },
                         )
-                    except requests.exceptions.HTTPError as err:
+                    except requests.exceptions.HTTPError:
                         continue
                     try:
                         data_list = response.json()[1]
diff --git a/databank/management/commands/sources/utils.py b/databank/management/commands/sources/utils.py
index 403f9eb062..c9c82d96a1 100644
--- a/databank/management/commands/sources/utils.py
+++ b/databank/management/commands/sources/utils.py
@@ -19,7 +19,7 @@ def _caller(*args, **kwargs):
             try:
                 with transaction.atomic():
                     return func(*args, **kwargs)
-            except Exception as e:
+            except Exception:
                 # Log error to cronjob
                 CronJob.sync_cron(
                     {
@@ -27,7 +27,7 @@ def _caller(*args, **kwargs):
                         "message": (
                             f"Error querying {source_name}."
                             + (f" For Country: {country}." if country else "")
-                            + f"\n\n"
+                            + "\n\n"
                             + traceback.format_exc()
                         ),
                         "status": CronJobStatus.ERRONEOUS,
diff --git a/databank/management/commands/sources/world_bank.py b/databank/management/commands/sources/world_bank.py
index e8d6d7fcaf..11137df3df 100644
--- a/databank/management/commands/sources/world_bank.py
+++ b/databank/management/commands/sources/world_bank.py
@@ -2,7 +2,6 @@
 import logging
 
 import requests
-from django.conf import settings
 
 from api.models import Country
 from databank.models import CountryOverview as CO
@@ -33,7 +32,6 @@
 def prefetch():
     data = {}
 
-    url = WORLD_BANK_API
     page = 1
     now = datetime.datetime.now()
     daterange = f"{now.year - 1}:{now.year}"
diff --git a/databank/models.py b/databank/models.py
index 15b3460c22..2bcd3e1cfd 100644
--- a/databank/models.py
+++ b/databank/models.py
@@ -467,4 +467,4 @@ class Meta:
         verbose_name_plural = _("Country Climate")
 
     def __str__(self):
-        return f"{self.overview.country.name} - { self.year} - {self.get_month_display()}"
+        return f"{self.overview.country.name} - {self.year} - {self.get_month_display()}"
diff --git a/databank/tests.py b/databank/tests.py
index 7ce503c2dd..a39b155ac3 100644
--- a/databank/tests.py
+++ b/databank/tests.py
@@ -1,3 +1 @@
-from django.test import TestCase
-
 # Create your tests here.
diff --git a/deployments/filters.py b/deployments/filters.py
index 882d653915..0403414ad3 100644
--- a/deployments/filters.py
+++ b/deployments/filters.py
@@ -1,5 +1,3 @@
-from functools import reduce
-
 import django_filters as filters
 from django.contrib.auth.models import User
 from django.db.models import F, Q
diff --git a/dref/views.py b/dref/views.py
index f8e774d785..56bd5888cc 100644
--- a/dref/views.py
+++ b/dref/views.py
@@ -1,11 +1,8 @@
-from itertools import chain
-from operator import attrgetter
-
 import django.utils.timezone as timezone
 from django.contrib.auth.models import Permission
 from django.db import models
 from django.utils.translation import gettext
-from drf_spectacular.utils import extend_schema, extend_schema_view
+from drf_spectacular.utils import extend_schema
 from rest_framework import (
     mixins,
     permissions,
diff --git a/eap/admin.py b/eap/admin.py
index 8c38f3f3da..846f6b4061 100644
--- a/eap/admin.py
+++ b/eap/admin.py
@@ -1,3 +1 @@
-from django.contrib import admin
-
 # Register your models here.
diff --git a/eap/tests.py b/eap/tests.py
index 7ce503c2dd..a39b155ac3 100644
--- a/eap/tests.py
+++ b/eap/tests.py
@@ -1,3 +1 @@
-from django.test import TestCase
-
 # Create your tests here.
diff --git a/eap/views.py b/eap/views.py
index 91ea44a218..60f00ef0ef 100644
--- a/eap/views.py
+++ b/eap/views.py
@@ -1,3 +1 @@
-from django.shortcuts import render
-
 # Create your views here.
diff --git a/flash_update/utils.py b/flash_update/utils.py
index 381e8ece3f..07468b7eaa 100644
--- a/flash_update/utils.py
+++ b/flash_update/utils.py
@@ -18,7 +18,7 @@ def render_to_pdf(template_src, context_dict={}):
         if not pdf.err:
             file = {"filename": "flash_update.pdf", "file": result.getvalue()}
             return file
-    except Exception as e:
+    except Exception:
         logger.error("Error in rendering html to pdf", exc_info=True)
         return None
 
diff --git a/lang/serializers.py b/lang/serializers.py
index 904914aafe..5b3bb1e09f 100644
--- a/lang/serializers.py
+++ b/lang/serializers.py
@@ -98,7 +98,7 @@ def _get_language_clear_validated_data(cls, instance, validated_data, included_f
         cleared = False
         for field, current_lang_field in included_fields_lang.items():
             old_value = getattr(instance, current_lang_field) or ""
-            if type(validated_data) == dict:
+            if isinstance(validated_data, dict):
                 new_value = validated_data.get(current_lang_field) or validated_data.get(field) or ""
             else:  # NOTE: Assuming it's model instance
                 new_value = getattr(validated_data, current_lang_field, getattr(validated_data, field, None)) or ""
@@ -108,7 +108,7 @@ def _get_language_clear_validated_data(cls, instance, validated_data, included_f
                 lang_field = build_localized_fieldname(field, lang)
                 if lang_field == current_lang_field:
                     continue
-                if type(validated_data) == dict:
+                if isinstance(validated_data, dict):
                     validated_data[lang_field] = ""
                 else:  # NOTE: Assuming it's model instance
                     setattr(validated_data, lang_field, "")
diff --git a/lang/tasks.py b/lang/tasks.py
index fa6e9abb91..10ff176c52 100644
--- a/lang/tasks.py
+++ b/lang/tasks.py
@@ -137,7 +137,7 @@ def show_characters_counts(cls, only_models: typing.Optional[typing.List[models.
                 total_count += count
                 logger.info(f"\t\t {field} - {count}")
         logger.info(f"Total Count: {total_count}")
-        logger.info(f"Estimated Cost (AWS): {(len(AVAILABLE_LANGUAGES) -1) * total_count * 0.000015}")
+        logger.info(f"Estimated Cost (AWS): {(len(AVAILABLE_LANGUAGES) - 1) * total_count * 0.000015}")
 
     def run(self, batch_size=None, only_models: typing.Optional[typing.List[models.Model]] = None):
         """
diff --git a/local_units/management/commands/import-delegation-offices-csv.py b/local_units/management/commands/import-delegation-offices-csv.py
index a0bf9bacf7..1781224ca4 100644
--- a/local_units/management/commands/import-delegation-offices-csv.py
+++ b/local_units/management/commands/import-delegation-offices-csv.py
@@ -12,7 +12,7 @@
 from ...models import DelegationOffice, DelegationOfficeType
 
 # Don't use the received header's always changing upperlowercase header, use a row like this:
-# name type    city    address postcode latitude    longitude   iso iso3    country ifrc_region_number  ifrc_region_name    society_name    society_url url_ifrc    ns_same_location    multiple_ifrc_offices   office_tier hod_first_name  hod_last_name   hod_mobile_number   hod_email   assistant_name  assistant_email
+# name type    city    address postcode latitude    longitude   iso iso3    country ifrc_region_number  ifrc_region_name    society_name    society_url url_ifrc    ns_same_location    multiple_ifrc_offices   office_tier hod_first_name  hod_last_name   hod_mobile_number   hod_email   assistant_name  assistant_email  # noqa: E501
 
 
 class Command(BaseCommand):
diff --git a/local_units/test_views.py b/local_units/test_views.py
index cc31d1a2fa..35f10b1e86 100644
--- a/local_units/test_views.py
+++ b/local_units/test_views.py
@@ -305,7 +305,7 @@ def test_create_local_unit_health(self):
             "draft": False,
             "validated": True,
             "postcode": "",
-            "address_loc": "Silele Clinic is is in Hosea Inkhundla under the Shiselweni, Sigombeni is in Nkom'iyahlaba Inkhundla under the Manzini region and Mahwalala is in the Mbabane West Inkhundla under the Hhohho region.",
+            "address_loc": "Silele Clinic is is in Hosea Inkhundla under the Shiselweni, Sigombeni is in Nkom'iyahlaba Inkhundla under the Manzini region and Mahwalala is in the Mbabane West Inkhundla under the Hhohho region.",  # noqa: E501
             "address_en": "",
             "city_loc": "",
             "city_en": "",
@@ -326,7 +326,7 @@ def test_create_local_unit_health(self):
                 "focal_point_phone_number": "26876088546",
                 "focal_point_position": "Programmes Manager",
                 "other_facility_type": None,
-                "speciality": "Initiate TB treatment, Cervical Cancer Screening and testing and diagnostic and treatment for people living with HIV and follow up care through the ART programme which the government supports very well",
+                "speciality": "Initiate TB treatment, Cervical Cancer Screening and testing and diagnostic and treatment for people living with HIV and follow up care through the ART programme which the government supports very well",  # noqa: E501
                 "is_teaching_hospital": False,
                 "is_in_patient_capacity": False,
                 "is_isolation_rooms_wards": False,
@@ -348,7 +348,7 @@ def test_create_local_unit_health(self):
                 "midwife": 9,
                 "other_medical_heal": True,
                 "other_profiles": None,
-                "feedback": "first question of initial question did not provide for the option to write the name of the NS. It is written LRC yet it should allow Baphalali Eswatini Red Cross Society (BERCS) to be inscribed in the box.",
+                "feedback": "first question of initial question did not provide for the option to write the name of the NS. It is written LRC yet it should allow Baphalali Eswatini Red Cross Society (BERCS) to be inscribed in the box.",  # noqa: E501
                 "affiliation": affiliation.id,
                 "functionality": functionality.id,
                 "health_facility_type": health_facility_type.id,
diff --git a/main/exception_handler.py b/main/exception_handler.py
index 2ff51a7d80..a351863f4d 100644
--- a/main/exception_handler.py
+++ b/main/exception_handler.py
@@ -25,7 +25,7 @@ def custom_exception_handler(exc, context):
     # For 500 errors, we create new response and add extra attributes to sentry
     if not response:
         # Expected ReadOnlyError
-        if type(exc) == DjangoReadOnlyError:
+        if isinstance(exc, DjangoReadOnlyError):
             response_data = {
                 "errors": {"non_field_errors": ["We are in maintenance mode, come back a bit later – site is in read only mode"]},
             }
diff --git a/main/filters.py b/main/filters.py
index 53827ad6b4..6f0a7bdefe 100644
--- a/main/filters.py
+++ b/main/filters.py
@@ -1,4 +1,4 @@
-from django.db.models import F, OrderBy
+from django.db.models import F
 from django_filters import rest_framework as filters
 from rest_framework.filters import OrderingFilter
 
diff --git a/main/settings.py b/main/settings.py
index 817da7931a..d979be11b3 100644
--- a/main/settings.py
+++ b/main/settings.py
@@ -610,7 +610,7 @@
 
 SPECTACULAR_SETTINGS = {
     "TITLE": "IFRC-GO API",
-    "DESCRIPTION": 'Please see the <a href="https://go-wiki.ifrc.org/en/go-api/api-overview" target="_blank">GO Wiki</a> for an overview of API usage, or the interactive <a href="/api-docs/swagger-ui/" target="_blank">Swagger page</a>.',
+    "DESCRIPTION": 'Please see the <a href="https://go-wiki.ifrc.org/en/go-api/api-overview" target="_blank">GO Wiki</a> for an overview of API usage, or the interactive <a href="/api-docs/swagger-ui/" target="_blank">Swagger page</a>.',  # noqa: E501
     "VERSION": "1.0.0",
     "SERVE_INCLUDE_SCHEMA": False,
     "ENUM_ADD_EXPLICIT_BLANK_NULL_CHOICE": False,
diff --git a/main/validators.py b/main/validators.py
index 3f8b054030..611e2a3b9c 100644
--- a/main/validators.py
+++ b/main/validators.py
@@ -6,7 +6,7 @@
 
 class NumberValidator(object):
     def validate(self, password, user=None):
-        if not re.findall("\d", password):
+        if not re.findall(r"\d", password):
             raise ValidationError(
                 _("The password must contain at least 1 digit, 0-9."),
                 code="password_no_number",
@@ -42,11 +42,11 @@ def get_help_text(self):
 
 class SymbolValidator(object):
     def validate(self, password, user=None):
-        if not re.findall("[()[\]{}|\\`~!@#$%^&*_\-+=;:'\",<>./?]", password):
+        if not re.findall(r"[()[\]{}|\\`~!@#$%^&*_\-+=;:'\",<>./?]", password):
             raise ValidationError(
-                _("The password must contain at least 1 symbol: " + "()[]{}|\`~!@#$%^&*_-+=;:'\",<>./?"),
+                _("The password must contain at least 1 symbol: " + r"()[]{}|\`~!@#$%^&*_-+=;:'\",<>./?"),
                 code="password_no_symbol",
             )
 
     def get_help_text(self):
-        return _("Your password must contain at least 1 symbol: " + "()[]{}|\`~!@#$%^&*_-+=;:'\",<>./?")
+        return _("Your password must contain at least 1 symbol: " + r"()[]{}|\`~!@#$%^&*_-+=;:'\",<>./?")
diff --git a/manage.py b/manage.py
index ad5d3e7ed7..784a7f4aa2 100755
--- a/manage.py
+++ b/manage.py
@@ -11,7 +11,7 @@
         # issue is really that Django is missing to avoid masking other
         # exceptions on Python 2.
         try:
-            import django
+            import django  # noqa: F401
         except ImportError:
             raise ImportError(
                 "Couldn't import Django. Are you sure it's installed and "
diff --git a/per/models.py b/per/models.py
index 48ba5bf35c..bf73e8e71b 100644
--- a/per/models.py
+++ b/per/models.py
@@ -708,7 +708,8 @@ def is_user_admin(user):
         return (
             user is not None
             and not user.is_anonymous
-            and (user.is_superuser or user.groups.filter(name="OpsLearning Admin").exists())
+            and user.is_superuser
+            or user.groups.filter(name="OpsLearning Admin").exists()
         )
 
     def save(self, *args, **kwargs):
diff --git a/registrations/tests.py b/registrations/tests.py
index 7ce503c2dd..a39b155ac3 100644
--- a/registrations/tests.py
+++ b/registrations/tests.py
@@ -1,3 +1 @@
-from django.test import TestCase
-
 # Create your tests here.
diff --git a/utils/test_utils.py b/utils/test_utils.py
index afbbaa3eab..d23cffe433 100644
--- a/utils/test_utils.py
+++ b/utils/test_utils.py
@@ -13,7 +13,7 @@
 from api.factories import disaster_type as dtFactory
 from api.factories import event as eventFactory
 from api.factories import field_report as fieldReportFactory
-from api.models import ERPGUID, Country, DisasterType, Event, FieldReport, Region
+from api.models import ERPGUID
 from main.mock import erp_request_side_effect_mock
 from main.utils import DjangoReversionDataFixHelper
 from per.factories import OverviewFactory as PerOverviewFactory
@@ -29,7 +29,7 @@ def test_not_successful(self, erp_request_side_effect_mock):
         report = fieldReportFactory.FieldReportFactory.create(rid="test", dtype=dtype, event=event)
         event.countries.set([])
         report.countries.set([])
-        result = erp.push_fr_data(report)
+        erp.push_fr_data(report)
         # self.assertEqual(erp_request_side_effect_mock.called, False)  # this should work, but CircleCI calls this mock
 
     @patch("requests.post", side_effect=erp_request_side_effect_mock)
@@ -41,7 +41,7 @@ def test_successful(self, erp_request_side_effect_mock):
         report = fieldReportFactory.FieldReportFactory.create(rid="test", dtype=dtype, event=event)
         report.countries.add(country1)
         report.countries.add(country2)
-        result = erp.push_fr_data(report)
+        erp.push_fr_data(report)
         ERP = ERPGUID.objects.get(api_guid="FindThisGUID")
         self.assertEqual(ERP.api_guid, "FindThisGUID")
         self.assertEqual(ERP.field_report_id, report.id)