summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/__init__.py4
-rw-r--r--ishtar_common/admin.py4
-rw-r--r--ishtar_common/alternative_configs.py2
-rw-r--r--ishtar_common/backend.py2
-rw-r--r--ishtar_common/context_processors.py4
-rw-r--r--ishtar_common/data_importer.py2
-rw-r--r--ishtar_common/forms.py4
-rw-r--r--ishtar_common/forms_common.py2
-rw-r--r--ishtar_common/ishtar_menu.py2
-rw-r--r--ishtar_common/management/commands/export_access_controls.py6
-rw-r--r--ishtar_common/management/commands/import_access_controls.py4
-rw-r--r--ishtar_common/management/commands/import_geofla_csv.py4
-rw-r--r--ishtar_common/management/commands/import_insee_comm_csv.py4
-rw-r--r--ishtar_common/management/commands/ishtar_excute_admin_tasks.py2
-rw-r--r--ishtar_common/management/commands/ishtar_import.py2
-rw-r--r--ishtar_common/management/commands/media_find_missing_files.py4
-rw-r--r--ishtar_common/management/commands/media_simplify_filenames.py4
-rw-r--r--ishtar_common/management/commands/migrate_find_container_v4_2.py2
-rw-r--r--ishtar_common/management/commands/migrate_relations_cache_tables.py4
-rw-r--r--ishtar_common/management/commands/migrate_srid.py4
-rw-r--r--ishtar_common/management/commands/migrate_to_geo_v4.py2
-rw-r--r--ishtar_common/management/commands/process_generate_merge_candidates.py4
-rw-r--r--ishtar_common/management/commands/process_pending_update.py4
-rw-r--r--ishtar_common/management/commands/update_towns.py2
-rw-r--r--ishtar_common/menu_base.py2
-rw-r--r--ishtar_common/menus.py2
-rw-r--r--ishtar_common/model_managers.py2
-rw-r--r--ishtar_common/models.py4
-rw-r--r--ishtar_common/models_imports.py2
-rw-r--r--ishtar_common/tasks.py4
-rw-r--r--ishtar_common/templatetags/date_formating.py2
-rw-r--r--ishtar_common/templatetags/from_dict.py2
-rw-r--r--ishtar_common/templatetags/inline_formset.py2
-rw-r--r--ishtar_common/templatetags/range.py2
-rw-r--r--ishtar_common/templatetags/replace_underscore.py2
-rw-r--r--ishtar_common/templatetags/table_form.py2
-rw-r--r--ishtar_common/templatetags/units.py2
-rw-r--r--ishtar_common/tests.py2
-rw-r--r--ishtar_common/urls.py4
-rw-r--r--ishtar_common/urls_converters.py2
-rw-r--r--ishtar_common/utils.py2
-rw-r--r--ishtar_common/views.py4
-rw-r--r--ishtar_common/views_item.py17
-rw-r--r--ishtar_common/widgets.py6
-rw-r--r--ishtar_common/wizards.py4
45 files changed, 82 insertions, 67 deletions
diff --git a/ishtar_common/__init__.py b/ishtar_common/__init__.py
index 9df6f44a8..fd8fb9357 100644
--- a/ishtar_common/__init__.py
+++ b/ishtar_common/__init__.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2014-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2014-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
from django.utils.translation import ugettext_lazy as _
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index a2dfc63aa..556e7572d 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/alternative_configs.py b/ishtar_common/alternative_configs.py
index ece6a632e..c5ff3959a 100644
--- a/ishtar_common/alternative_configs.py
+++ b/ishtar_common/alternative_configs.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
diff --git a/ishtar_common/backend.py b/ishtar_common/backend.py
index c69a92d10..bb6097754 100644
--- a/ishtar_common/backend.py
+++ b/ishtar_common/backend.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/context_processors.py b/ishtar_common/context_processors.py
index 59d517192..63c9630cf 100644
--- a/ishtar_common/context_processors.py
+++ b/ishtar_common/context_processors.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 0c58e04f7..04782a56e 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2013-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2013-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index f0e900208..b88241b9b 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 1858c7246..96848a6ae 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/ishtar_menu.py b/ishtar_common/ishtar_menu.py
index a58fa1790..8eb9c5932 100644
--- a/ishtar_common/ishtar_menu.py
+++ b/ishtar_common/ishtar_menu.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/export_access_controls.py b/ishtar_common/management/commands/export_access_controls.py
index 87b4819b9..58e0f6bb4 100644
--- a/ishtar_common/management/commands/export_access_controls.py
+++ b/ishtar_common/management/commands/export_access_controls.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2017-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -86,4 +86,4 @@ class Command(BaseCommand):
)
data = json.dumps(result)
- sys.stdout.write(data) \ No newline at end of file
+ sys.stdout.write(data)
diff --git a/ishtar_common/management/commands/import_access_controls.py b/ishtar_common/management/commands/import_access_controls.py
index c13f41731..e86701270 100644
--- a/ishtar_common/management/commands/import_access_controls.py
+++ b/ishtar_common/management/commands/import_access_controls.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2017-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/import_geofla_csv.py b/ishtar_common/management/commands/import_geofla_csv.py
index c808c0dae..69a1cad0b 100644
--- a/ishtar_common/management/commands/import_geofla_csv.py
+++ b/ishtar_common/management/commands/import_geofla_csv.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2017-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/import_insee_comm_csv.py b/ishtar_common/management/commands/import_insee_comm_csv.py
index c6fec3e96..2e990c7ce 100644
--- a/ishtar_common/management/commands/import_insee_comm_csv.py
+++ b/ishtar_common/management/commands/import_insee_comm_csv.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2017-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/ishtar_excute_admin_tasks.py b/ishtar_common/management/commands/ishtar_excute_admin_tasks.py
index 3fe66ad3b..989180bd5 100644
--- a/ishtar_common/management/commands/ishtar_excute_admin_tasks.py
+++ b/ishtar_common/management/commands/ishtar_excute_admin_tasks.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django.core.management.base import BaseCommand, CommandError
diff --git a/ishtar_common/management/commands/ishtar_import.py b/ishtar_common/management/commands/ishtar_import.py
index 030c5fab8..70134b981 100644
--- a/ishtar_common/management/commands/ishtar_import.py
+++ b/ishtar_common/management/commands/ishtar_import.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django.conf import settings
diff --git a/ishtar_common/management/commands/media_find_missing_files.py b/ishtar_common/management/commands/media_find_missing_files.py
index a907a6660..6f9645d62 100644
--- a/ishtar_common/management/commands/media_find_missing_files.py
+++ b/ishtar_common/management/commands/media_find_missing_files.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2019 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2019-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/media_simplify_filenames.py b/ishtar_common/management/commands/media_simplify_filenames.py
index 2295431cd..4ad06da0a 100644
--- a/ishtar_common/management/commands/media_simplify_filenames.py
+++ b/ishtar_common/management/commands/media_simplify_filenames.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2019 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2019-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/migrate_find_container_v4_2.py b/ishtar_common/management/commands/migrate_find_container_v4_2.py
index ec0d8489e..ac167bc6a 100644
--- a/ishtar_common/management/commands/migrate_find_container_v4_2.py
+++ b/ishtar_common/management/commands/migrate_find_container_v4_2.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import csv
diff --git a/ishtar_common/management/commands/migrate_relations_cache_tables.py b/ishtar_common/management/commands/migrate_relations_cache_tables.py
index 3e2dfaef5..21b5413fa 100644
--- a/ishtar_common/management/commands/migrate_relations_cache_tables.py
+++ b/ishtar_common/management/commands/migrate_relations_cache_tables.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2021 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2021-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/migrate_srid.py b/ishtar_common/management/commands/migrate_srid.py
index 19de96cb8..906ecbb4b 100644
--- a/ishtar_common/management/commands/migrate_srid.py
+++ b/ishtar_common/management/commands/migrate_srid.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2022 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2022-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/migrate_to_geo_v4.py b/ishtar_common/management/commands/migrate_to_geo_v4.py
index 77fcd2727..343fc85f3 100644
--- a/ishtar_common/management/commands/migrate_to_geo_v4.py
+++ b/ishtar_common/management/commands/migrate_to_geo_v4.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import csv
diff --git a/ishtar_common/management/commands/process_generate_merge_candidates.py b/ishtar_common/management/commands/process_generate_merge_candidates.py
index 106ce8e13..83ae48d8c 100644
--- a/ishtar_common/management/commands/process_generate_merge_candidates.py
+++ b/ishtar_common/management/commands/process_generate_merge_candidates.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2014 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2014-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/process_pending_update.py b/ishtar_common/management/commands/process_pending_update.py
index 6feff38c3..ea539b1f4 100644
--- a/ishtar_common/management/commands/process_pending_update.py
+++ b/ishtar_common/management/commands/process_pending_update.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2013-2018 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2013-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/management/commands/update_towns.py b/ishtar_common/management/commands/update_towns.py
index fa201b677..996580e56 100644
--- a/ishtar_common/management/commands/update_towns.py
+++ b/ishtar_common/management/commands/update_towns.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import csv
diff --git a/ishtar_common/menu_base.py b/ishtar_common/menu_base.py
index bb0b88c02..d24334562 100644
--- a/ishtar_common/menu_base.py
+++ b/ishtar_common/menu_base.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2012-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2012-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/menus.py b/ishtar_common/menus.py
index c455fa73a..7705912a2 100644
--- a/ishtar_common/menus.py
+++ b/ishtar_common/menus.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/model_managers.py b/ishtar_common/model_managers.py
index a0bf86040..0dd109bf0 100644
--- a/ishtar_common/model_managers.py
+++ b/ishtar_common/model_managers.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 102e01f0a..4fb7711d3 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index 5bd230d6b..66ff15e6d 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2017-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/tasks.py b/ishtar_common/tasks.py
index fe6b7045a..ba5a346e1 100644
--- a/ishtar_common/tasks.py
+++ b/ishtar_common/tasks.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2013-2019 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2013-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/templatetags/date_formating.py b/ishtar_common/templatetags/date_formating.py
index fce714495..8d81fc578 100644
--- a/ishtar_common/templatetags/date_formating.py
+++ b/ishtar_common/templatetags/date_formating.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from datetime import datetime
diff --git a/ishtar_common/templatetags/from_dict.py b/ishtar_common/templatetags/from_dict.py
index f9b5bdb99..20ca016e5 100644
--- a/ishtar_common/templatetags/from_dict.py
+++ b/ishtar_common/templatetags/from_dict.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django.template import Library
diff --git a/ishtar_common/templatetags/inline_formset.py b/ishtar_common/templatetags/inline_formset.py
index 2d225e448..ea186baf1 100644
--- a/ishtar_common/templatetags/inline_formset.py
+++ b/ishtar_common/templatetags/inline_formset.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django import template
diff --git a/ishtar_common/templatetags/range.py b/ishtar_common/templatetags/range.py
index 9f808c296..33297ab53 100644
--- a/ishtar_common/templatetags/range.py
+++ b/ishtar_common/templatetags/range.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django.template import Library
diff --git a/ishtar_common/templatetags/replace_underscore.py b/ishtar_common/templatetags/replace_underscore.py
index d49fcf4fb..5c930cabd 100644
--- a/ishtar_common/templatetags/replace_underscore.py
+++ b/ishtar_common/templatetags/replace_underscore.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django.template import Library
diff --git a/ishtar_common/templatetags/table_form.py b/ishtar_common/templatetags/table_form.py
index 819d99c50..01bb5679c 100644
--- a/ishtar_common/templatetags/table_form.py
+++ b/ishtar_common/templatetags/table_form.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django.template import Library
diff --git a/ishtar_common/templatetags/units.py b/ishtar_common/templatetags/units.py
index aefea763e..46a977087 100644
--- a/ishtar_common/templatetags/units.py
+++ b/ishtar_common/templatetags/units.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from django.template import Library
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index daa814a94..0341d932a 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2015-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2015-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py
index f3e22ac5d..ca5311864 100644
--- a/ishtar_common/urls.py
+++ b/ishtar_common/urls.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/urls_converters.py b/ishtar_common/urls_converters.py
index b5185fd1f..3fe593692 100644
--- a/ishtar_common/urls_converters.py
+++ b/ishtar_common/urls_converters.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2024 Étienne Loks <etienne.loks_AT_iggdrasilDOTnet>
+# Copyright (C) 2024-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index eb51b6ef4..1f0b099e7 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2013-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2013-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 8d0b70b2f..ba9ccb316 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 5d2c92899..a9294cec4 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -1,5 +1,22 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
+# Copyright (C) 2018-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# See the file COPYING for details.
+
from collections import OrderedDict
from copy import copy, deepcopy
diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py
index 992ae533d..414cd7eab 100644
--- a/ishtar_common/widgets.py
+++ b/ishtar_common/widgets.py
@@ -1,8 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
-# Copyright (C) 2007 skam <massimo dot scamarcia at gmail.com>
-# (http://djangosnippets.org/snippets/233/)
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index f7305a573..25ec00733 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -1,6 +1,6 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
-# Copyright (C) 2010-2017 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2010-2025 Étienne Loks <etienne.loks at iggdrasil dot net>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as