This calls ExtraContentMixin.get_context_data() which tries to call super(ExtraContextMixin, self)get_context_data(). This method does not exist.

You have to call the signal directly:
```python
    def extra_context(self):
        context = {}
        template_manipulation.send(
            sender=self.__class__, request=self.request, context=context)
        return context
```