Example #1
0
    def test_input_widgets(self):
        """Create widgets to input data with Formulator fields.
        """
        form = FormData(self.root, TestRequest())
        widgets = Widgets(form=form)
        widgets.extend(Fields(self.root.form))
        self.assertEqual(len(widgets), 4)

        # String
        text_widget = widgets.get('field-text-field')
        self.assertTrue(verifyObject(IFormulatorWidget, text_widget))
        self.assertEqual(text_widget.identifier, 'field-text-field')
        self.assertEqual(text_widget.title, 'Name')
        self.assertEqual(text_widget.description, '')
        self.assertEqual(text_widget.required, True)

        # Checkbox
        checkbox_widget = widgets.get('field-deceased-field')
        self.assertTrue(verifyObject(IFormulatorWidget, checkbox_widget))
        self.assertEqual(checkbox_widget.identifier, 'field-deceased-field')
        self.assertEqual(checkbox_widget.title, 'Deceased ?')
        self.assertEqual(checkbox_widget.description, '')
        self.assertEqual(checkbox_widget.required, False)

        # Update
        widgets.update()

        # Render
        self.assertEqual(
            text_widget.render(),
            u'<div class="field field-required"><input class="field field-required" id="field-text-field" name="field_text_field" size="20" type="text" value="Arthur van Bossnia" /></div> <input type="hidden" value="1" name="marker_field_text_field" />')
        self.assertEqual(
            checkbox_widget.render(),
            u'<input class="field" id="field-deceased-field" name="field_deceased_field" type="checkbox" /> <input type="hidden" value="1" name="marker_field_deceased_field" />')
Example #2
0
class Step1(wizard.WizardStep):
    composed.view(MyWizard)
    grok.context(Content)

    ignoreContent = False
    fields = Fields(IContact).select('name')
    label = "Step1"
Example #3
0
class Step2(wizard.WizardStep):
    """Second form of the wizard.
    """
    wizard.view(PersonWizard)
    grok.context(MyContent)

    ignoreContent = False
    fields = Fields(IContact).select('age')
    label = "Step Age"
Example #4
0
class Step1(wizard.WizardStep):
    """First form of the wizard.
    """
    wizard.view(PersonWizard)
    grok.context(MyContent)

    ignoreContent = False
    fields = Fields(IContact).select('surname')
    label = "Step Name"
Example #5
0
    def test_fields(self):
        """Create fields.
        """
        fields = Fields(self.root.form)
        self.assertEqual(len(fields), 4)
        # String
        text_field = fields.get('text_field')
        self.assertTrue(verifyObject(IFormulatorField, text_field))
        self.assertEqual(text_field.meta_type, 'StringField')
        self.assertEqual(text_field.identifier, 'text_field')
        self.assertEqual(text_field.title, 'Name')
        self.assertEqual(text_field.readonly, False)
        self.assertEqual(text_field.required, True)
        self.assertEqual(text_field.getDefaultValue(None), 'Arthur van Bossnia')

        # Checkbox
        checkbox_field = fields.get('deceased_field')
        self.assertTrue(verifyObject(IFormulatorField, checkbox_field))
        self.assertEqual(checkbox_field.meta_type, 'CheckBoxField')
        self.assertEqual(checkbox_field.identifier, 'deceased_field')
        self.assertEqual(checkbox_field.title, 'Deceased ?')
        self.assertEqual(checkbox_field.readonly, False)
        self.assertEqual(checkbox_field.required, False)
        self.assertEqual(checkbox_field.getDefaultValue(None), False)
Example #6
0
class Login(Form):
    """A very basic implementation of a login form.
    """
    grok.title(_("Log in"))
    grok.require("zope.Public")
    grok.context(zope.interface.Interface)

    prefix = ""
    label = _("Identify yourself")
    form_name = _("Login form")

    fields = Fields(ILoginForm)
    fields['camefrom'].mode = 'hidden'
    for field in fields:
        field.prefix = ""

    @action(_("Log in"))
    def login(self):
        data, errors = self.extractData()
        if errors:
            return FAILURE
        principal = self.request.principal
        if IUnauthenticatedPrincipal.providedBy(principal):
            self.status = _("Login failed")
            return FAILURE

        self.flash(
            _("You are now logged in as ${name}",
              mapping={"name": principal.id}))

        grok.notify(UserLoggedInEvent(principal))
        camefrom = self.request.get("camefrom", None)
        if not camefrom:
            if ILocation.providedBy(principal):
                camefrom = absoluteURL(principal, self.request)
            else:
                camefrom = absoluteURL(self.context, self.request)

        self.redirect(camefrom)
        return SUCCESS
Example #7
0
    def test_display_widgets(self):
        """Create widgets to input data with Formulator fields.
        """
        form = FormData(self.root, TestRequest())
        form.mode = DISPLAY
        widgets = Widgets(form=form)
        widgets.extend(Fields(self.root.form))
        self.assertEqual(len(widgets), 4)

        # String
        text_widget = widgets.get('field-text-field')
        self.assertTrue(verifyObject(IFormulatorWidget, text_widget))

        # Checkbox
        checkbox_widget = widgets.get('field-deceased-field')
        self.assertTrue(verifyObject(IFormulatorWidget, checkbox_widget))

        # Update
        widgets.update()

        # Render
        self.assertEqual(text_widget.render(), u'Arthur van Bossnia')
        self.assertEqual(checkbox_widget.render(), u'No')
Example #8
0
 def configuration_fields(self):
     ifaces = self.getInterfaces()
     return Fields(*ifaces)
Example #9
0
class Step2(wizard.WizardStep):
    composed.view(MyWizard)
    grok.context(Content)
    fields = Fields(IContact).select('age')
    label = "Step2"
Example #10
0
 def fields(self):
     return Fields(*self.context.schema)
Example #11
0
 def fields(self):
     content_object = self.context.getContentType()
     return Fields(*content_object.schema)
Example #12
0
class LandingPage(ApplicationForm):
    grok.context(interface.IInvoiceUploader)
    grok.name("index")
    grok.require("zope.Public")

    fields = Fields(interface.IInvoice)

    def update(self):
        resource.style.need()

    @action("Senden")
    def handel_save(self):
        data, errors = self.extractData()
        if errors:
            self.flash(u'Es sind leider Fehler aufgetreten')
            return
        if data['anrede'] == '':
            self.flash(u'Bitte wählen Sie eine Anrede aus.')
            return
        if data['email'] != '':
            checkmail = re.compile(
                r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$").match
            if not bool(checkmail(data['email'])):
                self.flash(
                    u'Bitte tragen Sie eine gültige E-Mail Adresse ein.')
                return
        if data['datenschutz'] is False:
            self.flash(
                u'Bitte bestätigen Sie die Datenschutzerklärung der UKH.')
            return
        for x in data['anlagen']:
            if x == NO_VALUE:
                self.flash(u'Sie haben keine Dateien zum Upload ausgewählt!')
                return
        output_path = settings.get('output_path')
        pdfstreams = []
        pdf_fn = UploadPdf(data, None)
        for attachment in data.get('anlagen'):
            print attachment.filename
            if "pdf" in attachment.filename:
                pdfstreams.append(attachment)

            elif "heic" in attachment.filename:
                from backports.tempfile import TemporaryDirectory
                with TemporaryDirectory() as tmpdirname:
                    ifn = '%s/%s' % (tmpdirname, attachment.filename)
                    ofn = '%s/%s.jpg' % (tmpdirname, attachment.filename)
                    import pdb
                    pdb.set_trace()

                    with open(ifn, 'wb') as heic:
                        heic.write(attachment.read())
                    subprocess.call(["heif-convert", ifn, ofn])
                    with open(ofn, 'rb') as f:
                        rgbimage = Image.open(f)
                        jpegimage = StringIO()
                        rgbimage.save(jpegimage, format="JPEG")
                        jpegimage.seek(0)
                        pdfimage = img2pdf.convert(jpegimage)
                        pdfstreams.append(StringIO(pdfimage))

            elif "jpeg" in attachment.filename or 'jpg' or 'png' in attachment.filename:
                pilimage = Image.open(attachment)
                if pilimage.mode == "RGBA":
                    rgbimage = pilimage.convert("RGB")
                else:
                    rgbimage = pilimage
                jpegimage = StringIO()
                rgbimage.save(jpegimage, format="JPEG")
                jpegimage.seek(0)
                pdfimage = img2pdf.convert(jpegimage)
                pdfstreams.append(StringIO(pdfimage))
        deckblatt = PdfFileReader(pdf_fn)
        fn_base = datetime.now().strftime('%Y%m%d_%H%M%S')
        for i, reader in enumerate(map(PdfFileReader, pdfstreams)):
            output_file = "%s/%s_%s.pdf" % (output_path, fn_base, i)
            logger.info('Write File %s' % output_file)
            writer = PdfFileMerger()
            with open(output_file, 'wb') as output:
                writer.append(deckblatt)
                writer.append(reader)
                writer.write(output)
                #for n in range(reader.getNumPages()):
                #    writer.addPage(reader.getPage(n))
                #    writer.write(output)
        self.flash(u'Vielen Dank, wir haben Ihre Dateien erhalten.')
        self.redirect(self.application_url())