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
}
+