[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