Instructs handler to listen to Django request and handle
        CategoryList editor requests (if any).

        :return: None on success otherwise and exception from SitecatsException family is raised.

def listen(self):
        """Instructs handler to listen to Django request and handle
        CategoryList editor requests (if any).

        :return: None on success otherwise and exception from SitecatsException family is raised.
        """
        requested_action = self._request.POST.get('category_action', False)

        if not requested_action:
            return None  # No action supplied. Pass.

        if requested_action not in self.KNOWN_ACTIONS:
            raise SitecatsSecurityException('Unknown `category_action` - `%s` - requested.')

        category_base_id = self._request.POST.get('category_base_id', False)
        if category_base_id == 'None':
            category_base_id = None
        else:
            category_base_id = int(category_base_id)
        if category_base_id not in self._lists.keys():
            raise SitecatsSecurityException('Unknown `category_base_id` - `%s` - requested.')

        category_list = self._lists[category_base_id]
        if category_list.editor is None:
            raise SitecatsSecurityException('Editor is disabled for `%s` category.' % category_list.alias)

        action_method = getattr(self, 'action_%s' % requested_action)

        try:
            return action_method(self._request, category_list)
        except SitecatsNewCategoryException as e:
            messages.error(self._request, e, extra_tags=self.error_messages_extra_tags, fail_silently=True)
            return None
        except SitecatsValidationError as e:
            messages.error(self._request, e.messages[0], extra_tags=self.error_messages_extra_tags, fail_silently=True)
            return None
        finally:
            self._request.POST = {}