voip announcement
This commit is contained in:
1 parent
38b1cf06df
commit
c7993aae44
18 files changed
+679
-151
No files matched your search
+20
-1
@@ -1,4 +1,5 @@
|
||||
from django.contrib import admin
|
||||
from django import forms
|
||||
|
||||
from .models import PageTitle, ProductionSeedState, SiteBranding, VoipConfiguration
|
||||
|
||||
@@ -31,9 +32,27 @@ class SiteBrandingAdmin(admin.ModelAdmin):
|
||||
|
||||
@admin.register(VoipConfiguration)
|
||||
class VoipConfigurationAdmin(admin.ModelAdmin):
|
||||
fields = ("voip_call_url", "updated_at")
|
||||
fields = ("voip_call_url", "announcement_url", "announcement_id", "announcement_api_key", "clear_announcement_api_key", "announcement_delay_minutes", "updated_at")
|
||||
readonly_fields = ("updated_at",)
|
||||
|
||||
class ConfigurationForm(forms.ModelForm):
|
||||
announcement_api_key = forms.CharField(
|
||||
required=False, widget=forms.PasswordInput,
|
||||
help_text="برای حفظ کلید فعلی خالی بگذارید؛ برای تغییر، کلید جدید را وارد کنید.",
|
||||
)
|
||||
clear_announcement_api_key = forms.BooleanField(required=False, label="حذف کلید فعلی")
|
||||
|
||||
class Meta:
|
||||
model = VoipConfiguration
|
||||
fields = "__all__"
|
||||
|
||||
def clean_announcement_api_key(self):
|
||||
if self.data.get("clear_announcement_api_key"):
|
||||
return ""
|
||||
return self.cleaned_data["announcement_api_key"] or (self.instance.announcement_api_key if self.instance.pk else "")
|
||||
|
||||
form = ConfigurationForm
|
||||
|
||||
def has_add_permission(self, request):
|
||||
return not VoipConfiguration.objects.exists()
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 5.1.1 on 2026-09-28 15:31
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0007_voipconfiguration'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='voipconfiguration',
|
||||
name='announcement_api_key',
|
||||
field=models.CharField(blank=True, max_length=500, verbose_name='ANNOUNCEMENT_API_KEY'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='voipconfiguration',
|
||||
name='announcement_delay_minutes',
|
||||
field=models.PositiveIntegerField(default=90, verbose_name='تأخیر تماس اطلاع\u200cرسانی (دقیقه)'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='voipconfiguration',
|
||||
name='announcement_id',
|
||||
field=models.CharField(blank=True, max_length=200, verbose_name='ANNOUNCEMENT_ID'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='voipconfiguration',
|
||||
name='announcement_url',
|
||||
field=models.URLField(blank=True, verbose_name='ANNOUNCEMENT_URL'),
|
||||
),
|
||||
]
|
||||
@@ -124,6 +124,10 @@ class VoipConfiguration(SingletonConfiguration):
|
||||
blank=True,
|
||||
help_text="نشانی کامل endpoint تماس، مانند http://127.0.0.1:8000/v1/click2call",
|
||||
)
|
||||
announcement_url = models.URLField("ANNOUNCEMENT_URL", blank=True)
|
||||
announcement_id = models.CharField("ANNOUNCEMENT_ID", max_length=200, blank=True)
|
||||
announcement_api_key = models.CharField("ANNOUNCEMENT_API_KEY", max_length=500, blank=True)
|
||||
announcement_delay_minutes = models.PositiveIntegerField("تأخیر تماس اطلاعرسانی (دقیقه)", default=90)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
class Meta:
|
||||
|
||||
Reference in new issue
Block a user