def get_filegrid_client_data(context, request, start, limit, sort_on, reverse): """ Gets the client data for the file grid. When used, the data needs to be injected to the templates:: head_data=convert_to_script(dict( filegrid = get_filegrid_client_data(context, request, start = 0, limit = 10, sort_on = 'modified_date', reverse = False, ), tags_field = get_tags_client_data(context, request), # ... data for more widgets # ... )) Or, returned to client in case of an ajax request. """ api = TemplateAPI(context, request, 'any_title') ##columns = request.params.get('columns', '').capitalize() == 'True' # Now get the data that goes with this, then adapt into FileInfo info = get_container_batch(context, request, batch_start=start, batch_size=limit, sort_index=sort_on, reverse=reverse, ) entries = [getMultiAdapter((item, request), IFileInfo) for item in info['entries']] records = [] for entry in entries: records.append([ '<img src="%s/images/%s" alt="icon" title="%s"/>' % ( api.static_url, entry.mimeinfo['small_icon_name'], entry.mimeinfo['title'], ), '%s<a href="%s" style="display: none;"/>' % ( entry.title, entry.url, ), entry.modified, ]) payload = dict( columns = grid_folder_columns, records = records, totalRecords = info['total'], sortColumn = sort_on, sortDirection = reverse and 'desc' or 'asc', ) return payload
def show_blog_view(context, request): if 'year' in request.GET and 'month' in request.GET: year = int(request.GET['year']) month = int(request.GET['month']) def filter_func(name, item): created = item.created return created.year == year and created.month == month dt = datetime.date(year, month, 1).strftime('%B %Y') page_title = 'Blog: %s' % dt else: filter_func = None page_title = 'Blog' api = TemplateAPI(context, request, page_title) actions = [] if has_permission('create', context, request): actions.append( ('Add Blog Entry', request.resource_url(context, 'add_blogentry.html')), ) batch = get_container_batch( context, request, filter_func=filter_func, interfaces=[IBlogEntry], sort_index='creation_date', reverse=True) # Unpack into data for the template entries = [] profiles = find_profiles(context) karldates = getUtility(IKarlDates) fmt0 = '<a href="%s#addcomment">Add a Comment</a>' fmt1 = '<a href="%s#comments">1 Comment</a>' fmt2 = '<a href="%s#comments">%i Comments</a>' for entry in batch['entries']: profile = profiles[entry.creator] byline_info = getMultiAdapter((entry, request), IBylineInfo) entry_url = resource_url(entry, request) # Get information about comments on this entry to display in # the last line of the entry comment_count = len(entry['comments']) if comment_count == 0: comments_blurb = fmt0 % entry_url elif comment_count == 1: comments_blurb = fmt1 % entry_url else: comments_blurb = fmt2 % (entry_url, comment_count) info = { 'title': entry.title, 'href': resource_url(entry, request), 'description': entry.description, 'creator_title': profile.title, 'creator_href': entry_url, 'long_date': karldates(entry.created, 'longform'), 'byline_info': byline_info, 'comments_blurb': comments_blurb, } entries.append(info) feed_url = "%satom.xml" % resource_url(context, request) workflow = get_workflow(IBlogEntry, 'security', context) if workflow is None: security_states = [] else: security_states = get_security_states(workflow, None, request) system_email_domain = get_setting(context, "system_email_domain") return dict( api=api, actions=actions, entries=entries, system_email_domain=system_email_domain, feed_url=feed_url, batch_info = batch, security_states=security_states, )
def show_blog_view(context, request): if 'year' in request.GET and 'month' in request.GET: year = int(request.GET['year']) month = int(request.GET['month']) def filter_func(name, item): created = item.created return created.year == year and created.month == month dt = datetime.date(year, month, 1).strftime('%B %Y') page_title = 'Blog: %s' % dt else: filter_func = None page_title = 'Blog' api = TemplateAPI(context, request, page_title) actions = [] if has_permission('create', context, request): actions.append(('Add Blog Entry', request.resource_url(context, 'add_blogentry.html')), ) batch = get_container_batch(context, request, filter_func=filter_func, interfaces=[IBlogEntry], sort_index='creation_date', reverse=True) # Unpack into data for the template entries = [] profiles = find_profiles(context) karldates = getUtility(IKarlDates) fmt0 = '<a href="%s#addcomment">Add a Comment</a>' fmt1 = '<a href="%s#comments">1 Comment</a>' fmt2 = '<a href="%s#comments">%i Comments</a>' for entry in batch['entries']: profile = profiles[entry.creator] byline_info = getMultiAdapter((entry, request), IBylineInfo) entry_url = resource_url(entry, request) # Get information about comments on this entry to display in # the last line of the entry comment_count = len(entry['comments']) if comment_count == 0: comments_blurb = fmt0 % entry_url elif comment_count == 1: comments_blurb = fmt1 % entry_url else: comments_blurb = fmt2 % (entry_url, comment_count) info = { 'title': entry.title, 'href': resource_url(entry, request), 'description': entry.description, 'creator_title': profile.title, 'creator_href': entry_url, 'long_date': karldates(entry.created, 'longform'), 'byline_info': byline_info, 'comments_blurb': comments_blurb, } entries.append(info) feed_url = "%satom.xml" % resource_url(context, request) workflow = get_workflow(IBlogEntry, 'security', context) if workflow is None: security_states = [] else: security_states = get_security_states(workflow, None, request) system_email_domain = get_setting(context, "system_email_domain") return dict( api=api, actions=actions, entries=entries, system_email_domain=system_email_domain, feed_url=feed_url, batch_info=batch, security_states=security_states, )
def _callFUT(self, context, request, **kw): from karl.views.batch import get_container_batch return get_container_batch(context, request, **kw)