def agenda_edit(request, meeting_id): group = get_current_group(request) if group == None: return HttpResponseRedirect(reverse('index')) meeting = Meeting.objects.get(pk=int(meeting_id)) if meeting.group != group: return HttpResponseRedirect(reverse('index')) doc_type = 'agenda' request_type = 'refresh' task_list_headings = ('Description', 'Assigned to', 'Deadline') items = meeting.item_set.filter(group=group).order_by('item_no') overdue_tasks_list = get_overdue_tasks_list(group=group, meeting=meeting, doc_type=doc_type) pending_tasks_list = get_outstanding_tasks_list(group=group, meeting=meeting, doc_type=doc_type) completed_tasks_list = get_completed_tasks_list(group=group, meeting=meeting, doc_type=doc_type) if request.method == "POST" and 'ajax_button' in request.POST: request_type = 'ajax' if request.POST['ajax_button'] != 'page_refresh': save_formlist(request, group, items, 'items', doc_type) meeting_form = save_meeting_form(request, group, meeting, doc_type) if request.POST['ajax_button'] == 'add_item': add_item(group, meeting, items, doc_type) if request.POST['ajax_button'][0:11] == 'delete_item': delete_item(request, group, meeting) if request.POST['ajax_button'] == 'move_item': move_item(request, group, meeting) items = meeting.item_set.filter(group=group).order_by('item_no') item_formlist = build_formlist(group, items, 'items', doc_type) meeting_form = AgendaMeetingForm(group=group, instance=meeting, label_suffix='') meeting_duration = get_formatted_meeting_duration(meeting_id) meeting_end_time = calculate_meeting_end_time(meeting) templates = get_templates(request_type, doc_type) responses = [] menu = { 'parent': 'meetings', 'child': 'current_meetings', 'tips': 'create_agenda' } for template in templates: part_response = render( request, template, { 'menu': menu, 'completed_tasks_list': completed_tasks_list, 'doc_type': doc_type, 'group': group, 'item_formlist': item_formlist, 'items': items, 'meeting': meeting, 'meeting_duration': meeting_duration, 'meeting_end_time': meeting_end_time, 'meeting_form': meeting_form, 'meeting_id': meeting_id, 'overdue_tasks_list': overdue_tasks_list, 'pending_tasks_list': pending_tasks_list, 'task_list_headings': task_list_headings, }) responses.append(part_response) response = get_response(responses, request_type) return response
def minutes_edit(request, meeting_id): group = get_current_group(request) if group == None: return HttpResponseRedirect(reverse('index')) meeting = Meeting.objects.get(pk=int(meeting_id)) if meeting.group != group: return HttpResponseRedirect(reverse('index')) doc_type = 'minutes' request_type = 'refresh' decisions = meeting.decision_set.filter(group=group).\ order_by('item', 'decision_no') items = meeting.item_set.filter(group=group).order_by('item_no') tasks = meeting.task_set.filter(group=group).\ order_by('item', 'task_no') completed_tasks_list = get_completed_tasks_list(group=group, meeting=meeting, doc_type='minutes') incomplete_tasks_list = Task.lists.incomplete_tasks().filter(group=group) new_tasks = Task.lists.incomplete_tasks().filter(group=group, meeting=meeting) if request.method == "POST" and 'ajax_button' in request.POST: request_type = 'ajax' # before changing any data, save everything if request.POST['ajax_button'] != 'page_refresh': save_formlist(request, group, decisions, 'decisions', doc_type) save_formlist(request, group, items, 'items', doc_type) save_formlist(request, group, tasks, 'tasks', doc_type) save_meeting_form(request, group, meeting, doc_type) save_next_meeting_form(request, group, meeting) # now change what needs to be changed if request.POST['ajax_button'] == 'clear_minutes': clear_minutes(request, group, meeting, decisions, items, tasks) if request.POST['ajax_button'][:12] == 'add_decision': add_decision(request, group, meeting) if request.POST['ajax_button'] == 'add_item': add_item(group, meeting, items, 'minutes') if request.POST['ajax_button'][:8] == 'add_task': add_task(request, group, meeting) if request.POST['ajax_button'][:15] == 'delete_decision': delete_decision(request, group, meeting) if request.POST['ajax_button'][:11] == 'delete_item': delete_item(request, group, meeting) if request.POST['ajax_button'][:11] == 'delete_task': delete_task(request, group, meeting) decisions = meeting.decision_set.filter(group=group).\ order_by('item', 'decision_no') items = meeting.item_set.filter(group=group).order_by('item_no') tasks = meeting.task_set.filter(group=group).\ order_by('item', 'task_no') decision_formlist = build_formlist(group, decisions, 'decisions', 'minutes') item_formlist = build_formlist(group, items, 'items', 'minutes') task_formlist = build_formlist(group, tasks, 'tasks', 'minutes') item_count = items.count() meeting_duration = get_formatted_meeting_duration(meeting) meeting_end_time = calculate_meeting_end_time(meeting) meeting_form = MinutesMeetingForm(group, instance=meeting, label_suffix='') next_meeting_form = NextMeetingForm(group, instance=meeting, label_suffix='') templates = get_templates(request_type, 'minutes') responses = [] menu = { 'parent': 'meetings', 'child': 'current_meetings', 'tips': 'create_minutes' } for template in templates: response = render( request, template, { 'menu': menu, 'doc_type': doc_type, 'meeting_id': meeting_id, 'meeting': meeting, 'meeting_duration': meeting_duration, 'meeting_end_time': meeting_end_time, 'completed_tasks_list': completed_tasks_list, 'incomplete_tasks_list': incomplete_tasks_list, 'meeting_form': meeting_form, 'next_meeting_form': next_meeting_form, 'item_formlist': item_formlist, 'task_formlist': task_formlist, 'decision_formlist': decision_formlist, 'decisions': decisions, 'tasks': tasks, }) responses.append(response) response = get_response(responses, request_type) return response
def agenda_edit(request, meeting_id): group = get_current_group(request) if group == None: return HttpResponseRedirect(reverse('index')) meeting = Meeting.objects.get(pk=int(meeting_id)) if meeting.group != group: return HttpResponseRedirect(reverse('index')) doc_type = 'agenda' request_type = 'refresh' task_list_headings = ('Description', 'Assigned to', 'Deadline') items = meeting.item_set.filter(group=group).order_by('item_no') overdue_tasks_list = get_overdue_tasks_list(group=group, meeting=meeting, doc_type=doc_type) pending_tasks_list = get_outstanding_tasks_list(group=group, meeting=meeting, doc_type=doc_type) completed_tasks_list = get_completed_tasks_list(group=group, meeting=meeting, doc_type=doc_type) if request.method == "POST" and 'ajax_button' in request.POST: request_type = 'ajax' if request.POST['ajax_button'] != 'page_refresh': save_formlist(request, group, items, 'items', doc_type) meeting_form = save_meeting_form(request, group, meeting, doc_type) if request.POST['ajax_button']=='add_item': add_item(group, meeting, items, doc_type) if request.POST['ajax_button'][0:11] =='delete_item': delete_item(request, group, meeting) if request.POST['ajax_button'] == 'move_item': move_item(request, group, meeting) items = meeting.item_set.filter(group=group).order_by('item_no') item_formlist = build_formlist(group, items, 'items', doc_type) meeting_form = AgendaMeetingForm(group=group, instance=meeting, label_suffix='') meeting_duration = get_formatted_meeting_duration(meeting_id) meeting_end_time = calculate_meeting_end_time(meeting) templates = get_templates(request_type, doc_type) responses = [] menu = {'parent': 'meetings', 'child': 'current_meetings', 'tips': 'create_agenda'} for template in templates: part_response = render(request, template, { 'menu': menu, 'completed_tasks_list': completed_tasks_list, 'doc_type': doc_type, 'group': group, 'item_formlist': item_formlist, 'items': items, 'meeting': meeting, 'meeting_duration': meeting_duration, 'meeting_end_time': meeting_end_time, 'meeting_form': meeting_form, 'meeting_id': meeting_id, 'overdue_tasks_list': overdue_tasks_list, 'pending_tasks_list': pending_tasks_list, 'task_list_headings': task_list_headings, }) responses.append(part_response) response = get_response(responses, request_type) return response
def minutes_edit(request, meeting_id): group = get_current_group(request) if group == None: return HttpResponseRedirect(reverse('index')) meeting = Meeting.objects.get(pk=int(meeting_id)) if meeting.group != group: return HttpResponseRedirect(reverse('index')) doc_type = 'minutes' request_type = 'refresh' decisions = meeting.decision_set.filter(group=group).\ order_by('item', 'decision_no') items = meeting.item_set.filter(group=group).order_by('item_no') tasks = meeting.task_set.filter(group=group).\ order_by('item', 'task_no') completed_tasks_list = get_completed_tasks_list(group=group, meeting=meeting, doc_type='minutes') incomplete_tasks_list = Task.lists.incomplete_tasks().filter(group=group) new_tasks = Task.lists.incomplete_tasks().filter(group=group, meeting=meeting) if request.method == "POST" and 'ajax_button' in request.POST: request_type = 'ajax' # before changing any data, save everything if request.POST['ajax_button'] != 'page_refresh': save_formlist(request, group, decisions, 'decisions', doc_type) save_formlist(request, group, items, 'items', doc_type) save_formlist(request, group, tasks, 'tasks', doc_type) save_meeting_form(request, group, meeting, doc_type) save_next_meeting_form(request, group, meeting) # now change what needs to be changed if request.POST['ajax_button']=='clear_minutes': clear_minutes(request, group, meeting, decisions, items, tasks) if request.POST['ajax_button'][:12]=='add_decision': add_decision(request, group, meeting) if request.POST['ajax_button']=='add_item': add_item(group, meeting, items, 'minutes') if request.POST['ajax_button'][:8]=='add_task': add_task(request, group, meeting) if request.POST['ajax_button'][:15]=='delete_decision': delete_decision(request, group, meeting) if request.POST['ajax_button'][:11]=='delete_item': delete_item(request, group, meeting) if request.POST['ajax_button'][:11]=='delete_task': delete_task(request, group, meeting) decisions = meeting.decision_set.filter(group=group).\ order_by('item', 'decision_no') items = meeting.item_set.filter(group=group).order_by('item_no') tasks = meeting.task_set.filter(group=group).\ order_by('item', 'task_no') decision_formlist = build_formlist(group, decisions, 'decisions', 'minutes') item_formlist = build_formlist(group, items, 'items', 'minutes') task_formlist = build_formlist(group, tasks, 'tasks', 'minutes') item_count = items.count() meeting_duration = get_formatted_meeting_duration(meeting) meeting_end_time = calculate_meeting_end_time(meeting) meeting_form = MinutesMeetingForm(group, instance=meeting, label_suffix='') next_meeting_form = NextMeetingForm(group, instance=meeting, label_suffix='') templates = get_templates(request_type, 'minutes') responses = [] menu = {'parent': 'meetings', 'child': 'current_meetings', 'tips': 'create_minutes'} for template in templates: response = render(request, template, { 'menu': menu, 'doc_type': doc_type, 'meeting_id': meeting_id, 'meeting': meeting, 'meeting_duration': meeting_duration, 'meeting_end_time': meeting_end_time, 'completed_tasks_list': completed_tasks_list, 'incomplete_tasks_list': incomplete_tasks_list, 'meeting_form': meeting_form, 'next_meeting_form': next_meeting_form, 'item_formlist': item_formlist, 'task_formlist': task_formlist, 'decision_formlist': decision_formlist, 'decisions': decisions, 'tasks': tasks, }) responses.append(response) response = get_response(responses, request_type) return response
def create_details_table(meeting, doc_type, Document): """ Creates the meeting details table. """ # Set up the data if doc_type == 'agenda': date = meeting.date_scheduled.strftime("%A %B %d, %Y") start_time = meeting.start_time_scheduled.strftime("%I:%M %p").\ lstrip('0').lower() duration = calculate_meeting_duration(meeting) if duration != 0: end_time = calculate_meeting_end_time(meeting).\ strftime("%I:%M %p").lstrip('0').lower() + \ ' (estimated)' else: end_time = 'To be decided' location = insert_line_breaks(meeting.location_scheduled) if meeting.facilitator_scheduled: facilitator = str(meeting.facilitator_scheduled) else: facilitator = 'To be decided' if meeting.minute_taker_scheduled: minute_taker = str(meeting.minute_taker_scheduled) else: minute_taker = 'To be decided' notes = meeting.instructions_scheduled if doc_type == 'minutes': date = meeting.date_actual.strftime("%A %B %d, %Y") start_time = meeting.start_time_actual.strftime("%I:%M %p").\ lstrip('0').lower() end_time = meeting.end_time_actual.strftime("%I:%M %p").lstrip('0').\ lower() location = insert_line_breaks(meeting.location_actual) notes = meeting.instructions_actual facilitator = str(meeting.facilitator_actual) minute_taker = str(meeting.minute_taker_actual) attendance = meeting.attendance apologies = meeting.apologies # Trim contents to fit cells where necessary facilitator = fit_to_table_cell(facilitator, 63*mm) meeting_no = fit_to_table_cell(meeting.meeting_no, 63*mm) minute_taker = fit_to_table_cell(minute_taker, 63*mm) # Set up top left block top_left_contents = [ (Paragraph('Meeting', shadedStyle), Paragraph(meeting_no, leftAlignedStyle)), (Paragraph('Date', shadedStyle), Paragraph(date, leftAlignedStyle)), (Paragraph('Start time', shadedStyle), Paragraph(start_time, leftAlignedStyle)), (Paragraph('End time', shadedStyle), Paragraph(end_time, leftAlignedStyle)), ] top_left_block = Table(top_left_contents, colWidths=[21*mm,63*mm], rowHeights=[21,21,21,21]) top_left_block.setStyle(MEETING_DETAILS_STYLE) # Set up top row middle block top_middle_block = Table([ ('',), ('',), ('',), ('',), ], colWidths=[2*mm]) # Set up the top row right block top_right_contents = [ (Paragraph('Location', shadedStyle), Paragraph(location, leftAlignedStyle)), (Paragraph('Facilitator', shadedStyle), Paragraph(facilitator, leftAlignedStyle)), (Paragraph('Minutes', shadedStyle), Paragraph(minute_taker, leftAlignedStyle)), ] top_right_block = Table(top_right_contents, colWidths=[21*mm,63*mm], rowHeights=[42,21,21]) top_right_block.setStyle(MEETING_DETAILS_STYLE) #Create the top row table top_t = Table([(( top_left_block, top_middle_block, top_right_block ))],) top_t.setStyle(SUPERSTRUCTURE_STYLE) # Set up the bottom row bottom_contents = [] if doc_type == 'minutes': if attendance: attendance_t = create_details_item_bottom_table('Attendees', attendance) if apologies: apologies_t = create_details_item_bottom_table('Apologies', apologies) if notes: notes_t = create_details_item_bottom_table('Notes', notes) #Create the bottom row table bottom_contents = [] if doc_type == 'minutes': if attendance: bottom_contents.append([(attendance_t,)]) if apologies: bottom_contents.append([(apologies_t,)]) if notes: bottom_contents.append([(notes_t,)]) if bottom_contents: bottom_t = Table(bottom_contents, colWidths=[printable_width]) bottom_t.setStyle(SUPERSTRUCTURE_STYLE) #Add bottom and top rows to the document Document.append(top_t) if bottom_contents: Document.append(Spacer(0,2*mm)) Document.append(bottom_t) Document.append(Spacer(0,7*mm))