Exemplo n.º 1
0
def show_members_view(context, request):
    """Default view of community members (with/without pictures)."""

    page_title = 'Community Members'
    api = TemplateAPI(context, request, page_title)

    # Filter the actions based on permission in the **community**
    community = find_interface(context, ICommunity)
    actions = _get_manage_actions(community, request)

    # Did we get the "show pictures" flag?
    list_view = request.view_name == 'list_view.html'

    pictures_href = request.resource_url(context)
    list_href = request.resource_url(context, 'list_view.html')
    submenu = [
        {'label': 'Show Pictures',
         'href': pictures_href, 'make_link': list_view},
        {'label': 'Hide Pictures',
         'href': list_href, 'make_link': not(list_view)},
        ]

    profiles = find_profiles(context)
    member_batch = _member_profile_batch(context, request)
    member_entries = member_batch['entries']
    moderator_names = community.moderator_names

    member_info = []
    for i in range(len(member_entries)):
        derived = {}
        entry = member_entries[i]
        derived['title'] = entry.title
        derived['href'] = resource_url(entry, request)
        derived['position'] = entry.position
        derived['organization'] = entry.organization
        derived['phone'] = entry.phone
        derived['department'] = entry.department
        derived['email'] = entry.email
        derived['city'] = entry.location

        photo = entry.get('photo')
        if photo is not None:
            derived['photo_url'] = thumb_url(photo, request,
                                             PROFILE_THUMB_SIZE)
        else:
            derived['photo_url'] = api.static_url + "/images/defaultUser.gif"

        derived['is_moderator'] = entry.__name__ in moderator_names
        # Chameleon's tal:repeat and repeat variable support for
        # things like index is pretty iffy.  Fix the entry info to
        # supply the CSS class information.
        derived['css_class'] = 'photoProfile'
        if derived['is_moderator']:
            derived['css_class'] += ' moderator'
        member_info.append(derived)

    moderator_info = []
    profiles = find_profiles(context)
    for moderator_name in moderator_names:
        if moderator_name in profiles:
            derived = {}
            profile = profiles[moderator_name]
            if not has_permission('view', profile, request):
                continue
            derived['title'] = profile.title
            derived['href'] = resource_url(profile, request)
            moderator_info.append(derived)

    renderer_data = dict(
        api=api,
        actions=actions,
        submenu=submenu,
        moderators=moderator_info,
        members=member_info,
        batch_info=member_batch,
        hide_pictures=list_view)

    if not list_view:
        renderer_data['rows'] = profile_photo_rows(
            member_batch['entries'], request, api)

    return renderer_data
Exemplo n.º 2
0
Arquivo: members.py Projeto: zagy/karl
def show_members_view(context, request):
    """Default view of community members (with/without pictures)."""

    layout = request.layout_manager.layout
    layout.page_title = 'Community Members'
    api = TemplateAPI(context, request, layout.page_title)

    # Filter the actions based on permission in the **community**
    community = find_interface(context, ICommunity)
    actions = _get_manage_actions(community, request)
    actions_menu = _get_actions_menu(context, request, actions)

    # Did we get the "show pictures" flag?
    list_view = request.view_name == 'list_view.html'
    pictures_href = request.resource_url(context)
    list_href = request.resource_url(context, 'list_view.html')
    submenu = [  # deprecated in ux2
        {
            'label': 'Show Pictures',
            'href': pictures_href,
            'make_link': list_view
        },
        {
            'label': 'Hide Pictures',
            'href': list_href,
            'make_link': not (list_view)
        },
    ]

    formats = [  # ux2
        {
            'name': 'tabular',
            'selected': list_view,
            'bs-icon': 'icon-th-list',
            'url': list_href,
            'title': 'Tabular View',
            'description': 'Show table'
        }, {
            'name': 'picture',
            'selected': not list_view,
            'bs-icon': 'icon-th',
            'url': pictures_href,
            'title': 'Picture View',
            'description': 'Show pictures'
        }
    ]

    profiles = find_profiles(context)
    member_batch = _member_profile_batch(context, request)
    member_entries = member_batch['entries']
    moderator_names = community.moderator_names

    member_info = []
    for i in range(len(member_entries)):
        derived = {}
        entry = member_entries[i]
        derived['title'] = entry.title
        derived['href'] = resource_url(entry, request)
        derived['position'] = entry.position
        derived['organization'] = entry.organization
        derived['phone'] = entry.phone
        derived['department'] = entry.department
        derived['email'] = entry.email
        derived['city'] = entry.location

        photo = entry.get('photo')
        if photo is not None:
            derived['photo_url'] = thumb_url(photo, request,
                                             PROFILE_THUMB_SIZE)
        else:
            derived['photo_url'] = api.static_url + "/images/defaultUser.gif"

        derived['is_moderator'] = entry.__name__ in moderator_names
        # Chameleon's tal:repeat and repeat variable support for
        # things like index is pretty iffy.  Fix the entry info to
        # supply the CSS class information.
        derived['css_class'] = 'photoProfile'
        if derived['is_moderator']:
            derived['css_class'] += ' moderator'
        member_info.append(derived)

    moderator_info = []
    profiles = find_profiles(context)
    for moderator_name in moderator_names:
        if moderator_name in profiles:
            derived = {}
            profile = profiles[moderator_name]
            if not has_permission('view', profile, request):
                continue
            derived['title'] = profile.title
            derived['href'] = resource_url(profile, request)
            moderator_info.append(derived)

    renderer_data = dict(
        api=api,  # deprecated in ux2
        actions=actions,  # deprecated in ux2
        actions_menu=actions_menu,
        submenu=submenu,  # deprecated in ux2
        formats=formats,
        moderators=moderator_info,  # deprecated in ux2
        members=member_info,  # deprecated in ux2
        batch=member_batch,
        batch_info=member_batch,  # deprecated in ux2
        hide_pictures=list_view)  # deprecated in ux2

    if not list_view:
        renderer_data['rows'] = profile_photo_rows(member_batch['entries'],
                                                   request, api)

    return renderer_data
Exemplo n.º 3
0
 def _callFUT(self, entries, request, api):
     from karl.views.peopledirectory import profile_photo_rows
     return profile_photo_rows(entries, request, api)