Esempio n. 1
0
    def test_get_contact_details(self):
        """
        Users without "signals.sia_can_view_contact_details" permission cannot
        see contact details of the reporter. PDFs generated for use with
        CityControl always contain the contact details.

        This test checks the PDFSummaryService._get_contact_details method.
        """
        # No "signals.sia_can_view_contact_details" and no CityControl/Sigmax
        # override mean no contact details.
        user = UserFactory.create()
        email, phone = PDFSummaryService._get_contact_details(
            self.signal, user, False)
        self.assertFalse(user.has_perm('signals.sia_can_view_contact_details'))
        self.assertEqual(email, '*****')
        self.assertEqual(phone, '*****')

        # Check CityControl/Sigmax override
        email, phone = PDFSummaryService._get_contact_details(
            self.signal, None, True)
        self.assertEqual(email, '*****@*****.**')
        self.assertEqual(phone, '0612345678')

        # Check user has "signals.sia_can_view_contact_details"
        sia_can_view_contact_details = Permission.objects.get(
            codename='sia_can_view_contact_details')
        user.user_permissions.add(sia_can_view_contact_details)
        user = User.objects.get(pk=user.id)

        self.assertTrue(user.has_perm('signals.sia_can_view_contact_details'))
        email, phone = PDFSummaryService._get_contact_details(
            self.signal, user, False)
        self.assertEqual(email, '*****@*****.**')
        self.assertEqual(phone, '0612345678')
Esempio n. 2
0
    def test_show_contact_details(self):
        """
        Users without "signals.sia_can_view_contact_details" permission cannot
        see contact details of the reporter. PDFs generated for use with
        CityControl always contain the contact details.

        This test checks the intermediate HTML does or does not contain the
        contact details as appropriate.
        """
        # No "signals.sia_can_view_contact_details" and no CityControl/Sigmax
        # override mean no contact details in intermediate HTML.
        user = UserFactory.create()
        html = PDFSummaryService._get_html(self.signal, user, False)
        self.assertFalse(user.has_perm('signals.sia_can_view_contact_details'))
        self.assertNotIn('*****@*****.**', html)
        self.assertNotIn('0612345678', html)

        # Check CityControl/Sigmax override
        html = PDFSummaryService._get_html(self.signal, None, True)
        self.assertIn('*****@*****.**', html)
        self.assertIn('0612345678', html)

        # Check user has "signals.sia_can_view_contact_details"
        sia_can_view_contact_details = Permission.objects.get(
            codename='sia_can_view_contact_details')
        user.user_permissions.add(sia_can_view_contact_details)
        user = User.objects.get(pk=user.id)

        self.assertTrue(user.has_perm('signals.sia_can_view_contact_details'))
        html = PDFSummaryService._get_html(self.signal, user, False)
        self.assertIn('*****@*****.**', html)
        self.assertIn('0612345678', html)
Esempio n. 3
0
    def test_get_html(self):
        html = PDFSummaryService._get_html(self.signal, self.user, False)

        # General information about the `Signal` object.
        current_tz = timezone.get_current_timezone()
        self.assertIn(self.signal.get_id_display(), html)
        self.assertIn(
            self.signal.created_at.astimezone(current_tz).strftime('%d-%m-%Y'),
            html)
        self.assertIn(
            self.signal.created_at.astimezone(current_tz).strftime('%H:%M:%S'),
            html)
        self.assertIn(
            self.signal.incident_date_start.astimezone(current_tz).strftime(
                '%d-%m-%Y'), html)
        self.assertIn(
            self.signal.incident_date_start.astimezone(current_tz).strftime(
                '%H:%M:%S'), html)
        self.assertIn(self.signal.get_id_display(), html)
        self.assertIn(self.signal.category_assignment.category.parent.name,
                      html)
        self.assertIn(self.signal.category_assignment.category.name, html)
        self.assertIn(self.signal.priority.get_priority_display(), html)
        self.assertIn(self.signal.text, html)
        self.assertIn(self.signal.location.get_stadsdeel_display(), html)
        self.assertIn(self.signal.location.address_text, html)
        self.assertIn(self.signal.source, html)

        # All status transitions.
        for status in self.signal.statuses.all():
            self.assertIn(status.state, html)
            self.assertIn(status.text, html)
            self.assertIn(status.user, html)
Esempio n. 4
0
    def pdf(self, request, *args, **kwargs):
        signal = self.get_object()
        user = request.user

        pdf = PDFSummaryService.get_pdf(signal, user)
        pdf_filename = f'{signal.get_id_display()}.pdf'
        return HttpResponse(pdf, content_type='application/pdf', headers={
            'Content-Disposition': f'attachment;filename="{pdf_filename}"'
        })
Esempio n. 5
0
    def test_location_has_stadsdeel(self):
        # test stadsdeel present
        location = ValidLocationFactory.create(_signal=self.signal)
        self.signal.location = location
        self.signal.save()
        self.signal.refresh_from_db()

        html = PDFSummaryService._get_html(self.signal, None, False)
        self.assertIn(self.signal.location.get_stadsdeel_display(), html)
Esempio n. 6
0
    def test_location_has_no_area_name_and_area_code(self):
        # test only area_code present
        location = LocationFactory.create(_signal=self.signal,
                                          area_name=None,
                                          area_code='AREA-CODE',
                                          stadsdeel=None)
        self.signal.location = location
        self.signal.save()
        self.signal.refresh_from_db()

        html = PDFSummaryService._get_html(self.signal, None, False)
        self.assertIn(self.signal.location.area_code, html)
Esempio n. 7
0
    def test_get_contact_details_no_contact_details_and_no_permissions(self):
        """
        Check that missing contact details are not turned into '*****' when not
        allowed to view reporter contact details.
        """
        self.signal.reporter.email = None
        self.signal.reporter.phone = None
        self.signal.reporter.save()
        self.signal.refresh_from_db()

        user = UserFactory.create()
        self.assertFalse(user.has_perm('signals.sia_can_view_contact_details'))
        email, phone = PDFSummaryService._get_contact_details(
            self.signal, user, False)
        self.assertEqual(email, None)
        self.assertEqual(phone, None)
Esempio n. 8
0
def _generate_voegZaakdocumentToe_Lk01(signal, seq_no):
    """
    Generate XML for Sigmax voegZaakdocumentToe_Lk01 (for the PDF case)
    """
    pdf = PDFSummaryService.get_pdf(signal, None, True)
    encoded_pdf = base64.b64encode(pdf)

    return render_to_string('sigmax/voegZaakdocumentToe_Lk01.xml',
                            context={
                                'signal': signal,
                                'sequence_number': seq_no,
                                'DOC_UUID': str(uuid.uuid4()),
                                'DATA': encoded_pdf.decode('utf-8'),
                                'DOC_TYPE': 'PDF',
                                'FILE_NAME': f'{signal.get_id_display()}.pdf'
                            })
Esempio n. 9
0
    def test_extra_properties(self):
        html = PDFSummaryService._get_html(self.signal, None, False)

        self.assertIn('Is de situatie gevaarlijk?', html)
        self.assertIn('Niet gevaarlijk', html)