Files
django-dav-events/dav_events/views/actions.py

35 lines
1.1 KiB
Python

import logging
from django.contrib import messages
from django.contrib.auth import login
from django.http import HttpResponseRedirect
from django.utils.translation import ugettext 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,
_(u'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)