Example #1
0
    def test_create_file(self):
        grok_component('ITest2', ITest2)

        # mock stuf
        mock_context = self.providing_stub([
            ITabbedviewUploadable,
        ])
        named_file = NamedFile('bla bla', filename=u'test.txt')

        obj = self.providing_stub([ITest1, ITest2])
        request = self.stub()
        self.expect(obj.REQUEST).result(request)

        iterSchemata = self.mocker.replace(
            'plone.dexterity.utils.iterSchemata')
        self.expect(iterSchemata(obj)).result([ITest1, ITest2])

        self.replay()

        # test if it's sets the default value and
        # also if it add the created file to the primary field
        adapter = IQuickUploadFileFactory(mock_context)
        named_file = adapter.create_file(u'hugo.jpeg', u'data data', obj)

        self.assertEquals(named_file.data, u'data data')
Example #2
0
 def test_custom_actions(self):
     default_actions = api.content.create(self.portal,
                                          'File',
                                          id='easyform_default_actions.xml')
     default_actions.file = NamedFile(self.no_schema)
     ef = api.content.create(self.folder, 'EasyForm', id='my-form')
     self.assertEqual(ef.actions_model, self.no_schema)
Example #3
0
    def setUp(self):

        self.portal = self.layer['portal']
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        self.portal.invokeFactory('Folder', 'media')
        self.folder = self.portal.media
        self.folder.invokeFactory(
            'Image',
            'image',
            title='Test Image')
        self.image_type = self.folder['image']
        self.image_type.image = NamedImage(
            getData('data/plone-app-caching.jpg'),
            'image/jpg',
            u'plone-app-caching.jpg')
        self.folder.invokeFactory(
            'File',
            'file',
            title=u'Töst File')
        self.file = self.folder['file']
        self.file.file = NamedFile(
            getData('data/testfile.csv'),
            'text/csv',
            u'data/töstfile.csv')

        setRoles(self.portal, TEST_USER_ID, TEST_USER_ROLES)
Example #4
0
 def test_custom_actions(self):
     default_actions = api.content.create(self.portal,
                                          "File",
                                          id="easyform_default_actions.xml")
     default_actions.file = NamedFile(self.no_schema)
     ef = api.content.create(self.folder, "EasyForm", id="my-form")
     self.assertEqual(ef.actions_model, self.no_schema)
Example #5
0
    def test_should_detect_same_data_and_filename(self):
        self.loginAsPortalOwner()
        self.portal.invokeFactory(testing.TEST_CONTENT_TYPE_ID,
                                  'obj1',
                                  file=NamedFile(data='contents',
                                                 filename=u'f.txt'))
        obj1 = self.portal['obj1']

        self.portal.invokeFactory(testing.TEST_CONTENT_TYPE_ID,
                                  'obj2',
                                  file=NamedFile(data='contents',
                                                 filename=u'f.txt'))
        obj2 = self.portal['obj2']

        diff = namedfile.NamedFileBinaryDiff(obj1, obj2, 'file')
        self.assertTrue(IDifference.providedBy(diff))
        self.assertTrue(diff.same)
 def get_attachment(self, filename, type):
     file_path = os.path.join(os.path.dirname(__file__), filename)
     with open(file_path, 'rb') as f:
         if api.env.plone_version() < '5.0':
             return f
         if type == 'image':
             return NamedImage(data=f, filename=filename)
         return NamedFile(data=f, filename=filename)
Example #7
0
 def updateLastWorkingResults(self):
     self.modification_date = DateTime.DateTime()
     resp = requests.post(self.endpoint,
                          json=json.loads(self.query),
                          timeout=2)
     self.cached_results = NamedFile(data=resp.text,
                                     contentType='text/x-json',
                                     filename=u'cached_data.json')
Example #8
0
 def render(self):
     file_etiquetas = NamedFile(open(
         '/tmp/%s.pdf' % self.request.SESSION.id, 'r'),
                                filename=u'etiquetas.pdf')
     cd = 'inline; filename="etiquetas.pdf"'
     self.request.response.setHeader('Content-Disposition', cd)
     set_headers(file_etiquetas, self.request.response)
     return stream_data(file_etiquetas)
Example #9
0
    def test_should_detect_same_data_and_filename(self):
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        self.portal.invokeFactory(TEST_CONTENT_TYPE_ID,
                                  'obj1',
                                  file=NamedFile(data='contents',
                                                 filename=u'f.txt'))
        obj1 = self.portal['obj1']

        self.portal.invokeFactory(TEST_CONTENT_TYPE_ID,
                                  'obj2',
                                  file=NamedFile(data='contents',
                                                 filename=u'f.txt'))
        obj2 = self.portal['obj2']

        diff = DexterityBinaryDiff(obj1, obj2, 'file')
        self.assertTrue(IDifference.providedBy(diff))
        self.assertTrue(diff.same)
Example #10
0
    def test_document_fusion_with_merge_multiple(self):
        # data source is in a related content
        # we merge two files from two sources
        alsoProvides(self.portal.REQUEST, ICollectiveDocumentfusionLayer)
        intids = getUtility(IIntIds)
        source_1 = api.content.create(self.portal, type='contact_infos',
                                      id='desvenain_thomas',
                                      identity='M. Desvenain Thomas',
                                      address_1='24 rue des Trois Mollettes',
                                      address_2='C24',
                                      zipcode='59000',
                                      city='Lille')

        source_2 = api.content.create(self.portal, type='contact_infos',
                                      id='fretin_vincent',
                                      identity='M. Fretin Vincent',
                                      address_1='51 r Lac',
                                      address_2='',
                                      zipcode='59810',
                                      city='LESQUIN')

        content = api.content.create(self.portal, type='label_model',
                           title=u"Modèle d'étiquette",
                           file=NamedFile(data=open(TEST_LABEL_ODT).read(),
                                          filename=u'label.odt',
                                          contentType='application/vnd.oasis.opendocument.text'),
                           relatedItems=[RelationValue(intids.getId(source_1)),
                                         RelationValue(intids.getId(source_2))],
                           )

        notify(ObjectModifiedEvent(content))

        generated_stream = content.unrestrictedTraverse('@@getdocumentfusion')()
        self.assertTrue(generated_stream)
        self.assertEqual(self.portal.REQUEST.response['content-type'],
                         'application/pdf')
        generated_path = tempfile.mktemp(suffix='label.pdf')
        generated_file = open(generated_path, 'w')
        generated_file.write(generated_stream.read())
        generated_file.close()

        txt_path = tempfile.mktemp(suffix='label.pdf')
        subprocess.call(['pdftotext', generated_path, txt_path])
        txt = open(txt_path).read().replace(r'\xc2\xa0', ' ')

        # label 1
        self.assertIn('M. DESVENAIN THOMAS', txt)
        self.assertIn('24 RUE DES TROIS MOLLETTES', txt)
        self.assertIn('C24', txt)
        self.assertIn(u'59000', txt)

        # label 2
        self.assertIn('M. FRETIN VINCENT', txt)
        self.assertIn(u'59810', txt)
        self.assertIn(u'LESQUIN', txt)

        os.remove(txt_path)
        os.remove(generated_path)
Example #11
0
 def test_view_audio_tag(self):
     self.portal.invokeFactory('File', 'file')
     file = self.portal['file']
     file.file = NamedFile()
     file.file.contentType = 'video/ogv'
     alsoProvides(self.request, IPloneAppContenttypesLayer)
     view = file.restrictedTraverse('@@file_view')
     rendered = view()
     self.assertTrue('</video>' in rendered)
Example #12
0
 def render(self):
     session = Session()
     anexo = session.query(db.Anexo).get(self.request.id)
     p = anexo.protocolo
     path_anexo = os.path.join(PATH_ANEXOS, ScopeID(), str(p.ano), str(p.id), str(anexo.id))
     file_anexo = NamedFile(open(path_anexo, 'r'), filename=anexo.arquivo)
     cd = 'inline; filename="%s"' % anexo.arquivo.encode('utf-8')
     self.request.response.setHeader('Content-Disposition', cd)
     set_headers(file_anexo, self.request.response)
     return stream_data(file_anexo)
    def test_should_detect_different_data(self):
        setRoles(self.portal, TEST_USER_ID, ['Manager'])
        self.portal.invokeFactory(
            testing.TEST_CONTENT_TYPE_ID,
            'obj1',
            file=NamedFile(data='contents', filename=u'f.txt'),
        )
        obj1 = self.portal['obj1']

        self.portal.invokeFactory(
            testing.TEST_CONTENT_TYPE_ID,
            'obj2',
            file=NamedFile(data='different contents', filename=u'f.txt'),
        )
        obj2 = self.portal['obj2']

        diff = namedfile.NamedFileBinaryDiff(obj1, obj2, 'file')
        self.assertTrue(IDifference.providedBy(diff))
        self.assertFalse(diff.same)
Example #14
0
 def test_namedfile_field_serialization_returns_unicode(self):
     value = self.serialize(
         'test_namedfile_field',
         NamedFile(data=u'Spam and eggs',
                   contentType=u'text/plain',
                   filename=u'test.txt'))
     self.assertTrue(isinstance(value, unicode), 'Not an <unicode>')
     self.assertEqual(
         self.doc1.absolute_url() + u'/@@download/test_namedfile_field',
         value)
    def test_custom_email_template(self):
        """ Test mailer with custom template """
        default_fields = api.content.create(self.portal,
                                            'File',
                                            id='easyform_mail_body_default.pt')
        default_fields.file = NamedFile('Custom e-mail template!')

        mailer = get_actions(self.ff1)['mailer']
        mailer.onSuccess({}, self.layer['request'])
        self.assertIn(u'Custom e-mail template!', self.messageText)
    def test_custom_email_template(self):
        """ Test mailer with custom template """
        default_fields = api.content.create(self.portal,
                                            "File",
                                            id="easyform_mail_body_default.pt")
        default_fields.file = NamedFile("Custom e-mail template!")

        mailer = get_actions(self.ff1)["mailer"]
        mailer.onSuccess({}, self.layer["request"])
        self.assertIn(u"Custom e-mail template!", self.messageText)
Example #17
0
def _make_namedfile(value, field, widget):
    """Return a NamedImage or NamedFile instance, if it isn't already one -
    e.g. when it's base64 encoded data.
    """
    if isinstance(value, basestring) and IASCII.providedBy(field):
        filename, data = b64decode_file(value)
        if INamedImageWidget.providedBy(widget):
            value = NamedImage(data=data, filename=filename)
        else:
            value = NamedFile(data=data, filename=filename)
    return value
Example #18
0
    def toWidgetValue(self, value):

        if not isinstance(value, basestring):
            return None

        filename, data = b64decode_file(value)

        if INamedImageWidget.providedBy(self.widget):
            value = NamedImage(data=data, filename=filename)
        else:
            value = NamedFile(data=data, filename=filename)
        return value
Example #19
0
def create_file(container, filename):
    current_dir = os.path.abspath(os.path.dirname(__file__))
    file_path = os.path.join(current_dir, "profiles/demo/data/", filename)
    if os.path.isfile(file_path):
        contentType = mimetypes.guess_type(file_path)[0]
        title = os.path.basename(file_path)
        with open(file_path, "rb") as fd:
            file_obj = content.create(container=container,
                                      type="File",
                                      title=title)
            file_obj.file = NamedFile(data=fd,
                                      filename=title,
                                      contentType=contentType)
Example #20
0
    def test_namedfile_is_handeled_correctly_even_when_blobs_are_enabled(self):
        ftwdexterity.HAVE_BLOBS = True

        namedfile = create(Builder("namedfile")
                           .having(named_file=NamedFile(data='NamedFile',
                                                filename=u'h\xc3\xb6lla.txt')))

        ziprepresentation = getMultiAdapter((namedfile, self.request),
                                              interface=IZipRepresentation)

        files = list(ziprepresentation.get_files())
        files_converted = [(path, stream.read()) for path, stream in files]
        self.assertEquals([(u'/h\xc3\xb6lla.txt', "NamedFile")], files_converted)
Example #21
0
    def test_dexterity_handles_non_blob_files_and_returns_tuple(self):
        ftwdexterity.HAVE_BLOBS = False

        namedfile = create(Builder("namedfile")
                           .having(named_file=NamedFile(data='NamedFile',
                                                filename=u'h\xc3\xb6lla.txt')))

        ziprepresentation = getMultiAdapter((namedfile, self.request),
                                            interface=IZipRepresentation)

        files = list(ziprepresentation.get_files())
        files_converted = [(path, stream.read()) for path, stream in files]
        self.assertEquals([(u'/h\xc3\xb6lla.txt', "NamedFile")], files_converted)
Example #22
0
    def setup(self):
        name = ISettingsPortal.__identifier__ + '.background_image'
        background_image = api.portal.get_registry_record(name, default=None)

        if background_image is None:
            self.data = None
            return

        # set background media data for download
        filename, data = b64decode_file(background_image)
        self.filename = filename
        self.data = NamedFile(data=data, filename=filename)
        self.checksum = hashlib.sha1(data).hexdigest()
    def test_with_file(self):
        self.expect(self.request.get('HTTP_USER_AGENT', ANY)).result('DEF')

        monk_file = NamedFile('bla bla', filename=u'test.txt')

        self.replay()

        set_attachment_content_disposition(
            self.request, 'Default Name', file=monk_file)

        self.assertEquals(
            self.header,
            ['text/plain', 7, 'attachment; filename="Default Name"'])
 def afterSetUp(self):
     self.folder.invokeFactory("EasyForm", "ff1")
     self.ff1 = getattr(self.folder, "ff1")
     self.ff1.CSRFProtection = False  # no csrf protection
     self.ff1.showAll = True
     field_template = api.content.create(self.layer["portal"],
                                         "File",
                                         id="easyform_default_fields.xml")
     with open(join(dirname(__file__), "fixtures",
                    self.schema_fixture)) as f:
         filecontent = NamedFile(f.read(), contentType="application/xml")
     field_template.file = filecontent
     classImplements(BaseRequest, IFormLayer)
     validators.update_validators()
Example #25
0
 def setUp(self):
     portal = self.layer['portal']
     setRoles(portal, TEST_USER_ID, ('Manager',))
     portal.invokeFactory('emc.kb.folder', 'folder') 
     portal['folder'].invokeFactory('emc.kb.kbfolder', 'kbfolder')
     portal['folder']['kbfolder'].invokeFactory('File', 'f1')
     file = portal['folder']['kbfolder']
     file.file = NamedFile()
     file.title = "My File"
     file.description = "This is my file."
     
             
        
     self.portal = portal
Example #26
0
 def test_namedfile_field_serialization_returns_dict(self):
     value = self.serialize(
         'test_namedfile_field',
         NamedFile(data=u'Spam and eggs', contentType=u'text/plain',
                   filename=u'test.txt'))
     self.assertTrue(isinstance(value, dict), 'Not a <dict>')
     download_url = u'/'.join([
         self.doc1.absolute_url(),
         u'@@download/test_namedfile_field'])
     self.assertEqual(
         {u'filename': u'test.txt',
          u'content-type': u'text/plain',
          u'size': 13,
          u'download': download_url},
         value)
Example #27
0
    def test_no_widget_on_thankspage_fieldset(self):
        self.ff1.showAll = True
        field_template = api.content.create(self.layer['portal'],
                                            'File',
                                            id='easyform_default_fields.xml')
        with open(join(dirname(__file__), 'fixtures',
                       'fieldset_form.xml')) as f:
            filecontent = NamedFile(f.read(), contentType='application/xml')
        field_template.file = filecontent

        data = {'front': 'hello front', 'back': 'hello back'}
        request = self.LoadRequestForm(**data)
        request.method = 'POST'
        form = EasyFormForm(self.ff1, request)()
        self.assertNotIn('<input id="form-widgets-back"', form)
Example #28
0
    def test_serialize_file(self):
        self.portal.invokeFactory('File', id='file1', title='File 1')
        self.portal.file1.file = NamedFile(data=u'Spam and eggs',
                                           contentType=u'text/plain',
                                           filename=u'test.txt')

        file_url = self.portal.file1.absolute_url()
        download_url = '{0}/@@download/file'.format(file_url)
        self.assertEqual(
            {
                u'filename': u'test.txt',
                u'content-type': u'text/plain',
                u'download': download_url,
                u'size': 13
            },
            self.serialize(self.portal.file1).get('file'))
Example #29
0
    def test_thankspage_radio(self):
        self.ff1.showAll = True
        field_template = api.content.create(self.layer['portal'],
                                            'File',
                                            id='easyform_default_fields.xml')
        with open(join(dirname(__file__), 'fixtures', 'radio_form.xml')) as f:
            filecontent = NamedFile(f.read(), contentType='application/xml')
        field_template.file = filecontent

        data = {'yes': 'true', 'yes-empty-marker': 1}
        request = self.LoadRequestForm(**data)
        request.method = 'POST'
        form = EasyFormForm(self.ff1, request)()
        self.assertIn(
            '<span id="form-widgets-yes" class="radio-widget bool-field"><span class="selected-option">yes</span></span>',  # noqa
            form)
Example #30
0
    def test_show_hidden_on_thankspage(self):
        self.ff1.showAll = True
        field_template = api.content.create(self.layer['portal'],
                                            'File',
                                            id='easyform_default_fields.xml')
        with open(join(dirname(__file__), 'fixtures', 'hidden_form.xml')) as f:
            filecontent = NamedFile(f.read(), contentType='application/xml')
        field_template.file = filecontent

        data = {'hide': 'hello hidden'}
        request = self.LoadRequestForm(**data)
        request.method = 'POST'
        form = EasyFormForm(self.ff1, request)()
        self.assertIn(
            '<span id="form-widgets-hide" class="text-widget textline-field">hello hidden</span>',  # noqa
            form)