DEV Community

박준희
박준희

Posted on • Originally published at aicoreutility.com

Saving Costs by Disabling Observer Functionality When the Chatbot Isn't in Use

When not using the chatbot, I had to disable the observer feature to save costs. The 'Observer Management' tab in the admin page kept showing up, which was really bothering me.

Attempts and Pitfalls

At first, I thought simply turning off the observer feature would also make the related UI disappear. But the 'Observer Management' tab in the admin page remained.

# observer/views.py (pseudo-code, not actual code)
from django.shortcuts import render
from django.contrib.admin.views.decorators import staff_member_required

@staff_member_required
def observer_management_view(request):
    # ... observer management logic ...
    return render(request, 'admin/observer_management.html', {})
Enter fullscreen mode Exit fullscreen mode

As you can see above, it had the staff_member_required decorator, meaning it was accessible to anyone with admin privileges, regardless of whether the chatbot was enabled. The problem was how to hide this.

The Cause

While I had modified the logic so the observer feature itself would be disabled based on chatbot usage, the 'Observer Management' tab in the admin page was managed by a separate URL pattern and view function. There was no logic to conditionally render this view function or hide the URL pattern itself.

The Solution

Ultimately, when disabling the observer feature, I changed the urls.py configuration to remove the URL pattern for accessing that tab.

# admin/urls.py (actual code)
from django.urls import path
from . import views
from observer import views as observer_views # views module from the observer app

# Logic to check if the chatbot is enabled (example)
def is_chatbot_enabled():
    # In reality, this would check a setting or the DB
    return False # Assuming it's currently disabled

urlpatterns = [
    path('dashboard/', views.dashboard_view, name='dashboard'),
    # ... other admin page URLs ...
]

# If the chatbot is disabled, do not add the observer management tab URL
if not is_chatbot_enabled():
    urlpatterns.append(
        path('observer-management/', observer_views.observer_management_view, name='observer_management')
    )
Enter fullscreen mode Exit fullscreen mode

This way, the URL pattern for the 'Observer Management' tab is dynamically added or excluded based on the return value of the is_chatbot_enabled() function.

The Result

  • The 'Observer Management' tab was completely removed from the admin page.
  • User confusion was reduced by preventing the exposure of unnecessary feature-related UI.
  • It contributed to reducing operational costs.

Summary — To Avoid the Same Pitfall

  • [ ] When disabling a feature, verify that all associated UI elements (menus, tabs, buttons, etc.) are also removed.
  • [ ] For pages accessed based on permissions, such as admin pages, consider logic that conditionally controls URL patterns or view rendering based on feature activation/deactivation.
  • [ ] To save costs, boldly disable unused features and remove any related traces.

Top comments (0)