Parent: [391aa9] (diff)

Download this file

user_main.py    107 lines (86 with data), 3.5 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
import logging
from pprint import pformat
import pkg_resources
from pylons import tmpl_context as c, app_globals as g
from pylons import request
from formencode import validators
from tg import expose, redirect, validate, response
from webob import exc
from allura import version
from allura.app import Application, SitemapEntry
from allura.lib import helpers as h
from allura.lib.helpers import DateTimeConverter
from allura.lib.security import require_access
from allura.model import User, Feed, ACE
from allura.controllers import BaseController
from allura.controllers.feed import FeedArgs, FeedController
from allura.lib.decorators import require_post
log = logging.getLogger(__name__)
class UserProfileApp(Application):
__version__ = version.__version__
installable = False
tool_label = 'Profile'
icons={
24:'images/home_24.png',
32:'images/home_32.png',
48:'images/home_48.png'
}
def __init__(self, user, config):
Application.__init__(self, user, config)
self.root = UserProfileController()
self.templates = pkg_resources.resource_filename(
'allura.ext.user_profile', 'templates')
@property
@h.exceptionless([], log)
def sitemap(self):
return [SitemapEntry('Profile', '.')]
def admin_menu(self):
return []
def main_menu(self):
return [SitemapEntry('Profile', '.')]
def is_visible_to(self, user):
# we don't work with user subprojects
return c.project.is_root
def install(self, project):
pr = c.user.project_role()
if pr:
self.config.acl = [
ACE.allow(pr._id, perm)
for perm in self.permissions ]
def uninstall(self, project): # pragma no cover
pass
class UserProfileController(BaseController, FeedController):
def _check_security(self):
require_access(c.project, 'read')
@expose('jinja:allura.ext.user_profile:templates/user_index.html')
def index(self, **kw):
user = c.project.user_project_of
if not user:
raise exc.HTTPNotFound()
return dict(user=user)
def get_feed(self, project, app, user):
"""Return a :class:`allura.controllers.feed.FeedArgs` object describing
the xml feed for this controller.
Overrides :meth:`allura.controllers.feed.FeedController.get_feed`.
"""
user = project.user_project_of
return FeedArgs(
{'author_link': user.url()},
'Recent posts by %s' % user.display_name,
project.url())