def recoverlist_view(self, request, extra_context=None):
        # Check if user has change or add permissions for model
        if not self.has_change_permission(request) or not self.has_add_permission(request):  # pragma: no cover
            raise PermissionDenied
        model = self.model
        opts = model._meta
        deleted = self._order_version_queryset(self.revision_manager.get_deleted(self.model))
        # Get the site context.
        try:
            each_context = self.admin_site.each_context(request)
        except TypeError:  # Django <= 1.7 pragma: no cover
            each_context = self.admin_site.each_context()
        # Get the rest of the context.
        context = dict(
            each_context,
            opts = opts,
            app_label = opts.app_label,
            module_name = capfirst(opts.verbose_name),
            title = _("Recover deleted %(name)s") % {"name": force_text(opts.verbose_name_plural)},
            deleted = deleted,
        )
        context.update(extra_context or {})
        return render(request, self.recover_list_template or self._get_template_list("recover_list.html"), context)
Sends a KeyCode event to Google TV.
dataset/ETHPy150Open etianen/django-reversion/src/reversion/admin.py/VersionAdmin.recoverlist_view--crossover with--dataset/ETHPy150Open stevenle/googletv-anymote/googletv/__init__.py/AnymoteProtocol.keycode