Bugzilla – Attachment 162170 Details for
Bug 134112
Python script freezes when access text field master in MailMerge event for the second time
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Python script for remote access
lo-test.py (text/plain), 3.51 KB, created by
Oleg Shchelykalnov
on 2020-06-18 14:17:25 UTC
(
hide
)
Description:
Python script for remote access
Filename:
MIME Type:
Creator:
Oleg Shchelykalnov
Created:
2020-06-18 14:17:25 UTC
Size:
3.51 KB
patch
obsolete
>#!/usr/bin/env python3 >import logging >logging.basicConfig(level=logging.DEBUG) > >import uno >import unohelper >from com.sun.star.text import XMailMergeListener >from com.sun.star.text import MailMergeType > >from com.sun.star.container import XNameAccess >from com.sun.star.sdbc import XResultSet >from com.sun.star.sdbcx import XColumnsSupplier > >from com.sun.star.beans import XPropertySet >from com.sun.star.sdb import XColumn >from com.sun.star.sdbc import DataType > >from com.sun.star.container import NoSuchElementException >from com.sun.star.beans import UnknownPropertyException > >localContext = uno.getComponentContext() >resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext) >context = resolver.resolve("uno:socket,host=localhost,port=8989;urp;StarOffice.ComponentContext") >serviceManager = context.ServiceManager >mailMerge = serviceManager.createInstanceWithContext("com.sun.star.text.MailMerge", context) > >builtinExpr = ["Illustration", "Table", "Text", "Drawing", "Figure"] > >data1 = {} >data2 = {} >data = {1: data1, 2: data2} > >class PrintMailMergeListener(unohelper.Base, XMailMergeListener): > def __init__(self, content): > self.content = content > > def notifyMailMergeEvent(self, mailMergeEvent): > try: > logging.info("row = %d" % self.content.getRow()) > > textFields = mailMergeEvent.Model.getTextFields() > > textFieldMasters = mailMergeEvent.Model.getTextFieldMasters() > logging.debug("Get text field masters") > > for textFieldMasterName in textFieldMasters.getElementNames(): > logging.debug("textFieldMasterName = %s" % textFieldMasterName) > if textFieldMasterName.startswith("com.sun.star.text.fieldmaster.User") or \ > textFieldMasterName.startswith("com.sun.star.text.fieldmaster.SetExpression"): > textFieldMaster = textFieldMasters.getByName(textFieldMasterName) > logging.debug("Got text field master %s" % textFieldMasterName) > logging.info("Name = %s" % textFieldMaster.getPropertyValue("Name")) > except: > logging.exception("Mail merge event") > > >class FileNameColumn(unohelper.Base, XColumn, XPropertySet): > > #XColumn > > def getString(self): > return "test3Result" > > #XPropertySet > > def getPropertyValue(self, name): > if name == "Type": > return DataType.VARCHAR > raise UnknownPropertyException("Unknown property %s" % name) > > >class ContentWrapper(unohelper.Base, XNameAccess, XResultSet, XColumnsSupplier): > def __init__(self): > self.currentRow = 0 > > # XResultSet > > def first(self): > self.currentRow = 1 > return True > > def next(self): > if self.currentRow < 2: > self.currentRow = self.currentRow + 1 > return True > return False > > def getRow(self): > return self.currentRow > > #XColumnsSupplier > > def getColumns(self): > return self > > #XNameAccess > > def getElementNames(self): > return ["-FileName-"] > > def hasByName(self, name): > return name == "-FileName-" > > def getByName(self, name): > if name == "-FileName-": > return FileNameColumn() > raise NoSuchElementException("Unknown column %s" % name) > >content = ContentWrapper() > >mailMerge.addMailMergeEventListener(PrintMailMergeListener(content)) > >mailMerge.OutputType = MailMergeType.FILE >mailMerge.SaveAsSingleFile = True >mailMerge.FileNameFromColumn = True >mailMerge.FileNamePrefix = "-FileName-" >mailMerge.ResultSet = content >mailMerge.OutputURL = "file:///tmp/output/" >mailMerge.DocumentURL = "file:///tmp/test3.odt" >mailMerge.SaveFilter = "writer_pdf_Export" > >mailMerge.execute([])
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 134112
: 162170