src/ztfy/myams/page.py
changeset 82 f1b437b926fd
parent 21 68861235109e
equal deleted inserted replaced
81:a67eb3f6b789 82:f1b437b926fd
    13 from z3c.template.interfaces import ILayoutTemplate
    13 from z3c.template.interfaces import ILayoutTemplate
    14 from zope.authentication.interfaces import IAuthentication
    14 from zope.authentication.interfaces import IAuthentication
    15 from zope.pagetemplate.interfaces import IPageTemplate
    15 from zope.pagetemplate.interfaces import IPageTemplate
    16 
    16 
    17 # import local interfaces
    17 # import local interfaces
       
    18 from zope.security.interfaces import IUnauthorized
    18 from ztfy.myams.interfaces import IInnerPage, IModalPage
    19 from ztfy.myams.interfaces import IInnerPage, IModalPage
    19 
    20 
    20 # import Zope3 packages
    21 # import Zope3 packages
    21 from z3c.template.template import getPageTemplate, getLayoutTemplate
    22 from z3c.template.template import getPageTemplate, getLayoutTemplate
    22 from zope.component import getMultiAdapter, getUtility
    23 from zope.component import getMultiAdapter, getUtility
   121 
   122 
   122     def __call__(self):
   123     def __call__(self):
   123         principal = self.request.principal
   124         principal = self.request.principal
   124         auth = getUtility(IAuthentication)
   125         auth = getUtility(IAuthentication)
   125         auth.unauthorized(principal.id, self.request)
   126         auth.unauthorized(principal.id, self.request)
       
   127         try:
       
   128             context = self.context.args[0]
       
   129         except:
       
   130             context = self.context
   126         self.request.response.setStatus(200)
   131         self.request.response.setStatus(200)
   127         parent = getParent(self.context, IPersistent)
   132         if ('/@@ajax/' in self.request.getURL()) or (self.request.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'):
   128         writer = getUtility(IJSONWriter)
   133             # Send JSON result when using AJAX
   129         return writer.write({'status': 'modal',
   134             parent = getParent(context, IPersistent)
   130                              'location': 'login-dialog.html?came_from=%s' % absoluteURL(parent, self.request)})
   135             writer = getUtility(IJSONWriter)
       
   136             return writer.write({'status': 'modal',
       
   137                                  'location': 'login-dialog.html?came_from=%s' % absoluteURL(parent, self.request)})
       
   138         else:
       
   139             # else do a simple redirect...
       
   140             self.request.response.redirect('login.html?came_from=%s' % absoluteURL(context, self.request))