fix object.page into O-t-O relation ship

This commit is contained in:
bkfox 2017-08-21 14:20:25 +02:00
parent 3f9a2d4ad1
commit ae5aacd607

View File

@ -118,7 +118,7 @@ def station_post_saved(sender, instance, created, *args, **kwargs):
@receiver(post_save, sender=aircox.Program) @receiver(post_save, sender=aircox.Program)
def program_post_saved(sender, instance, created, *args, **kwargs): def program_post_saved(sender, instance, created, *args, **kwargs):
if not created or instance.page: if not created or not hasattr(instance 'page'):
return return
settings = utils.get_station_settings(instance.station) settings = utils.get_station_settings(instance.station)
@ -143,35 +143,29 @@ def program_post_saved(sender, instance, created, *args, **kwargs):
parent.add_child(instance = page) parent.add_child(instance = page)
def void_pages_of(page_set): def clean_page_of(instance):
""" """
Return a queryset from page_set that select only empty pages. If Delete empty pages for the given instance object; we assume instance
`inverse` is True, select only pages that are not empty. has a One-To-One relationship with a page.
Empty is defined on theses parameters: Empty is defined on theses parameters:
- `numchild = 0` => no children - `numchild = 0` => no children
- no headline - no headline
- no body - no body
""" """
if not page_set.count(): if not hasattr(instance, 'page'):
return return
page_set = page_set.filter(numchild = 0) page = instance.page
if page.numchild > 0 or page.headline or page.body:
return
# as publications page.delete()
page_set = models.Publication.objects.filter(
page_ptr_id__in = page_set.values('pk')
)
# only empty
q = (Q(headline__isnull = True) | Q(headline = '')) & \
(Q(body__isnull = True) | Q(body = ''))
return page_set.filter(q)
@receiver(pre_delete, sender=aircox.Program) @receiver(pre_delete, sender=aircox.Program)
def program_post_deleted(sender, instance, *args, **kwargs): def program_post_deleted(sender, instance, *args, **kwargs):
void_pages_of(instance.page).delete() clean_page_of(instance.page)
@receiver(post_save, sender=aircox.Diffusion) @receiver(post_save, sender=aircox.Diffusion)
@ -197,5 +191,5 @@ def diffusion_post_saved(sender, instance, created, *args, **kwargs):
@receiver(pre_delete, sender=aircox.Diffusion) @receiver(pre_delete, sender=aircox.Diffusion)
def diffusion_pre_deleted(sender, instance, *args, **kwargs): def diffusion_pre_deleted(sender, instance, *args, **kwargs):
void_pages_of(instance.page).delete() clean_page_of(instance.page)