def get_fieldsets()

in src/olympia/blocklist/admin.py [0:0]


    def get_fieldsets(self, request, obj):
        is_new = obj is None
        show_canned = self.has_change_permission(request, obj, strict=True)
        is_delete_submission = (
            int(self.get_value('action', request, obj=obj, default=0))
            == BlocklistSubmission.ACTIONS.DELETE
        )

        input_guids_section = (
            'Input Guids',
            {
                'fields': (
                    'action',
                    'input_guids',
                ),
                'classes': ('collapse',),
            },
        )

        block_history_section = not is_new and (
            'Block History',
            {'fields': ('block_history',)},
        )

        changed_version_ids_field = (
            'changed_version_ids'
            if self.has_change_permission(request, obj)
            else 'ro_changed_version_ids'
        )

        add_change_section = (
            'Add or Change Blocks',
            {
                'fields': (
                    changed_version_ids_field,
                    'block_type',
                    'disable_addon',
                    'update_url_value',
                    'url',
                    'update_reason_value',
                    *(('canned_reasons',) if show_canned else ()),
                    'reason',
                    'updated_by',
                    'signoff_by',
                    'submission_logs',
                ),
            },
        )

        delete_section = (
            'Delete Blocks',
            {
                'fields': (
                    changed_version_ids_field,
                    'updated_by',
                    'signoff_by',
                    'submission_logs',
                ),
            },
        )

        delay_section = not is_delete_submission and (
            'Delay',
            {
                'fields': (*(('delay_days',) if is_new else ()), 'delayed_until'),
            },
        )

        sections = (
            input_guids_section,
            block_history_section,
            (add_change_section if not is_delete_submission else delete_section),
            delay_section,
        )
        return tuple(section for section in sections if section)