mirror of
https://github.com/jazzband/django-dbtemplates.git
synced 2026-03-16 22:20:28 +00:00
Add signal handler to enforce unique template names for sites
This commit is contained in:
parent
05f1ee1193
commit
43a038ec2d
1 changed files with 25 additions and 0 deletions
25
dbtemplates/signal_handlers.py
Normal file
25
dbtemplates/signal_handlers.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
from django.contrib.sites.models import Site
|
||||
from django.db.models import Subquery
|
||||
from django.db.utils import IntegrityError
|
||||
|
||||
from .models import Template
|
||||
|
||||
|
||||
def verify_template_name_uniqueness_across_all_selected_sites(sender, **kwargs):
|
||||
if kwargs.get('action', None) == 'pre_add':
|
||||
if kwargs.get('reverse'):
|
||||
site = kwargs.get('instance', None)
|
||||
template_ids = kwargs.get('pk_set', None)
|
||||
|
||||
template_names = Template.objects.filter(id__in=template_ids).values_list('name')
|
||||
if template := site.template_set.filter(name__in=Subquery(template_names.values_list('name'))).first():
|
||||
raise IntegrityError(
|
||||
f"Template with name '{template.name}' already exists for site '{site.name}'"
|
||||
)
|
||||
else:
|
||||
template = kwargs.get('instance', None)
|
||||
site_ids = kwargs.get('pk_set', None)
|
||||
if site := Site.objects.filter(id__in=site_ids, template__name=template.name).first():
|
||||
raise IntegrityError(
|
||||
f"Template with name '{template.name}' already exists for site '{site.name}'"
|
||||
)
|
||||
Loading…
Reference in a new issue