Exemplo n.º 1
0
def user_is_assistant_and_procedure_is_open_and_workflow_is_assistant(user):
    try:
        mandate = assistant_mandate.find_mandate_by_assistant_for_academic_year(
            academic_assistant.find_by_person(user.person), academic_year.current_academic_year())
        if mandate.state != assistant_mandate_state.TRTS:
            return False
    except assistant_mandate.AssistantMandate.DoesNotExist:
        return False
    else:
        return user.is_authenticated and settings.access_to_procedure_is_open() and \
               academic_assistant.find_by_person(user.person)
def user_is_assistant_and_procedure_is_open_and_workflow_is_assistant(user):
    try:
        mandate = assistant_mandate.find_mandate_by_assistant_for_academic_year(
            academic_assistant.find_by_person(user.person),
            academic_year.current_academic_year())
        if mandate.state != assistant_mandate_state.TRTS:
            return False
    except assistant_mandate.AssistantMandate.DoesNotExist:
        return False
    else:
        return user.is_authenticated() and settings.access_to_procedure_is_open() and \
               academic_assistant.find_by_person(user.person)
Exemplo n.º 3
0
def user_is_assistant_and_can_see_file(user):
    try:
        if user.is_authenticated and settings.assistants_can_see_file():
            return academic_assistant.find_by_person(user.person)
        else:
            return False
    except ObjectDoesNotExist:
        return False
Exemplo n.º 4
0
def user_is_assistant_and_procedure_is_open(user):
    try:
        if user.is_authenticated() and settings.access_to_procedure_is_open():
            return academic_assistant.find_by_person(user.person)
        else:
            return False
    except ObjectDoesNotExist:
        return False
Exemplo n.º 5
0
def assistant_home(request):
    try:
        academic_assistant.find_by_person(person=request.user.person)
        if settings.access_to_procedure_is_open():
            return HttpResponseRedirect(reverse('assistant_mandates'))
        else:
            return HttpResponseRedirect(reverse('access_denied'))
    except academic_assistant.AcademicAssistant.DoesNotExist:
        try:
            manager.find_by_person(person=request.user.person)
            return HttpResponseRedirect(reverse('manager_home'))
        except manager.Manager.DoesNotExist:
            try:
                reviewer.find_by_person(person=request.user.person)
                return HttpResponseRedirect(reverse('reviewer_mandates_list'))
            except reviewer.Reviewer.DoesNotExist:
                return HttpResponseRedirect(reverse('access_denied'))
def user_is_assistant_and_can_see_file(user):
    try:
        if user.is_authenticated() and settings.assistants_can_see_file():
            return academic_assistant.find_by_person(user.person)
        else:
            return False
    except ObjectDoesNotExist:
        return False
Exemplo n.º 7
0
def build_doc(request, mandates):
    year = mandates[0].academic_year
    filename = ('%s_%s_%s.pdf' %
                (_('assistants_mandates'), year, time.strftime("%Y%m%d_%H%M")))
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="%s"' % filename
    buffer = BytesIO()
    doc = SimpleDocTemplate(buffer,
                            pagesize=PAGE_SIZE,
                            rightMargin=MARGIN_SIZE,
                            leftMargin=MARGIN_SIZE,
                            topMargin=70,
                            bottomMargin=25)
    styles = getSampleStyleSheet()
    styles.add(
        ParagraphStyle(
            name='Tiny',
            fontSize=6,
            font='Helvetica',
            leading=8,
            leftIndent=0,
            rightIndent=0,
            firstLineIndent=0,
            alignment=TA_LEFT,
            spaceBefore=0,
            spaceAfter=0,
            splitLongWords=1,
        ))
    styles.add(
        ParagraphStyle(
            name='StandardWithBorder',
            font='Helvetica',
            leading=18,
            leftIndent=10,
            rightIndent=10,
            firstLineIndent=0,
            alignment=TA_JUSTIFY,
            spaceBefore=25,
            spaceAfter=5,
            splitLongWords=1,
            borderColor='#000000',
            borderWidth=1,
            borderPadding=10,
        ))
    content = []
    if academic_assistant.find_by_person(find_by_user(request.user)):
        role = user_role.ASSISTANT
    elif reviewer.find_by_person(find_by_user(request.user)):
        role = reviewer.find_by_person(find_by_user(request.user)).role
    else:
        role = user_role.ADMINISTRATOR
    for mandate in mandates:
        add_mandate_content(content, mandate, styles, role)
    doc.build(content, add_header_footer)
    pdf = buffer.getvalue()
    buffer.close()
    response.write(pdf)
    return response
Exemplo n.º 8
0
 def get_context_data(self, **kwargs):
     context = super(AssistantMandatesListView, self).get_context_data(**kwargs)
     context['assistant'] = academic_assistant.find_by_person(person.find_by_user(self.request.user))
     context['current_academic_year'] = current_academic_year()
     context['can_see_file'] = settings.assistants_can_see_file()
     for mandate in context['object_list']:
         entities_id = mandate.mandateentity_set.all().order_by('id').values_list('entity', flat=True)
         mandate.entities = base.models.entity.find_versions_from_entites(entities_id,
                                                                          mandate.academic_year.start_date)
     return context
Exemplo n.º 9
0
 def get_context_data(self, **kwargs):
     context = super(AssistantLearningUnitsListView, self).get_context_data(**kwargs)
     mandate = assistant_mandate.find_mandate_by_assistant_for_academic_year(
         academic_assistant.find_by_person(self.request.user.person), academic_year.current_academic_year())
     context['mandate_id'] = mandate.id
     context['assistant_type'] = mandate.assistant_type
     files = assistant_document_file.find_by_assistant_mandate_and_description(mandate,
                                                                               document_type.TUTORING_DOCUMENT)
     context['files'] = files
     context['document_type'] = document_type.TUTORING_DOCUMENT
     return context
Exemplo n.º 10
0
 def get_context_data(self, **kwargs):
     context = super(AssistantMandatesListView,
                     self).get_context_data(**kwargs)
     context['assistant'] = academic_assistant.find_by_person(
         person.find_by_user(self.request.user))
     context['can_see_file'] = settings.assistants_can_see_file()
     for mandate in context['object_list']:
         entities_id = mandate.mandateentity_set.all().order_by(
             'id').values_list('entity', flat=True)
         mandate.entities = base.models.entity.find_versions_from_entites(
             entities_id, mandate.academic_year.start_date)
     return context
Exemplo n.º 11
0
def assistant_home(request):
    if (settings.access_to_procedure_is_open() or settings.assistants_can_see_file()) \
            and academic_assistant.find_by_person(person=request.user.person):
        return HttpResponseRedirect(reverse('assistant_mandates'))
    else:
        try:
            manager.find_by_person(person=request.user.person)
            return HttpResponseRedirect(reverse('manager_home'))
        except manager.Manager.DoesNotExist:
            if reviewer.find_by_person(person=request.user.person):
                return HttpResponseRedirect(reverse('reviewer_mandates_list_todo'))
            else:
                return HttpResponseRedirect(reverse('access_denied'))
Exemplo n.º 12
0
 def get_context_data(self, **kwargs):
     context = super(AssistantLearningUnitsListView,
                     self).get_context_data(**kwargs)
     mandate = assistant_mandate.find_mandate_by_assistant_for_academic_year(
         academic_assistant.find_by_person(self.request.user.person),
         academic_year.current_academic_year())
     context['mandate_id'] = mandate.id
     context['assistant_type'] = mandate.assistant_type
     files = assistant_document_file.find_by_assistant_mandate_and_description(
         mandate, document_type.TUTORING_DOCUMENT)
     context['files'] = files
     context['document_type'] = document_type.TUTORING_DOCUMENT
     return context
Exemplo n.º 13
0
def assistant_home(request):
    if (settings.access_to_procedure_is_open() or settings.assistants_can_see_file()) \
            and academic_assistant.find_by_person(person=request.user.person):
        return HttpResponseRedirect(reverse('assistant_mandates'))
    else:
        try:
            manager.find_by_person(person=request.user.person)
            return HttpResponseRedirect(reverse('manager_home'))
        except manager.Manager.DoesNotExist:
            if reviewer.find_by_person(person=request.user.person):
                return HttpResponseRedirect(
                    reverse('reviewer_mandates_list_todo'))
            else:
                return HttpResponseRedirect(reverse('access_denied'))
Exemplo n.º 14
0
def mandate_change_state(request):
    mandate = assistant_mandate.find_mandate_by_id(request.POST.get("mandate_id"))
    if mandate:
        if 'bt_mandate_accept' in request.POST:
            mandate.state = assistant_mandate_state.TRTS
        elif 'bt_mandate_decline' in request.POST:
            mandate.state = assistant_mandate_state.DECLINED
            faculty = mandate_entity.find_by_mandate_and_type(mandate, entity_type.FACULTY)
            if faculty:
                faculty_dean = reviewer.find_by_entity_and_role(
                    faculty.first().entity, reviewer_role.SUPERVISION).first()
                pers = person.find_by_user(request.user)
                assistant = academic_assistant.find_by_person(pers)
                html_template_ref = 'assistant_dean_assistant_decline_html'
                txt_template_ref = 'assistant_dean_assistant_decline_txt'
                send_message(person=faculty_dean.person, html_template_ref=html_template_ref,
                             txt_template_ref=txt_template_ref, assistant=assistant)
        mandate.save()
    return HttpResponseRedirect(reverse('assistant_mandates'))
Exemplo n.º 15
0
def build_doc(request, mandates, type='default'):
    if mandates:
        year = mandates[0].academic_year
    else:
        year = academic_year.current_academic_year()
    if type is 'export_to_sap':
        filename = ('%s_%s_%s.pdf' % (mandates[0].sap_id, year, mandates[0].assistant.person))
    else:
        filename = ('%s_%s_%s.pdf' % (_('assistants_mandates'), year, time.strftime("%Y%m%d_%H%M")))
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="%s"' % filename
    buffer = BytesIO()
    doc = SimpleDocTemplate(buffer, pagesize=PAGE_SIZE, rightMargin=MARGIN_SIZE, leftMargin=MARGIN_SIZE, topMargin=70,
                            bottomMargin=25)
    styles = getSampleStyleSheet()
    styles.add(ParagraphStyle(name='Tiny', fontSize=6, font='Helvetica', leading=8, leftIndent=0, rightIndent=0,
                              firstLineIndent=0, alignment=TA_LEFT, spaceBefore=0, spaceAfter=0, splitLongWords=1, ))
    styles.add(ParagraphStyle(name='StandardWithBorder', font='Helvetica', leading=18, leftIndent=10, rightIndent=10,
                              firstLineIndent=0, alignment=TA_JUSTIFY, spaceBefore=25, spaceAfter=5, splitLongWords=1,
                              borderColor='#000000', borderWidth=1, borderPadding=10, ))
    content = []
    if academic_assistant.find_by_person(find_by_user(request.user)):
        role = user_role.ASSISTANT
    elif reviewer.find_by_person(find_by_user(request.user)):
        role = reviewer.find_by_person(find_by_user(request.user)).role
    else:
        role = user_role.ADMINISTRATOR
    if type is 'default' or type is 'export_to_sap':
        for mandate in mandates:
            add_mandate_content(content, mandate, styles, role)
    else:
        content.append(create_paragraph("%s (%s)<br />" % (_('declined_mandates'), year), '', styles["BodyText"]))
        if mandates:
            write_table(content, add_declined_mandates(mandates, styles['Tiny']), COLS_WIDTH_FOR_DECLINED_MANDATES)
            content.append(PageBreak())
    doc.build(content, add_header_footer)
    pdf = buffer.getvalue()
    buffer.close()
    response.write(pdf)
    return response
Exemplo n.º 16
0
def mandate_change_state(request):
    mandate_id = request.POST.get("mandate_id")
    mandate = assistant_mandate.find_mandate_by_id(mandate_id)
    if 'bt_mandate_accept' in request.POST:
        mandate.state = assistant_mandate_state.TRTS
    elif 'bt_mandate_decline' in request.POST:
        mandate.state = assistant_mandate_state.DECLINED
        faculty = mandate_entity.find_by_mandate_and_type(
            mandate, entity_type.FACULTY)
        if faculty:
            faculty_dean = reviewer.find_by_entity_and_role(
                faculty.first().structure, reviewer_role.SUPERVISION).first()
            assistant = academic_assistant.find_by_person(
                person.find_by_user(request.user))
            html_template_ref = 'assistant_dean_assistant_decline_html'
            txt_template_ref = 'assistant_dean_assistant_decline_txt'
            send_message(person=faculty_dean.person,
                         html_template_ref=html_template_ref,
                         txt_template_ref=txt_template_ref,
                         assistant=assistant)
    mandate.save()
    return HttpResponseRedirect(reverse('assistant_mandates'))
Exemplo n.º 17
0
def reviews_view(request):
    mandate = assistant_mandate.find_mandate_by_assistant_for_academic_year(
        academic_assistant.find_by_person(request.user.person),
        academic_year.current_academic_year())
    reviews = review.find_by_mandate(mandate.id)
    return render(request, 'mandate_reviews_view.html', {'reviews': reviews})
Exemplo n.º 18
0
 def get_queryset(self):
     assistant = academic_assistant.find_by_person(
         person.find_by_user(self.request.user))
     return assistant_mandate.find_mandate_by_academic_assistant(assistant)
Exemplo n.º 19
0
 def get_queryset(self):
     mandate = assistant_mandate.find_mandate_by_assistant_for_academic_year(
         academic_assistant.find_by_person(self.request.user.person), academic_year.current_academic_year())
     queryset = tutoring_learning_unit_year.find_by_mandate(mandate)
     return queryset
Exemplo n.º 20
0
 def get_queryset(self):
     mandate = assistant_mandate.find_mandate_by_assistant_for_academic_year(
         academic_assistant.find_by_person(self.request.user.person),
         academic_year.current_academic_year())
     queryset = tutoring_learning_unit_year.find_by_mandate(mandate)
     return queryset
Exemplo n.º 21
0
 def test_func(self):
     return (assistant_access.user_is_assistant_and_procedure_is_open(self.request.user) or
             (academic_assistant.find_by_person(self.request.user.person) and settings.assistants_can_see_file()))
Exemplo n.º 22
0
 def get_queryset(self):
     assistant = academic_assistant.find_by_person(person.find_by_user(self.request.user))
     return assistant_mandate.find_mandate_by_academic_assistant(assistant)
Exemplo n.º 23
0
 def test_func(self):
     return (assistant_access.user_is_assistant_and_procedure_is_open(
         self.request.user)
             or (academic_assistant.find_by_person(self.request.user.person)
                 and settings.assistants_can_see_file()))
Exemplo n.º 24
0
def build_doc(request: http.HttpRequest,
              mandates: Sequence[assistant_mandate.AssistantMandate],
              type: str = 'default'):
    if mandates:
        year = mandates[0].academic_year
    else:
        year = academic_year.starting_academic_year()
    if type == 'export_to_sap':
        filename = ('%s_%s_%s.pdf' %
                    (mandates[0].sap_id, year, mandates[0].assistant.person))
    else:
        filename = (
            '%s_%s_%s.pdf' %
            (_('assistants_mandates'), year, time.strftime("%Y%m%d_%H%M")))
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="%s"' % filename
    buffer = BytesIO()
    doc = SimpleDocTemplate(buffer,
                            pagesize=PAGE_SIZE,
                            rightMargin=MARGIN_SIZE,
                            leftMargin=MARGIN_SIZE,
                            topMargin=70,
                            bottomMargin=25)
    styles = getSampleStyleSheet()
    styles.add(
        ParagraphStyle(
            name='Tiny',
            fontSize=6,
            font='Helvetica',
            leading=8,
            leftIndent=0,
            rightIndent=0,
            firstLineIndent=0,
            alignment=TA_LEFT,
            spaceBefore=0,
            spaceAfter=0,
            splitLongWords=1,
        ))
    styles.add(
        ParagraphStyle(
            name='StandardWithBorder',
            font='Helvetica',
            leading=18,
            leftIndent=10,
            rightIndent=10,
            firstLineIndent=0,
            alignment=TA_JUSTIFY,
            spaceBefore=25,
            spaceAfter=5,
            splitLongWords=1,
            borderColor='#000000',
            borderWidth=1,
            borderPadding=10,
        ))
    content = []
    roles = []
    if academic_assistant.find_by_person(find_by_user(request.user)):
        roles = [user_role.ASSISTANT]
    elif reviewer.find_by_person(find_by_user(request.user)):
        roles = reviewer.find_by_person(find_by_user(
            request.user)).values_list("role", flat=True)
    else:
        roles = [user_role.ADMINISTRATOR]
    if type == 'default' or type == 'export_to_sap':
        for mandate in mandates:
            add_mandate_content(content, mandate, styles, roles)
    elif type == 'declined_to_sap':
        for mandate in mandates:
            add_declined_mandate_content(content, mandate, styles)
    else:
        content.append(
            create_paragraph(
                "%s (%s)<br />" %
                (_('Assistants who have declined their renewal'), year), '',
                styles["BodyText"]))
        if mandates:
            write_table(content, add_declined_mandates(mandates,
                                                       styles['Tiny']),
                        COLS_WIDTH_FOR_DECLINED_MANDATES)
            content.append(PageBreak())
    doc.build(content, add_header_footer)
    pdf = buffer.getvalue()
    buffer.close()
    response.write(pdf)
    return response
Exemplo n.º 25
0
def user_is_assistant_and_procedure_is_open(user):
    return user.is_authenticated() and settings.access_to_procedure_is_open() and \
           academic_assistant.find_by_person(user.person)
Exemplo n.º 26
0
def user_is_assistant_and_procedure_is_open(user):
    return user.is_authenticated and settings.access_to_procedure_is_open() and \
           academic_assistant.find_by_person(user.person)