Beispiel #1
0
def resources(request, site, tag_string='', type='other', template_name='plus_explore/explore_filtered.html', current_app='plus_groups'):
    form = SearchForm(request.GET)
    if form.is_valid():
        search, order = set_search_order(request, form)
    else:
        search = ''
        search_type = ''
 

    head_title = _('Resources')
    type_name = "Resource"

    # hmm shouldn't we just use current app to determine search_types?        
    search_types = narrow_search_types(type_name) 
    side_search = side_search_args('resources', search_types[0][1][2])

    listing_args_dict = listing_args('resources', 'resources_tag', tag_string=tag_string, search_terms=search, multitabbed=False, order=order, template_base="site_base.html", search_type_label=head_title)
    search_dict = plus_search(listing_args_dict['tag_filter'], search, search_types, order)
    
    return render_to_response(template_name, 
                              {'head_title':head_title,
                               'search':search_dict,
                               'listing_args':listing_args_dict,
                               'search_args':side_search,
                               "obj_type": type_name,
                               'intro_box_override':True}, 
                              context_instance=RequestContext(request,
                                                              current_app=current_app))
Beispiel #2
0
def rss_explore(request, tag_string, s_type=None):
    from apps.plus_lib.redis_lib import redis
    feed_type = 'rss2.0'  # XXX decide how to send this as parameter to link
    key = "feed:" + feed_type + ":" + tag_string
    if redis.exists(key):
        return HttpResponse(redis.get(key), mimetype="application/xhtml+xml")
    else:
        feed = Rss201rev2Feed(
            title=settings.SITE_NAME + " : " + tag_string,
            link='http://' + settings.DOMAIN_NAME +
            reverse('explore_filtered_feed', args=(tag_string, )),
            description=_("Items tagged with %s" % tag_string))
        # XXX decide how to parameterize which feed type, title, description, link

        form = SearchForm(request.GET)
        if form.is_valid():
            search, order = set_search_order(request, form)
        else:
            search = ''
            order = ''

        side_search = side_search_args('', '')

        if s_type:
            search_types = narrow_search_types(s_type)
        else:
            search_types = get_search_types()

        head_title = settings.EXPLORE_NAME
        listing_args_dict = listing_args('explore',
                                         'explore_filtered',
                                         tag_string=tag_string,
                                         search_terms=search,
                                         multitabbed=True,
                                         order=order,
                                         template_base="site_base.html",
                                         search_type_label=head_title)
        search_dict = plus_search(listing_args_dict['tag_filter'], search,
                                  search_types, order)

        for item_ref in search_dict['All']:
            item = item_ref.obj
            item = secure_wrap(item, request.user)

            try:
                feed.add_item(title=item.get_display_name(),
                              link=item.get_url(),
                              description=item.get_description(),
                              author_name=item.get_author_name(),
                              author_copyright=item.get_author_copyright(),
                              pubdate=item.get_created_date(),
                              **(item.get_feed_extras()))
            except PlusPermissionsNoAccessException, e:
                pass

        feed_string = feed.writeString('utf-8')
        # uncomment the following when we start to cache
        #redis.set(key,feed_string)
        #redis.expire(key,60*60*1) # sets expire every 1 hour
        return HttpResponse(feed_string, mimetype="application/xhtml+xml")
Beispiel #3
0
def filter(request,
           tag_string,
           template_name='plus_explore/explore_filtered.html'):
    """ this should be integrated with index into a single method - probably
    """
    form = SearchForm(request.GET)
    if form.is_valid():
        search, order = set_search_order(request, form)
    else:
        search = ''
        order = ''

    side_search = side_search_args('', '')
    search_types = get_search_types()
    head_title = settings.EXPLORE_NAME
    listing_args_dict = listing_args('explore',
                                     'explore_filtered',
                                     tag_string=tag_string,
                                     search_terms=search,
                                     multitabbed=True,
                                     order=order,
                                     template_base="site_base.html",
                                     search_type_label=head_title)
    search_dict = plus_search(listing_args_dict['tag_filter'], search,
                              search_types, order)

    return render_to_response(template_name, {
        'head_title': head_title,
        'listing_args': listing_args_dict,
        'search': search_dict,
        'search_args': side_search,
    },
                              context_instance=RequestContext(request))
Beispiel #4
0
def group_resources(request, group, tag_string, search, order, current_app, **kwargs):
    resource_listings_args = listing_args(current_app + ':group_resources', current_app + ':group_resources_tag', 
                                          tag_string=tag_string, search_terms=search, multitabbed=False, 
                                          order=order, template_base='plus_lib/listing_frag.html', 
                                          template_base_div_id='resources', group_id=group.id)
    search_types = narrow_search_types('Resource')
    results = plus_search(resource_listings_args['tag_filter'], search, search_types, order, in_group=group.get_ref())
    return {'search':results, 'listing_args':resource_listings_args}
Beispiel #5
0
def rss_explore(request, tag_string, s_type=None) :
    from apps.plus_lib.redis_lib import redis
    feed_type = 'rss2.0' # XXX decide how to send this as parameter to link
    key = "feed:"+feed_type+":"+tag_string
    if redis.exists(key) :
        return HttpResponse(redis.get(key),mimetype="application/xhtml+xml")
    else :
        feed = Rss201rev2Feed(title=settings.SITE_NAME+" : "+tag_string,
                              link='http://'+settings.DOMAIN_NAME+reverse('explore_filtered_feed',args=(tag_string,)),
                              description=_("Items tagged with %s" % tag_string) )
        # XXX decide how to parameterize which feed type, title, description, link

        form = SearchForm(request.GET)
        if form.is_valid():
            search, order = set_search_order(request, form)
        else:
            search = ''
            order = ''

        side_search = side_search_args('', '')

        if s_type :
            search_types = narrow_search_types(s_type)
        else :
            search_types = get_search_types()

        head_title = settings.EXPLORE_NAME
        listing_args_dict = listing_args('explore', 'explore_filtered', tag_string=tag_string, search_terms=search, multitabbed=True, order=order, template_base="site_base.html", search_type_label=head_title)
        search_dict = plus_search(listing_args_dict['tag_filter'], search, search_types, order)

        for item_ref in search_dict['All']:
            item = item_ref.obj
            item=secure_wrap(item,request.user)

            try :
                feed.add_item(title=item.get_display_name(), 
                          link=item.get_url(), 
                          description=item.get_description(),
                          author_name=item.get_author_name(),
                          author_copyright=item.get_author_copyright(),
                          pubdate=item.get_created_date(),
                          **(item.get_feed_extras())
                          )
            except PlusPermissionsNoAccessException, e :
                pass


        feed_string = feed.writeString('utf-8')
        # uncomment the following when we start to cache
        #redis.set(key,feed_string)
        #redis.expire(key,60*60*1) # sets expire every 1 hour
        return HttpResponse(feed_string, mimetype="application/xhtml+xml")
Beispiel #6
0
    def group_members(request, group, tag_string, search, order, current_app, **kwargs):
        member_listings_args = listing_args(current_app + ':group_%s'%member_or_host, 
                                            current_app + ':group_%s_tag'%member_or_host, 
                                            tag_string=tag_string, search_terms=search, multitabbed=False, 
                                            order=order, template_base='plus_lib/listing_frag.html', 
                                            template_base_div_id=member_or_host, group_id=group.id)

        search_types = narrow_search_types('Profile')
        member_profile_ids=make_profile_id_list(group)
        results = plus_search(member_listings_args['tag_filter'], search, search_types, order, 
                              extra_filter={'id__in':member_profile_ids})

        return {'search':results, 'listing_args':member_listings_args}
Beispiel #7
0
def filter(request, tag_string, template_name='plus_explore/explore_filtered.html'):
    """ this should be integrated with index into a single method - probably
    """
    form = SearchForm(request.GET)
    if form.is_valid():
        search, order = set_search_order(request, form)
    else:
        search = ''
        order = ''

    side_search = side_search_args('', '')
    search_types = get_search_types()
    head_title = settings.EXPLORE_NAME
    listing_args_dict = listing_args('explore', 'explore_filtered', tag_string=tag_string, search_terms=search, multitabbed=True, order=order, template_base="site_base.html", search_type_label=head_title)
    search_dict = plus_search(listing_args_dict['tag_filter'], search, search_types, order)
    
    return render_to_response(template_name, {'head_title':head_title, 
                                              'listing_args':listing_args_dict,
                                              'search':search_dict,
                                              'search_args':side_search,}, context_instance=RequestContext(request))
Beispiel #8
0
def resources(request,
              site,
              tag_string='',
              type='other',
              template_name='plus_explore/explore_filtered.html',
              current_app='plus_groups'):
    form = SearchForm(request.GET)
    if form.is_valid():
        search, order = set_search_order(request, form)
    else:
        search = ''
        search_type = ''

    head_title = _('Resources')
    type_name = "Resource"

    # hmm shouldn't we just use current app to determine search_types?
    search_types = narrow_search_types(type_name)
    side_search = side_search_args('resources', search_types[0][1][2])

    listing_args_dict = listing_args('resources',
                                     'resources_tag',
                                     tag_string=tag_string,
                                     search_terms=search,
                                     multitabbed=False,
                                     order=order,
                                     template_base="site_base.html",
                                     search_type_label=head_title)
    search_dict = plus_search(listing_args_dict['tag_filter'], search,
                              search_types, order)

    return render_to_response(template_name, {
        'head_title': head_title,
        'search': search_dict,
        'listing_args': listing_args_dict,
        'search_args': side_search,
        "obj_type": type_name,
        'intro_box_override': True
    },
                              context_instance=RequestContext(
                                  request, current_app=current_app))
Beispiel #9
0
def profiles(request, tag_string='', template_name="plus_explore/explore_filtered.html"):
    form = SearchForm(request.GET)
    if form.is_valid():
        search, order = set_search_order(request, form)
    else:
        search = ''
        order = ''

    search_types = narrow_search_types()
    side_search = side_search_args('profile_list', search_types[0][1][2])

    head_title = _('Members')
    listing_args_dict = listing_args('profile_list', 'profile_list_tag', tag_string=tag_string, search_terms=search, multitabbed=False, order=order, template_base="site_base.html", search_type_label=head_title)
    search_dict = plus_search(listing_args_dict['tag_filter'], search, search_types, order)

    #users = users.filter(~Q(username='******')).filter(~Q(username='******')).filter(~Q(username='******'))
    return render_to_response(template_name, {'head_title':head_title, 
                                              'listing_args':listing_args_dict,
                                              'search_args':side_search,
                                              'search':search_dict,
                                              'intro_box_override':True}, context_instance=RequestContext(request))
Beispiel #10
0
def view_wiki_page(request, group, page_name, template_name="plus_wiki/wiki.html", current_app='plus_groups', **kwargs):

    if not group :
        raise Http404(_('This group does not exist'))
    try:
        obj = WikiPage.objects.plus_get(request.user, name=page_name, in_agent=group.get_ref())
    except WikiPage.DoesNotExist:
        raise Http404

    if obj.stub :
        # we don't want to show the wikipage at this point, but what do we do instead?
        request.user.message_set.create(message=_('The page you tried to visit has not yet been published by the creator.')%{})
        return HttpResponseRedirect(reverse(current_app + ':group', args=[group.id]))
        
    version_list = Version.objects.get_for_object(obj._inner)
    try:
        version = Version.objects.get_for_date(obj._inner, datetime.now())
    except Version.DoesNotExist :
        # XXX this isn't a solution ... we need to know WHY the version doesn't exist, 
        # but will hide the error page from the user
        raise Http404

    contributors = get_contributors(request.user, obj)
    contributors = [TemplateSecureWrapper(contributor) for contributor in contributors]
    can_comment = False
    try:
        obj.comment
        can_comment = True
    except :
        pass # no permission
    try:
        obj.get_all_sliders
        perms_bool = True
    except PlusPermissionsNoAccessException:
        perms_bool = False
        
        
    edit = has_access(request.user, obj, 'WikiPage.Editor')

    group_id = obj.get_inner().in_agent.obj.id 
    group_display_name = obj.get_inner().in_agent.obj.get_display_name()
    created_by = obj.get_inner().created_by
    # get this here because if we find ourselves on a page without access to group,
    # getting the obj.in_agent.id in the template blows up


    return render_to_response(template_name, {
            'page':TemplateSecureWrapper(obj), 
            'group_id':group_id,
            'group_display_name':group_display_name,
            'created_by':created_by,
            'version':version, 
            'contributors':contributors,
            'can_comment':can_comment,
            'version_list':version_list,
            'tags': get_tags_for_object(obj, request.user),
            'permissions':perms_bool,
            'can_edit': edit,
            'comparable':version_list.count()>1,
           
            'pages_listings_args':listing_args('home', 'home', ''),

            }, context_instance=RequestContext(request, current_app=current_app))
Beispiel #11
0
def view_wiki_page(request,
                   group,
                   page_name,
                   template_name="plus_wiki/wiki.html",
                   current_app='plus_groups',
                   **kwargs):

    if not group:
        raise Http404(_('This group does not exist'))
    try:
        obj = WikiPage.objects.plus_get(request.user,
                                        name=page_name,
                                        in_agent=group.get_ref())
    except WikiPage.DoesNotExist:
        raise Http404

    if obj.stub:
        # we don't want to show the wikipage at this point, but what do we do instead?
        request.user.message_set.create(message=_(
            'The page you tried to visit has not yet been published by the creator.'
        ) % {})
        return HttpResponseRedirect(
            reverse(current_app + ':group', args=[group.id]))

    version_list = Version.objects.get_for_object(obj._inner)
    try:
        version = Version.objects.get_for_date(obj._inner, datetime.now())
    except Version.DoesNotExist:
        # XXX this isn't a solution ... we need to know WHY the version doesn't exist,
        # but will hide the error page from the user
        raise Http404

    contributors = get_contributors(request.user, obj)
    contributors = [
        TemplateSecureWrapper(contributor) for contributor in contributors
    ]
    can_comment = False
    try:
        obj.comment
        can_comment = True
    except:
        pass  # no permission
    try:
        obj.get_all_sliders
        perms_bool = True
    except PlusPermissionsNoAccessException:
        perms_bool = False

    edit = has_access(request.user, obj, 'WikiPage.Editor')

    group_id = obj.get_inner().in_agent.obj.id
    group_display_name = obj.get_inner().in_agent.obj.get_display_name()
    created_by = obj.get_inner().created_by
    # get this here because if we find ourselves on a page without access to group,
    # getting the obj.in_agent.id in the template blows up

    return render_to_response(
        template_name, {
            'page': TemplateSecureWrapper(obj),
            'group_id': group_id,
            'group_display_name': group_display_name,
            'created_by': created_by,
            'version': version,
            'contributors': contributors,
            'can_comment': can_comment,
            'version_list': version_list,
            'tags': get_tags_for_object(obj, request.user),
            'permissions': perms_bool,
            'can_edit': edit,
            'comparable': version_list.count() > 1,
            'pages_listings_args': listing_args('home', 'home', ''),
        },
        context_instance=RequestContext(request, current_app=current_app))
Beispiel #12
0
    return render_to_response(
        template_name,
        {
            'upload': TemplateSecureWrapper(secure_upload),
            'resource': TemplateSecureWrapper(
                secure_upload
            ),  # let's us use resource_common included template
            'data': form.data,
            'errors': form.errors,
            'form_action': '',
            'form_encoding': 'enctype=multipart/form-data',
            'permissions': perms_bool,
            'tags': tags,
            'pages':
            [p.get_ref() for p in group.get_resources_of_class(WikiPage)],
            'pages_listings_args': listing_args('home', 'home', '')
        },
        context_instance=RequestContext(request, current_app=current_app))


#'group_permissions_prototype': group.get_ref().permission_prototype


@secure_resource(TgGroup)
def view_resource(request,
                  group,
                  resource_name,
                  template_name="plus_resources/view.html",
                  current_app='plus_groups',
                  **kwargs):
Beispiel #13
0
        form.data['title'] = secure_upload.title
        form.data['name'] = secure_upload.name
    
    tags = get_tags_for_object(secure_upload, request.user)

    return render_to_response(template_name, {
        'upload': TemplateSecureWrapper(secure_upload),
        'resource':TemplateSecureWrapper(secure_upload), # let's us use resource_common included template
        'data' : form.data,
        'errors': form.errors,
        'form_action':'',
        'form_encoding':'enctype=multipart/form-data',
        'permissions':perms_bool,
        'tags':tags,
        'pages':[p.get_ref() for p in group.get_resources_of_class(WikiPage)],
        'pages_listings_args':listing_args('home', 'home', '')
        
    }, context_instance=RequestContext(request, current_app=current_app))
#'group_permissions_prototype': group.get_ref().permission_prototype


@secure_resource(TgGroup)
def view_resource(request, group, resource_name, template_name="plus_resources/view.html",
                   current_app='plus_groups', **kwargs):


    if not group :
        raise Http404(_('This group does not exist'))

    try:
        obj = Resource.objects.plus_get(request.user, name=resource_name, in_agent=group.get_ref())
Beispiel #14
0
        perms_bool = True
    except PlusPermissionsNoAccessException:
        perms_bool = False

    if kwargs['type'] == 'hub':
        type_name = hub_name()
    else:
        type_name = "Group"

    search_types = narrow_search_types(type_name)
    side_search = side_search_args(current_app + ':groups', search_types[0][1][2])

    search = request.GET.get('search', '')
    order = request.GET.get('order', '')
    resource_search = resources(group=group, search=search, order=order)
    resource_listing_args = listing_args(current_app + ':group_resources', current_app + ':group_resources_tag', tag_string='', search_terms=search, multitabbed=False, order=order, template_base='plus_lib/listing_frag.html', search_type_label='resources')
    resource_listing_args['group_id'] = group.id

    ##############Here we should use the "plus_search" function from plus_explore as above########

    member_search = a_member_search(group=group, search=search, order=order, 
                                    member_profile_ids=[x.get_profile().get_ref().id for x in group.users.all()])
    host_search = a_member_search(group=group.get_admin_group(), search=search, order=order, 
                                  member_profile_ids=[x.get_profile().get_ref().id for x in group.get_admin_group().users.all()])
    member_listing_args = listing_args(current_app+':group_members', current_app+':group_members_tag', tag_string='', search_terms=search, multitabbed=False, order=order, template_base='plus_lib/listing_frag.html', search_type_label='members', group_id=group.id)

    host_listing_args = listing_args(current_app+':group_hosts', current_app+':group_hosts_tag', tag_string='', search_terms=search, multitabbed=False, order=order, template_base='plus_lib/listing_frag.html', search_type_label='hosts', group_id=group.id)
    member_count = group.users.all().count()
    host_count = group.get_admin_group().users.all().count()