0
votes

I am getting ValueError while deleting a user

Error -

ValueError at /employee/delete/31/

The view apps.employee.views.EmployeeDeleteView didn't return an HttpResponse object. It returned None instead.

class EmployeeDeleteView(LoginRequiredMixin, generic.DeleteView):
    model = User
    template_name = 'employee/employee_confirm_delete.html'
    context_object_name='employees'

    def get(self, request, *args, **kwargs):
        # Tab Opts Checking
        if request.user.userprofile.user_company.company_tab_opts:
            return redirect('admin_employee')

    def delete(self, request, *args, **kwargs):
        self.object = self.get_object()
        self.object.userprofile.soft_delete()
        messages.success(request, 'Employee Deleted Successfully.')
        return HttpResponseRedirect(reverse('admin_employee'))

This is the traceback of the error

Internal Server Error: /employee/delete/31/
Traceback (most recent call last):
  File "/home/.virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/.virtualenvs/apollo_django-njoxc1BQ/lib/python3.5/site-packages/django/core/handlers/base.py", line 137, in _get_response
    "returned None instead." % (callback.__module__, view_name)
ValueError: The view apps.employee.views.EmployeeDeleteView didn't return an HttpResponse object. It returned None instead.
1
Seems like in your get method you return redirect after if condition. But if your if return False your get method returns None.Sergey Pugach
you need to return something if your IF condition in get method is falserahul.m
Oh i got your point. I have removed the get method and put the if condition in delete method. Then it wroking. Thank you for your comment. But i don't know is it right approachHuzaif Sayyed

1 Answers

0
votes

Here what i did. But don't know is it right approach

class EmployeeDeleteView(LoginRequiredMixin, generic.DeleteView):
    model = User
    template_name = 'employee/employee_confirm_delete.html'
    context_object_name='employees'


    def delete(self, request, *args, **kwargs):
        # Tab Opts Checking
        if request.user.userprofile.user_company.company_tab_opts:
            return redirect('admin_employee')
        self.object = self.get_object()
        self.object.userprofile.soft_delete()
        messages.success(request, 'Employee Deleted Successfully.')
        return HttpResponseRedirect(reverse('admin_employee'))