Example #1
0
    def manage_http_upload(self, url, is_preview=0, REQUEST=None):
        """ Upload image from http-server """
        if self.wl_isLocked():
            raise ResourceLockedError("File is locked via WebDAV")

        if is_preview:
            url = urllib.quote(url, '/:')
            file = urllib.urlopen(url)
            file = HTTPUpload(file)
            content_type = self._get_content_type(file, file.read(100),
                                                  self.id,
                                                  self.prev_content_type)
            file.seek(0)
            self._register()  # Register with TM
            try:
                backup = REPOSITORY_EXTENSIONS in (MIMETYPE_APPEND, MIMETYPE_REPLACE) and \
                         self.prev_filename and self.prev_content_type != content_type
                new_fn = self._get_ufn(self.prev_filename,
                                       content_type=content_type,
                                       backup=backup)
                self._update_data(file, self._temp_fsname(new_fn))
            finally:
                self._dir__unlock()
            self.prev_filename = new_fn
            self.prev_content_type = content_type
            self._initPreview()
        else:
            super(ExtImage, self).manage_http_upload(url)
        if REQUEST is not None:
            return self.manage_main(self,
                                    REQUEST,
                                    manage_tabs_message='Upload complete.')
Example #2
0
    def manage_http_upload(self, url, is_preview=0, REQUEST=None):
        """ Upload image from http-server """
        if self.wl_isLocked():
            raise ResourceLockedError("File is locked via WebDAV")

        if is_preview:
            url = urllib.quote(url, "/:")
            file = urllib.urlopen(url)
            file = HTTPUpload(file)
            content_type = self._get_content_type(file, file.read(100), self._get_zodb_id(), self.prev_content_type)
            file.seek(0)
            self._register()  # Register with TM
            try:
                backup = self.prev_filename and self._changed(self.prev_content_type, content_type)
                new_fn = self._get_ufn(self.prev_filename, content_type=content_type, backup=backup)
                self._update_data(file, self._temp_fsname(new_fn))
            finally:
                self._dir__unlock()
            self.prev_filename = new_fn
            self.prev_content_type = content_type
            self._initPreview()
        else:
            super(ExtImage, self).manage_http_upload(url)
        if REQUEST is not None:
            return self.manage_main(self, REQUEST, manage_tabs_message="Upload complete.")
Example #3
0
    def manage_file_upload(
        self, file="", content_type="", is_preview=0, create_prev=NO_PREVIEW, maxx="", maxy="", ratio=0, REQUEST=None
    ):
        """ Upload image from file handle, Pdata, or local directory """
        if self.wl_isLocked():
            raise ResourceLockedError("File is locked via WebDAV")

        if is_preview:
            if isinstance(file, str):
                file = open(file, "rb")
            elif isinstance(file, Pdata):
                file = pdata(file)
            maxx, maxy = self._formatDimensions(maxx, maxy)
            if create_prev == UPLOAD_RESIZE and maxx != 0 and maxy != 0:
                self._register()  # Register with TM
                try:
                    new_fn = self._get_ufn(self.prev_filename, content_type="image/jpeg")
                    self._update_data(file, self._temp_fsname(new_fn))
                finally:
                    self._dir__unlock()
                self._createPreview(new_fn, new_fn, maxx, maxy, ratio)
            else:
                if content_type:
                    file = HTTPUpload(file, content_type)
                content_type = self._get_content_type(file, file.read(100), self._get_zodb_id(), self.prev_content_type)
                file.seek(0)
                self._register()  # Register with TM
                try:
                    backup = self.prev_filename and self._changed(self.prev_content_type, content_type)
                    new_fn = self._get_ufn(self.prev_filename, content_type=content_type, backup=backup)
                    self._update_data(file, self._temp_fsname(new_fn))
                finally:
                    self._dir__unlock()
                self.prev_filename = new_fn
                self.prev_content_type = content_type
                self._initPreview()
        else:
            super(ExtImage, self).manage_file_upload(file, content_type)
            if create_prev == GENERATE:
                maxx, maxy = self._formatDimensions(maxx, maxy)
                if maxx != 0 and maxy != 0:
                    self._register()  # Register with TM
                    try:
                        new_fn = self._get_ufn(self.prev_filename, content_type="image/jpeg")
                        self._createPreview(self.filename, new_fn, maxx, maxy, ratio)
                    finally:
                        self._dir__unlock()
        if REQUEST is not None:
            return self.manage_main(self, REQUEST, manage_tabs_message="Upload complete.")
Example #4
0
 def testFileContentType(self):
     file = open(gifImage, 'rb')
     upload = HTTPUpload(file, content_type='image/jpeg')
     self.failUnless(isinstance(upload, FileUpload))
     self.assertEqual(upload.headers['content-type'], 'image/jpeg')
     self.assertEqual(upload.filename, None)
     self.failUnless(hasattr(upload, 'read'))
     self.failUnless(hasattr(upload, 'seek'))
Example #5
0
 def testUrlOpenFilename(self):
     url = urllib.urlopen(self.app.GifImage.absolute_url())
     upload = HTTPUpload(url, filename='image.gif')
     self.failUnless(isinstance(upload, FileUpload))
     self.assertEqual(upload.headers['content-type'], 'image/gif')
     self.assertEqual(upload.filename, 'image.gif')
     self.failUnless(hasattr(upload, 'read'))
     self.failUnless(hasattr(upload, 'seek'))
Example #6
0
 def testFileUploadFilename(self):
     upload = makeFileUpload(gifImage, content_type='image/gif')
     self.failUnless(isinstance(upload, FileUpload))
     upload = HTTPUpload(upload, filename='image.gif')
     self.failUnless(isinstance(upload, FileUpload))
     self.assertEqual(upload.headers['content-type'], 'image/gif')
     self.assertEqual(upload.filename, 'image.gif')
     self.failUnless(hasattr(upload, 'read'))
     self.failUnless(hasattr(upload, 'seek'))
Example #7
0
 def testFileFilename(self):
     file = open(gifImage, 'rb')
     upload = HTTPUpload(file, filename='image.gif')
     self.failUnless(isinstance(upload, FileUpload))
     self.assertEqual(upload.headers['content-type'],
                      'application/x-www-form-urlencoded')
     self.assertEqual(upload.filename, 'image.gif')
     # XXX: Must have content type for this to work
     self.failIf(hasattr(upload, 'read'))
     self.failIf(hasattr(upload, 'seek'))
Example #8
0
    def manage_file_upload(self,
                           file='',
                           content_type='',
                           is_preview=0,
                           create_prev=NO_PREVIEW,
                           maxx='',
                           maxy='',
                           ratio=0,
                           REQUEST=None):
        """ Upload image from file handle or local directory """
        if self.wl_isLocked():
            raise ResourceLockedError("File is locked via WebDAV")

        if is_preview:
            if isinstance(file, str):
                file = open(file, 'rb')
            maxx, maxy = self._formatDimensions(maxx, maxy)
            if create_prev == UPLOAD_RESIZE and maxx != 0 and maxy != 0:
                self._register()  # Register with TM
                try:
                    new_fn = self._get_ufn(self.prev_filename,
                                           content_type='image/jpeg')
                    self._update_data(file, self._temp_fsname(new_fn))
                finally:
                    self._dir__unlock()
                self._createPreview(new_fn, new_fn, maxx, maxy, ratio)
            else:
                if content_type:
                    file = HTTPUpload(file, content_type)
                content_type = self._get_content_type(file, file.read(100),
                                                      self.id,
                                                      self.prev_content_type)
                file.seek(0)
                self._register()  # Register with TM
                try:
                    backup = REPOSITORY_EXTENSIONS in (MIMETYPE_APPEND, MIMETYPE_REPLACE) and \
                             self.prev_filename and self.prev_content_type != content_type
                    new_fn = self._get_ufn(self.prev_filename,
                                           content_type=content_type,
                                           backup=backup)
                    self._update_data(file, self._temp_fsname(new_fn))
                finally:
                    self._dir__unlock()
                self.prev_filename = new_fn
                self.prev_content_type = content_type
                self._initPreview()
        else:
            super(ExtImage, self).manage_file_upload(file, content_type)
            if create_prev == GENERATE:
                maxx, maxy = self._formatDimensions(maxx, maxy)
                if maxx != 0 and maxy != 0:
                    self._register()  # Register with TM
                    try:
                        new_fn = self._get_ufn(self.prev_filename,
                                               content_type='image/jpeg')
                        self._createPreview(self.filename, new_fn, maxx, maxy,
                                            ratio)
                    finally:
                        self._dir__unlock()
        if REQUEST is not None:
            return self.manage_main(self,
                                    REQUEST,
                                    manage_tabs_message='Upload complete.')