Пример #1
0
    def add_private_data(self, person):
        self.story.append(Spacer(0, 0.5 * cm))
        self.story.append(Paragraph('DONNÉES PRIVÉES', style_bold))
        self.story.append(Spacer(0, 0.2 * cm))
        data = [
            [self.formating('Nom : '), person.last_name or self.points],
            [self.formating('Prénom :'), person.first_name or self.points],
            [
                self.formating('Date de naissance :'),
                django_format(person.birth_date, 'j F Y')
                if person.birth_date else self.points
            ],
            [self.formating('N° de téléphone :'), person.tel or self.points],
            [
                self.formating('Adresse complète :'), person.street
                or self.points
            ],
            ['', person.pcode_city if person.pcode else self.points],
            ['', self.points],
            [
                self.formating('Employeur :'),
                person.corporation.name if person.corporation else self.points
            ],
            [Spacer(0, 0.2 * cm)],
        ]

        t = Table(data, colWidths=[4 * cm, 12 * cm], hAlign=TA_LEFT)
        t.setStyle(
            TableStyle([
                ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
                ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
            ]))
        self.story.append(t)
        self.story.append(Spacer(0, 0.5 * cm))

        self.story.append(Paragraph('COORDONNÉES DE PAIEMENT', style_bold))
        self.story.append(Spacer(0, 0.2 * cm))
        data = [
            [
                self.formating('N° de ccp ou compte bancaire :'), person.ccp
                or self.points
            ],
            [
                self.formating('Si banque, nom et adresse de celle-ci :'),
                person.bank or self.points
            ],
            [
                self.formating('ainsi que N° IBAN :'), person.iban
                or self.points
            ],
        ]

        t = Table(data, colWidths=[4 * cm, 12 * cm], hAlign=TA_LEFT)
        t.setStyle(
            TableStyle([
                ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
                ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
            ]))
        self.story.append(t)
        self.story.append(Spacer(0, 0.5 * cm))
Пример #2
0
 def __init__(self, filename, return_date):
     super().__init__(filename)
     self.text = (
         "Afin de mettre à jour nos bases de données, nous vous serions reconnaissant "
         "de contrôler les données ci-dessous qui vous concernent selon votre filière "
         "et de retourner le présent document corrigé et complété à votre maître de classe jusqu'au "
         "%s prochain.<br/><br/>"
         "Nous vous remercions de votre précieuse collaboration.<br/><br/>"
         "Le secrétariat") % django_format(return_date, 'l j F')
     self.underline = '__________________________________'
Пример #3
0
 def __init__(self, filename, return_date):
     super().__init__(filename)
     self.text = (
         "Afin de mettre à jour nos bases de données, nous vous serions reconnaissant "
         "de contrôler les données ci-dessous qui vous concernent selon votre filière "
         "et de retourner le présent document corrigé et complété à votre maître de classe jusqu'au "
         "%s prochain.<br/><br/>"
         "Nous vous remercions de votre précieuse collaboration.<br/><br/>"
         "Le secrétariat"
     ) % django_format(return_date, 'l j F')
     self.underline = '__________________________________'
Пример #4
0
    def produce(self, activities):
        self.add_address(self.teacher)
        tot_hyperplanning = activities['tot_mandats'] + activities['tot_ens']
        self.story.append(Paragraph(settings.CHARGE_SHEET_TITLE, style_bold))
        self.story.append(HorLine(450))
        self.story.append((Paragraph('Total HyperPlanning: {} pér.'.format(tot_hyperplanning), style_smallx)))
        data = [
            ["Report de l'année précédente", '{0:3d} pér.'.format(self.teacher.previous_report)],
            ['Mandats', '{0:3d} pér.'.format(activities['tot_mandats'])],
        ]

        for act in activities['mandats']:
            data.append(['    * {0} ({1} pér.)'.format(act.subject, act.period)])

        data.extend([
            ['Enseignement (coef.2)',
             '{0:3d} pér.'.format(activities['tot_ens'])],
            ['Formation continue et autres tâches',
             '{0:3d} pér.'.format(activities['tot_formation'])],
            ['Total des heures travaillées', '{0:3d} pér.'.format(activities['tot_trav']),
             '{0:4.1f} %'.format(activities['tot_trav'] / settings.GLOBAL_CHARGE_PERCENT)],
            ['Total des heures payées',
             '{0:3d} pér.'.format(activities['tot_paye']),
             '{0:4.1f} %'.format(activities['tot_paye'] / settings.GLOBAL_CHARGE_PERCENT)],
            ["Report à l'année prochaine",
             '{0:3d} pér.'.format(activities['report'])],
        ])

        t = Table(
            data, colWidths=[12 * cm, 2 * cm, 2 * cm], hAlign=TA_CENTER,
            rowHeights=(0.6 * cm), spaceBefore=0.4 * cm, spaceAfter=1.5 * cm
        )
        t.setStyle(TableStyle([
            ('ALIGN', (1, 0), (-1, -1), 'RIGHT'),
            ('LINEABOVE', (0, -3), (-1, -1), 0.5, colors.black),
            ('FONT', (0, -2), (-1, -2), 'Helvetica-Bold'),
            ('FONTSIZE', (0, 0), (-1, -1), 8),
        ]))
        self.story.append(t)

        d = 'La Chaux-de-Fonds, le {0}'.format(django_format(date.today(), 'j F Y'))
        self.story.append(Paragraph(d, style_normal))
        self.story.append(Spacer(0, 0.5 * cm))
        self.story.append(Paragraph('la direction', style_normal))

        if (activities['tot_paye'] == settings.GLOBAL_CHARGE_TOTAL and
                activities['tot_paye'] != activities['tot_trav']):
            self.story.append(Spacer(0, 1 * cm))
            d = 'Je soussigné-e déclare accepter les conditions ci-dessus pour la régularisation de mon salaire.'
            self.story.append(Paragraph(d, style_normal))
            self.story.append(Spacer(0, 1 * cm))
            self.story.append(Paragraph('Lieu, date et signature: ' + self.points, style_normal))
        self.story.append(PageBreak())
        self.build(self.story)
Пример #5
0
    def get_initial(self):
        initial = super().get_initial()
        to = [
            self.student.email, self.student.expert.email,
            self.student.internal_expert.email
        ]
        src_email = 'email/student_convocation_EDE.txt'

        # Recipients with ladies first!
        recip_names = sorted([
            self.student.civility_full_name,
            self.student.expert.civility_full_name,
            self.student.internal_expert.civility_full_name,
        ])
        titles = [
            self.student.civility,
            self.student.expert.civility,
            self.student.internal_expert.civility,
        ]
        mme_count = titles.count('Madame')
        # Civilities, with ladies first!
        if mme_count == 0:
            civilities = 'Messieurs'
        elif mme_count == 1:
            civilities = 'Madame, Messieurs'
        elif mme_count == 2:
            civilities = 'Mesdames, Monsieur'
        else:
            civilities = 'Mesdames'

        msg_context = {
            'recipient1': recip_names[0],
            'recipient2': recip_names[1],
            'recipient3': recip_names[2],
            'student': self.student,
            'sender': self.request.user,
            'global_civilities': civilities,
            'date_examen': django_format(self.student.date_exam,
                                         'l j F Y à H\hi'),
            'salle': self.student.room,
        }
        initial.update({
            'cci':
            self.request.user.email,
            'to':
            '; '.join(to),
            'subject':
            "Convocation à la soutenance de travail de diplôme",
            'message':
            loader.render_to_string(src_email, msg_context),
            'sender':
            self.request.user.email,
        })
        return initial
Пример #6
0
    def add_private_data(self, person):
        self.story.append(Spacer(0, 0.5 * cm))
        self.story.append(Paragraph('DONNÉES PRIVÉES', style_bold))
        self.story.append(Spacer(0, 0.2 * cm))
        data = [
            [self.formating('Nom : '), person.last_name or self.points],
            [self.formating('Prénom :'), person.first_name or self.points],
            [
                self.formating('Date de naissance :'),
                django_format(person.birth_date, 'j F Y') if person.birth_date else self.points
            ],
            [self.formating('N° de téléphone :'), person.tel or self.points],
            [self.formating('Adresse complète :'), person.street or self.points],
            ['', person.pcode_city if person.pcode else self.points],
            ['', self.points],
            [self.formating('Employeur :'), person.corporation.name if person.corporation else self.points],
            [Spacer(0, 0.2 * cm)],
        ]

        t = Table(data, colWidths=[4 * cm, 12 * cm], hAlign=TA_LEFT)
        t.setStyle(TableStyle([
            ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
        ]))
        self.story.append(t)
        self.story.append(Spacer(0, 0.5 * cm))

        self.story.append(Paragraph('COORDONNÉES DE PAIEMENT', style_bold))
        self.story.append(Spacer(0, 0.2 * cm))
        data = [
            [self.formating('N° de ccp ou compte bancaire :'), person.ccp or self.points],
            [self.formating('Si banque, nom et adresse de celle-ci :'), person.bank or self.points],
            [self.formating('ainsi que N° IBAN :'), person.iban or self.points],
        ]

        t = Table(data, colWidths=[4 * cm, 12 * cm], hAlign=TA_LEFT)
        t.setStyle(TableStyle([
            ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
            ('BOX', (0, 0), (-1, -1), 0.25, colors.black),
        ]))
        self.story.append(t)
        self.story.append(Spacer(0, 0.5 * cm))
Пример #7
0
    def produce(self, klass):

        data = [[
            'Rôle de classe : {0}'.format(klass.name),
            'La Chaux-de-Fonds, le {0}'.format(
                django_format(date.today(), 'j F Y'))
        ]]
        t = Table(data,
                  colWidths=[9 * cm, 9 * cm],
                  rowHeights=(0.4 * cm),
                  hAlign=TA_LEFT,
                  spaceAfter=1 * cm)
        t.setStyle(
            TableStyle([
                ('ALIGN', (0, 0), (0, 0), 'LEFT'),
                ('ALIGN', (1, 0), (1, 0), 'RIGHT'),
                ('VALIGN', (0, 0), (-1, -1), 'TOP'),
                ('FONTSIZE', (0, 0), (0, 0), 12),
                ('FONT', (0, 0), (0, 0), 'Helvetica-Bold'),
                ('FONTSIZE', (1, 0), (1, 0), 8),
                ('FONT', (1, 0), (1, 0), 'Helvetica'),
            ]))
        self.story.append(t)

        data = []
        for index, student in enumerate(klass.student_set.all().filter(
                archived=False).order_by('last_name', 'first_name')):

            data.append([
                '{0}.'.format(index + 1),
                '{0} {1}'.format(student.last_name, student.first_name),
                student.street, student.pcode_city, student.mobile
            ])
            data.append(
                ['', '         Form./Employeur:', student.instructor or ''])
            data.append([''])
            data.append([''])

        t = Table(data[0:52],
                  colWidths=[1 * cm, 5 * cm, 5 * cm, 5 * cm, 2 * cm],
                  rowHeights=(0.4 * cm),
                  hAlign=TA_LEFT)
        t.setStyle(
            TableStyle([
                ('ALIGN', (0, 0), (0, -1), 'RIGHT'),
                ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
                ('VALIGN', (0, 0), (-1, -1), 'TOP'),
                ('FONTSIZE', (0, 0), (-1, -1), 8),
            ]))
        self.story.append(t)
        if len(data) > 52:
            self.story.append(PageBreak())
            self.story.append(
                Paragraph("Rôle de classe {0}".format(klass.name),
                          style_bold_title))
            self.story.append(Spacer(0, 2 * cm))

            t = Table(data[52:],
                      colWidths=[1 * cm, 5 * cm, 5 * cm, 5 * cm, 2 * cm],
                      rowHeights=(0.4 * cm),
                      hAlign=TA_LEFT)
            t.setStyle(
                TableStyle([
                    ('ALIGN', (0, 0), (0, -1), 'RIGHT'),
                    ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
                    ('VALIGN', (0, 0), (-1, -1), 'TOP'),
                    ('FONTSIZE', (0, 0), (-1, -1), 8),
                ]))
            self.story.append(t)
        self.build(self.story)
Пример #8
0
    def produce(self):
        self.add_address(self.student.expert)

        ptext = """
            <br/><br/><br/>
            La Chaux-de-Fonds, le {current_date}<br/>
            N/réf.:ASH/val<br/>
            <br/><br/><br/>
            <strong>Travail de diplôme</strong>
            <br/><br/><br/>
            {expert_civility},<br/><br/>
            Vous avez accepté de fonctionner comme expert{expert_accord} pour un travail de diplôme de l'un-e de nos
            étudiant-e-s. Nous vous remercions très chaleureusement de votre disponibilité.<br/><br/>
            En annexe, nous avons l'avantage de vous remettre le travail de {student_civility_full_name},
            ainsi que la grille d'évaluation commune aux deux membres du jury.<br/><br/>
            La soutenance de ce travail de diplôme se déroulera le:<br/><br/>
        """
        self.story.append(
            Paragraph(
                ptext.format(
                    current_date=django_format(date.today(), 'j F Y'),
                    expert_civility=self.student.expert.civility,
                    expert_accord=self.student.expert.adjective_ending,
                    student_civility_full_name=self.student.civility_full_name,
                ), style_normal))
        ptext = "<br/>{0} à l'Ecole Santé-social Pierre-Coullery, salle {1}<br/><br/>"
        self.story.append(
            Paragraph(
                ptext.format(
                    django_format(self.student.date_exam, 'l j F Y à H\hi'),
                    self.student.room), style_bold_center))

        ptext = """
                <br/>
                L'autre membre du jury sera {internal_expert_civility} {internal_expert_full_name}, {internal_expert_role} dans notre école.<br/>
                <br/>
                Par ailleurs, nous nous permettons de vous faire parvenir en annexe le formulaire «Indemnisation d'experts aux examens»
                que vous voudrez bien compléter au niveau des «données privées / coordonnées de paiement» et nous retourner dans les meilleurs délais.
                <br/><br/>
                Restant à votre disposition pour tout complément d'information et en vous remerciant de
                l'attention que vous porterez à la présente, nous vous prions d'agréer, {expert_civility}, l'asurance de notre considération distinguée.<br/>
                <br/><br/><br/>
                La responsable de filière:<br/>
                <br/><br/>
                {resp_filiere}
                <br/><br/><br/>
                Annexes: ment.
                """
        self.story.append(
            Paragraph(
                ptext.format(
                    internal_expert_civility=self.student.internal_expert.
                    civility,
                    internal_expert_full_name=self.student.internal_expert.
                    full_name,
                    internal_expert_role=self.student.internal_expert.role,
                    expert_civility=self.student.expert.civility,
                    resp_filiere=settings.RESP_FILIERE_EDE,
                ), style_normal))

        # ISO page
        self.story.append(NextPageTemplate('ISOPage'))
        self.story.append(PageBreak())

        self.add_private_data(self.student.expert)

        self.story.append(
            Paragraph(
                "Mandat: Soutenance de {0} {1}, classe {2}".format(
                    self.student.civility, self.student.full_name,
                    self.student.klass), style_normal))
        self.story.append(
            Paragraph(
                "Date de l'examen : {}".format(
                    django_format(self.student.date_exam, 'l j F Y')),
                style_normal))
        self.story.append(Spacer(0, 2 * cm))

        self.add_accounting_stamp(self.EXPERT_MANDAT)

        self.build(self.story)
Пример #9
0
    def produce(self, activities):
        self.add_address(self.teacher)
        tot_hyperplanning = activities['tot_mandats'] + activities['tot_ens']
        self.story.append(Paragraph(settings.CHARGE_SHEET_TITLE, style_bold))
        self.story.append(HorLine(450))
        self.story.append((Paragraph(
            'Total HyperPlanning: {} pér.'.format(tot_hyperplanning),
            style_smallx)))
        data = [
            [
                "Report de l'année précédente",
                '{0:3d} pér.'.format(self.teacher.previous_report)
            ],
            ['Mandats', '{0:3d} pér.'.format(activities['tot_mandats'])],
        ]

        for act in activities['mandats']:
            data.append(
                ['    * {0} ({1} pér.)'.format(act.subject, act.period)])

        data.extend([
            [
                'Enseignement (coef.2)',
                '{0:3d} pér.'.format(activities['tot_ens'])
            ],
            [
                'Formation continue et autres tâches',
                '{0:3d} pér.'.format(activities['tot_formation'])
            ],
            [
                'Total des heures travaillées',
                '{0:3d} pér.'.format(activities['tot_trav']),
                '{0:4.1f} %'.format(activities['tot_trav'] /
                                    settings.GLOBAL_CHARGE_PERCENT)
            ],
            [
                'Total des heures payées',
                '{0:3d} pér.'.format(activities['tot_paye']),
                '{0:4.1f} %'.format(activities['tot_paye'] /
                                    settings.GLOBAL_CHARGE_PERCENT)
            ],
            [
                "Report à l'année prochaine",
                '{0:3d} pér.'.format(activities['report'])
            ],
        ])

        t = Table(data,
                  colWidths=[12 * cm, 2 * cm, 2 * cm],
                  hAlign=TA_CENTER,
                  rowHeights=(0.6 * cm),
                  spaceBefore=0.4 * cm,
                  spaceAfter=1.5 * cm)
        t.setStyle(
            TableStyle([
                ('ALIGN', (1, 0), (-1, -1), 'RIGHT'),
                ('LINEABOVE', (0, -3), (-1, -1), 0.5, colors.black),
                ('FONT', (0, -2), (-1, -2), 'Helvetica-Bold'),
                ('FONTSIZE', (0, 0), (-1, -1), 8),
            ]))
        self.story.append(t)

        d = 'La Chaux-de-Fonds, le {0}'.format(
            django_format(date.today(), 'j F Y'))
        self.story.append(Paragraph(d, style_normal))
        self.story.append(Spacer(0, 0.5 * cm))
        self.story.append(Paragraph('la direction', style_normal))

        if (activities['tot_paye'] == settings.GLOBAL_CHARGE_TOTAL
                and activities['tot_paye'] != activities['tot_trav']):
            self.story.append(Spacer(0, 1 * cm))
            d = 'Je soussigné-e déclare accepter les conditions ci-dessus pour la régularisation de mon salaire.'
            self.story.append(Paragraph(d, style_normal))
            self.story.append(Spacer(0, 1 * cm))
            self.story.append(
                Paragraph('Lieu, date et signature: ' + self.points,
                          style_normal))
        self.story.append(PageBreak())
        self.build(self.story)
Пример #10
0
 def date_formatted(self):
     return django_format(self.date, "l j F Y à H\hi")
Пример #11
0
    def produce(self, candidate):
        # personal data
        options = dict(OPTION_CHOICES)
        diploma = dict(DIPLOMA_CHOICES)
        diploma_status = dict(DIPLOMA_STATUS_CHOICES)
        aes_accords = dict(AES_ACCORDS_CHOICES)
        residence_permits = dict(RESIDENCE_PERMITS_CHOICES)

        ts = TableStyle([
            ('ALIGN', (0, 0), (-1, -1), 'LEFT'),
            ('FONT', (0, 0), (-1, -1), 'Helvetica'),
            ('FONTSIZE', (0, 0), (-1, -1), 8),
        ])

        # Personal data
        self.story.append(Spacer(0, 2 * cm))
        self.story.append(Paragraph("Données personnelles", style_bold))
        data = [
            ['Nom: ', candidate.last_name,
             'Date de naissance:',
             django_format(candidate.birth_date, 'j F Y') if candidate.birth_date else '?'],
            ['Prénom:', candidate.first_name, 'Canton:', candidate.district],
            ['N° de tél.:', candidate.mobile, '',''],
        ]
        t = Table(data, colWidths=[4 * cm, 5 * cm, 4 * cm, 4 * cm], hAlign=TA_LEFT)
        t.setStyle(ts)
        self.story.append(t)

        # Inscription
        self.story.append(Paragraph("Option choisie", style_bold))
        data = [
            [candidate.get_section_display(), candidate.get_option_display()]
        ]
        t = Table(data, colWidths=[6 * cm, 11 * cm], hAlign=TA_LEFT)
        t.setStyle(ts)
        self.story.append(t)

        # Diploma
        self.story.append(Paragraph("Titres / diplôme / Attestations", style_bold))
        detail = '({0})'.format(candidate.diploma_detail) if candidate.diploma_detail else ''
        data = [
            ['{0} {1}'.format(candidate.get_diploma_display(), detail),
             'statut: {0}'.format(candidate.get_diploma_status_display())]
        ]

        if candidate.diploma == 1:  # CFC ASE
            data.append([
                'Evaluation du dernier stage ASE et/ou dernier rapport de formation',
                candidate.get_ok('work_certificate'),
            ])

        elif candidate.diploma == 2:  # CFC autre domaine
            data.append([
                "Attestation de 800h. dans un seul lieu d'accueil de l'enfance",
                candidate.get_ok('certif_of_800_childhood')
            ])
            data.append([
                "Bilan de l'activité professionnelle", candidate.get_ok('work_certificate')
            ])

        elif candidate.diploma == 3:  # Matur, Ecole cult. générale
            data.extend([
                ["Certif. de travail/stage de 800h. dans n'importe quel domaine",
                 candidate.get_ok('certif_of_800_general')],
                ["Attestation de 800h. dans un seul lieu d'accueil de l'enfance",
                 candidate.get_ok('certif_of_800_childhood')],
                ["Bilan de l'activité professionnelle",
                 candidate.get_ok('work_certificate')],
            ])

        elif candidate.diploma == 4:  # Portfolio
            data.extend([
                ["Certif. de travail/stage de 800h. dans n'importe quel domaine",
                 candidate.get_ok('certif_of_800_general')],
                ["Attestation de 800h. dans un seul lieu d'accueil de l'enfance",
                 candidate.get_ok('certif_of_800_childhood')],
                ["Bilan de l'activité professionnelle",
                 candidate.get_ok('work_certificate')],
            ])

        if candidate.option != 'PS':
            data.append(["Contrat de travail", candidate.get_ok('contract')])
            data.append(["Promesse d'engagement", candidate.get_ok('promise')])
            data.append(["Taux d'activité", candidate.activity_rate])
        t = Table(data, colWidths=[13 * cm, 4 * cm], hAlign=TA_LEFT)
        t.setStyle(ts)
        self.story.append(t)

        # Other documents
        self.story.append(Paragraph("Autres documents", style_bold))
        data = []
        docs_required = [
            'registration_form', 'certificate_of_payement', 'police_record', 'cv', 'has_photo',
            'reflexive_text', 'marks_certificate', 'handicap',
        ]
        for doc in docs_required:
            data.append([candidate._meta.get_field(doc).verbose_name, candidate.get_ok(doc)])
        data.append(['Validation des accords AES', aes_accords[candidate.aes_accords]])
        data.append(['Autorisation de séjour (pour les personnes étrangères)', residence_permits[candidate.residence_permits]])

        t = Table(data, colWidths=[13 * cm, 4 * cm], hAlign=TA_LEFT)
        t.setStyle(ts)
        self.story.append(t)

        # Remarks
        self.story.append(Paragraph("Remarques", style_bold))
        self.story.append(Paragraph(candidate.comment, style_normal))

        self.build(self.story)
Пример #12
0
    def produce(self, klass):

        data = [
            ['Rôle de classe : {0}'.format(klass.name),
             'La Chaux-de-Fonds, le {0}'.format(django_format(date.today(), 'j F Y'))
             ]
        ]
        t = Table(
            data, colWidths=[9 * cm, 9 * cm], rowHeights=(0.4 * cm), hAlign=TA_LEFT, spaceAfter=1 * cm
        )
        t.setStyle(TableStyle(
            [
                ('ALIGN', (0, 0), (0, 0), 'LEFT'),
                ('ALIGN', (1, 0), (1, 0), 'RIGHT'),
                ('VALIGN', (0, 0), (-1, -1), 'TOP'),
                ('FONTSIZE', (0, 0), (0, 0), 12),
                ('FONT', (0, 0), (0, 0), 'Helvetica-Bold'),
                ('FONTSIZE', (1, 0), (1, 0), 8),
                ('FONT', (1, 0), (1, 0), 'Helvetica'),
            ]
        ))
        self.story.append(t)

        data = []
        for index, student in enumerate(klass.student_set.all().filter(archived=False).order_by('last_name', 'first_name')):

            data.append(['{0}.'.format(index + 1),
                         '{0} {1}'.format(student.last_name, student.first_name),
                         student.street,
                         student.pcode_city,
                         student.mobile])
            data.append(['', '         Form./Employeur:', student.instructor or ''])
            data.append([''])
            data.append([''])

        t = Table(
            data[0:52], colWidths=[1 * cm, 5 * cm, 5 * cm, 5 * cm, 2 * cm], rowHeights=(0.4 * cm), hAlign=TA_LEFT
        )
        t.setStyle(TableStyle(
            [
                ('ALIGN', (0, 0), (0, -1), 'RIGHT'),
                ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
                ('VALIGN', (0, 0), (-1, -1), 'TOP'),
                ('FONTSIZE', (0, 0), (-1, -1), 8),
            ]
        ))
        self.story.append(t)
        if len(data) > 52:
            self.story.append(PageBreak())
            self.story.append(Paragraph("Rôle de classe {0}".format(klass.name), style_bold_title))
            self.story.append(Spacer(0, 2 * cm))

            t = Table(
                data[52:], colWidths=[1 * cm, 5 * cm, 5 * cm, 5 * cm, 2 * cm], rowHeights=(0.4 * cm), hAlign=TA_LEFT
            )
            t.setStyle(TableStyle(
                [
                    ('ALIGN', (0, 0), (0, -1), 'RIGHT'),
                    ('ALIGN', (1, 0), (-1, -1), 'LEFT'),
                    ('VALIGN', (0, 0), (-1, -1), 'TOP'),
                    ('FONTSIZE', (0, 0), (-1, -1), 8),
                ]
            ))
            self.story.append(t)
        self.build(self.story)
Пример #13
0
    def produce(self):
        self.add_address(self.student.expert)

        ptext = """
            <br/><br/><br/>
            La Chaux-de-Fonds, le {current_date}<br/>
            N/réf.:ASH/val<br/>
            <br/><br/><br/>
            <strong>Travail de diplôme</strong>
            <br/><br/><br/>
            {expert_civility},<br/><br/>
            Vous avez accepté de fonctionner comme expert{expert_accord} pour un travail de diplôme de l'un-e de nos
            étudiant-e-s. Nous vous remercions très chaleureusement de votre disponibilité.<br/><br/>
            En annexe, nous avons l'avantage de vous remettre le travail de {student_civility_full_name},
            ainsi que la grille d'évaluation commune aux deux membres du jury.<br/><br/>
            La soutenance de ce travail de diplôme se déroulera le:<br/><br/>
        """
        self.story.append(Paragraph(ptext.format(
            current_date=django_format(date.today(), 'j F Y'),
            expert_civility=self.student.expert.civility,
            expert_accord=self.student.expert.adjective_ending,
            student_civility_full_name=self.student.civility_full_name,
        ), style_normal))
        ptext = "<br/>{0} à l'Ecole Santé-social Pierre-Coullery, salle {1}<br/><br/>"
        self.story.append(Paragraph(ptext.format(
            django_format(self.student.date_exam, 'l j F Y à H\hi'),
            self.student.room
        ), style_bold_center))

        ptext = """
                <br/>
                L'autre membre du jury sera {internal_expert_civility} {internal_expert_full_name}, {internal_expert_role} dans notre école.<br/>
                <br/>
                Par ailleurs, nous nous permettons de vous faire parvenir en annexe le formulaire «Indemnisation d'experts aux examens»
                que vous voudrez bien compléter au niveau des «données privées / coordonnées de paiement» et nous retourner dans les meilleurs délais.
                <br/><br/>
                Restant à votre disposition pour tout complément d'information et en vous remerciant de
                l'attention que vous porterez à la présente, nous vous prions d'agréer, {expert_civility}, l'asurance de notre considération distinguée.<br/>
                <br/><br/><br/>
                La responsable de filière:<br/>
                <br/><br/>
                {resp_filiere}
                <br/><br/><br/>
                Annexes: ment.
                """
        self.story.append(Paragraph(ptext.format(
            internal_expert_civility=self.student.internal_expert.civility,
            internal_expert_full_name=self.student.internal_expert.full_name,
            internal_expert_role=self.student.internal_expert.role,
            expert_civility=self.student.expert.civility,
            resp_filiere=settings.RESP_FILIERE_EDE,
        ), style_normal))

        # ISO page
        self.story.append(NextPageTemplate('ISOPage'))
        self.story.append(PageBreak())

        self.add_private_data(self.student.expert)

        self.story.append(Paragraph(
            "Mandat: Soutenance de {0} {1}, classe {2}".format(
                self.student.civility, self.student.full_name, self.student.klass
            ), style_normal
        ))
        self.story.append(Paragraph(
            "Date de l'examen : {}".format(django_format(self.student.date_exam, 'l j F Y')), style_normal
        ))
        self.story.append(Spacer(0, 2 * cm))

        self.add_accounting_stamp(self.EXPERT_MANDAT)

        self.build(self.story)
Пример #14
0
 def date_formatted(self):
     return django_format(self.date, "l j F Y à H\hi")