From e64614274c59d58d14e0d2c2946cc1fc7c35ddd5 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Tue, 8 Feb 2022 18:58:59 +0100 Subject: [PATCH] Reformatted code with Black. --- README.md | 55 +-- admin_interface/__init__.py | 2 +- admin_interface/admin.py | 281 ++++++++------ admin_interface/apps.py | 9 +- admin_interface/cache.py | 8 +- admin_interface/compat.py | 24 +- admin_interface/migrations/0001_initial.py | 297 ++++++++------- .../migrations/0002_add_related_modal.py | 59 +-- .../migrations/0003_add_logo_color.py | 22 +- .../migrations/0004_rename_title_color.py | 8 +- .../0005_add_recent_actions_visible.py | 10 +- .../migrations/0006_bytes_to_str.py | 287 ++++++++------- .../migrations/0007_add_favicon.py | 13 +- ...e_related_modal_background_opacity_type.py | 29 +- .../migrations/0009_add_enviroment.py | 28 +- .../migrations/0010_add_localization.py | 64 ++-- .../0011_add_environment_options.py | 50 ++- .../migrations/0012_update_verbose_names.py | 24 +- .../0013_add_related_modal_close_button.py | 10 +- .../migrations/0014_name_unique.py | 12 +- .../0015_add_language_chooser_active.py | 10 +- .../0016_add_language_chooser_display.py | 16 +- .../0017_change_list_filter_dropdown.py | 10 +- .../0018_theme_list_filter_sticky.py | 10 +- .../migrations/0019_add_form_sticky.py | 18 +- .../migrations/0020_module_selected_colors.py | 27 +- .../0021_file_extension_validator.py | 36 +- .../0022_add_logo_max_width_and_height.py | 18 +- .../migrations/0023_theme_foldable_apps.py | 8 +- .../migrations/0024_remove_theme_css.py | 6 +- admin_interface/models.py | 348 ++++++++++-------- admin_interface/settings.py | 23 +- .../templatetags/admin_interface_tags.py | 29 +- admin_interface/version.py | 2 +- runtests.py | 8 +- tests/settings.py | 119 +++--- tests/test_fixtures.py | 41 +-- tests/test_models.py | 33 +- tests/test_settings.py | 67 ++-- tests/test_templatetags.py | 100 +++-- tests/urls.py | 5 +- tests/urls_without_i18n_patterns.py | 3 +- 42 files changed, 1207 insertions(+), 1022 deletions(-) diff --git a/README.md b/README.md index cf11c39..24f5d00 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ [![](https://img.shields.io/codecov/c/gh/fabiocaccamo/django-admin-interface?logo=codecov)](https://codecov.io/gh/fabiocaccamo/django-admin-interface) [![](https://img.shields.io/codacy/grade/21cb657283c04e70b56fb935277a1ad1?logo=codacy)](https://www.codacy.com/app/fabiocaccamo/django-admin-interface) [![](https://img.shields.io/codeclimate/maintainability/fabiocaccamo/django-admin-interface?logo=code-climate)](https://codeclimate.com/github/fabiocaccamo/django-admin-interface/) +[![](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) # django-admin-interface django-admin-interface is a modern **responsive flat admin interface customizable by the admin itself**. @@ -46,27 +47,27 @@ django-admin-interface is a modern **responsive flat admin interface customizabl ```python INSTALLED_APPS = ( #... - 'admin_interface', - 'flat_responsive', # only if django version < 2.0 - 'flat', # only if django version < 1.9 - 'colorfield', + "admin_interface", + "flat_responsive", # only if django version < 2.0 + "flat", # only if django version < 1.9 + "colorfield", #... - 'django.contrib.admin', + "django.contrib.admin", #... ) # only if django version >= 3.0 -X_FRAME_OPTIONS = 'SAMEORIGIN' -SILENCED_SYSTEM_CHECKS = ['security.W019'] +X_FRAME_OPTIONS = "SAMEORIGIN" +SILENCED_SYSTEM_CHECKS = ["security.W019"] ``` -- Run ``python manage.py migrate`` -- Run ``python manage.py collectstatic`` +- Run `python manage.py migrate` +- Run `python manage.py collectstatic` - Restart your application server #### Upgrade - Run `pip install django-admin-interface --upgrade` -- Run ``python manage.py migrate`` *(add* ``--fake-initial`` *if you are upgrading from 0.1.0 version)* -- Run ``python manage.py collectstatic --clear`` +- Run `python manage.py migrate` *(add* `--fake-initial` *if you are upgrading from 0.1.0 version)* +- Run `python manage.py collectstatic --clear` - Restart your application server --- @@ -75,26 +76,26 @@ SILENCED_SYSTEM_CHECKS = ['security.W019'] This package ships with optional themes as fixtures, they can be installed using the [loaddata admin command](https://docs.djangoproject.com/en/1.11/ref/django-admin/#django-admin-loaddata). Optional themes are activated on installation. ##### [Django](https://www.djangoproject.com/) theme (default): -Run ``python manage.py loaddata admin_interface_theme_django.json`` +Run `python manage.py loaddata admin_interface_theme_django.json` ##### [Bootstrap](http://getbootstrap.com/) theme: -Run ``python manage.py loaddata admin_interface_theme_bootstrap.json`` +Run `python manage.py loaddata admin_interface_theme_bootstrap.json` ##### [Foundation](http://foundation.zurb.com/) theme: -Run ``python manage.py loaddata admin_interface_theme_foundation.json`` +Run `python manage.py loaddata admin_interface_theme_foundation.json` ##### [U.S. Web Design Standards](https://standards.usa.gov/) theme: -Run ``python manage.py loaddata admin_interface_theme_uswds.json`` +Run `python manage.py loaddata admin_interface_theme_uswds.json` ### Add more themes You can add a theme you've created through the admin to this repository by [sending us a PR](http://makeapullrequest.com/). Here are the steps to follow to add: 1. Export your exact theme as fixture using the `dumpdata` admin command: -``python manage.py dumpdata admin_interface.Theme --indent 4 -o admin_interface_theme_{{name}}.json --pks=N`` +`python manage.py dumpdata admin_interface.Theme --indent 4 -o admin_interface_theme_{{name}}.json --pks=N` 2. Copy the generated json file into the fixtures folder *(making sure its name starts with* `admin_interface_theme_` *to avoid clashes with fixtures that might be provided by other third party apps)*. -3. Remove the `"pk"` from the fixture and make sure the `active` field is set to `true` *(in this way a theme is automatically activated when installed)*. +3. Remove the `pk` from the fixture and make sure the `active` field is set to `true` *(in this way a theme is automatically activated when installed)*. 4. Edit the section above to document your theme. @@ -155,17 +156,17 @@ You can use [django-apptemplates](https://github.com/bittner/django-apptemplates You must configure multilanguage `settings` and `urls` correctly: ```python LANGUAGES = ( - ('en', _('English')), - ('it', _('Italiano')), - ('fr', _('Française')), - # more than one language is expected here + ("en", _("English")), + ("it", _("Italiano")), + ("fr", _("Française")), + # more than one language is expected here ) -LANGUAGE_CODE = 'en' +LANGUAGE_CODE = "en" USE_I18N = True MIDDLEWARE = [ - # ... - 'django.middleware.locale.LocaleMiddleware', - # ... + # ... + "django.middleware.locale.LocaleMiddleware", + # ... ] ``` @@ -177,9 +178,9 @@ from django.urls import include, path # ... urlpatterns = [ - path('i18n/', include('django.conf.urls.i18n')), + path("i18n/", include("django.conf.urls.i18n")), ] -urlpatterns += i18n_patterns(path('admin/', admin.site.urls)) +urlpatterns += i18n_patterns(path("admin/", admin.site.urls)) ``` --- diff --git a/admin_interface/__init__.py b/admin_interface/__init__.py index 1e8abb7..dcf03df 100644 --- a/admin_interface/__init__.py +++ b/admin_interface/__init__.py @@ -1,4 +1,4 @@ import django if django.VERSION < (3, 2): - default_app_config = 'admin_interface.apps.AdminInterfaceConfig' + default_app_config = "admin_interface.apps.AdminInterfaceConfig" diff --git a/admin_interface/admin.py b/admin_interface/admin.py index e60811f..5238bad 100644 --- a/admin_interface/admin.py +++ b/admin_interface/admin.py @@ -8,132 +8,169 @@ from django.contrib import admin class ThemeAdmin(admin.ModelAdmin): - list_display = ('name', 'active', ) - list_editable = ('active', ) + list_display = ( + "name", + "active", + ) + list_editable = ("active",) list_per_page = 100 show_full_result_count = False fieldsets = ( - (None, { - 'classes': ('wide', ), - 'fields': ('name', 'active', ) - }), - (_('Environment'), { - 'classes': ('wide', ), - 'fields': ( - 'env_name', - 'env_color', - 'env_visible_in_header', - 'env_visible_in_favicon', - ) - }), - (_('Language chooser'), { - 'classes': ('wide', ), - 'fields': ( - 'language_chooser_active', - 'language_chooser_display', - ) - }), - (_('Logo'), { - 'classes': ('wide', ), - 'fields': ( - 'logo', - 'logo_max_width', - 'logo_max_height', - 'logo_color', - 'logo_visible', - ) - }), - (_('Favicon'), { - 'classes': ('wide', ), - 'fields': ('favicon', ) - }), - (_('Title'), { - 'classes': ('wide', ), - 'fields': ( - 'title', - 'title_color', - 'title_visible', - ) - }), - (_('Header'), { - 'classes': ('wide', ), - 'fields': ( - 'css_header_background_color', - 'css_header_text_color', - 'css_header_link_color', - 'css_header_link_hover_color', - ) - }), - (_('Breadcrumbs / Module headers'), { - 'classes': ('wide', ), - 'fields': ( - 'css_module_background_color', - 'css_module_background_selected_color', - 'css_module_text_color', - 'css_module_link_color', - 'css_module_link_selected_color', - 'css_module_link_hover_color', - 'css_module_rounded_corners', - ) - }), - (_('Generic Links'), { - 'classes': ('wide', ), - 'fields': ( - 'css_generic_link_color', - 'css_generic_link_hover_color', - ) - }), - (_('Save Buttons'), { - 'classes': ('wide', ), - 'fields': ( - 'css_save_button_background_color', - 'css_save_button_background_hover_color', - 'css_save_button_text_color', - ) - }), - (_('Delete Buttons'), { - 'classes': ('wide', ), - 'fields': ( - 'css_delete_button_background_color', - 'css_delete_button_background_hover_color', - 'css_delete_button_text_color', - ) - }), - (_('Navigation Bar'), { - 'classes': ('wide', ), - 'fields': ( - 'foldable_apps', - ) - }), - (_('Related Modal'), { - 'classes': ('wide', ), - 'fields': ( - 'related_modal_active', - 'related_modal_background_color', - 'related_modal_background_opacity', - 'related_modal_rounded_corners', - 'related_modal_close_button_visible', - ) - }), - (_('Form Controls'), { - 'classes': ('wide', ), - 'fields': ( - 'form_submit_sticky', - 'form_pagination_sticky', - ) - }), - (_('List Filter'), { - 'classes': ('wide', ), - 'fields': ( - 'list_filter_dropdown', - 'list_filter_sticky', - ) - }), - (_('Recent Actions'), { - 'classes': ('wide', ), - 'fields': ('recent_actions_visible', ) - }), + ( + None, + { + "classes": ("wide",), + "fields": ( + "name", + "active", + ), + }, + ), + ( + _("Environment"), + { + "classes": ("wide",), + "fields": ( + "env_name", + "env_color", + "env_visible_in_header", + "env_visible_in_favicon", + ), + }, + ), + ( + _("Language chooser"), + { + "classes": ("wide",), + "fields": ( + "language_chooser_active", + "language_chooser_display", + ), + }, + ), + ( + _("Logo"), + { + "classes": ("wide",), + "fields": ( + "logo", + "logo_max_width", + "logo_max_height", + "logo_color", + "logo_visible", + ), + }, + ), + (_("Favicon"), {"classes": ("wide",), "fields": ("favicon",)}), + ( + _("Title"), + { + "classes": ("wide",), + "fields": ( + "title", + "title_color", + "title_visible", + ), + }, + ), + ( + _("Header"), + { + "classes": ("wide",), + "fields": ( + "css_header_background_color", + "css_header_text_color", + "css_header_link_color", + "css_header_link_hover_color", + ), + }, + ), + ( + _("Breadcrumbs / Module headers"), + { + "classes": ("wide",), + "fields": ( + "css_module_background_color", + "css_module_background_selected_color", + "css_module_text_color", + "css_module_link_color", + "css_module_link_selected_color", + "css_module_link_hover_color", + "css_module_rounded_corners", + ), + }, + ), + ( + _("Generic Links"), + { + "classes": ("wide",), + "fields": ( + "css_generic_link_color", + "css_generic_link_hover_color", + ), + }, + ), + ( + _("Save Buttons"), + { + "classes": ("wide",), + "fields": ( + "css_save_button_background_color", + "css_save_button_background_hover_color", + "css_save_button_text_color", + ), + }, + ), + ( + _("Delete Buttons"), + { + "classes": ("wide",), + "fields": ( + "css_delete_button_background_color", + "css_delete_button_background_hover_color", + "css_delete_button_text_color", + ), + }, + ), + (_("Navigation Bar"), {"classes": ("wide",), "fields": ("foldable_apps",)}), + ( + _("Related Modal"), + { + "classes": ("wide",), + "fields": ( + "related_modal_active", + "related_modal_background_color", + "related_modal_background_opacity", + "related_modal_rounded_corners", + "related_modal_close_button_visible", + ), + }, + ), + ( + _("Form Controls"), + { + "classes": ("wide",), + "fields": ( + "form_submit_sticky", + "form_pagination_sticky", + ), + }, + ), + ( + _("List Filter"), + { + "classes": ("wide",), + "fields": ( + "list_filter_dropdown", + "list_filter_sticky", + ), + }, + ), + ( + _("Recent Actions"), + {"classes": ("wide",), "fields": ("recent_actions_visible",)}, + ), ) save_on_top = True diff --git a/admin_interface/apps.py b/admin_interface/apps.py index d15cb76..ac7eacf 100644 --- a/admin_interface/apps.py +++ b/admin_interface/apps.py @@ -8,9 +8,9 @@ from django.db.models.signals import post_migrate class AdminInterfaceConfig(AppConfig): - name = 'admin_interface' - verbose_name = _('Admin Interface') - default_auto_field = 'django.db.models.AutoField' + name = "admin_interface" + verbose_name = _("Admin Interface") + default_auto_field = "django.db.models.AutoField" def ready(self): @@ -18,5 +18,4 @@ class AdminInterfaceConfig(AppConfig): from admin_interface.models import Theme settings.check_installed_apps() - post_migrate.connect( - Theme.post_migrate_handler, sender=self) + post_migrate.connect(Theme.post_migrate_handler, sender=self) diff --git a/admin_interface/cache.py b/admin_interface/cache.py index db208c1..b256c1a 100644 --- a/admin_interface/cache.py +++ b/admin_interface/cache.py @@ -5,16 +5,16 @@ from django.core.cache import cache, caches def app_cache(): - return caches['admin_interface'] if 'admin_interface' in settings.CACHES else cache + return caches["admin_interface"] if "admin_interface" in settings.CACHES else cache def del_cached_active_theme(): - app_cache().delete('admin_interface_theme') + app_cache().delete("admin_interface_theme") def get_cached_active_theme(): - return app_cache().get('admin_interface_theme', None) + return app_cache().get("admin_interface_theme", None) def set_cached_active_theme(theme): - app_cache().set('admin_interface_theme', theme) + app_cache().set("admin_interface_theme", theme) diff --git a/admin_interface/compat.py b/admin_interface/compat.py index f47359c..fed1d1b 100644 --- a/admin_interface/compat.py +++ b/admin_interface/compat.py @@ -2,17 +2,25 @@ import django +if django.VERSION >= (1, 11): + from django.core.validators import FileExtensionValidator +else: + + def FileExtensionValidator(*args, **kwargs): + def noop(*args, **kwargs): + pass + + return noop + + +if django.VERSION < (1, 10): + from django.core.urlresolvers import NoReverseMatch, reverse +else: + from django.urls import NoReverseMatch, reverse + if django.VERSION < (2, 0): from django.utils.encoding import force_text as force_str from django.utils.translation import ugettext_lazy as gettext_lazy else: from django.utils.encoding import force_str from django.utils.translation import gettext_lazy - -if django.VERSION >= (1, 11): - from django.core.validators import FileExtensionValidator -else: - def FileExtensionValidator(*args, **kwargs): - def noop(*args, **kwargs): - pass - return noop diff --git a/admin_interface/migrations/0001_initial.py b/admin_interface/migrations/0001_initial.py index 8a03bc5..b96b05e 100644 --- a/admin_interface/migrations/0001_initial.py +++ b/admin_interface/migrations/0001_initial.py @@ -9,176 +9,221 @@ import colorfield.fields class Migration(migrations.Migration): - dependencies = [ - ] + dependencies = [] operations = [ migrations.CreateModel( - name='Theme', + name="Theme", fields=[ - ('id', + ( + "id", models.AutoField( - verbose_name='ID', + verbose_name="ID", serialize=False, auto_created=True, - primary_key=True)), - ('name', + primary_key=True, + ), + ), + ("name", models.CharField(default=b"Django", max_length=50)), + ("active", models.BooleanField(default=True)), + ( + "title", models.CharField( - default=b'Django', - max_length=50)), - ('active', - models.BooleanField( - default=True)), - ('title', - models.CharField( - default=b'Django administration', - max_length=50, - blank=True)), - ('title_visible', - models.BooleanField( - default=True, - verbose_name=b'visible')), - ('logo', - models.FileField( - upload_to=b'admin-interface/logo/', - blank=True)), - ('logo_visible', - models.BooleanField( - default=True, - verbose_name=b'visible')), - ('css_header_background_color', + default=b"Django administration", max_length=50, blank=True + ), + ), + ( + "title_visible", + models.BooleanField(default=True, verbose_name=b"visible"), + ), + ( + "logo", + models.FileField(upload_to=b"admin-interface/logo/", blank=True), + ), + ( + "logo_visible", + models.BooleanField(default=True, verbose_name=b"visible"), + ), + ( + "css_header_background_color", colorfield.fields.ColorField( - default=b'#0C4B33', - help_text=b'#0C4B33', + default=b"#0C4B33", + help_text=b"#0C4B33", max_length=10, - verbose_name=b'background color', - blank=True)), - ('css_header_title_color', + verbose_name=b"background color", + blank=True, + ), + ), + ( + "css_header_title_color", colorfield.fields.ColorField( - default=b'#F5DD5D', - help_text=b'#F5DD5D', + default=b"#F5DD5D", + help_text=b"#F5DD5D", max_length=10, - verbose_name=b'title color', - blank=True)), - ('css_header_text_color', + verbose_name=b"title color", + blank=True, + ), + ), + ( + "css_header_text_color", colorfield.fields.ColorField( - default=b'#44B78B', - help_text=b'#44B78B', + default=b"#44B78B", + help_text=b"#44B78B", max_length=10, - verbose_name=b'text color', - blank=True)), - ('css_header_link_color', + verbose_name=b"text color", + blank=True, + ), + ), + ( + "css_header_link_color", colorfield.fields.ColorField( - default=b'#FFFFFF', - help_text=b'#FFFFFF', + default=b"#FFFFFF", + help_text=b"#FFFFFF", max_length=10, - verbose_name=b'link color', - blank=True)), - ('css_header_link_hover_color', + verbose_name=b"link color", + blank=True, + ), + ), + ( + "css_header_link_hover_color", colorfield.fields.ColorField( - default=b'#C9F0DD', - help_text=b'#C9F0DD', + default=b"#C9F0DD", + help_text=b"#C9F0DD", max_length=10, - verbose_name=b'link hover color', - blank=True)), - ('css_module_background_color', + verbose_name=b"link hover color", + blank=True, + ), + ), + ( + "css_module_background_color", colorfield.fields.ColorField( - default=b'#44B78B', - help_text=b'#44B78B', + default=b"#44B78B", + help_text=b"#44B78B", max_length=10, - verbose_name=b'background color', - blank=True)), - ('css_module_text_color', + verbose_name=b"background color", + blank=True, + ), + ), + ( + "css_module_text_color", colorfield.fields.ColorField( - default=b'#FFFFFF', - help_text=b'#FFFFFF', + default=b"#FFFFFF", + help_text=b"#FFFFFF", max_length=10, - verbose_name=b'text color', - blank=True)), - ('css_module_link_color', + verbose_name=b"text color", + blank=True, + ), + ), + ( + "css_module_link_color", colorfield.fields.ColorField( - default=b'#FFFFFF', - help_text=b'#FFFFFF', + default=b"#FFFFFF", + help_text=b"#FFFFFF", max_length=10, - verbose_name=b'link color', - blank=True)), - ('css_module_link_hover_color', + verbose_name=b"link color", + blank=True, + ), + ), + ( + "css_module_link_hover_color", colorfield.fields.ColorField( - default=b'#C9F0DD', - help_text=b'#C9F0DD', + default=b"#C9F0DD", + help_text=b"#C9F0DD", max_length=10, - verbose_name=b'link hover color', - blank=True)), - ('css_module_rounded_corners', - models.BooleanField( - default=True, - verbose_name=b'rounded corners')), - ('css_generic_link_color', + verbose_name=b"link hover color", + blank=True, + ), + ), + ( + "css_module_rounded_corners", + models.BooleanField(default=True, verbose_name=b"rounded corners"), + ), + ( + "css_generic_link_color", colorfield.fields.ColorField( - default=b'#0C3C26', - help_text=b'#0C3C26', + default=b"#0C3C26", + help_text=b"#0C3C26", max_length=10, - verbose_name=b'link color', - blank=True)), - ('css_generic_link_hover_color', + verbose_name=b"link color", + blank=True, + ), + ), + ( + "css_generic_link_hover_color", colorfield.fields.ColorField( - default=b'#156641', - help_text=b'#156641', + default=b"#156641", + help_text=b"#156641", max_length=10, - verbose_name=b'link hover color', - blank=True)), - ('css_save_button_background_color', + verbose_name=b"link hover color", + blank=True, + ), + ), + ( + "css_save_button_background_color", colorfield.fields.ColorField( - default=b'#0C4B33', - help_text=b'#0C4B33', + default=b"#0C4B33", + help_text=b"#0C4B33", max_length=10, - verbose_name=b'background color', - blank=True)), - ('css_save_button_background_hover_color', + verbose_name=b"background color", + blank=True, + ), + ), + ( + "css_save_button_background_hover_color", colorfield.fields.ColorField( - default=b'#0C3C26', - help_text=b'#0C3C26', + default=b"#0C3C26", + help_text=b"#0C3C26", max_length=10, - verbose_name=b'background hover color', - blank=True)), - ('css_save_button_text_color', + verbose_name=b"background hover color", + blank=True, + ), + ), + ( + "css_save_button_text_color", colorfield.fields.ColorField( - default=b'#FFFFFF', - help_text=b'#FFFFFF', + default=b"#FFFFFF", + help_text=b"#FFFFFF", max_length=10, - verbose_name=b'text color', - blank=True)), - ('css_delete_button_background_color', + verbose_name=b"text color", + blank=True, + ), + ), + ( + "css_delete_button_background_color", colorfield.fields.ColorField( - default=b'#BA2121', - help_text=b'#BA2121', + default=b"#BA2121", + help_text=b"#BA2121", max_length=10, - verbose_name=b'background color', - blank=True)), - ('css_delete_button_background_hover_color', + verbose_name=b"background color", + blank=True, + ), + ), + ( + "css_delete_button_background_hover_color", colorfield.fields.ColorField( - default=b'#A41515', - help_text=b'#A41515', + default=b"#A41515", + help_text=b"#A41515", max_length=10, - verbose_name=b'background hover color', - blank=True)), - ('css_delete_button_text_color', + verbose_name=b"background hover color", + blank=True, + ), + ), + ( + "css_delete_button_text_color", colorfield.fields.ColorField( - default=b'#FFFFFF', - help_text=b'#FFFFFF', + default=b"#FFFFFF", + help_text=b"#FFFFFF", max_length=10, - verbose_name=b'text color', - blank=True)), - ('css', - models.TextField( - blank=True)), - ('list_filter_dropdown', - models.BooleanField( - default=False)), + verbose_name=b"text color", + blank=True, + ), + ), + ("css", models.TextField(blank=True)), + ("list_filter_dropdown", models.BooleanField(default=False)), ], options={ - 'verbose_name': 'Theme', - 'verbose_name_plural': 'Themes', + "verbose_name": "Theme", + "verbose_name_plural": "Themes", }, ), ] diff --git a/admin_interface/migrations/0002_add_related_modal.py b/admin_interface/migrations/0002_add_related_modal.py index bc2ac33..8d7c50e 100644 --- a/admin_interface/migrations/0002_add_related_modal.py +++ b/admin_interface/migrations/0002_add_related_modal.py @@ -10,51 +10,54 @@ import colorfield.fields class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0001_initial'), + ("admin_interface", "0001_initial"), ] operations = [ migrations.AlterField( - model_name='theme', - name='list_filter_dropdown', - field=models.BooleanField( - default=False, - verbose_name=b'use dropdown'), + model_name="theme", + name="list_filter_dropdown", + field=models.BooleanField(default=False, verbose_name=b"use dropdown"), ), migrations.AddField( - model_name='theme', - name='related_modal_active', - field=models.BooleanField( - default=True, - verbose_name=b'active'), + model_name="theme", + name="related_modal_active", + field=models.BooleanField(default=True, verbose_name=b"active"), ), migrations.AddField( - model_name='theme', - name='related_modal_background_color', + model_name="theme", + name="related_modal_background_color", field=colorfield.fields.ColorField( blank=True, - default=b'#000000', - help_text=b'#000000', + default=b"#000000", + help_text=b"#000000", max_length=10, - verbose_name=b'background color'), + verbose_name=b"background color", + ), ), migrations.AddField( - model_name='theme', - name='related_modal_background_opacity', + model_name="theme", + name="related_modal_background_opacity", field=models.FloatField( choices=[ - (0.1, b'10%'), (0.2, b'20%'), (0.3, b'30%'), - (0.4, b'40%'), (0.5, b'50%'), (0.6, b'60%'), - (0.7, b'70%'), (0.8, b'80%'), (0.9, b'90%')], + (0.1, b"10%"), + (0.2, b"20%"), + (0.3, b"30%"), + (0.4, b"40%"), + (0.5, b"50%"), + (0.6, b"60%"), + (0.7, b"70%"), + (0.8, b"80%"), + (0.9, b"90%"), + ], default=0.2, - help_text=b'20%', - verbose_name=b'background opacity'), + help_text=b"20%", + verbose_name=b"background opacity", + ), ), migrations.AddField( - model_name='theme', - name='related_modal_rounded_corners', - field=models.BooleanField( - default=True, - verbose_name=b'rounded corners'), + model_name="theme", + name="related_modal_rounded_corners", + field=models.BooleanField(default=True, verbose_name=b"rounded corners"), ), ] diff --git a/admin_interface/migrations/0003_add_logo_color.py b/admin_interface/migrations/0003_add_logo_color.py index 9c8e6ff..9336d38 100644 --- a/admin_interface/migrations/0003_add_logo_color.py +++ b/admin_interface/migrations/0003_add_logo_color.py @@ -10,26 +10,28 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0002_add_related_modal'), + ("admin_interface", "0002_add_related_modal"), ] operations = [ migrations.AddField( - model_name='theme', - name='logo_color', + model_name="theme", + name="logo_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='logo color'), + verbose_name="logo color", + ), ), migrations.AlterField( - model_name='theme', - name='logo', + model_name="theme", + name="logo", field=models.FileField( blank=True, - help_text='(leave blank to use the default Django logo)', - upload_to='admin-interface/logo/'), + help_text="(leave blank to use the default Django logo)", + upload_to="admin-interface/logo/", + ), ), ] diff --git a/admin_interface/migrations/0004_rename_title_color.py b/admin_interface/migrations/0004_rename_title_color.py index 060b09c..3ad1363 100644 --- a/admin_interface/migrations/0004_rename_title_color.py +++ b/admin_interface/migrations/0004_rename_title_color.py @@ -8,13 +8,13 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0003_add_logo_color'), + ("admin_interface", "0003_add_logo_color"), ] operations = [ migrations.RenameField( - model_name='theme', - old_name='css_header_title_color', - new_name='title_color', + model_name="theme", + old_name="css_header_title_color", + new_name="title_color", ), ] diff --git a/admin_interface/migrations/0005_add_recent_actions_visible.py b/admin_interface/migrations/0005_add_recent_actions_visible.py index 7c7a65b..8995675 100644 --- a/admin_interface/migrations/0005_add_recent_actions_visible.py +++ b/admin_interface/migrations/0005_add_recent_actions_visible.py @@ -8,15 +8,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0004_rename_title_color'), + ("admin_interface", "0004_rename_title_color"), ] operations = [ migrations.AddField( - model_name='theme', - name='recent_actions_visible', - field=models.BooleanField( - default=True, - verbose_name='visible'), + model_name="theme", + name="recent_actions_visible", + field=models.BooleanField(default=True, verbose_name="visible"), ), ] diff --git a/admin_interface/migrations/0006_bytes_to_str.py b/admin_interface/migrations/0006_bytes_to_str.py index 288b98d..1829f23 100644 --- a/admin_interface/migrations/0006_bytes_to_str.py +++ b/admin_interface/migrations/0006_bytes_to_str.py @@ -10,257 +10,268 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0005_add_recent_actions_visible'), + ("admin_interface", "0005_add_recent_actions_visible"), ] operations = [ migrations.AlterField( - model_name='theme', - name='css_delete_button_background_color', + model_name="theme", + name="css_delete_button_background_color", field=colorfield.fields.ColorField( blank=True, - default='#BA2121', - help_text='#BA2121', + default="#BA2121", + help_text="#BA2121", max_length=10, - verbose_name='background color'), + verbose_name="background color", + ), ), migrations.AlterField( - model_name='theme', - name='css_delete_button_background_hover_color', + model_name="theme", + name="css_delete_button_background_hover_color", field=colorfield.fields.ColorField( blank=True, - default='#A41515', - help_text='#A41515', + default="#A41515", + help_text="#A41515", max_length=10, - verbose_name='background hover color'), + verbose_name="background hover color", + ), ), migrations.AlterField( - model_name='theme', - name='css_delete_button_text_color', + model_name="theme", + name="css_delete_button_text_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='text color'), + verbose_name="text color", + ), ), migrations.AlterField( - model_name='theme', - name='css_generic_link_color', + model_name="theme", + name="css_generic_link_color", field=colorfield.fields.ColorField( blank=True, - default='#0C3C26', - help_text='#0C3C26', + default="#0C3C26", + help_text="#0C3C26", max_length=10, - verbose_name='link color'), + verbose_name="link color", + ), ), migrations.AlterField( - model_name='theme', - name='css_generic_link_hover_color', + model_name="theme", + name="css_generic_link_hover_color", field=colorfield.fields.ColorField( blank=True, - default='#156641', - help_text='#156641', + default="#156641", + help_text="#156641", max_length=10, - verbose_name='link hover color'), + verbose_name="link hover color", + ), ), migrations.AlterField( - model_name='theme', - name='css_header_background_color', + model_name="theme", + name="css_header_background_color", field=colorfield.fields.ColorField( blank=True, - default='#0C4B33', - help_text='#0C4B33', + default="#0C4B33", + help_text="#0C4B33", max_length=10, - verbose_name='background color'), + verbose_name="background color", + ), ), migrations.AlterField( - model_name='theme', - name='css_header_link_color', + model_name="theme", + name="css_header_link_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='link color'), + verbose_name="link color", + ), ), migrations.AlterField( - model_name='theme', - name='css_header_link_hover_color', + model_name="theme", + name="css_header_link_hover_color", field=colorfield.fields.ColorField( blank=True, - default='#C9F0DD', - help_text='#C9F0DD', + default="#C9F0DD", + help_text="#C9F0DD", max_length=10, - verbose_name='link hover color'), + verbose_name="link hover color", + ), ), migrations.AlterField( - model_name='theme', - name='css_header_text_color', + model_name="theme", + name="css_header_text_color", field=colorfield.fields.ColorField( blank=True, - default='#44B78B', - help_text='#44B78B', + default="#44B78B", + help_text="#44B78B", max_length=10, - verbose_name='text color'), + verbose_name="text color", + ), ), migrations.AlterField( - model_name='theme', - name='css_module_background_color', + model_name="theme", + name="css_module_background_color", field=colorfield.fields.ColorField( blank=True, - default='#44B78B', - help_text='#44B78B', + default="#44B78B", + help_text="#44B78B", max_length=10, - verbose_name='background color'), + verbose_name="background color", + ), ), migrations.AlterField( - model_name='theme', - name='css_module_link_color', + model_name="theme", + name="css_module_link_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='link color'), + verbose_name="link color", + ), ), migrations.AlterField( - model_name='theme', - name='css_module_link_hover_color', + model_name="theme", + name="css_module_link_hover_color", field=colorfield.fields.ColorField( blank=True, - default='#C9F0DD', - help_text='#C9F0DD', + default="#C9F0DD", + help_text="#C9F0DD", max_length=10, - verbose_name='link hover color'), + verbose_name="link hover color", + ), ), migrations.AlterField( - model_name='theme', - name='css_module_rounded_corners', - field=models.BooleanField( - default=True, - verbose_name='rounded corners'), + model_name="theme", + name="css_module_rounded_corners", + field=models.BooleanField(default=True, verbose_name="rounded corners"), ), migrations.AlterField( - model_name='theme', - name='css_module_text_color', + model_name="theme", + name="css_module_text_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='text color'), + verbose_name="text color", + ), ), migrations.AlterField( - model_name='theme', - name='css_save_button_background_color', + model_name="theme", + name="css_save_button_background_color", field=colorfield.fields.ColorField( blank=True, - default='#0C4B33', - help_text='#0C4B33', + default="#0C4B33", + help_text="#0C4B33", max_length=10, - verbose_name='background color'), + verbose_name="background color", + ), ), migrations.AlterField( - model_name='theme', - name='css_save_button_background_hover_color', + model_name="theme", + name="css_save_button_background_hover_color", field=colorfield.fields.ColorField( blank=True, - default='#0C3C26', - help_text='#0C3C26', + default="#0C3C26", + help_text="#0C3C26", max_length=10, - verbose_name='background hover color'), + verbose_name="background hover color", + ), ), migrations.AlterField( - model_name='theme', - name='css_save_button_text_color', + model_name="theme", + name="css_save_button_text_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='text color'), + verbose_name="text color", + ), ), migrations.AlterField( - model_name='theme', - name='list_filter_dropdown', - field=models.BooleanField( - default=False, - verbose_name='use dropdown'), + model_name="theme", + name="list_filter_dropdown", + field=models.BooleanField(default=False, verbose_name="use dropdown"), ), migrations.AlterField( - model_name='theme', - name='logo_visible', - field=models.BooleanField( - default=True, - verbose_name='visible'), + model_name="theme", + name="logo_visible", + field=models.BooleanField(default=True, verbose_name="visible"), ), migrations.AlterField( - model_name='theme', - name='name', - field=models.CharField( - default='Django', - max_length=50), + model_name="theme", + name="name", + field=models.CharField(default="Django", max_length=50), ), migrations.AlterField( - model_name='theme', - name='related_modal_active', - field=models.BooleanField( - default=True, - verbose_name='active'), + model_name="theme", + name="related_modal_active", + field=models.BooleanField(default=True, verbose_name="active"), ), migrations.AlterField( - model_name='theme', - name='related_modal_background_color', + model_name="theme", + name="related_modal_background_color", field=colorfield.fields.ColorField( blank=True, - default='#000000', - help_text='#000000', + default="#000000", + help_text="#000000", max_length=10, - verbose_name='background color'), + verbose_name="background color", + ), ), migrations.AlterField( - model_name='theme', - name='related_modal_background_opacity', + model_name="theme", + name="related_modal_background_opacity", field=models.FloatField( choices=[ - (0.1, '10%'), (0.2, '20%'), (0.3, '30%'), - (0.4, '40%'), (0.5, '50%'), (0.6, '60%'), - (0.7, '70%'), (0.8, '80%'), (0.9, '90%')], + (0.1, "10%"), + (0.2, "20%"), + (0.3, "30%"), + (0.4, "40%"), + (0.5, "50%"), + (0.6, "60%"), + (0.7, "70%"), + (0.8, "80%"), + (0.9, "90%"), + ], default=0.2, - help_text='20%', - verbose_name='background opacity'), + help_text="20%", + verbose_name="background opacity", + ), ), migrations.AlterField( - model_name='theme', - name='related_modal_rounded_corners', - field=models.BooleanField( - default=True, - verbose_name='rounded corners'), + model_name="theme", + name="related_modal_rounded_corners", + field=models.BooleanField(default=True, verbose_name="rounded corners"), ), migrations.AlterField( - model_name='theme', - name='title', + model_name="theme", + name="title", field=models.CharField( - blank=True, - default='Django administration', - max_length=50), + blank=True, default="Django administration", max_length=50 + ), ), migrations.AlterField( - model_name='theme', - name='title_color', + model_name="theme", + name="title_color", field=colorfield.fields.ColorField( blank=True, - default='#F5DD5D', - help_text='#F5DD5D', + default="#F5DD5D", + help_text="#F5DD5D", max_length=10, - verbose_name='title color'), + verbose_name="title color", + ), ), migrations.AlterField( - model_name='theme', - name='title_visible', - field=models.BooleanField( - default=True, - verbose_name='visible'), + model_name="theme", + name="title_visible", + field=models.BooleanField(default=True, verbose_name="visible"), ), ] diff --git a/admin_interface/migrations/0007_add_favicon.py b/admin_interface/migrations/0007_add_favicon.py index d0f5c95..b19c99c 100644 --- a/admin_interface/migrations/0007_add_favicon.py +++ b/admin_interface/migrations/0007_add_favicon.py @@ -8,17 +8,18 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0006_bytes_to_str'), + ("admin_interface", "0006_bytes_to_str"), ] operations = [ migrations.AddField( - model_name='theme', - name='favicon', + model_name="theme", + name="favicon", field=models.FileField( blank=True, - help_text='(.ico|.png|.gif - 16x16|32x32 px)', - upload_to='admin-interface/favicon/', - verbose_name='favicon'), + help_text="(.ico|.png|.gif - 16x16|32x32 px)", + upload_to="admin-interface/favicon/", + verbose_name="favicon", + ), ), ] diff --git a/admin_interface/migrations/0008_change_related_modal_background_opacity_type.py b/admin_interface/migrations/0008_change_related_modal_background_opacity_type.py index 7964f6f..8ab2365 100644 --- a/admin_interface/migrations/0008_change_related_modal_background_opacity_type.py +++ b/admin_interface/migrations/0008_change_related_modal_background_opacity_type.py @@ -8,25 +8,32 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0007_add_favicon'), + ("admin_interface", "0007_add_favicon"), ] operations = [ migrations.RemoveField( - model_name='theme', - name='related_modal_background_opacity' + model_name="theme", name="related_modal_background_opacity" ), migrations.AddField( - model_name='theme', - name='related_modal_background_opacity', + model_name="theme", + name="related_modal_background_opacity", field=models.CharField( choices=[ - ('0.1', '10%'), ('0.2', '20%'), ('0.3', '30%'), - ('0.4', '40%'), ('0.5', '50%'), ('0.6', '60%'), - ('0.7', '70%'), ('0.8', '80%'), ('0.9', '90%')], - default='0.3', - help_text='20%', + ("0.1", "10%"), + ("0.2", "20%"), + ("0.3", "30%"), + ("0.4", "40%"), + ("0.5", "50%"), + ("0.6", "60%"), + ("0.7", "70%"), + ("0.8", "80%"), + ("0.9", "90%"), + ], + default="0.3", + help_text="20%", max_length=5, - verbose_name='background opacity'), + verbose_name="background opacity", + ), ), ] diff --git a/admin_interface/migrations/0009_add_enviroment.py b/admin_interface/migrations/0009_add_enviroment.py index f5d35a5..2ff83c0 100644 --- a/admin_interface/migrations/0009_add_enviroment.py +++ b/admin_interface/migrations/0009_add_enviroment.py @@ -8,28 +8,28 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0008_change_related_modal_background_opacity_type'), + ("admin_interface", "0008_change_related_modal_background_opacity_type"), ] operations = [ migrations.AddField( - model_name='theme', - name='env', + model_name="theme", + name="env", field=models.CharField( choices=[ - ('development', 'Development'), - ('testing', 'Testing'), - ('staging', 'Staging'), - ('production', 'Production')], - default='development', + ("development", "Development"), + ("testing", "Testing"), + ("staging", "Staging"), + ("production", "Production"), + ], + default="development", max_length=50, - verbose_name='enviroment'), + verbose_name="enviroment", + ), ), migrations.AddField( - model_name='theme', - name='env_visible', - field=models.BooleanField( - default=True, - verbose_name='visible'), + model_name="theme", + name="env_visible", + field=models.BooleanField(default=True, verbose_name="visible"), ), ] diff --git a/admin_interface/migrations/0010_add_localization.py b/admin_interface/migrations/0010_add_localization.py index 12e3212..6fd16ae 100644 --- a/admin_interface/migrations/0010_add_localization.py +++ b/admin_interface/migrations/0010_add_localization.py @@ -8,62 +8,60 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0009_add_enviroment'), + ("admin_interface", "0009_add_enviroment"), ] operations = [ migrations.AlterField( - model_name='theme', - name='active', - field=models.BooleanField( - default=True, - verbose_name='active'), + model_name="theme", + name="active", + field=models.BooleanField(default=True, verbose_name="active"), ), migrations.AlterField( - model_name='theme', - name='css', - field=models.TextField( - blank=True, - verbose_name='text color'), + model_name="theme", + name="css", + field=models.TextField(blank=True, verbose_name="text color"), ), migrations.AlterField( - model_name='theme', - name='env', + model_name="theme", + name="env", field=models.CharField( choices=[ - ('development', 'Development'), - ('testing', 'Testing'), - ('staging', 'Staging'), - ('production', 'Production') + ("development", "Development"), + ("testing", "Testing"), + ("staging", "Staging"), + ("production", "Production"), ], - default='development', + default="development", max_length=50, - verbose_name='environment'), + verbose_name="environment", + ), ), migrations.AlterField( - model_name='theme', - name='logo', + model_name="theme", + name="logo", field=models.FileField( blank=True, - help_text='Leave blank to use the default Django logo', - upload_to='admin-interface/logo/', - verbose_name='logo'), + help_text="Leave blank to use the default Django logo", + upload_to="admin-interface/logo/", + verbose_name="logo", + ), ), migrations.AlterField( - model_name='theme', - name='name', + model_name="theme", + name="name", field=models.CharField( - default='Django', - max_length=50, - verbose_name='name'), + default="Django", max_length=50, verbose_name="name" + ), ), migrations.AlterField( - model_name='theme', - name='title', + model_name="theme", + name="title", field=models.CharField( blank=True, - default='Django administration', + default="Django administration", max_length=50, - verbose_name='title'), + verbose_name="title", + ), ), ] diff --git a/admin_interface/migrations/0011_add_environment_options.py b/admin_interface/migrations/0011_add_environment_options.py index d6b4e31..e84e648 100644 --- a/admin_interface/migrations/0011_add_environment_options.py +++ b/admin_interface/migrations/0011_add_environment_options.py @@ -10,50 +10,48 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0010_add_localization'), + ("admin_interface", "0010_add_localization"), ] operations = [ migrations.RenameField( - model_name='theme', - old_name='env', - new_name='env_name', + model_name="theme", + old_name="env", + new_name="env_name", ), migrations.AlterField( - model_name='theme', - name='env_name', - field=models.CharField( - blank=True, - max_length=50, - verbose_name='name'), + model_name="theme", + name="env_name", + field=models.CharField(blank=True, max_length=50, verbose_name="name"), ), migrations.AddField( - model_name='theme', - name='env_color', + model_name="theme", + name="env_color", field=colorfield.fields.ColorField( blank=True, - default='#E74C3C', - help_text='(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: #3498DB)', + default="#E74C3C", + help_text="(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: #3498DB)", max_length=10, - verbose_name='color'), + verbose_name="color", + ), ), migrations.RenameField( - model_name='theme', - old_name='env_visible', - new_name='env_visible_in_header', + model_name="theme", + old_name="env_visible", + new_name="env_visible_in_header", ), migrations.AlterField( - model_name='theme', - name='env_visible_in_header', + model_name="theme", + name="env_visible_in_header", field=models.BooleanField( - default=True, - verbose_name='visible in header (marker and name)'), + default=True, verbose_name="visible in header (marker and name)" + ), ), migrations.AddField( - model_name='theme', - name='env_visible_in_favicon', + model_name="theme", + name="env_visible_in_favicon", field=models.BooleanField( - default=True, - verbose_name='visible in favicon (marker)'), + default=True, verbose_name="visible in favicon (marker)" + ), ), ] diff --git a/admin_interface/migrations/0012_update_verbose_names.py b/admin_interface/migrations/0012_update_verbose_names.py index 4d1a7b9..9b3e6a6 100644 --- a/admin_interface/migrations/0012_update_verbose_names.py +++ b/admin_interface/migrations/0012_update_verbose_names.py @@ -10,28 +10,30 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0011_add_environment_options'), + ("admin_interface", "0011_add_environment_options"), ] operations = [ migrations.AlterField( - model_name='theme', - name='logo_color', + model_name="theme", + name="logo_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='color'), + verbose_name="color", + ), ), migrations.AlterField( - model_name='theme', - name='title_color', + model_name="theme", + name="title_color", field=colorfield.fields.ColorField( blank=True, - default='#F5DD5D', - help_text='#F5DD5D', + default="#F5DD5D", + help_text="#F5DD5D", max_length=10, - verbose_name='color'), + verbose_name="color", + ), ), ] diff --git a/admin_interface/migrations/0013_add_related_modal_close_button.py b/admin_interface/migrations/0013_add_related_modal_close_button.py index f8b1b0a..197021a 100644 --- a/admin_interface/migrations/0013_add_related_modal_close_button.py +++ b/admin_interface/migrations/0013_add_related_modal_close_button.py @@ -8,15 +8,15 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0012_update_verbose_names'), + ("admin_interface", "0012_update_verbose_names"), ] operations = [ migrations.AddField( - model_name='theme', - name='related_modal_close_button_visible', + model_name="theme", + name="related_modal_close_button_visible", field=models.BooleanField( - default=True, - verbose_name='close button visible'), + default=True, verbose_name="close button visible" + ), ), ] diff --git a/admin_interface/migrations/0014_name_unique.py b/admin_interface/migrations/0014_name_unique.py index 213c2fb..7a4ae37 100644 --- a/admin_interface/migrations/0014_name_unique.py +++ b/admin_interface/migrations/0014_name_unique.py @@ -8,17 +8,15 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0013_add_related_modal_close_button'), + ("admin_interface", "0013_add_related_modal_close_button"), ] operations = [ migrations.AlterField( - model_name='theme', - name='name', + model_name="theme", + name="name", field=models.CharField( - default='Django', - max_length=50, - unique=True, - verbose_name='name'), + default="Django", max_length=50, unique=True, verbose_name="name" + ), ), ] diff --git a/admin_interface/migrations/0015_add_language_chooser_active.py b/admin_interface/migrations/0015_add_language_chooser_active.py index 23546a2..4986183 100644 --- a/admin_interface/migrations/0015_add_language_chooser_active.py +++ b/admin_interface/migrations/0015_add_language_chooser_active.py @@ -8,15 +8,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0014_name_unique'), + ("admin_interface", "0014_name_unique"), ] operations = [ migrations.AddField( - model_name='theme', - name='language_chooser_active', - field=models.BooleanField( - default=True, - verbose_name='active'), + model_name="theme", + name="language_chooser_active", + field=models.BooleanField(default=True, verbose_name="active"), ), ] diff --git a/admin_interface/migrations/0016_add_language_chooser_display.py b/admin_interface/migrations/0016_add_language_chooser_display.py index d950108..1094b59 100644 --- a/admin_interface/migrations/0016_add_language_chooser_display.py +++ b/admin_interface/migrations/0016_add_language_chooser_display.py @@ -8,20 +8,18 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0015_add_language_chooser_active'), + ("admin_interface", "0015_add_language_chooser_active"), ] operations = [ migrations.AddField( - model_name='theme', - name='language_chooser_display', + model_name="theme", + name="language_chooser_display", field=models.CharField( - choices=[ - ('code', 'code'), - ('name', 'name') - ], - default='code', + choices=[("code", "code"), ("name", "name")], + default="code", max_length=10, - verbose_name='display'), + verbose_name="display", + ), ), ] diff --git a/admin_interface/migrations/0017_change_list_filter_dropdown.py b/admin_interface/migrations/0017_change_list_filter_dropdown.py index 82556d5..d918ed7 100644 --- a/admin_interface/migrations/0017_change_list_filter_dropdown.py +++ b/admin_interface/migrations/0017_change_list_filter_dropdown.py @@ -8,15 +8,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0016_add_language_chooser_display'), + ("admin_interface", "0016_add_language_chooser_display"), ] operations = [ migrations.AlterField( - model_name='theme', - name='list_filter_dropdown', - field=models.BooleanField( - default=True, - verbose_name='use dropdown'), + model_name="theme", + name="list_filter_dropdown", + field=models.BooleanField(default=True, verbose_name="use dropdown"), ), ] diff --git a/admin_interface/migrations/0018_theme_list_filter_sticky.py b/admin_interface/migrations/0018_theme_list_filter_sticky.py index 7f3c0bb..2787e3c 100644 --- a/admin_interface/migrations/0018_theme_list_filter_sticky.py +++ b/admin_interface/migrations/0018_theme_list_filter_sticky.py @@ -8,15 +8,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0017_change_list_filter_dropdown'), + ("admin_interface", "0017_change_list_filter_dropdown"), ] operations = [ migrations.AddField( - model_name='theme', - name='list_filter_sticky', - field=models.BooleanField( - default=True, - verbose_name='sticky position'), + model_name="theme", + name="list_filter_sticky", + field=models.BooleanField(default=True, verbose_name="sticky position"), ), ] diff --git a/admin_interface/migrations/0019_add_form_sticky.py b/admin_interface/migrations/0019_add_form_sticky.py index 1453a44..5244992 100644 --- a/admin_interface/migrations/0019_add_form_sticky.py +++ b/admin_interface/migrations/0019_add_form_sticky.py @@ -8,22 +8,18 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0018_theme_list_filter_sticky'), + ("admin_interface", "0018_theme_list_filter_sticky"), ] operations = [ migrations.AddField( - model_name='theme', - name='form_pagination_sticky', - field=models.BooleanField( - default=False, - verbose_name='sticky pagination'), + model_name="theme", + name="form_pagination_sticky", + field=models.BooleanField(default=False, verbose_name="sticky pagination"), ), migrations.AddField( - model_name='theme', - name='form_submit_sticky', - field=models.BooleanField( - default=False, - verbose_name='sticky submit'), + model_name="theme", + name="form_submit_sticky", + field=models.BooleanField(default=False, verbose_name="sticky submit"), ), ] diff --git a/admin_interface/migrations/0020_module_selected_colors.py b/admin_interface/migrations/0020_module_selected_colors.py index 4fe8114..436a101 100644 --- a/admin_interface/migrations/0020_module_selected_colors.py +++ b/admin_interface/migrations/0020_module_selected_colors.py @@ -12,35 +12,38 @@ def default_link_selected(apps, schema_editor): Theme = apps.get_model("admin_interface", "Theme") db_alias = schema_editor.connection.alias Theme.objects.using(db_alias).update( - css_module_link_selected_color=F('css_module_link_color')) + css_module_link_selected_color=F("css_module_link_color") + ) class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0019_add_form_sticky'), + ("admin_interface", "0019_add_form_sticky"), ] operations = [ migrations.AddField( - model_name='theme', - name='css_module_background_selected_color', + model_name="theme", + name="css_module_background_selected_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFCC', - help_text='#FFFFCC', + default="#FFFFCC", + help_text="#FFFFCC", max_length=10, - verbose_name='background selected color'), + verbose_name="background selected color", + ), ), migrations.AddField( - model_name='theme', - name='css_module_link_selected_color', + model_name="theme", + name="css_module_link_selected_color", field=colorfield.fields.ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name='link selected color'), + verbose_name="link selected color", + ), ), migrations.RunPython(default_link_selected), ] diff --git a/admin_interface/migrations/0021_file_extension_validator.py b/admin_interface/migrations/0021_file_extension_validator.py index 74a14e2..b9b9214 100644 --- a/admin_interface/migrations/0021_file_extension_validator.py +++ b/admin_interface/migrations/0021_file_extension_validator.py @@ -10,36 +10,38 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0020_module_selected_colors'), + ("admin_interface", "0020_module_selected_colors"), ] operations = [ migrations.AlterField( - model_name='theme', - name='favicon', + model_name="theme", + name="favicon", field=models.FileField( blank=True, - help_text='(.ico|.png|.gif - 16x16|32x32 px)', - upload_to='admin-interface/favicon/', + help_text="(.ico|.png|.gif - 16x16|32x32 px)", + upload_to="admin-interface/favicon/", validators=[ - FileExtensionValidator(allowed_extensions=[ - 'gif', 'ico', 'jpg', 'jpeg', 'png', 'svg' - ]) + FileExtensionValidator( + allowed_extensions=["gif", "ico", "jpg", "jpeg", "png", "svg"] + ) ], - verbose_name='favicon'), + verbose_name="favicon", + ), ), migrations.AlterField( - model_name='theme', - name='logo', + model_name="theme", + name="logo", field=models.FileField( blank=True, - help_text='Leave blank to use the default Django logo', - upload_to='admin-interface/logo/', + help_text="Leave blank to use the default Django logo", + upload_to="admin-interface/logo/", validators=[ - FileExtensionValidator(allowed_extensions=[ - 'gif', 'jpg', 'jpeg', 'png', 'svg' - ]) + FileExtensionValidator( + allowed_extensions=["gif", "jpg", "jpeg", "png", "svg"] + ) ], - verbose_name='logo'), + verbose_name="logo", + ), ), ] diff --git a/admin_interface/migrations/0022_add_logo_max_width_and_height.py b/admin_interface/migrations/0022_add_logo_max_width_and_height.py index 183b855..3e4d6ce 100644 --- a/admin_interface/migrations/0022_add_logo_max_width_and_height.py +++ b/admin_interface/migrations/0022_add_logo_max_width_and_height.py @@ -8,18 +8,22 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0021_file_extension_validator'), + ("admin_interface", "0021_file_extension_validator"), ] operations = [ migrations.AddField( - model_name='theme', - name='logo_max_height', - field=models.PositiveSmallIntegerField(blank=True, default=100, verbose_name='max height'), + model_name="theme", + name="logo_max_height", + field=models.PositiveSmallIntegerField( + blank=True, default=100, verbose_name="max height" + ), ), migrations.AddField( - model_name='theme', - name='logo_max_width', - field=models.PositiveSmallIntegerField(blank=True, default=400, verbose_name='max width'), + model_name="theme", + name="logo_max_width", + field=models.PositiveSmallIntegerField( + blank=True, default=400, verbose_name="max width" + ), ), ] diff --git a/admin_interface/migrations/0023_theme_foldable_apps.py b/admin_interface/migrations/0023_theme_foldable_apps.py index 6a852ff..9770fcc 100644 --- a/admin_interface/migrations/0023_theme_foldable_apps.py +++ b/admin_interface/migrations/0023_theme_foldable_apps.py @@ -8,13 +8,13 @@ from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0022_add_logo_max_width_and_height'), + ("admin_interface", "0022_add_logo_max_width_and_height"), ] operations = [ migrations.AddField( - model_name='theme', - name='foldable_apps', - field=models.BooleanField(default=True, verbose_name='foldable apps'), + model_name="theme", + name="foldable_apps", + field=models.BooleanField(default=True, verbose_name="foldable apps"), ), ] diff --git a/admin_interface/migrations/0024_remove_theme_css.py b/admin_interface/migrations/0024_remove_theme_css.py index f060803..308af27 100644 --- a/admin_interface/migrations/0024_remove_theme_css.py +++ b/admin_interface/migrations/0024_remove_theme_css.py @@ -8,12 +8,12 @@ from django.db import migrations class Migration(migrations.Migration): dependencies = [ - ('admin_interface', '0023_theme_foldable_apps'), + ("admin_interface", "0023_theme_foldable_apps"), ] operations = [ migrations.RemoveField( - model_name='theme', - name='css', + model_name="theme", + name="css", ), ] diff --git a/admin_interface/models.py b/admin_interface/models.py index a5bc60a..49ad035 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -15,7 +15,6 @@ from six import python_2_unicode_compatible @python_2_unicode_compatible class Theme(models.Model): - @staticmethod def post_migrate_handler(**kwargs): del_cached_active_theme() @@ -67,272 +66,323 @@ class Theme(models.Model): return obj name = models.CharField( - unique=True, - max_length=50, - default='Django', - verbose_name=_('name')) - active = models.BooleanField( - default=True, - verbose_name=_('active')) + unique=True, max_length=50, default="Django", verbose_name=_("name") + ) + active = models.BooleanField(default=True, verbose_name=_("active")) title = models.CharField( max_length=50, - default=_('Django administration'), + default=_("Django administration"), blank=True, - verbose_name=_('title')) + verbose_name=_("title"), + ) title_color = ColorField( blank=True, - default='#F5DD5D', - help_text='#F5DD5D', + default="#F5DD5D", + help_text="#F5DD5D", max_length=10, - verbose_name=_('color')) - title_visible = models.BooleanField( - default=True, - verbose_name=_('visible')) + verbose_name=_("color"), + ) + title_visible = models.BooleanField(default=True, verbose_name=_("visible")) logo = models.FileField( - upload_to='admin-interface/logo/', + upload_to="admin-interface/logo/", blank=True, - validators=[FileExtensionValidator( - allowed_extensions=['gif', 'jpg', 'jpeg', 'png', 'svg'])], - help_text=_('Leave blank to use the default Django logo'), - verbose_name=_('logo')) + validators=[ + FileExtensionValidator( + allowed_extensions=["gif", "jpg", "jpeg", "png", "svg"] + ) + ], + help_text=_("Leave blank to use the default Django logo"), + verbose_name=_("logo"), + ) logo_color = ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name=_('color')) + verbose_name=_("color"), + ) logo_max_width = models.PositiveSmallIntegerField( - blank=True, - default=400, - verbose_name=_('max width')) + blank=True, default=400, verbose_name=_("max width") + ) logo_max_height = models.PositiveSmallIntegerField( - blank=True, - default=100, - verbose_name=_('max height')) - logo_visible = models.BooleanField( - default=True, - verbose_name=_('visible')) + blank=True, default=100, verbose_name=_("max height") + ) + logo_visible = models.BooleanField(default=True, verbose_name=_("visible")) favicon = models.FileField( - upload_to='admin-interface/favicon/', + upload_to="admin-interface/favicon/", blank=True, - validators=[FileExtensionValidator( - allowed_extensions=['gif', 'ico', 'jpg', 'jpeg', 'png', 'svg'])], - help_text=_('(.ico|.png|.gif - 16x16|32x32 px)'), - verbose_name=_('favicon')) + validators=[ + FileExtensionValidator( + allowed_extensions=["gif", "ico", "jpg", "jpeg", "png", "svg"] + ) + ], + help_text=_("(.ico|.png|.gif - 16x16|32x32 px)"), + verbose_name=_("favicon"), + ) - env_name = models.CharField( - blank=True, - max_length=50, - verbose_name=_('name')) + env_name = models.CharField(blank=True, max_length=50, verbose_name=_("name")) env_color = ColorField( blank=True, - default='#E74C3C', - help_text=_('(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: #3498DB)'), + default="#E74C3C", + help_text=_( + "(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: #3498DB)" + ), max_length=10, - verbose_name=_('color')) + verbose_name=_("color"), + ) env_visible_in_header = models.BooleanField( - default=True, - verbose_name=_('visible in header (marker and name)')) + default=True, verbose_name=_("visible in header (marker and name)") + ) env_visible_in_favicon = models.BooleanField( - default=True, - verbose_name=_('visible in favicon (marker)')) + default=True, verbose_name=_("visible in favicon (marker)") + ) language_chooser_active = models.BooleanField( - default=True, - verbose_name=_('active')) + default=True, verbose_name=_("active") + ) language_chooser_display_choices = ( - ('code', _('code'), ), - ('name', _('name'), ), + ( + "code", + _("code"), + ), + ( + "name", + _("name"), + ), ) language_chooser_display = models.CharField( max_length=10, choices=language_chooser_display_choices, - default='code', - verbose_name=_('display')) + default="code", + verbose_name=_("display"), + ) css_header_background_color = ColorField( blank=True, - default='#0C4B33', - help_text='#0C4B33', + default="#0C4B33", + help_text="#0C4B33", max_length=10, - verbose_name=_('background color')) + verbose_name=_("background color"), + ) css_header_text_color = ColorField( blank=True, - default='#44B78B', - help_text='#44B78B', + default="#44B78B", + help_text="#44B78B", max_length=10, - verbose_name=_('text color')) + verbose_name=_("text color"), + ) css_header_link_color = ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name=_('link color')) + verbose_name=_("link color"), + ) css_header_link_hover_color = ColorField( blank=True, - default='#C9F0DD', - help_text='#C9F0DD', + default="#C9F0DD", + help_text="#C9F0DD", max_length=10, - verbose_name=_('link hover color')) + verbose_name=_("link hover color"), + ) css_module_background_color = ColorField( blank=True, - default='#44B78B', - help_text='#44B78B', + default="#44B78B", + help_text="#44B78B", max_length=10, - verbose_name=_('background color')) + verbose_name=_("background color"), + ) css_module_background_selected_color = ColorField( blank=True, - default='#FFFFCC', - help_text='#FFFFCC', + default="#FFFFCC", + help_text="#FFFFCC", max_length=10, - verbose_name=_('background selected color')) + verbose_name=_("background selected color"), + ) css_module_text_color = ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name=_('text color')) + verbose_name=_("text color"), + ) css_module_link_color = ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name=_('link color')) + verbose_name=_("link color"), + ) css_module_link_selected_color = ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name=_('link selected color')) + verbose_name=_("link selected color"), + ) css_module_link_hover_color = ColorField( blank=True, - default='#C9F0DD', - help_text='#C9F0DD', + default="#C9F0DD", + help_text="#C9F0DD", max_length=10, - verbose_name=_('link hover color')) + verbose_name=_("link hover color"), + ) css_module_rounded_corners = models.BooleanField( - default=True, - verbose_name=_('rounded corners')) + default=True, verbose_name=_("rounded corners") + ) css_generic_link_color = ColorField( blank=True, - default='#0C3C26', - help_text='#0C3C26', + default="#0C3C26", + help_text="#0C3C26", max_length=10, - verbose_name=_('link color')) + verbose_name=_("link color"), + ) css_generic_link_hover_color = ColorField( blank=True, - default='#156641', - help_text='#156641', + default="#156641", + help_text="#156641", max_length=10, - verbose_name=_('link hover color')) + verbose_name=_("link hover color"), + ) css_save_button_background_color = ColorField( blank=True, - default='#0C4B33', - help_text='#0C4B33', + default="#0C4B33", + help_text="#0C4B33", max_length=10, - verbose_name=_('background color')) + verbose_name=_("background color"), + ) css_save_button_background_hover_color = ColorField( blank=True, - default='#0C3C26', - help_text='#0C3C26', + default="#0C3C26", + help_text="#0C3C26", max_length=10, - verbose_name=_('background hover color')) + verbose_name=_("background hover color"), + ) css_save_button_text_color = ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name=_('text color')) + verbose_name=_("text color"), + ) css_delete_button_background_color = ColorField( blank=True, - default='#BA2121', - help_text='#BA2121', + default="#BA2121", + help_text="#BA2121", max_length=10, - verbose_name=_('background color')) + verbose_name=_("background color"), + ) css_delete_button_background_hover_color = ColorField( blank=True, - default='#A41515', - help_text='#A41515', + default="#A41515", + help_text="#A41515", max_length=10, - verbose_name=_('background hover color')) + verbose_name=_("background hover color"), + ) css_delete_button_text_color = ColorField( blank=True, - default='#FFFFFF', - help_text='#FFFFFF', + default="#FFFFFF", + help_text="#FFFFFF", max_length=10, - verbose_name=_('text color')) + verbose_name=_("text color"), + ) - related_modal_active = models.BooleanField( - default=True, - verbose_name=_('active')) + related_modal_active = models.BooleanField(default=True, verbose_name=_("active")) related_modal_background_color = ColorField( blank=True, - default='#000000', - help_text='#000000', + default="#000000", + help_text="#000000", max_length=10, - verbose_name=_('background color')) + verbose_name=_("background color"), + ) related_modal_background_opacity_choices = ( - ('0.1', '10%', ), - ('0.2', '20%', ), - ('0.3', '30%', ), - ('0.4', '40%', ), - ('0.5', '50%', ), - ('0.6', '60%', ), - ('0.7', '70%', ), - ('0.8', '80%', ), - ('0.9', '90%', ), + ( + "0.1", + "10%", + ), + ( + "0.2", + "20%", + ), + ( + "0.3", + "30%", + ), + ( + "0.4", + "40%", + ), + ( + "0.5", + "50%", + ), + ( + "0.6", + "60%", + ), + ( + "0.7", + "70%", + ), + ( + "0.8", + "80%", + ), + ( + "0.9", + "90%", + ), ) related_modal_background_opacity = models.CharField( max_length=5, choices=related_modal_background_opacity_choices, - default='0.3', - help_text='20%', - verbose_name=_('background opacity')) + default="0.3", + help_text="20%", + verbose_name=_("background opacity"), + ) related_modal_rounded_corners = models.BooleanField( - default=True, - verbose_name=_('rounded corners')) + default=True, verbose_name=_("rounded corners") + ) related_modal_close_button_visible = models.BooleanField( - default=True, - verbose_name=_('close button visible')) + default=True, verbose_name=_("close button visible") + ) list_filter_dropdown = models.BooleanField( - default=True, - verbose_name=_('use dropdown')) + default=True, verbose_name=_("use dropdown") + ) list_filter_sticky = models.BooleanField( - default=True, - verbose_name=_('sticky position')) + default=True, verbose_name=_("sticky position") + ) - foldable_apps = models.BooleanField( - default=True, - verbose_name=_('foldable apps')) + foldable_apps = models.BooleanField(default=True, verbose_name=_("foldable apps")) recent_actions_visible = models.BooleanField( - default=True, - verbose_name=_('visible')) + default=True, verbose_name=_("visible") + ) form_submit_sticky = models.BooleanField( - default=False, - verbose_name=_('sticky submit')) + default=False, verbose_name=_("sticky submit") + ) form_pagination_sticky = models.BooleanField( - default=False, - verbose_name=_('sticky pagination')) + default=False, verbose_name=_("sticky pagination") + ) def set_active(self): self.active = True self.save() class Meta: - app_label = 'admin_interface' + app_label = "admin_interface" - verbose_name = _('Theme') - verbose_name_plural = _('Themes') + verbose_name = _("Theme") + verbose_name_plural = _("Themes") def __str__(self): return force_str(self.name) diff --git a/admin_interface/settings.py b/admin_interface/settings.py index 30ad877..340b809 100644 --- a/admin_interface/settings.py +++ b/admin_interface/settings.py @@ -11,24 +11,23 @@ def check_installed_app(app, max_dj_version=None): if max_dj_version is None: if app not in installed_apps: raise ImproperlyConfigured( - '\'{}\' is required, ' - 'add it to settings.INSTALLED_APPS.'.format( - app)) + "'{}' is required, " "add it to settings.INSTALLED_APPS.".format(app) + ) elif dj_version < max_dj_version: if app not in installed_apps: raise ImproperlyConfigured( - '\'{}\' is required before django {}.{}, ' - 'add it to settings.INSTALLED_APPS.'.format( - app, *max_dj_version)) + "'{}' is required before django {}.{}, " + "add it to settings.INSTALLED_APPS.".format(app, *max_dj_version) + ) else: if app in installed_apps: raise ImproperlyConfigured( - '\'{}\' is no more required since django {}.{}, ' - 'remove it from settings.INSTALLED_APPS.'.format( - app, *max_dj_version)) + "'{}' is no more required since django {}.{}, " + "remove it from settings.INSTALLED_APPS.".format(app, *max_dj_version) + ) def check_installed_apps(): - check_installed_app('colorfield') - check_installed_app('flat', max_dj_version=(1, 9)) - check_installed_app('flat_responsive', max_dj_version=(2, 0)) + check_installed_app("colorfield") + check_installed_app("flat", max_dj_version=(1, 9)) + check_installed_app("flat_responsive", max_dj_version=(2, 0)) diff --git a/admin_interface/templatetags/admin_interface_tags.py b/admin_interface/templatetags/admin_interface_tags.py index 0b77b9e..a198109 100644 --- a/admin_interface/templatetags/admin_interface_tags.py +++ b/admin_interface/templatetags/admin_interface_tags.py @@ -1,15 +1,13 @@ # -*- coding: utf-8 -*- import django -from django import template, VERSION + +from django import template from django.conf import settings -if django.VERSION < (1, 10): - from django.core.urlresolvers import NoReverseMatch, reverse -else: - from django.urls import NoReverseMatch, reverse from django.utils import translation from admin_interface.cache import get_cached_active_theme, set_cached_active_theme +from admin_interface.compat import NoReverseMatch, reverse from admin_interface.models import Theme from admin_interface.version import __version__ @@ -18,7 +16,7 @@ import re register = template.Library() -if VERSION < (1, 9): +if django.VERSION < (1, 9): simple_tag = register.assignment_tag else: simple_tag = register.simple_tag @@ -33,16 +31,16 @@ def get_admin_interface_languages(context): # less than 2 languages return None try: - set_language_url = reverse('set_language') + set_language_url = reverse("set_language") except NoReverseMatch: # ImproperlyConfigured - must include i18n urls: # urlpatterns += [url(r'^i18n/', include('django.conf.urls.i18n')),] return None - request = context.get('request', None) + request = context.get("request", None) if not request: return None full_path = request.get_full_path() - admin_nolang_url = re.sub(r'^\/([\w]{2})([\-\_]{1}[\w]{2,4})?\/', '/', full_path) + admin_nolang_url = re.sub(r"^\/([\w]{2})([\-\_]{1}[\w]{2,4})?\/", "/", full_path) if admin_nolang_url == full_path: # ImproperlyConfigured - must include admin urls using i18n_patterns: # from django.conf.urls.i18n import i18n_patterns @@ -55,12 +53,13 @@ def get_admin_interface_languages(context): lang_code = language[0].lower() lang_name = language[1].title() lang_data = { - 'code': lang_code, - 'name': lang_name, - 'default': lang_code == default_lang_code, - 'active': lang_code == current_lang_code, - 'activation_url': '{}?next=/{}{}'.format( - set_language_url, lang_code, admin_nolang_url) + "code": lang_code, + "name": lang_name, + "default": lang_code == default_lang_code, + "active": lang_code == current_lang_code, + "activation_url": "{}?next=/{}{}".format( + set_language_url, lang_code, admin_nolang_url + ), } langs_data.append(lang_data) return langs_data diff --git a/admin_interface/version.py b/admin_interface/version.py index 344de20..f1d496d 100644 --- a/admin_interface/version.py +++ b/admin_interface/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -__version__ = '0.18.6' +__version__ = "0.18.6" diff --git a/runtests.py b/runtests.py index 49e4c58..7075c55 100755 --- a/runtests.py +++ b/runtests.py @@ -9,13 +9,13 @@ from django.test.utils import get_runner def runtests(): - os.environ['DJANGO_SETTINGS_MODULE'] = 'tests.settings' + os.environ["DJANGO_SETTINGS_MODULE"] = "tests.settings" django.setup() TestRunner = get_runner(settings) test_runner = TestRunner() - failures = test_runner.run_tests(['tests']) + failures = test_runner.run_tests(["tests"]) sys.exit(bool(failures)) -if __name__ == '__main__': - runtests() +if __name__ == "__main__": + runtests() diff --git a/tests/settings.py b/tests/settings.py index c2268df..ff83efc 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -7,69 +7,71 @@ import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) -SECRET_KEY = 'django-admin-interface' +SECRET_KEY = "django-admin-interface" -ALLOWED_HOSTS = ['*'] +ALLOWED_HOSTS = ["*"] # Application definition INSTALLED_APPS = [ - 'admin_interface', - 'colorfield', + "admin_interface", + "colorfield", ] if django.VERSION < (1, 9): # ONLY if django version < 1.9 INSTALLED_APPS += [ - 'flat', + "flat", ] if django.VERSION < (2, 0): # ONLY if django version < 2.0 INSTALLED_APPS += [ - 'flat_responsive', + "flat_responsive", ] INSTALLED_APPS += [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.messages', - 'django.contrib.sessions', + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.messages", + "django.contrib.sessions", ] if django.VERSION < (2, 0): MIDDLEWARE_CLASSES = [ - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", ] else: MIDDLEWARE = [ - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", ] -TEMPLATES = [{ - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - 'django.template.context_processors.request', - ] +TEMPLATES = [ + { + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + "django.template.context_processors.request", + ] + }, }, -},] +] -database_engine = os.environ.get('DATABASE_ENGINE', 'sqlite') +database_engine = os.environ.get("DATABASE_ENGINE", "sqlite") database_config = { - 'sqlite': { - 'ENGINE': 'django.db.backends.sqlite3', - 'NAME': ':memory:', + "sqlite": { + "ENGINE": "django.db.backends.sqlite3", + "NAME": ":memory:", }, # 'mysql': { # 'ENGINE': 'django.db.backends.mysql', @@ -79,38 +81,43 @@ database_config = { # 'HOST': '', # 'PORT': '', # }, - 'postgres': { - 'ENGINE': 'django.db.backends.postgresql_psycopg2', - 'NAME': 'admin_interface', - 'USER': 'postgres', - 'PASSWORD': 'postgres', - 'HOST': '', - 'PORT': '', - } + "postgres": { + "ENGINE": "django.db.backends.postgresql_psycopg2", + "NAME": "admin_interface", + "USER": "postgres", + "PASSWORD": "postgres", + "HOST": "", + "PORT": "", + }, } -github_workflow = os.environ.get('GITHUB_WORKFLOW') +github_workflow = os.environ.get("GITHUB_WORKFLOW") if github_workflow: - database_config['postgres']['NAME'] = 'postgres' - database_config['postgres']['HOST'] = '127.0.0.1' - database_config['postgres']['PORT'] = '5432' + database_config["postgres"]["NAME"] = "postgres" + database_config["postgres"]["HOST"] = "127.0.0.1" + database_config["postgres"]["PORT"] = "5432" DATABASES = { - 'default': database_config.get(database_engine), + "default": database_config.get(database_engine), } USE_I18N = True LANGUAGES = ( - ('en', 'English', ), - ('it', 'Italian', ), + ( + "en", + "English", + ), + ( + "it", + "Italian", + ), ) -LANGUAGE_CODE = 'en' +LANGUAGE_CODE = "en" -ROOT_URLCONF = 'tests.urls' +ROOT_URLCONF = "tests.urls" -MEDIA_ROOT = os.path.join(BASE_DIR, 'admin_interface/public/media/') -MEDIA_URL = '/media/' - -STATIC_ROOT = os.path.join(BASE_DIR, 'admin_interface/public/static/') -STATIC_URL = '/static/' +MEDIA_ROOT = os.path.join(BASE_DIR, "admin_interface/public/media/") +MEDIA_URL = "/media/" +STATIC_ROOT = os.path.join(BASE_DIR, "admin_interface/public/static/") +STATIC_URL = "/static/" diff --git a/tests/test_fixtures.py b/tests/test_fixtures.py index 5c6233c..15c8dc3 100644 --- a/tests/test_fixtures.py +++ b/tests/test_fixtures.py @@ -9,7 +9,6 @@ from admin_interface.models import Theme class AdminInterfaceFixturesTestCase(TestCase): - def setUp(self): pass @@ -17,36 +16,36 @@ class AdminInterfaceFixturesTestCase(TestCase): pass def __load_theme(self, theme_name): - call_command('loaddata', 'admin_interface_theme_%s.json' % (theme_name, )) + call_command("loaddata", "admin_interface_theme_%s.json" % (theme_name,)) def test_import_initial_data(self): - call_command('loaddata', 'initial_data.json') - self.assertEqual(Theme.objects.count(), 1); + call_command("loaddata", "initial_data.json") + self.assertEqual(Theme.objects.count(), 1) def test_import_all(self): - self.__load_theme('django') - self.__load_theme('bootstrap') - self.__load_theme('foundation') - self.__load_theme('uswds') - self.assertEqual(Theme.objects.count(), 4); + self.__load_theme("django") + self.__load_theme("bootstrap") + self.__load_theme("foundation") + self.__load_theme("uswds") + self.assertEqual(Theme.objects.count(), 4) def test_import_idempotency(self): - self.__load_theme('django') - self.__load_theme('django') - self.__load_theme('django') - self.__load_theme('django') - self.__load_theme('django') - self.assertEqual(Theme.objects.count(), 1); - self.__load_theme('bootstrap') - self.__load_theme('bootstrap') - self.__load_theme('bootstrap') - self.assertEqual(Theme.objects.count(), 2); + self.__load_theme("django") + self.__load_theme("django") + self.__load_theme("django") + self.__load_theme("django") + self.__load_theme("django") + self.assertEqual(Theme.objects.count(), 1) + self.__load_theme("bootstrap") + self.__load_theme("bootstrap") + self.__load_theme("bootstrap") + self.assertEqual(Theme.objects.count(), 2) def test_import_override(self): obj1 = Theme.get_active_theme() - obj1.title = 'Custom 1' + obj1.title = "Custom 1" obj1.save() - self.__load_theme('django') + self.__load_theme("django") obj2 = Theme.get_active_theme() self.assertEqual(obj1.pk, obj2.pk) self.assertTrue(obj1.title != obj2.title) diff --git a/tests/test_models.py b/tests/test_models.py index 35b7155..387f43e 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -12,7 +12,6 @@ from admin_interface.models import Theme class AdminInterfaceModelsTestCase(TestCase): - def setUp(self): pass @@ -24,7 +23,7 @@ class AdminInterfaceModelsTestCase(TestCase): print(theme) self.assertTrue(theme != None) self.assertTrue(theme.active) - self.assertEqual(Theme.objects.filter(active=True).count(), 1); + self.assertEqual(Theme.objects.filter(active=True).count(), 1) def test_default_theme_created_if_no_themes(self): Theme.objects.all().delete() @@ -48,36 +47,36 @@ class AdminInterfaceModelsTestCase(TestCase): def test_default_theme_activated_after_update_if_multiple_active_themes(self): Theme.objects.all().delete() - theme_1 = Theme.objects.create(name='Custom 1', active=True) - theme_2 = Theme.objects.create(name='Custom 2', active=True) - theme_3 = Theme.objects.create(name='Custom 3', active=True) + theme_1 = Theme.objects.create(name="Custom 1", active=True) + theme_2 = Theme.objects.create(name="Custom 2", active=True) + theme_3 = Theme.objects.create(name="Custom 3", active=True) Theme.objects.update(active=False) Theme.objects.update(active=True) self.__test_active_theme() def test_default_theme_activated_on_active_theme_deleted(self): Theme.objects.all().delete() - theme_1 = Theme.objects.create(name='Custom 1', active=True) - theme_2 = Theme.objects.create(name='Custom 2', active=True) - theme_3 = Theme.objects.create(name='Custom 3', active=True) + theme_1 = Theme.objects.create(name="Custom 1", active=True) + theme_2 = Theme.objects.create(name="Custom 2", active=True) + theme_3 = Theme.objects.create(name="Custom 3", active=True) Theme.objects.filter(pk=Theme.get_active_theme().pk).delete() self.__test_active_theme() def test_last_theme_activated_on_multiple_themes_created(self): Theme.objects.all().delete() - theme_1 = Theme.objects.create(name='Custom 1', active=True) - theme_2 = Theme.objects.create(name='Custom 2', active=True) - theme_3 = Theme.objects.create(name='Custom 3', active=True) + theme_1 = Theme.objects.create(name="Custom 1", active=True) + theme_2 = Theme.objects.create(name="Custom 2", active=True) + theme_3 = Theme.objects.create(name="Custom 3", active=True) self.assertEqual(Theme.get_active_theme().pk, theme_3.pk) self.__test_active_theme() def test_last_theme_activated_on_multiple_themes_activated(self): Theme.objects.all().delete() - theme_1 = Theme.objects.create(name='Custom 1', active=True) - theme_2 = Theme.objects.create(name='Custom 2', active=True) - theme_3 = Theme.objects.create(name='Custom 3', active=True) - theme_4 = Theme.objects.create(name='Custom 4', active=True) - theme_5 = Theme.objects.create(name='Custom 5', active=True) + theme_1 = Theme.objects.create(name="Custom 1", active=True) + theme_2 = Theme.objects.create(name="Custom 2", active=True) + theme_3 = Theme.objects.create(name="Custom 3", active=True) + theme_4 = Theme.objects.create(name="Custom 4", active=True) + theme_5 = Theme.objects.create(name="Custom 5", active=True) themes = [theme_1, theme_2, theme_3, theme_4, theme_5] for i in range(5): random.shuffle(themes) @@ -88,4 +87,4 @@ class AdminInterfaceModelsTestCase(TestCase): def test_repr(self): theme = Theme.get_active_theme() - self.assertEqual('{0}'.format(theme), 'Django') + self.assertEqual("{0}".format(theme), "Django") diff --git a/tests/test_settings.py b/tests/test_settings.py index 3e92bd3..cac8171 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -13,11 +13,11 @@ from admin_interface.settings import check_installed_apps class AdminInterfaceSettingsTestCase(TestCase): DJANGO_APPS = [ - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.messages', - 'django.contrib.sessions', + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.contenttypes", + "django.contrib.messages", + "django.contrib.sessions", ] def setUp(self): @@ -30,65 +30,68 @@ class AdminInterfaceSettingsTestCase(TestCase): dj_version = django.VERSION installed_apps = settings.INSTALLED_APPS - if 'colorfield' not in installed_apps: + if "colorfield" not in installed_apps: self.assertRaises(ImproperlyConfigured, check_installed_apps) - elif 'flat' not in installed_apps and dj_version < (1, 9): + elif "flat" not in installed_apps and dj_version < (1, 9): self.assertRaises(ImproperlyConfigured, check_installed_apps) - elif 'flat' in installed_apps and dj_version >= (1, 9): + elif "flat" in installed_apps and dj_version >= (1, 9): self.assertRaises(ImproperlyConfigured, check_installed_apps) - elif 'flat_responsive' not in installed_apps and dj_version < (2, 0): + elif "flat_responsive" not in installed_apps and dj_version < (2, 0): self.assertRaises(ImproperlyConfigured, check_installed_apps) - elif 'flat_responsive' in installed_apps and dj_version >= (2, 0): + elif "flat_responsive" in installed_apps and dj_version >= (2, 0): self.assertRaises(ImproperlyConfigured, check_installed_apps) else: check_installed_apps() @override_settings( - INSTALLED_APPS = [ - 'admin_interface', - 'colorfield', - 'flat', - 'flat_responsive', - ] + DJANGO_APPS + INSTALLED_APPS=[ + "admin_interface", + "colorfield", + "flat", + "flat_responsive", + ] + + DJANGO_APPS ) def test_installed_apps_all(self): self.__test_installed_apps() @override_settings( - INSTALLED_APPS = [ - 'admin_interface', + INSTALLED_APPS=[ + "admin_interface", # 'colorfield', - 'flat', - 'flat_responsive', - ] + DJANGO_APPS + "flat", + "flat_responsive", + ] + + DJANGO_APPS ) def test_installed_apps_no_colorfield(self): self.__test_installed_apps() @override_settings( - INSTALLED_APPS = [ - 'admin_interface', - 'colorfield', + INSTALLED_APPS=[ + "admin_interface", + "colorfield", # 'flat', - 'flat_responsive', - ] + DJANGO_APPS + "flat_responsive", + ] + + DJANGO_APPS ) def test_installed_apps_no_flat(self): self.__test_installed_apps() @override_settings( - INSTALLED_APPS = [ - 'admin_interface', - 'colorfield', - 'flat', + INSTALLED_APPS=[ + "admin_interface", + "colorfield", + "flat", # 'flat_responsive', - ] + DJANGO_APPS + ] + + DJANGO_APPS ) def test_installed_apps_no_flat_responsive(self): self.__test_installed_apps() - diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py index f54aada..6a1be0d 100644 --- a/tests/test_templatetags.py +++ b/tests/test_templatetags.py @@ -12,7 +12,6 @@ from admin_interface.version import __version__ class AdminInterfaceTemplateTagsTestCase(TestCase): - def setUp(self): self.request_factory = RequestFactory() @@ -23,47 +22,65 @@ class AdminInterfaceTemplateTagsTestCase(TestCase): return Template(string).render(Context(context or {})) def test_get_admin_interface_languages(self): - context = Context({ - 'request': self.request_factory.get('/en/admin/'), - }) + context = Context( + { + "request": self.request_factory.get("/en/admin/"), + } + ) languages = templatetags.get_admin_interface_languages(context) expected_languages = [ - {'code': 'en', 'name': 'English', 'default': True, 'active': True, 'activation_url': '/i18n/setlang/?next=/en/admin/'}, - {'code': 'it', 'name': 'Italian', 'default': False, 'active': False, 'activation_url': '/i18n/setlang/?next=/it/admin/'} + { + "code": "en", + "name": "English", + "default": True, + "active": True, + "activation_url": "/i18n/setlang/?next=/en/admin/", + }, + { + "code": "it", + "name": "Italian", + "default": False, + "active": False, + "activation_url": "/i18n/setlang/?next=/it/admin/", + }, ] self.assertEqual(len(languages), len(expected_languages)) self.assertEqual(languages[0], expected_languages[0]) self.assertEqual(languages[1], expected_languages[1]) @override_settings( - USE_I18N = False, + USE_I18N=False, ) def test_get_admin_interface_languages_with_i18n_disabled(self): - context = Context({ - 'request': self.request_factory.get('/en/admin/'), - }) + context = Context( + { + "request": self.request_factory.get("/en/admin/"), + } + ) languages = templatetags.get_admin_interface_languages(context) self.assertEqual(languages, None) @override_settings( - ROOT_URLCONF = 'tests.urls_without_i18n_patterns', + ROOT_URLCONF="tests.urls_without_i18n_patterns", ) def test_get_admin_interface_languages_without_i18n_url_patterns(self): - context = Context({ - 'request': self.request_factory.get('/en/admin/'), - }) + context = Context( + { + "request": self.request_factory.get("/en/admin/"), + } + ) languages = templatetags.get_admin_interface_languages(context) self.assertEqual(languages, None) @override_settings( - LANGUAGES = ( - ('en', 'English'), - ), + LANGUAGES=(("en", "English"),), ) def test_get_admin_interface_languages_without_multiple_languages(self): - context = Context({ - 'request': self.request_factory.get('/en/admin/'), - }) + context = Context( + { + "request": self.request_factory.get("/en/admin/"), + } + ) languages = templatetags.get_admin_interface_languages(context) self.assertEqual(languages, None) @@ -73,9 +90,11 @@ class AdminInterfaceTemplateTagsTestCase(TestCase): self.assertEqual(languages, None) def test_get_admin_interface_languages_without_language_prefix_in_url(self): - context = Context({ - 'request': self.request_factory.get('/admin/'), - }) + context = Context( + { + "request": self.request_factory.get("/admin/"), + } + ) languages = templatetags.get_admin_interface_languages(context) self.assertEqual(languages, None) @@ -83,31 +102,34 @@ class AdminInterfaceTemplateTagsTestCase(TestCase): Theme.objects.all().delete() context = Context({}) theme = templatetags.get_admin_interface_theme(context) - self.assertEqual(theme.name, 'Django') + self.assertEqual(theme.name, "Django") rendered = self.__render_template( - '{% load admin_interface_tags %}'\ - '{% get_admin_interface_theme as theme %}'\ - '{{ theme.name }}', context) - self.assertEqual(rendered, 'Django') + "{% load admin_interface_tags %}" + "{% get_admin_interface_theme as theme %}" + "{{ theme.name }}", + context, + ) + self.assertEqual(rendered, "Django") def test_get_theme_with_request(self): Theme.objects.all().delete() - context = Context({ - 'request': self.request_factory.get('/') - }) + context = Context({"request": self.request_factory.get("/")}) theme = templatetags.get_admin_interface_theme(context) - self.assertEqual(theme.name, 'Django') + self.assertEqual(theme.name, "Django") rendered = self.__render_template( - '{% load admin_interface_tags %}'\ - '{% get_admin_interface_theme as theme %}'\ - '{{ theme.name }}', context) - self.assertEqual(rendered, 'Django') + "{% load admin_interface_tags %}" + "{% get_admin_interface_theme as theme %}" + "{{ theme.name }}", + context, + ) + self.assertEqual(rendered, "Django") def test_get_version(self): version = templatetags.get_admin_interface_version() self.assertEqual(version, __version__) rendered = self.__render_template( - '{% load admin_interface_tags %}'\ - '{% get_admin_interface_version as version %}'\ - '{{ version }}') + "{% load admin_interface_tags %}" + "{% get_admin_interface_version as version %}" + "{{ version }}" + ) self.assertEqual(rendered, __version__) diff --git a/tests/urls.py b/tests/urls.py index f4c3ad8..1f5603f 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import django from django.contrib import admin + if django.VERSION < (2, 0): from django.conf.urls import include, url as re_path else: @@ -13,8 +14,8 @@ from django.conf.urls.i18n import i18n_patterns urlpatterns = [] urlpatterns += [ - re_path(r'^i18n/', include('django.conf.urls.i18n')), + re_path(r"^i18n/", include("django.conf.urls.i18n")), ] urlpatterns += i18n_patterns( - re_path(r'^admin/', admin.site.urls), + re_path(r"^admin/", admin.site.urls), ) diff --git a/tests/urls_without_i18n_patterns.py b/tests/urls_without_i18n_patterns.py index 2b10eac..a040402 100644 --- a/tests/urls_without_i18n_patterns.py +++ b/tests/urls_without_i18n_patterns.py @@ -4,6 +4,7 @@ from __future__ import unicode_literals import django from django.contrib import admin + if django.VERSION < (2, 0): from django.conf.urls import url as re_path else: @@ -11,5 +12,5 @@ else: urlpatterns = [ - re_path(r'^admin/', admin.site.urls), + re_path(r"^admin/", admin.site.urls), ]