def dashboard(user_url_segment=None):
    if user_url_segment is None:
        target_user = UserData.get_current_user_data()
    else:
        target_user = UserData.get_from_url_segment(user_url_segment)
    if target_user is None:
        template_values = {
            'target_user': user_url_segment,
        }
        return render_jinja_template("noprofile.html", template_values), 404

    if target_user.username != user_url_segment:
        return redirect('/dashboard/{0}'.format(target_user.username))

    # If looking at the current user's profile, hilight the users name in the
    # nav bar
    if target_user == UserData.get_current_user_data():
        return redirect('/'.format(target_user.username))
    else:
        active = None

    template_values = {
        'target_user': target_user,
    }
    return render_jinja_template("dashboard.html", template_values)
def profile(user_url_segment):
    target_user = UserData.get_from_url_segment(user_url_segment)
    if target_user is None:
        template_values = {
            'target_user': user_url_segment,
        }
        return render_jinja_template("noprofile.html", template_values), 404

    if target_user.username != user_url_segment:
        return redirect('/profile/{0}'.format(target_user.username))

    # If looking at the current user's profile, hilight the users name in the
    # nav bar
    if target_user == UserData.get_current_user_data():
        active = 'profile'
    else:
        active = None

    template_values = {
        'active_page': active,
        'target_user': target_user,
    }
    return render_jinja_template("profile.html", template_values)
        def wrapper(*args, **kwargs):
            current_user = UserData.get_current_user_data()
            if not current_user:
                template_values = {
                    u'message': u"Not logged in",
                    u'html_template': u"nologin.html",
                }
                return build_response(output_format, template_values)

            missing_perms = []
            if 'user_url_segment' in kwargs:
                other_user_url_segment = kwargs['user_url_segment']
            elif 'user_id' in kwargs:
                other_user_url_segment = kwargs['user_id']
            else:
                other_user_url_segment = None

            if other_user_url_segment:
                other_user = UserData.get_from_url_segment(other_user_url_segment)
            else:
                other_user = None

            for p in perms:
                if not check_perms(current_user, p, other_user):
                    missing_perms.append(p)

            template_values = {
                u'message': "Don't have permission",
                u'html_template': "nopermission.html",
                u'perms': missing_perms,
            }
            if len(missing_perms) > 0 and logic == 'and':
                return build_response(output_format, template_values)
            elif len(missing_perms) == len(perms) and logic == 'or':
                return build_response(output_format, template_values)

            return f(*args, **kwargs)