예제 #1
0
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
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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))
예제 #6
0
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))