Source code for fobi.management.commands.fobi_find_broken_entries

from __future__ import print_function

from django.core.management.base import BaseCommand

from fobi.base import (
    get_registered_form_element_plugin_uids,
    get_registered_form_handler_plugin_uids,
)
from fobi.models import FormElementEntry, FormHandlerEntry


[docs]class Command(BaseCommand): """Find the broken plugin records in the database: - ``fobi.models.FormElementEntry`` - ``fobi.models.FormHandlerEntry`` """
[docs] def handle(self, *args, **options): """Handle.""" form_element_entries = ( FormElementEntry._default_manager.all() .only("id", "plugin_uid", "form_entry") .values_list("id", "plugin_uid", "form_entry") ) form_handler_entries = ( FormHandlerEntry._default_manager.all() .only("id", "plugin_uid", "form_entry") .values_list("id", "plugin_uid", "form_entry") ) broken_form_element_entries = [] broken_form_handler_entries = [] registered_form_element_plugin_uids = ( get_registered_form_element_plugin_uids() ) registered_form_handler_plugin_uids = ( get_registered_form_handler_plugin_uids() ) for entry_id, plugin_uid, form_entry_id in form_element_entries: if plugin_uid not in registered_form_element_plugin_uids: broken_form_element_entries.append( (form_entry_id, entry_id, plugin_uid) ) if broken_form_element_entries: print( "Broken form element entries found (form ID, entry ID, " "plugin UID)!", broken_form_element_entries, ) for entry_id, plugin_uid, form_entry_id in form_handler_entries: if plugin_uid not in registered_form_handler_plugin_uids: broken_form_handler_entries.append( (form_entry_id, entry_id, plugin_uid) ) if broken_form_handler_entries: print( "Broken form handler entries found (form ID, entry ID, " "plugin UID)!", broken_form_handler_entries, )