Esempio n. 1
0
    def view(request, path):
        morepath_request = MorepathRequest(request.environ, app)
        # consume everything already seen by django
        for i in range(resolved_segment_count(request.path, path)):
            morepath_request.unconsumed.pop()
        morepath_request.make_body_seekable()
        response = app.publish(morepath_request)
        cookies = SimpleCookie()
        django_response = HttpResponse(
            response.body, status=response.status_code
        )
        for (header, value) in response.headerlist:
            if header.upper() == "SET-COOKIE":
                cookies.load(value)
            else:
                django_response[header] = value

        for cookie_name, cookie in cookies.items():
            cookie_attributes = {
                "key": cookie_name,
                "value": cookie.value,
                "expires": cookie["expires"],
                "path": cookie["path"],
                "domain": cookie["domain"],
            }
            if cookie["max-age"]:
                # Starting in Django 1.3 it performs arithmetic operations
                # with 'Max-Age'
                cookie_attributes["max_age"] = int(cookie["max-age"])

            django_response.set_cookie(**cookie_attributes)
        return django_response
def profile(context, request: morepath.Request):
    user = context.model
    has_photo = user.get_blob("profile-photo")
    return {
        "page_title":
        "Profile",
        "profile_photo":
        request.link(context, "+download?field=profile-photo")
        if has_photo else None,
        "forms": [
            {
                "form_title": "Personal Information",
                "form": attributes_form(user, request),
                "readonly": False,
                "form_data": user.data["xattrs"],
            },
            {
                "form_title": "User Information",
                "form": userinfo_form(request),
                "readonly": False,
                "form_data": user.data.as_dict(),
            },
            {
                "form_title": "Password",
                "form": password_form(request),
                "readonly": False,
            },
        ],
    }
Esempio n. 3
0
def profile(context, request: morepath.Request):
    user = context.model
    has_photo = user.get_blob('profile-photo')
    return {
        'page_title':
        'Profile',
        'profile_photo':
        request.link(context, '+download?field=profile-photo')
        if has_photo else None,
        'forms': [{
            'form_title': 'Personal Information',
            'form': attributes_form(user, request),
            'readonly': False,
            'form_data': user.data['xattrs']
        }, {
            'form_title': 'User Information',
            'form': userinfo_form(request),
            'readonly': False,
            'form_data': user.data.as_dict()
        }, {
            'form_title': 'Password',
            'form': password_form(request),
            'readonly': False,
        }]
    }
Esempio n. 4
0
def profile(context, request: morepath.Request):
    userid = request.identity.userid
    newreq = request.get_authn_request()
    usercol = get_user_collection(newreq)
    user = usercol.get_by_userid(userid)
    has_photo = user.get_blob('profile-photo')
    return {
        'page_title':
        'Profile',
        'profile_photo':
        newreq.link(user, '+blobs?field=profile-photo') if has_photo else None,
        'forms': [{
            'form_title': 'Personal Information',
            'form': attributes_form(user, request),
            'readonly': False,
            'form_data': user.data['xattrs']
        }, {
            'form_title': 'User Information',
            'form': userinfo_form(request),
            'readonly': False,
            'form_data': user.data.as_dict()
        }, {
            'form_title': 'Password',
            'form': password_form(request),
            'readonly': False,
        }]
    }
Esempio n. 5
0
    def redirect_to_firstlogin(request: morepath.Request):
        for path in EXCLUDE_PREFIXES:
            if request.path.startswith(path):
                return handler(request)

        for path in EXCLUDE_PATHS:
            if request.path == path:
                return handler(request)

        userid = request.identity.userid
        if userid:
            col = request.get_collection("morpfw.pas.user")
            userobj = col.get_by_userid(userid)
            if userobj and userobj["state"] == "new" and not request.path.startswith("/firstlogin"):
                resp = morepath.redirect(request.relative_url("/firstlogin"))
                resp.headers["Cache-Control"] = "no-store"
                return resp
        return handler(request)
Esempio n. 6
0
 def redirect_to_firstlogin(request: morepath.Request):
     if request.path.startswith('/__static__/'):
         return handler(request)
     if request.path == '/logout':
         return handler(request)
     userid = request.identity.userid
     if userid:
         col = get_user_collection(request)
         userobj = col.get_by_userid(userid)
         if userobj['state'] == 'new' and not request.path.startswith(
                 '/firstlogin'):
             resp = morepath.redirect(request.relative_url('/firstlogin'))
             resp.headers['Cache-Control'] = 'no-store'
             return resp
     return handler(request)
Esempio n. 7
0
    def render(content, request: morepath.Request):

        main_template = loader.load('master/main_template.pt', 'xml')
        load_template = functools.partial(loader.load, format='xml')
        context = resolve_model(request.copy(app=request.app))

        def _permits(permission, request=request, context=context):
            return permits(request, context, permission)

        variables = {
            'request': request,
            'context': context,
            'main_template': main_template,
            'app': request.app,
            'permits': _permits,
            'settings': request.app.settings,
            'load_template': load_template
        }
        variables.update(content or {})
        return original_render(template.render(**variables), request)
Esempio n. 8
0
def redirect_to_login(self, request: Request):
    if request.current_user:
        return self

    return redirect(
        request.link(Login(back_url=request.path_qs, from_redirect=1)))