def get_counts(request, project, subproject): """View for work counts""" obj = get_subproject(request, project, subproject) if not can_view_reports(request.user, obj.project): raise PermissionDenied() form = ReportsForm(request.POST) if not form.is_valid(): return redirect(obj) data = generate_counts( obj, form.cleaned_data['start_date'], form.cleaned_data['end_date'], ) if form.cleaned_data['style'] == 'json': return HttpResponse(json.dumps(data), content_type='application/json') if form.cleaned_data['style'] == 'html': start = ('<table>\n<tr><th>Email</th><th>Name</th>' '<th>Words</th><th>Count</th></tr>') row_start = '<tr>' cell_format = u'<td>{0}</td>\n' row_end = '</tr>' mime = 'text/html' end = '</table>' else: heading = ' '.join(['=' * 25] * 4) start = '{0}\n{1:25} {2:25} {3:25} {4:25}\n{0}'.format( heading, 'Email', 'Name', 'Words', 'Count') row_start = '' cell_format = u'{0:25} ' row_end = '' mime = 'text/plain' end = heading result = [] result.append(start) for item in data: result.append(row_start) result.append(u'{0}{1}{2}{3}'.format( cell_format.format(item['name']), cell_format.format(item['email']), cell_format.format(item['words']), cell_format.format(item['count']), )) result.append(row_end) result.append(end) return HttpResponse( '\n'.join(result), content_type='{0}; charset=utf-8'.format(mime), )
def get_credits(request, project, subproject): """View for credits""" obj = get_subproject(request, project, subproject) if not can_view_reports(request.user, obj.project): raise PermissionDenied() form = ReportsForm(request.POST) if not form.is_valid(): return redirect(obj) data = generate_credits( obj, form.cleaned_data['start_date'], form.cleaned_data['end_date'], ) if form.cleaned_data['style'] == 'json': return JsonResponse(data=data, safe=False) if form.cleaned_data['style'] == 'html': start = '<table>' row_start = '<tr>' language_format = '<th>{0}</th>' translator_start = '<td><ul>' translator_format = '<li><a href="mailto:{0}">{1}</a></li>' translator_end = '</ul></td>' row_end = '</tr>' mime = 'text/html' end = '</table>' else: start = '' row_start = '' language_format = '* {0}\n' translator_start = '' translator_format = ' * {1} <{0}>' translator_end = '' row_end = '' mime = 'text/plain' end = '' result = [] result.append(start) for language in data: name, translators = language.popitem() result.append(row_start) result.append(language_format.format(name)) result.append(''.join(( translator_start, '\n'.join([translator_format.format(*t) for t in translators]), translator_end, ))) result.append(row_end) result.append(end) return HttpResponse( '\n'.join(result), content_type='{0}; charset=utf-8'.format(mime), )
def get_credits(request, project, subproject): """View for credits""" obj = get_subproject(request, project, subproject) if not can_view_reports(request.user, obj.project): raise PermissionDenied() form = ReportsForm(request.POST) if not form.is_valid(): return redirect(obj) data = generate_credits( obj, form.cleaned_data['start_date'], form.cleaned_data['end_date'], ) if form.cleaned_data['style'] == 'json': return HttpResponse( json.dumps(data), content_type='application/json' ) if form.cleaned_data['style'] == 'html': start = '<table>' row_start = '<tr>' language_format = u'<th>{0}</th>' translator_start = '<td><ul>' translator_format = u'<li><a href="mailto:{0}">{1}</a></li>' translator_end = '</ul></td>' row_end = '</tr>' mime = 'text/html' end = '</table>' else: start = '' row_start = '' language_format = u'* {0}\n' translator_start = '' translator_format = u' * {1} <{0}>' translator_end = '' row_end = '' mime = 'text/plain' end = '' result = [] result.append(start) for language in data: name, translators = language.items()[0] result.append(row_start) result.append(language_format.format(name)) result.append( u'{0}{1}{2}'.format( translator_start, '\n'.join( [translator_format.format(*t) for t in translators] ), translator_end, ) ) result.append(row_end) result.append(end) return HttpResponse( '\n'.join(result), content_type='{0}; charset=utf-8'.format(mime), )
def get_counts(request, project, subproject): """View for work counts""" obj = get_subproject(request, project, subproject) if not can_view_reports(request.user, obj.project): raise PermissionDenied() form = ReportsForm(request.POST) if not form.is_valid(): return redirect(obj) data = generate_counts( obj, form.cleaned_data['start_date'], form.cleaned_data['end_date'], ) if form.cleaned_data['style'] == 'json': return HttpResponse( json.dumps(data), content_type='application/json' ) if form.cleaned_data['style'] == 'html': start = ( '<table>\n<tr><th>Email</th><th>Name</th>' '<th>Words</th><th>Count</th></tr>' ) row_start = '<tr>' cell_format = u'<td>{0}</td>\n' row_end = '</tr>' mime = 'text/html' end = '</table>' else: heading = ' '.join(['=' * 25] * 4) start = '{0}\n{1:25} {2:25} {3:25} {4:25}\n{0}'.format( heading, 'Email', 'Name', 'Words', 'Count' ) row_start = '' cell_format = u'{0:25} ' row_end = '' mime = 'text/plain' end = heading result = [] result.append(start) for item in data: result.append(row_start) result.append( u'{0}{1}{2}{3}'.format( cell_format.format(item['name']), cell_format.format(item['email']), cell_format.format(item['words']), cell_format.format(item['count']), ) ) result.append(row_end) result.append(end) return HttpResponse( '\n'.join(result), content_type='{0}; charset=utf-8'.format(mime), )