[Erp5-report] r27383 - in /erp5/trunk/utils/oood: mimemapper.py worker.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Jun 5 10:38:52 CEST 2009
Author: bartek
Date: Fri Jun 5 10:38:49 2009
New Revision: 27383
URL: http://svn.erp5.org?rev=27383&view=rev
Log:
Support for updating master fields in a document (by Marco Bizzarri)
Modified:
erp5/trunk/utils/oood/mimemapper.py
erp5/trunk/utils/oood/worker.py
Modified: erp5/trunk/utils/oood/mimemapper.py
URL: http://svn.erp5.org/erp5/trunk/utils/oood/mimemapper.py?rev=27383&r1=27382&r2=27383&view=diff
==============================================================================
--- erp5/trunk/utils/oood/mimemapper.py [utf8] (original)
+++ erp5/trunk/utils/oood/mimemapper.py [utf8] Fri Jun 5 10:38:49 2009
@@ -344,7 +344,7 @@
tmp_list.sort(lambda a,b:cmp(a[1]['sort_index'], b[1]['sort_index']))
self.document_type_dict[document_type] = \
[self.extension_by_export_filter_dict[k] for k, v in tmp_list \
- if v['document_type'] == document_type]
+ if v['document_type'] == document_type and k in self.extension_by_export_filter_dict.keys()]
def setFilterInfo(self):
# specify more properties for several filters
Modified: erp5/trunk/utils/oood/worker.py
URL: http://svn.erp5.org/erp5/trunk/utils/oood/worker.py?rev=27383&r1=27382&r2=27383&view=diff
==============================================================================
--- erp5/trunk/utils/oood/worker.py [utf8] (original)
+++ erp5/trunk/utils/oood/worker.py [utf8] Fri Jun 5 10:38:49 2009
@@ -71,8 +71,8 @@
"""
# for automatic interface generation
- public_funcs=('convert', 'generate', 'setmetadata', 'getmetadata', 'getmetadatatoolong')
-
+ public_funcs=('convert', 'generate', 'setmetadata', 'getmetadata', 'getmetadatatoolong',
+ 'generate_with_user_fields')
inProps = PropertyValue( "Hidden" , 0 , True, 0 ),
metafields=('title', 'subject', 'keywords', 'description', 'MIMEType')
@@ -152,6 +152,40 @@
mime = mimemapper.getMimeFor(kw['extension'])
kw['mime'] = mime
kw['newfilename'] = fileUrlToSystemPath(self.destUrl)
+
+ """ MasterFields have different names in 2.2 and 2.4 """
+
+ OPENOFFICE_24_PREFIX = "com.sun.star.text.fieldmaster.User.%s"
+ OPENOFFICE_22_PREFIX = "com.sun.star.text.FieldMaster.User.%s"
+
+ def _replace_key(self, key, prefix, data, masters):
+ actual_key = prefix % key
+ if actual_key in masters.getElementNames():
+ try:
+ master = masters.getByName(actual_key)
+ master.setPropertyValue('Content', unicode(data[key]))
+ except:
+ pass
+
+ def _fill_user_fields(self, user_fields):
+ masters = self.doc.getTextFieldMasters()
+ available_keys = masters.getElementNames()
+ for key in user_fields.keys():
+ self._replace_key(key, self.OPENOFFICE_24_PREFIX, user_fields, masters)
+ self._replace_key(key, self.OPENOFFICE_22_PREFIX, user_fields, masters)
+
+ def generate_with_user_fields(self, kw):
+ """
+ behaves like generate; however, it assumes that in the kw
+ there is a key named user_fields, which is used to
+ update MasterFields inside the provided document;
+ """
+ self._loadFile(kw['filename'], kw)
+ self._fill_user_fields(kw['user_fields'])
+ self._generate(kw['extension'])
+ mime = mimemapper.getMimeFor(kw['extension'])
+ kw['mime'] = mime[0] # it is a tuple; can be multiple but we don't know which exactly was requested
+ kw['newfilename'] = fileUrlToSystemPath(self.destUrl)
def setmetadata(self, kw):
"""
More information about the Erp5-report
mailing list