[gen] list field now takes into account 'show' attribute of sub-fields.

This commit is contained in:
Gaetan Delannay 2014-01-14 09:07:42 +01:00
parent 89de53d56d
commit e1d0597694
10 changed files with 32 additions and 11 deletions

View file

@ -1,4 +1,4 @@
#!/bin/sh
/opt/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=2002;urp;"
soffice "--accept=socket,host=localhost,port=2002;urp;"
echo "Press <enter>..."
read R

View file

@ -27,7 +27,7 @@ class List(Field):
# PX for rendering a single row.
pxRow = Px('''
<tr valign="top" style=":(rowIndex==-1) and 'display: none' or ''">
<td for="info in field.fields" align="center"
<td for="info in subFields" if="info[1]" align="center"
var2="field=info[1];
fieldName='%s*%d' % (field.name, rowIndex);
tagCss='noStyle'">:field.pxRender</td>
@ -42,10 +42,11 @@ class List(Field):
pxTable = Px('''
<table var="isEdit=layoutType == 'edit'" if="isEdit or value"
id=":'list_%s' % name" class=":isEdit and 'grid' or 'list'"
width=":field.width">
width=":field.width"
var2="subFields=field.getSubFields(zobj, layoutType)">
<!-- Header -->
<tr valign="bottom">
<th for="info in field.fields"
<th for="info in subFields" if="info[1]"
width=":field.widths[loop.info.nb]">::_(info[1].labelId)</th>
<!-- Icon for adding a new row. -->
<th if="isEdit">
@ -105,6 +106,19 @@ class List(Field):
for n, field in self.fields:
if n == name: return field
def getSubFields(self, obj, layoutType):
'''Returns the sub-fields (name, Field) that are showable among
field.fields on the given p_layoutType. Fields that cannot appear in
the result are nevertheless present as a tuple (name, None). This
way, it keeps a nice layouting of the table.'''
res = []
for n, field in self.fields:
elem = (n, None)
if field.isShowable(obj, layoutType):
elem = (n, field)
res.append(elem)
return res
def getRequestValue(self, request, requestName=None):
'''Concatenates the list from distinct form elements in the request.'''
name = requestName or self.name # A List may be into another List (?)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

BIN
gen/ui/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

BIN
gen/ui/bannerrtl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View file

@ -154,7 +154,7 @@ class AbstractWrapper(object):
<tr class="top">
<!-- Top banner -->
<td var="bannerName=(dir == 'ltr') and 'banner' or 'bannerrtl'"
style=":url('%s.jpg' % bannerName, bg=True)">
style=":url('%s.png' % bannerName, bg=True)">
<!-- Top links -->
<div style="margin-top: 4px" align=":dright">

View file

@ -214,8 +214,8 @@ class StylesManager:
(a) if the key is (1), (2) or (3), value must be the display name
of an ODT style
(b) if the key is (4), value must be an integer indicating how to
map the outline level of outlined styles (ie, for mapping HTML
tag "h1" to the ODT style with outline-level=2, value must be
map the outline level of outlined styles (ie, for mapping XHTML
tag "h1" to the OD style with outline-level=2, value must be
integer "1". In that case, h2 will be mapped to the ODT style
with outline-level=3, etc.). Note that this value can also be
negative.

View file

@ -40,6 +40,13 @@ class LdapConnector:
self.server = ldap.initialize(self.serverUri)
self.server.simple_bind_s(login, password)
return True, None
except AttributeError, ae:
# When the ldap module is not there, trying to catch ldap.LDAPError
# will raise an error.
message = str(ae)
self.log('Ldap connect error with login %s (%s).' % \
(login, message))
return False, message
except ldap.LDAPError, le:
message = str(le)
self.log('%s: connect error with login %s (%s).' % \

View file

@ -438,7 +438,7 @@ class LinesCounter:
self.printReport()
# ------------------------------------------------------------------------------
CONVERSION_ERROR = 'An error occurred while executing command "%s". %s'
CONVERSION_ERROR = 'An error occurred. %s'
class FileWrapper:
'''When you get, from an appy object, the value of a File attribute, you
get an instance of this class.'''
@ -476,10 +476,10 @@ class FileWrapper:
must exist. If not, the file will be dumped in the OS temp folder.
The absolute path name of the dumped file is returned.
If an error occurs, the method returns None. If p_format is
specified, OpenOffice will be called for converting the dumped file
specified, LibreOffice will be called for converting the dumped file
to the desired format. In this case, p_tool, a Appy tool, must be
provided. Indeed, any Appy tool contains parameters for contacting
OpenOffice in server mode.'''
LibreOffice in server mode.'''
if not filePath:
filePath = '%s/file%f.%s' % (getOsTempFolder(), time.time(),
normalizeString(self.name))
@ -511,7 +511,7 @@ class FileWrapper:
else:
filePath = '%s.%s' % (baseName, format)
if not os.path.exists(filePath):
tool.log(CONVERSION_ERROR % (cmd, errorMessage), type='error')
tool.log(CONVERSION_ERROR % errorMessage, type='error')
return
return filePath