import logging from django.contrib import messages from django.contrib.auth import login from django.http import HttpResponseRedirect from django.utils.translation import gettext as _ from django.views import generic from .. import models logger = logging.getLogger(__name__) class OneClickActionRunView(generic.DetailView): model = models.OneClickAction template_name = 'dav_events/oneclickaction.html' def get(self, request, *args, **kwargs): self.object = self.get_object() result = self.object.run() if 'login' in result: user = result['login'] login(self.request, user) logger.info('Logged in via OneClickAction: %s', user.username) messages.success(self.request, _('Benutzer angemeldet: %(username)s') % {'username': user.username}) if 'location' in result: return HttpResponseRedirect(result['location']) context = self.get_context_data(object=self.object) if 'context' in result: context.update(result['context']) return self.render_to_response(context)