예제 #1
0
    def decorator(fn):
        def params(request, id, slug=None):
            user = get_object_or_404(User, id=id)
            if private and not (user == request.user
                                or request.user.is_superuser):
                raise ReturnImediatelyException(
                    HttpResponseUnauthorized(request))

            if render_to and (not render_to(user)):
                raise ReturnImediatelyException(
                    HttpResponseRedirect(user.get_profile_url()))

            return [request, user], {}

        decorated = decorate.params.withfn(params)(fn)

        def result(context, request, user):
            try:
                user.username = user.username.decode("utf8")
            except Exception:
                pass
            rev_page_title = user.username + " - " + tab_description

            context.update({
                "tab":
                "users",
                "active_tab":
                tab_name,
                "tab_description":
                tab_description,
                "page_title":
                rev_page_title,
                "can_view_private": (user == request.user)
                or request.user.is_superuser
            })
            return render_to_response(template,
                                      context,
                                      context_instance=RequestContext(request))

        decorated = decorate.result.withfn(result,
                                           needs_params=True)(decorated)

        if tabbed:

            def url_getter(vu):
                try:
                    return reverse(fn.__name__,
                                   kwargs={
                                       'id': vu.id,
                                       'slug': slugify(vu.username)
                                   })
                except NoReverseMatch:
                    return reverse(fn.__name__, kwargs={'id': vu.id})

            ui.register(
                ui.PROFILE_TABS,
                ui.ProfileTab(tab_name, tab_title, tab_description, url_getter,
                              private, render_to, weight))

        return decorated
예제 #2
0
    def decorator(fn):
        def params(request, id=None, slug=None):
            # Get the user object by id if the id parameter has been passed
            if id is not None:
                user = get_object_or_404(User, id=id)
            # ...or by slug if the slug has been given
            elif slug is not None:
                try:
                    user = User.objects.get(username__iexact=slug)
                except User.DoesNotExist:
                    raise Http404

            if private and not (user == request.user.user or request.user.is_superuser):
                raise ReturnImediatelyException(HttpResponseUnauthorized(request))

            if render_to and (not render_to(user)):
                raise ReturnImediatelyException(HttpResponseRedirect(user.get_profile_url()))
            return [request, user], {'slug': slug, }

        decorated = decorate.params.withfn(params)(fn)

        def result(context_or_response, request, user, **kwargs):
            rev_page_title = smart_unicode(user.username) + " - " + tab_description

            # Check whether the return type of the decorated function is a context or Http Response
            if isinstance(context_or_response, HttpResponse):
                response = context_or_response

                # If it is a response -- show it
                return response
            else:
                # ...if it is a context move forward, update it and render it to response
                context = context_or_response

            context.update({
                "tab": "users",
                "active_tab": tab_name,
                "tab_description": tab_description,
                "page_title": rev_page_title,
                "can_view_private": (user == request.user) or request.user.is_superuser
            })
            return render_to_response(template, context, context_instance=RequestContext(request))

        decorated = decorate.result.withfn(result, needs_params=True)(decorated)

        if tabbed:
            def url_getter(vu):
                try:
                    return reverse(fn.__name__, kwargs={'id': vu.id, 'slug': slugify(smart_unicode(vu.username))})
                except NoReverseMatch:
                    try:
                        return reverse(fn.__name__, kwargs={'id': vu.id})
                    except NoReverseMatch:
                        return reverse(fn.__name__, kwargs={'slug': slugify(smart_unicode(vu.username))})

            ui.register(ui.PROFILE_TABS, ui.ProfileTab(
                tab_name, tab_title, tab_description, url_getter, private, render_to, weight
            ))

        return decorated
예제 #3
0
파일: decorators.py 프로젝트: ehudtal/osqa
    def decorator(func):        
        def decorated(context, request, *args, **kwargs):
            if request.user.is_authenticated():
                ONLINE_USERS[request.user] = datetime.now()

            # This makes this OSQA instance private so that only authenticated
            # users can see it
            else:
                return HttpResponseRedirect(reverse('auth_signin'))


            if isinstance(context, HttpResponse):
                return context

            if tab is not None:
                context['tab'] = tab

            return render_to_response(context.pop('template', template), context,
                                      context_instance=RequestContext(request))

        if tabbed and tab and tab_title:
            ui.register(ui.PAGE_TOP_TABS,
                        ui.PageTab(tab, tab_title, lambda: reverse(func.__name__), weight=weight))
            
        return decorate.result.withfn(decorated, needs_params=True)(func)
예제 #4
0
    def decorator(func):        
        def decorated(context, request, *args, **kwargs):
            if isinstance(context, HttpResponse):
                return context

            if tab is not None:
                context['tab'] = tab

            return render_to_response(context.pop('template', template), context,
                                      context_instance=RequestContext(request))

        if tabbed and tab and tab_title:
            ui.register(ui.PAGE_TOP_TABS,
                        ui.PageTab(tab, tab_title, lambda: reverse(func.__name__), weight=weight))
            
        return decorate.result.withfn(decorated, needs_params=True)(func)
예제 #5
0
파일: users.py 프로젝트: SwannieUK/OSQA
    def decorator(fn):
        def params(request, id=None, slug=None):
            # Get the user object by id if the id parameter has been passed
            if id is not None:
                user = get_object_or_404(User, id=id)
            # ...or by slug if the slug has been given
            elif slug is not None:
                user = get_object_or_404(User, username=slug)

            if private and not (user == request.user or request.user.is_superuser):
                raise ReturnImediatelyException(HttpResponseUnauthorized(request))

            if render_to and (not render_to(user)):
                raise ReturnImediatelyException(HttpResponseRedirect(user.get_profile_url()))

            return [request, user], {}

        decorated = decorate.params.withfn(params)(fn)

        def result(context, request, user):
            rev_page_title = smart_unicode(user.username) + " - " + tab_description

            context.update({
                "tab": "users",
                "active_tab" : tab_name,
                "tab_description" : tab_description,
                "page_title" : rev_page_title,
                "can_view_private": (user == request.user) or request.user.is_superuser
            })
            return render_to_response(template, context, context_instance=RequestContext(request))

        decorated = decorate.result.withfn(result, needs_params=True)(decorated)

        if tabbed:
            def url_getter(vu):
                try:
                    return reverse(fn.__name__, kwargs={'id': vu.id, 'slug': slugify(smart_unicode(vu.username))})
                except NoReverseMatch:
                    return reverse(fn.__name__, kwargs={'id': vu.id})

            ui.register(ui.PROFILE_TABS, ui.ProfileTab(
                tab_name, tab_title, tab_description,url_getter, private, render_to, weight
            ))

        return decorated
예제 #6
0
    def decorator(func):        
        def decorated(context, request, *args, **kwargs):
            if request.user.is_authenticated():
                ONLINE_USERS[request.user] = datetime.now()

            if isinstance(context, HttpResponse):
                return context

            if tab is not None:
                context['tab'] = tab

            return render_to_response(context.pop('template', template), context,
                                      context_instance=RequestContext(request))

        if tabbed and tab and tab_title:
            ui.register(ui.PAGE_TOP_TABS,
                        ui.PageTab(tab, tab_title, lambda: reverse(func.__name__), weight=weight))
            
        return decorate.result.withfn(decorated, needs_params=True)(func)
예제 #7
0
    def decorator(func):
        def decorated(context, request, *args, **kwargs):
            if request.user.is_authenticated():
                ONLINE_USERS[request.user] = datetime.now()

            if isinstance(context, HttpResponse):
                return context

            if tab is not None:
                context["tab"] = tab

            return render_to_response(
                context.pop("template", template), context, context_instance=RequestContext(request)
            )

        if tabbed and tab and tab_title:
            ui.register(ui.PAGE_TOP_TABS, ui.PageTab(tab, tab_title, lambda: reverse(func.__name__), weight=weight))

        return decorate.result.withfn(decorated, needs_params=True)(func)
예제 #8
0
        django_template_tags.append(m.__name__)
except:
    pass

ui.register(ui.HEADER_LINKS,
            ui.Link(_('faq'), ui.Url('faq'), weight=400, name='FAQ'),
            ui.Link(_('about'), ui.Url('about'), weight=300, name='ABOUT'),

            ui.Link(
                    text=lambda u, c: u.is_authenticated() and _('logout') or _('login'),
                    url=lambda u, c: u.is_authenticated() and reverse('logout') or reverse('auth_signin'),
                    weight=200, name='LOGIN/OUT'),

            ui.Link(
                    visibility=ui.Visibility.AUTHENTICATED,
                    text=lambda u, c: smart_unicode(u.username),
                    url=lambda u, c: u.get_profile_url(),
                    post_code=lambda u, c: get_score_badge(u),
                    weight=100, name='ACCOUNT'),

            ui.Link(
                    visibility=ui.Visibility.SUPERUSER,
                    text=_('administration'),
                    url=lambda u, c: reverse('admin_index'),
                    weight=0, name='ADMINISTRATION')

)

class SupportLink(ui.Link):
    def can_render(self, context):
        return bool(settings.SUPPORT_URL)
예제 #9
0
        django_template_tags.append(m.__name__)
except:
    pass

ui.register(ui.HEADER_LINKS,
            ui.Link(_('faq'), ui.Url('faq'), weight=400, name='FAQ'),
            ui.Link(_('about'), ui.Url('about'), weight=300, name='ABOUT'),

            ui.Link(
                    text=lambda u, c: u.is_authenticated() and _('logout') or _('login'),
                    url=lambda u, c: u.is_authenticated() and reverse('logout') or reverse('auth_signin'),
                    weight=200, name='LOGIN/OUT'),

            ui.Link(
                    visibility=ui.Visibility.AUTHENTICATED,
                    text=lambda u, c: smart_unicode(u.username),
                    url=lambda u, c: u.get_profile_url(),
                    post_code=lambda u, c: get_score_badge(u),
                    weight=100, name='ACCOUNT'),

            ui.Link(
                    visibility=ui.Visibility.SUPERUSER,
                    text=_('administration'),
                    url=lambda u, c: reverse('admin_index'),
                    weight=0, name='ADMINISTRATION')

)

class SupportLink(ui.Link):
    def can_render(self, context):
        return bool(settings.SUPPORT_URL)
예제 #10
0
파일: users.py 프로젝트: m10n/bestofever
    def decorator(fn):
        def params(request, id=None, slug=None):
            # Get the user object by id if the id parameter has been passed
            if id is not None:
                user = get_object_or_404(User, id=id)
            # ...or by slug if the slug has been given
            elif slug is not None:
                try:
                    user = User.objects.get(username__iexact=slug)
                except User.DoesNotExist:
                    raise Http404

            if private and not (user == request.user
                                or request.user.is_superuser):
                raise ReturnImediatelyException(
                    HttpResponseUnauthorized(request))

            if render_to and (not render_to(user)):
                raise ReturnImediatelyException(
                    HttpResponseRedirect(user.get_profile_url()))

            return [request, user], {
                'slug': slug,
            }

        decorated = decorate.params.withfn(params)(fn)

        def result(context_or_response, request, user, **kwargs):
            rev_page_title = smart_unicode(
                user.username) + " - " + tab_description

            # Check whether the return type of the decorated function is a context or Http Response
            if isinstance(context_or_response, HttpResponse):
                response = context_or_response

                # If it is a response -- show it
                return response
            else:
                # ...if it is a context move forward, update it and render it to response
                context = context_or_response

            context.update({
                "tab":
                "users",
                "active_tab":
                tab_name,
                "tab_description":
                tab_description,
                "page_title":
                rev_page_title,
                "can_view_private": (user == request.user)
                or request.user.is_superuser
            })
            return render_to_response(template,
                                      context,
                                      context_instance=RequestContext(request))

        decorated = decorate.result.withfn(result,
                                           needs_params=True)(decorated)

        if tabbed:

            def url_getter(vu):
                try:
                    return reverse(fn.__name__,
                                   kwargs={
                                       'id': vu.id,
                                       'slug':
                                       slugify(smart_unicode(vu.username))
                                   })
                except NoReverseMatch:
                    try:
                        return reverse(fn.__name__, kwargs={'id': vu.id})
                    except NoReverseMatch:
                        return reverse(fn.__name__,
                                       kwargs={
                                           'slug':
                                           slugify(smart_unicode(vu.username))
                                       })

            ui.register(
                ui.PROFILE_TABS,
                ui.ProfileTab(tab_name, tab_title, tab_description, url_getter,
                              private, render_to, weight))

        return decorated
예제 #11
0
ui.register(ui.HEADER_LINKS,
            ui.Link(_('FAQ'), ui.Url('faq'), weight=400),
#            ui.Link(_('About'), ui.Url('about'), weight=300), #Replaced with hard-code in header.html

            ui.Link(
                    text=lambda u, c: u.is_authenticated() and _('logout') or _('Login / Register'),
                    url=lambda u, c: u.is_authenticated() and reverse('logout') or reverse('auth_signin'),
                    weight=200),

            ui.Link(
                    visibility=ui.Visibility.AUTHENTICATED,
                    text=lambda u, c: u.username,
                    url=lambda u, c: u.get_profile_url(),
                    post_code=lambda u, c: get_score_badge(u),
                    weight=100),

            ui.Link(
                    visibility=ui.Visibility.EDUCATOR,
                    text=_('Dashboard'),
                    url=lambda u, c: reverse('user_cohorts', args=[u.id, u.username]),
                    weight=0),

            ui.Link(
                    visibility=ui.Visibility.SUPERUSER,
                    text=_('Administration'),
                    url=lambda u, c: reverse('admin_index'),
                    weight=0)

)
예제 #12
0
from forum.modules import ui
from django.utils.translation import ugettext as _

ui.register(
    ui.FOOTER_LINKS,
    ui.Link(_('volunteer'), '/volunteer'),
)

ui.register(
    ui.HEADER_LINKS,
    ui.Link(_('volunteer'), '/volunteer'),
)
예제 #13
0
파일: startup.py 프로젝트: nyamba/osqam
from forum.modules import ui
from django.utils.translation import ugettext as _


ui.register(ui.FOOTER_LINKS,
    ui.Link(_('volunteer'), '/volunteer'),
)

ui.register(ui.HEADER_LINKS,
    ui.Link(_('volunteer'), '/volunteer'),
)
예제 #14
0
from django.core.urlresolvers import reverse
from django.template.defaultfilters import slugify
from forum.templatetags.extra_tags import get_score_badge
from forum import settings


ui.register(
    ui.HEADER_LINKS,
    ui.Link(_("faq"), ui.Url("faq"), weight=400),
    ui.Link(_("about"), ui.Url("about"), weight=300),
    ui.Link(
        text=lambda u, c: u.is_authenticated() and _("logout") or _("login"),
        url=lambda u, c: u.is_authenticated() and reverse("logout") or reverse("auth_signin"),
        weight=200,
    ),
    ui.Link(
        visibility=ui.Visibility.AUTHENTICATED,
        text=lambda u, c: u.username,
        url=lambda u, c: u.get_profile_url(),
        post_code=lambda u, c: get_score_badge(u),
        weight=100,
    ),
    ui.Link(
        visibility=ui.Visibility.SUPERUSER, text=_("administration"), url=lambda u, c: reverse("admin_index"), weight=0
    ),
)


class SupportLink(ui.Link):
    def can_render(self, context):
        return bool(settings.SUPPORT_URL)