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))
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")
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))
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}
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")
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}
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))
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))
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))
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))
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))
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):
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())
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()