diff --git a/django_code/apps/cloudmanager/admin.py b/django_code/apps/cloudmanager/admin.py index 8b08610..8881a0b 100644 --- a/django_code/apps/cloudmanager/admin.py +++ b/django_code/apps/cloudmanager/admin.py @@ -3,9 +3,8 @@ from django.utils.translation import ngettext from .models import Deployment_Data,Schedule_Day_Data,Schedule_Week_Data,Namespace_Data from .utils import import_namespace,import_deployment,generate_default_day_schedule,generate_default_week_schedule,Check_server_supposed_XXX,retrieve_and_apply from apps.kubernetes_connection.utils import scale_up,scale_down -from admin_extra_buttons.api import ExtraButtonsMixin, button -from import_export.admin import ImportExportModelAdmin - +from admin_extra_buttons.api import button +from core.admin import UniversalModelAdmin DB = 'cloudmanager_db' @@ -86,7 +85,7 @@ class MultiDBModelAdmin(admin.ModelAdmin): @admin.register(Deployment_Data) -class DeploymentDataAdmin(ImportExportModelAdmin,ExtraButtonsMixin, MultiDBModelAdmin): +class DeploymentDataAdmin(UniversalModelAdmin): list_display = ('name', 'namespace', 'schedule_week', 'schedule_day', 'replicas') list_filter = (ActiveAtHourFilter,) actions = [Check_server_supposed_False,Check_server_supposed_true,scale_up_deploy,scale_down_deploy] @@ -104,7 +103,7 @@ class DeploymentDataAdmin(ImportExportModelAdmin,ExtraButtonsMixin, MultiDBModel self.message_user(request, 'Deployments imported') @admin.register(Schedule_Day_Data) -class ScheduleDayAdmin(ImportExportModelAdmin,ExtraButtonsMixin,MultiDBModelAdmin): +class ScheduleDayAdmin(UniversalModelAdmin): list_display = ['name_schedule'] + [f'state_at_{h}' for h in range(24)] @button() def generate_default_day_schedule_admin(self, request): @@ -113,7 +112,7 @@ class ScheduleDayAdmin(ImportExportModelAdmin,ExtraButtonsMixin,MultiDBModelAdmi self.message_user(request, 'Created default schedules') @admin.register(Schedule_Week_Data) -class ScheduleWeekAdmin(ImportExportModelAdmin,ExtraButtonsMixin,MultiDBModelAdmin): +class ScheduleWeekAdmin(UniversalModelAdmin): list_display = ( 'name_schedule', 'state_Monday', 'state_Tuesday', 'state_Wednesday', @@ -127,7 +126,7 @@ class ScheduleWeekAdmin(ImportExportModelAdmin,ExtraButtonsMixin,MultiDBModelAdm @admin.register(Namespace_Data) -class NamespaceAdmin(ImportExportModelAdmin,ExtraButtonsMixin, MultiDBModelAdmin): +class NamespaceAdmin(UniversalModelAdmin): list_display = ('namespace',) diff --git a/django_code/apps/job_dashboard/admin.py b/django_code/apps/job_dashboard/admin.py index 454157d..f1b85c1 100644 --- a/django_code/apps/job_dashboard/admin.py +++ b/django_code/apps/job_dashboard/admin.py @@ -1,9 +1,9 @@ from django.contrib import admin -from import_export.admin import ImportExportModelAdmin from import_export import resources from import_export.fields import Field from .models import JobData from django.utils.text import Truncator +from core.admin import UniversalModelAdmin # Register your models here. @@ -31,7 +31,7 @@ class JobResource(resources.ModelResource): @admin.register(JobData) -class JobAdmin(ImportExportModelAdmin): +class JobAdmin(UniversalModelAdmin): list_display = ('job_position','company','URL','status','date_saved','date_applied','type','resume','location','short_description','salary','contact','source') #fields = ['job_position','company','URL','status','date_saved','date_applied','type','resume','cover_letter','location','job_description','salary ','contact','source'] resource_classes = [JobResource] diff --git a/django_code/apps/podcast_aggregator/admin.py b/django_code/apps/podcast_aggregator/admin.py index 932142f..01799ae 100644 --- a/django_code/apps/podcast_aggregator/admin.py +++ b/django_code/apps/podcast_aggregator/admin.py @@ -1,13 +1,14 @@ from django.contrib import admin -from import_export.admin import ImportExportModelAdmin from import_export import resources from django.utils.html import format_html from .models import podcastData +from core.admin import UniversalModelAdmin # Register your models here. @admin.register(podcastData) -class JobAdmin(ImportExportModelAdmin): +class PodcastAdmin(UniversalModelAdmin): list_display = ('podcast_name','clickable_links','enabled') - + + def clickable_links(self, obj): return format_html('{}', obj.podcast_url,obj.podcast_url) diff --git a/django_code/apps/random_simpsons/admin.py b/django_code/apps/random_simpsons/admin.py index 1a4bf36..179abd4 100644 --- a/django_code/apps/random_simpsons/admin.py +++ b/django_code/apps/random_simpsons/admin.py @@ -1,13 +1,11 @@ from django.contrib import admin,messages from django.utils.translation import ngettext -from django.utils.html import format_html from django.utils import timezone -from djangoql.admin import DjangoQLSearchMixin from prompt_toolkit.shortcuts import print_container -from import_export.admin import ImportExportModelAdmin from import_export import resources -from .models import SimpsonsData,simpsons_data_object,urlData +from .models import SimpsonsData,urlData from .utils import mark_episode_watched,unwatch_all_episodes,generate_new_urls_for_episode +from core.admin import UniversalModelAdmin # Register your models here. @@ -65,19 +63,15 @@ def generate_new_urls(modeladmin, request, queryset): @admin.register(SimpsonsData) -class EpisodeAdmin(DjangoQLSearchMixin,ImportExportModelAdmin): +class EpisodeAdmin(UniversalModelAdmin): list_display = [field.name for field in SimpsonsData._meta.fields if field.name != 'id'] + list_display += ['clickable_links'] list_filter = ['seen','modified_at'] #list_filter = ['seen'] fields = ['season', 'episode', 'url', 'seen'] actions = [make_seen,make_unseen,unseen_betaserie,generate_new_urls] search_fields = ['season', 'episode', 'url', 'seen'] - djangoql_completion_enabled_by_default = False - - def clickable_links(self, obj): - return format_html('{}', obj.url,obj.url) - def get_queryset(self, request): return super().get_queryset(request).using(DB) @@ -91,7 +85,7 @@ class EpisodeAdmin(DjangoQLSearchMixin,ImportExportModelAdmin): queryset.using(DB).delete() @admin.register(urlData) -class urldataAdmin(ImportExportModelAdmin): +class urldataAdmin(UniversalModelAdmin): list_display = ('url_example', 'prefix', 'infix', 'suffix','addedDate') diff --git a/django_code/apps/streaming/admin.py b/django_code/apps/streaming/admin.py index c81595f..fa1530d 100644 --- a/django_code/apps/streaming/admin.py +++ b/django_code/apps/streaming/admin.py @@ -1,9 +1,9 @@ from django.contrib import admin from django.utils.html import format_html -from import_export.admin import ImportExportModelAdmin from .models import StreamingSiteTestingData,StreamingRedirectData from .utils import full_testing from urllib.parse import urlsplit, urlunsplit +from core.admin import UniversalModelAdmin @@ -34,14 +34,11 @@ def urlcleaning(modeladmin, request, queryset): return 0 @admin.register(StreamingSiteTestingData) -class streamingAdmin(ImportExportModelAdmin): +class streamingAdmin(UniversalModelAdmin): list_display = ['clickable_links','result_colored','newstatus'] fields = ['url'] actions = [check,urlcleaning] - def clickable_links(self, obj): - return format_html('{}', obj.url,obj.url) - def result_colored(self, obj): colors = { 'REACHABLE': 'green', @@ -61,7 +58,7 @@ class streamingAdmin(ImportExportModelAdmin): @admin.register(StreamingRedirectData) -class StreamingRedirectAdmin(ImportExportModelAdmin): +class StreamingRedirectAdmin(UniversalModelAdmin): list_display = ['name','season','episode','randomViewing','clickable_links','addedDate','alias'] #fields = ['name','season','episode','url_example','prefix','infix','suffix','alias','randomViewing','seasonInformation'] fieldsets = ( diff --git a/django_code/apps/telegram_communication/admin.py b/django_code/apps/telegram_communication/admin.py index be65569..96cb682 100644 --- a/django_code/apps/telegram_communication/admin.py +++ b/django_code/apps/telegram_communication/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin -from import_export.admin import ImportExportModelAdmin from .models import TelegramData -from .utils import telegramUtils +from .utils import telegramUtils +from core.admin import UniversalModelAdmin @admin.action(description="Clear all expired messages") def messages_cleaning(modeladmin, request, queryset): @@ -10,7 +10,7 @@ def messages_cleaning(modeladmin, request, queryset): # Register your models here. @admin.register(TelegramData) -class JobAdmin(ImportExportModelAdmin): +class JobAdmin(UniversalModelAdmin): list_display = ('message_id','chat_id','description','creation_date','expiration_date') actions = [messages_cleaning] diff --git a/django_code/apps/website_redirection/admin.py b/django_code/apps/website_redirection/admin.py index 92aebb7..4510f18 100644 --- a/django_code/apps/website_redirection/admin.py +++ b/django_code/apps/website_redirection/admin.py @@ -1,9 +1,7 @@ from django.contrib import admin from .models import historicalData,redirectData from .utils import redirect_method -from import_export.admin import ImportExportModelAdmin -from django.utils.html import format_html - +from core.admin import UniversalModelAdmin # Register your models here. @@ -21,16 +19,13 @@ def re_redirect(modeladmin, request, queryset): output_generated ) @admin.register(historicalData) -class historicalAdmin(ImportExportModelAdmin): +class historicalAdmin(UniversalModelAdmin): list_input = (field.name for field in historicalData._meta.fields if field.name != 'id' or field.name != 'url') list_display = ["clickable_links"] list_display.extend(list_input) actions = [re_redirect] - - def clickable_links(self, obj): - return format_html('{}', obj.url,obj.url) - @admin.register(redirectData) -class redirectAdmin(ImportExportModelAdmin): +class redirectAdmin(UniversalModelAdmin): list_display = [field.name for field in redirectData._meta.fields if field.name != 'id'] + list_display += ['clickable_links'] diff --git a/django_code/apps/website_redirection/models.py b/django_code/apps/website_redirection/models.py index e31c8bc..a34d4c9 100644 --- a/django_code/apps/website_redirection/models.py +++ b/django_code/apps/website_redirection/models.py @@ -1,6 +1,5 @@ from django.db import models from django.contrib import admin -from django.utils.html import format_html class historicalData(models.Model): url = models.CharField(max_length=1000) diff --git a/django_code/core/admin.py b/django_code/core/admin.py new file mode 100644 index 0000000..7106f44 --- /dev/null +++ b/django_code/core/admin.py @@ -0,0 +1,15 @@ +from import_export.admin import ImportExportModelAdmin +from admin_extra_buttons.api import ExtraButtonsMixin +from django.contrib import admin +from djangoql.admin import DjangoQLSearchMixin +from django.utils.html import format_html + +class UniversalModelAdmin(DjangoQLSearchMixin,ImportExportModelAdmin,ExtraButtonsMixin,admin.ModelAdmin): + djangoql_completion_enabled_by_default = True + + #Add search fields if you want to have the toggle on/off + object = "obj.url" + + def clickable_links(self, obj): + return format_html('{}', obj.url,obj.url) + diff --git a/django_code/core/settings.py b/django_code/core/settings.py index 4d1c904..2759104 100644 --- a/django_code/core/settings.py +++ b/django_code/core/settings.py @@ -252,3 +252,4 @@ PROXIES = { "http" : PROXY_URL, "https" : PROXY_URL } +