def setUploaded_pdfFile(self, value=None, **kwargs): """create PDF file in PDF folder on-the-fly""" bib_tool = getToolByName(self, 'portal_bibliography') types_tool = getToolByName(self, 'portal_types') bibfolder = self.getBibFolder() pdf_file = self.getPdf_file() if not pdf_file and isinstance(value, FileUpload): pdf_folder = bibfolder.getPdfFolder() # create PDF file and associate reference with it file_field = self.getField('uploaded_pdfFile') if bibfolder.getSynchronizePdfFileAttributes(): pdf_file_id = self.getId() + '.pdf' else: file_field.getFilename(self, fromBaseUnit=False) file_field.getFilename(self, fromBaseUnit=True) try: request=getattr(self, 'REQUEST', None) pdf_file_id = cleanupFilename(filename=value.filename, request=request, ) except TypeError: # BBB < Plone 3 pdf_file_id = cleanupFilename(filename=value.filename, context=self, encoding=self.getCharset(), ) # temporarily allow PDF File creation in PDF Folder, # create PDF File, revoke PDF File creation allowance pdf_folder.allowPdfFileCreation() new_id = pdf_folder.invokeFactory(id=pdf_file_id, type_name='PDF File', ) pdf_folder.disallowPdfFileCreation() # find the PDF File's ID and get the object if new_id is None or (new_id == ''): new_id = pdf_file_id pdf_file = pdf_folder._getOb(id=new_id) # set the file value pdf_file.setFile(value, **kwargs) if pdf_file: self.setPdf_file(value=pdf_file.UID()) elif pdf_file and isinstance(value, FileUpload): ## replace file field in PDF file pdf_file.setFile(value, **kwargs) elif pdf_file and isinstance(value, basestring) and (value == 'DELETE_FILE'): pdf_folder = bibfolder.getPdfFolder() ## delete PDF file, delete PDF file reference pdf_folder.manage_delObjects(ids=[pdf_file.getId()]) self.setPdf_file(value=None)
def test_cleanup_filename(self): self.app.REQUEST.set('HTTP_ACCEPT_LANGUAGE', 'el') from Products.ATContentTypes.content.base import cleanupFilename text = unicode('Νίκος Τζάνος', 'utf-8') self.assertEqual(cleanupFilename(text, request=self.app.REQUEST), 'Nikos Tzanos')
def test_cleanup_filename(self): self.app.REQUEST.set('HTTP_ACCEPT_LANGUAGE', 'el') from Products.ATContentTypes.content.base import cleanupFilename text = unicode('Νίκος Τζάνος', 'utf-8') self.assertEqual(cleanupFilename(text, request=self.app.REQUEST), 'Nikos Tzanos')
def setUploaded_pdfFile(self, value=None, **kwargs): """create PDF file in PDF folder on-the-fly""" bib_tool = getToolByName(self, 'portal_bibliography') types_tool = getToolByName(self, 'portal_types') bibfolder = self.getBibFolder() pdf_file = self.getPdf_file() if not pdf_file and isinstance(value, FileUpload): pdf_folder = bibfolder.getPdfFolder() # create PDF file and associate reference with it file_field = self.getField('uploaded_pdfFile') if bibfolder.getSynchronizePdfFileAttributes(): pdf_file_id = self.getId() + '.pdf' else: file_field.getFilename(self, fromBaseUnit=False) file_field.getFilename(self, fromBaseUnit=True) try: request = getattr(self, 'REQUEST', None) pdf_file_id = cleanupFilename( filename=value.filename, request=request, ) except TypeError: # BBB < Plone 3 pdf_file_id = cleanupFilename( filename=value.filename, context=self, encoding=self.getCharset(), ) # temporarily allow PDF File creation in PDF Folder, # create PDF File, revoke PDF File creation allowance pdf_folder.allowPdfFileCreation() new_id = pdf_folder.invokeFactory( id=pdf_file_id, type_name='PDF File', ) pdf_folder.disallowPdfFileCreation() # find the PDF File's ID and get the object if new_id is None or (new_id == ''): new_id = pdf_file_id pdf_file = pdf_folder._getOb(id=new_id) # set the file value pdf_file.setFile(value, **kwargs) if pdf_file: self.setPdf_file(value=pdf_file.UID()) elif pdf_file and isinstance(value, FileUpload): ## replace file field in PDF file pdf_file.setFile(value, **kwargs) elif pdf_file and isinstance(value, basestring) and (value == 'DELETE_FILE'): pdf_folder = bibfolder.getPdfFolder() ## delete PDF file, delete PDF file reference pdf_folder.manage_delObjects(ids=[pdf_file.getId()]) self.setPdf_file(value=None)