feat(admin): expand exchange admin and unify admin UX #19

Merged
avm merged 6 commits from feature/fix-admin into dev 2026-03-24 16:39:18 +03:00
Showing only changes of commit b7d122aa5b - Show all commits

View File

@@ -102,9 +102,7 @@ class _ExchangeCopySettingsMixin:
"mode": mode, "mode": mode,
"table": table if mode == "single" else None, "table": table if mode == "single" else None,
"tables": tables if mode == "selected" else None, "tables": tables if mode == "selected" else None,
"truncate_before_copy": self.cleaned_data.get( "truncate_before_copy": self.cleaned_data.get("truncate_before_copy", True),
"truncate_before_copy", True
),
} }
@@ -136,7 +134,9 @@ class ExchangeConnectionAdminForm(_SchemaNameValidationMixin, forms.ModelForm):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
if not self.instance.pk: if not self.instance.pk:
self.fields["password"].required = True self.fields["password"].required = True
self.fields["password"].help_text = "Пароль будет сохранён в зашифрованном виде." self.fields[
"password"
].help_text = "Пароль будет сохранён в зашифрованном виде."
def clean_password(self) -> str: def clean_password(self) -> str:
password = self.cleaned_data.get("password") password = self.cleaned_data.get("password")
@@ -248,7 +248,9 @@ class ExchangePeriodicTaskAdminForm(
"schedule_type": "interval" if task.interval_id else "daily", "schedule_type": "interval" if task.interval_id else "daily",
"interval_every": task.interval.every if task.interval_id else 1, "interval_every": task.interval.every if task.interval_id else 1,
"interval_period": ( "interval_period": (
task.interval.period if task.interval_id else IntervalSchedule.HOURS task.interval.period
if task.interval_id
else IntervalSchedule.HOURS
), ),
"crontab_minute": ( "crontab_minute": (
int(task.crontab.minute) if task.crontab_id else 0 int(task.crontab.minute) if task.crontab_id else 0
@@ -259,10 +261,12 @@ class ExchangePeriodicTaskAdminForm(
kwargs["initial"] = initial kwargs["initial"] = initial
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
self.fields["name"].help_text = ( self.fields[
"Название должно быть уникальным в django-celery-beat." "name"
) ].help_text = "Название должно быть уникальным в django-celery-beat."
self.fields["mode"].help_text = ( self.fields[
"mode"
].help_text = (
"Периодическая задача использует текущее активное подключение exchange." "Периодическая задача использует текущее активное подключение exchange."
) )
self.order_fields( self.order_fields(