voip announcement

This commit is contained in:
javad committed 2026-09-28 19:37:19 +03:30
1 parent 38b1cf06df
commit c7993aae44
18 files changed
+679 -151

No files matched your search

+20 -1
View File
@@ -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'),
),
]
+4
View File
@@ -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: