forked from rc/aircox
fix object.page into O-t-O relation ship
This commit is contained in:
parent
3f9a2d4ad1
commit
ae5aacd607
|
@ -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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user