-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Integrate django unfold theme and dynamic settings
- Loading branch information
1 parent
3302230
commit 5a14708
Showing
14 changed files
with
329 additions
and
260 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
from django.contrib import admin | ||
from django.contrib.sites.admin import SiteAdmin as BaseSiteAdmin | ||
from django.contrib.sites.models import Site | ||
from django.utils.translation import gettext_lazy as _ | ||
from django_celery_beat.admin import ClockedScheduleAdmin as BaseClockedScheduleAdmin | ||
from django_celery_beat.admin import CrontabScheduleAdmin as BaseCrontabScheduleAdmin | ||
from django_celery_beat.admin import PeriodicTaskAdmin as BasePeriodicTaskAdmin | ||
from django_celery_beat.admin import PeriodicTaskForm, TaskSelectWidget | ||
from django_celery_beat.models import ( | ||
ClockedSchedule, | ||
CrontabSchedule, | ||
IntervalSchedule, | ||
PeriodicTask, | ||
SolarSchedule, | ||
) | ||
from django_celery_results.admin import GroupResultAdmin as BaseGroupResultAdmin | ||
from django_celery_results.admin import TaskResultAdmin as BaseTaskResultAdmin | ||
from django_celery_results.models import GroupResult, TaskResult | ||
from dynamic_preferences.admin import GlobalPreferenceAdmin as BaseGlobalPreferenceAdmin | ||
from dynamic_preferences.models import GlobalPreferenceModel | ||
from unfold.admin import ModelAdmin, UnfoldAdminSelectWidget, UnfoldAdminTextInputWidget | ||
from unfold.decorators import display | ||
|
||
# --------------------------------------------------------- Celery | ||
# https://unfoldadmin.com/docs/integrations/django-celery-beat/ | ||
|
||
admin.site.unregister(PeriodicTask) | ||
admin.site.unregister(IntervalSchedule) | ||
admin.site.unregister(CrontabSchedule) | ||
admin.site.unregister(SolarSchedule) | ||
admin.site.unregister(ClockedSchedule) | ||
admin.site.unregister(TaskResult) | ||
admin.site.unregister(GroupResult) | ||
|
||
|
||
class UnfoldTaskSelectWidget(UnfoldAdminSelectWidget, TaskSelectWidget): | ||
pass | ||
|
||
|
||
class UnfoldPeriodicTaskForm(PeriodicTaskForm): | ||
def __init__(self, *args, **kwargs): | ||
super().__init__(*args, **kwargs) | ||
self.fields["task"].widget = UnfoldAdminTextInputWidget() | ||
self.fields["regtask"].widget = UnfoldTaskSelectWidget() | ||
|
||
|
||
@admin.register(PeriodicTask) | ||
class PeriodicTaskAdmin(BasePeriodicTaskAdmin, ModelAdmin): | ||
form = UnfoldPeriodicTaskForm | ||
|
||
|
||
@admin.register(IntervalSchedule) | ||
class IntervalScheduleAdmin(ModelAdmin): | ||
pass | ||
|
||
|
||
@admin.register(CrontabSchedule) | ||
class CrontabScheduleAdmin(BaseCrontabScheduleAdmin, ModelAdmin): | ||
pass | ||
|
||
|
||
@admin.register(SolarSchedule) | ||
class SolarScheduleAdmin(ModelAdmin): | ||
pass | ||
|
||
|
||
@admin.register(ClockedSchedule) | ||
class ClockedScheduleAdmin(BaseClockedScheduleAdmin, ModelAdmin): | ||
pass | ||
|
||
|
||
@admin.register(TaskResult) | ||
class TaskResultAdmin(BaseTaskResultAdmin, ModelAdmin): | ||
pass | ||
|
||
|
||
@admin.register(GroupResult) | ||
class GroupResultAdmin(BaseGroupResultAdmin, ModelAdmin): | ||
pass | ||
|
||
|
||
# --------------------------------------------------------- Site | ||
|
||
admin.site.unregister(Site) | ||
|
||
|
||
@admin.register(Site) | ||
class SiteAdmin(BaseSiteAdmin, ModelAdmin): | ||
pass | ||
|
||
|
||
# --------------------------------------------------------- Preferences | ||
|
||
admin.site.unregister(GlobalPreferenceModel) | ||
|
||
|
||
@admin.register(GlobalPreferenceModel) | ||
class GlobalPreferenceAdminAdmin(BaseGlobalPreferenceAdmin, ModelAdmin): | ||
list_display = ["_verbose_name", "_section", "_raw_value", "default_value"] | ||
|
||
def has_add_permission(self, request): | ||
return False | ||
|
||
@display(description=_("Value")) | ||
def _raw_value(self, obj): | ||
return obj.raw_value | ||
|
||
@display(description=_("Name")) | ||
def _verbose_name(self, obj): | ||
return obj.verbose_name | ||
|
||
@display(description=_("Section"), label=True) | ||
def _section(self, obj): | ||
return obj.section |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
from dynamic_preferences.preferences import Section | ||
from dynamic_preferences.registries import global_preferences_registry | ||
from dynamic_preferences.types import BooleanPreference | ||
|
||
general = Section("General") | ||
|
||
|
||
@global_preferences_registry.register | ||
class MaintenanceMode(BooleanPreference): | ||
name = "maintenance_mode" | ||
verbose_name = "Maintenance Mode" | ||
help_text = "Whether the site is in maintenance mode" | ||
default = False | ||
section = general |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,24 @@ | ||
from django.contrib import admin | ||
from django.contrib.auth import get_user_model | ||
from django.contrib.auth.admin import GroupAdmin as BaseGroupAdmin | ||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin | ||
|
||
from config.admin import custom_admin_site | ||
from django.contrib.auth.models import Group | ||
from unfold.admin import ModelAdmin | ||
from unfold.forms import AdminPasswordChangeForm, UserChangeForm, UserCreationForm | ||
|
||
User = get_user_model() | ||
|
||
|
||
@admin.register(User, site=custom_admin_site) | ||
class UserAdmin(BaseUserAdmin): | ||
admin.site.unregister(Group) | ||
|
||
|
||
@admin.register(User) | ||
class UserAdmin(BaseUserAdmin, ModelAdmin): | ||
form = UserChangeForm | ||
add_form = UserCreationForm | ||
change_password_form = AdminPasswordChangeForm | ||
|
||
|
||
@admin.register(Group) | ||
class GroupAdmin(BaseGroupAdmin, ModelAdmin): | ||
pass |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.