[Erp5-report] r20235 - /erp5/trunk/products/ERP5Form/ScribusUtils.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Mar 31 19:57:23 CEST 2008
Author: fabien
Date: Mon Mar 31 19:57:23 2008
New Revision: 20235
URL: http://svn.erp5.org?rev=20235&view=rev
Log:
* add log level
* delete some temporary files wich were not before
* remove the use of "rm -f" wich is very dangerous
Modified:
erp5/trunk/products/ERP5Form/ScribusUtils.py
Modified: erp5/trunk/products/ERP5Form/ScribusUtils.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ScribusUtils.py?rev=20235&r1=20234&r2=20235&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ScribusUtils.py (original)
+++ erp5/trunk/products/ERP5Form/ScribusUtils.py Mon Mar 31 19:57:23 2008
@@ -632,13 +632,15 @@
raise ValueError, 'Error: convert command failed with the following'\
'error message : \n%s' % result[1]
finally:
- temp_pdf.close()
+ if os.path.exists(temp_pdf.name):
+ temp_pdf.close()
background_image_list = makeImageList()
if not len(background_image_list):
LOG('ScribusUtils.setBackgroundPictures :', ERROR, 'no background '\
'image found')
- temp_image.close()
+ if os.path.exists(temp_image.name):
+ temp_image.close()
raise ValueError, 'Error: ScribusUtils.setBackgroundPictures : '\
'no background'
@@ -660,9 +662,15 @@
addImageMethod(form_page_id, temp_background_file, "background image")
image_number += 1
- # remove the file from the system
- if os.path.exists(background_image):
- os.remove(background_image)
+ background_image_list = makeImageList()
+ if len(background_image_list) > 1:
+ # if there is more than one page : delete all the pages created by
+ # convert using remove method, else, the unique page will be delete at
+ # the close() call
+ for background_image in background_image_list[1:]:
+ # remove the file from the system
+ if os.path.exists(background_image):
+ os.remove(background_image)
size_x = int(real_size_x)
size_y = int(real_size_y)
@@ -692,7 +700,8 @@
pdf_file.seek(0)
# saving content
temp_pdf.write(pdf_file.read())
- temp_pdf.close()
+ if os.path.exists(temp_pdf.name):
+ temp_pdf.close()
width_groups = []
height_groups = []
# launching first soft to convert from PDF to PPM
@@ -759,7 +768,7 @@
reinitialized after this procedure has been called.
"""
if def_usePropertySheet:
- LOG('ManageFiles', 0, ' object_names = %s' % object_names['view_id'])
+ LOG('ManageFiles', INFO, ' object_names = %s' % object_names['view_id'])
#property_form = getattr(skin_folder,object_names['view_id'])
# defining file name for Property Sheet
name_file =''
@@ -902,7 +911,7 @@
and save these informations in the output dict
"""
(field_name, properties_field) = field
- LOG('ManageCSS', 0,
+ LOG('ManageCSS', INFO,
' => %s : %s' % (field_name, properties_field['rendering']))
# updating field properties if necessary
@@ -1044,11 +1053,11 @@
elif properties_field['type'] == 'DateTimeField':
# rendering DateTimeField, composed at least of three input
# areas, and their order can be changed
- LOG('ManageCSS', 0, ' Type DateTimeField')
+ LOG('ManageCSS', INFO, ' Type DateTimeField')
# getting the number of fields to render and their size unit
if properties_field['date_only'] == '0':
- LOG('ManageCSS', 0, ' Option : Not Date Only')
+ LOG('ManageCSS', INFO, ' Option : Not Date Only')
field_nb = 5
# defining counting unit for fields
# total = 6.1 units:
@@ -1060,13 +1069,13 @@
# 1 > minutes
width_part = int(float(properties_field['size_x']) / 6.1)
else:
- LOG('ManageCSS', 0, ' Option : Date Only')
+ LOG('ManageCSS', INFO, ' Option : Date Only')
field_nb = 3
# same as before but without hours and minutes
width_part = int((float(properties_field['size_x']) / 4))
- LOG('ManageCSS', 0,
+ LOG('ManageCSS', INFO,
' input_order=%s' % properties_field['input_order'])
# defining global field rendering (for Date), ignoring for the moment
# the whole part about the time
@@ -1127,9 +1136,9 @@
# rendering time if necessary
if properties_field['date_only'] == '0':
# date is specified
- LOG('ManageCSS', 0,
+ LOG('ManageCSS', INFO,
' position_x=%s' % properties_field['position_x'])
- LOG('ManageCSS', 0,
+ LOG('ManageCSS', INFO,
' size_x=%s' % properties_field['size_x'])
field_dict[4] = {}
field_dict[4]['width'] = str(width_part) + 'px'
@@ -1144,7 +1153,7 @@
int(properties_field['size_x']) - width_part) + 'px'
# number of fields to generate
- LOG('ManageCSS', 0, '\n field_number = %s' % field_nb)
+ LOG('ManageCSS', INFO, '\n field_number = %s' % field_nb)
field_nb_range = field_nb + 1
field_range = range(field_nb_range)
@@ -1153,9 +1162,9 @@
# iterator take the field_id according to the field_nb
# ie (0..field_nb)
#iterator = it + 1
- LOG('ManageCSS', 0, ' sub_field_id=%s' % iterator)
+ LOG('ManageCSS', INFO, ' sub_field_id=%s' % iterator)
class_name = field_name + '_class_' + str(iterator)
- LOG('ManageCSS', 0, ' class_name=%s' % class_name)
+ LOG('ManageCSS', INFO, ' class_name=%s' % class_name)
# managing standard class properties
properties_css_dict['standard'][class_name] = {}
@@ -1178,12 +1187,12 @@
field_dict[iterator][prop_id]
# final printing for testing
- LOG('ManageCSS', 0, '\n\n final printing')
+ LOG('ManageCSS', INFO, '\n\n final printing')
for iterator in field_range:
class_name = field_name + '_class_' + str(iterator)
- LOG('ManageCSS', 0, ' class=%s' % class_name)
+ LOG('ManageCSS', INFO, ' class=%s' % class_name)
for prop_id in properties_css_dict['standard'][class_name].keys():
- LOG('ManageCSS', 0, ' prop:%s=%s' % \
+ LOG('ManageCSS', INFO, ' prop:%s=%s' % \
(prop_id,properties_css_dict['standard'][class_name][prop_id]))
@@ -1212,7 +1221,7 @@
return a string containing the whole content of the CSS output
from properties_css_dict
"""
- LOG('ManageCSS', 0,
+ LOG('ManageCSS', INFO,
' createmodule > printing output from css_class_generator')
form_css_content = "/*-- special css form generated through ScribusUtils"\
"module --*/\n"
@@ -1298,12 +1307,12 @@
return object_dict[check_key]
else:
# check_key is null, logging and asigning default value
- LOG("WARNING : " + str(object_name), 0, "invalid " + str(check_key) \
- + ": using " + str(default_value))
+ LOG("WARNING : " + str(object_name), WARNING, "invalid " \
+ + str(check_key) + ": using " + str(default_value))
return default_value
else:
# check_key is null, logging and asigning default value
- LOG("WARNING : " + str(object_name), 0, "no " + str(check_key) \
+ LOG("WARNING : " + str(object_name), WARNING, "no " + str(check_key) \
+ ": using " + str(default_value))
return default_value
@@ -1325,7 +1334,7 @@
xml_string = xml_string.replace('', '\t')
# Create DOM tree from the xml string
- LOG('ScribusParser', 0, ' > create DOM tree')
+ LOG('ScribusParser', INFO, ' > create DOM tree')
dom_tree = minidom.parseString(xml_string)
# creating the root from the input file
@@ -1344,7 +1353,7 @@
# no version propery is contained in the document
# the content does not comply with the Scribus document
# specification
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
" Bad Scribus document format : no 'Version' property ")
return (None, keep_page, 0)
else:
@@ -1352,10 +1361,10 @@
version = dom_root.attributes["Version"].value
if version[:3] == "1.2" :
# Scribus document format is 1.2
- LOG('ScribusParser', 0, ' found Scribus document format 1.2')
+ LOG('ScribusParser', INFO, ' found Scribus document format 1.2')
#making a listing of all the PAGE objects
- LOG('ScribusParser', 0, ' > making listing of all PAGE objects')
+ LOG('ScribusParser', INFO, ' > making listing of all PAGE objects')
page_list = dom_root.getElementsByTagName("PAGE")
returned_page_dict = {}
@@ -1369,7 +1378,7 @@
if 'NUM' in page.attributes.keys():
page_number = str(page.attributes['NUM'].value)
- LOG('ScribusParser', 0, ' > PAGE NUM=%s' % str(page_number))
+ LOG('ScribusParser', INFO, ' > PAGE NUM=%s' % str(page_number))
# making a listing of all PAGEOBJECT in a specified PAGE
page_object_list = page.getElementsByTagName("PAGEOBJECT")
@@ -1400,7 +1409,8 @@
#if 'PAGEOBJECT' has a valid name, then adding it to the global
#dictionary containing all the 'PAGEOBJECT' of the 'PAGE'
returned_page_object_list.append(returned_page_object)
- LOG('ScribusParser', 0, ' > PAGEOBJECT = ' + str(field_name))
+ LOG('ScribusParser', INFO,
+ ' > PAGEOBJECT = ' + str(field_name))
#after having scanned all 'PAGEOBJECT' from a 'PAGE', adding the
#relative informations to the list of 'PAGE' before going to
@@ -1409,14 +1419,15 @@
if len(returned_page_object_list) != 0:
returned_page_dict[page_number] = returned_page_object_list
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
'=> end ScribusParser.getXmlObjectPropertiesDict')
return (returned_page_dict, keep_page, 0)
# end parsing document version 1.2.*
else:
- LOG('ScribusParser', 0, ' found Scribus Doucment format 1.3 or higher')
+ LOG('ScribusParser', INFO,
+ ' found Scribus Doucment format 1.3 or higher')
# assuming version is compliant with 1.3.* specifications
keep_page = 1
@@ -1432,7 +1443,7 @@
int(float(document_list[0].attributes["PAGEWIDTH"].value))
scribus_page_height = \
int(float(document_list[0].attributes["PAGEHEIGHT"].value))
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
' DOCUMENT > scratch_left = %s scratch_top = %s' % \
(scratch_left, scratch_top))
#page_list = dom_root.getElementsByTagName("PAGE")
@@ -1457,16 +1468,18 @@
if node_name == 'ANNAME':
if node_value != '':
field_name = node_value.replace(' ', '_')
- LOG('ScribusParser', 0, '> found field : %s' % field_name)
+ LOG('ScribusParser', INFO, '> found field : %s' % field_name)
elif node_name == 'OwnPage':
field_OwnPage = node_value
elif node_name == 'XPOS':
- LOG('ScribusParser', 0, ' > updating Xpos : %s - %s = %s' % \
+ LOG('ScribusParser', INFO,
+ ' > updating Xpos : %s - %s = %s' % \
(scratch_left+int(float(node_value)), scratch_left,
node_value))
node_value = str(int(float(node_value)) - scratch_left)
elif node_name == 'YPOS':
- LOG('ScribusParser', 0, ' > updating Ypos : %s - %s = %s' % \
+ LOG('ScribusParser', INFO,
+ ' > updating Ypos : %s - %s = %s' % \
(scratch_top+int(float(node_value)), scratch_top,
node_value))
node_value = str(int(float(node_value)) - scratch_top)
@@ -1474,12 +1487,14 @@
returned_page_object[node_name] = node_value
if field_name != '':
- LOG('ScribusParser', 0, ' > field has the name : %s' % field_name)
+ LOG('ScribusParser', INFO,
+ ' > field has the name : %s' % field_name)
# field seems to be ok, just need to check if the related page
# already exists in the 'returned_page_dict'
if not field_OwnPage in returned_page_dict.keys():
# page does not exists, need to create it before adding the field
- LOG('ScribusParser', 0, ' > adding new page')
+ LOG('ScribusParser', INFO,
+ ' > adding new page')
returned_page_dict[field_OwnPage] = []
returned_page_dict[field_OwnPage].append(returned_page_object)
return (returned_page_dict, keep_page, page_gap)
@@ -1507,7 +1522,7 @@
'nb'
"""
- LOG('ScribusParser', 0, '\n => ScribusParser.getPropertiesConversion')
+ LOG('ScribusParser', INFO, '\n => ScribusParser.getPropertiesConversion')
returned_page_dict = {}
# declaring ScribusParser object to run other functions
@@ -1519,7 +1534,7 @@
# content = page_content
page_content = text_page_dict[page_number]
- LOG('ScribusParser', 0, ' => PAGE = %s" % str(page_number)')
+ LOG('ScribusParser', INFO, ' => PAGE = %s" % str(page_number)')
# declaring special lists used to generate nb for all objects
# this 'nb' property is usefull to define the object creation order
@@ -1543,7 +1558,7 @@
object_content = object_data
multiline_field= 0
#multiline_field= object_content['ANFLAG']
- LOG('ScribusParser', 0, ' => PAGEOBJECT = " + str(object_name)')
+ LOG('ScribusParser', INFO, ' => PAGEOBJECT = " + str(object_name)')
# recovering other attributes list (string format) from 'ANTOOLTIP'
text_tooltipfield_properties = \
sp.getObjectTooltipProperty('ANTOOLTIP', '', object_name,
@@ -1556,7 +1571,8 @@
tooltipfield_properties_list = \
text_tooltipfield_properties.split('#')
- LOG('ScribusParser', 0, ' ' + str(tooltipfield_properties_list))
+ LOG('ScribusParser', INFO,
+ ' ' + str(tooltipfield_properties_list))
# test if first argument is nb according to previous
# naming-conventions i.e composed of three digits without
@@ -1566,9 +1582,9 @@
# a creation-order information compliant with the previous
# naming convention
# modifying this field to make it compatible with new convention
- LOG('ScribusParser', 0, ' => first element = ' + \
+ LOG('ScribusParser', INFO, ' => first element = ' + \
str(tooltipfield_properties_list[0] + " is digit..."))
- LOG("WARNING : " + str(object_name), 0, "out-of-date " \
+ LOG("WARNING : " + str(object_name), WARNING, "out-of-date " \
+ "for tooltipfield, please check naming_conventions")
temp_nb = tooltipfield_properties_list[0]
# deleting actual entry
@@ -1578,7 +1594,7 @@
# end of translating work to get new standard compliant code
for tooltipfield_property in tooltipfield_properties_list:
#printing each property before spliting
- LOG('ScribusParser', 0, ' ' + str(tooltipfield_property))
+ LOG('ScribusParser', INFO, ' ' + str(tooltipfield_property))
# splitting attribute_id / attribute_value
tooltipfield_properties_split = tooltipfield_property.split(':')
if len(tooltipfield_properties_split) == 2:
@@ -1670,7 +1686,7 @@
anflag_properties['required'] = 0
anflag_properties['readOnly'] = 0
# analysing result
- LOG('ScribusParser', 0, ' => ANFLAG = ' + str(temp_ANFLAG))
+ LOG('ScribusParser', INFO, ' => ANFLAG = ' + str(temp_ANFLAG))
# These tests uses some special variables
# defined at the begining of the script
if temp_ANFLAG - long(def_noScroll) >= 0:
@@ -1723,7 +1739,7 @@
'0',
object_name,
object_content)
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
' => MaxInput = %s' % object_properties['maximum_input'])
# getting object type :
@@ -1779,12 +1795,12 @@
# document-properties. logging and initialising with
# default type
LOG("WARNING : " + str(object_name),
- 0,
+ WARNING,
"no 'type' found, please check your document properties")
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', WARNING,
' => no type specified : default = StringField')
object_properties['type'] = 'StringField'
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
' type = ' + str(object_properties['type']))
@@ -1822,7 +1838,7 @@
'0',
object_name,
tooltipfield_properties_dict)
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
' group = ' + str(object_properties['group']))
# object is listbox, and listbox have several possible values
# WARNING listbox have not been tested in graphic rendering for
@@ -1901,34 +1917,36 @@
# object has a nb properties containing its creation position
# adding the object in the ordered list
nb_value = int(tooltipfield_properties_dict['nb'])
- LOG('ScribusParser', 0, " =>'nb' property specified : using it")
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
+ " =>'nb' property specified : using it")
+ LOG('ScribusParser', INFO,
' > len(list)=%s' % len(nb_property_nbkey_list))
# iterating through existing list to find right position
# before inserting value
if len(nb_property_nbkey_list) == 0:
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', WARNING,
" => 'nb' list empty : adding without sorting")
# list is empty : adding value without sort
nb_property_nbkey_list.insert(0, (nb_value,object_name))
elif nb_property_nbkey_list[len(nb_property_nbkey_list)-1][0] <= \
nb_value:
- LOG('ScribusParser', 0, " => 'nb' end : adding at the end")
+ LOG('ScribusParser', INFO, " => 'nb' end : adding at the end")
# last element is smaller than new element : adding at the end
nb_property_nbkey_list.append((nb_value, object_name))
else:
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
' => checking for place to add the element')
# searching where to insert the element in the ordered list
for temp_key in range(len(nb_property_nbkey_list)):
temp_value = nb_property_nbkey_list[temp_key][0]
temp_content = nb_property_nbkey_list[temp_key][1]
- LOG('ScribusParser', 0, " @" + str(temp_key) + " temp=" + \
+ LOG('ScribusParser', INFO,
+ " @" + str(temp_key) + " temp=" + \
str(temp_value) + "/" + str(nb_value))
if nb_value < temp_value:
#first position where actual 'nb' is smaller than temp 'nb'
# inserting new couple (nb_value,object_name) here
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
' inserting here : ' + str(temp_value) + \
"/" + str(nb_value))
nb_property_nbkey_list.insert(temp_key, (nb_value,
@@ -1939,9 +1957,9 @@
else:
# object has no nb property. logging and adding it to the list of
# nb-less objects. Script will automatically find a 'nb' value for this element
- LOG("WARNING : " + str(object_name), 0,
+ LOG("WARNING : " + str(object_name), WARNING,
"no 'nb' defined : finding a free slot")
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', WARNING,
" => no 'nb' property specified : post-processing "\
"will try to define one")
nb_property_nonbkey_list.append(object_name)
@@ -1960,7 +1978,7 @@
# and addind it to the end of the final nb-list
# to give them a 'nb' property
nb_property_nbkey_list.append((object_position,object_name))
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
" => 'nb' found for %s : %s" % (object_name, object_position))
# now all page_object are referenced in the list, we just need to sort
@@ -1981,7 +1999,8 @@
returned_page_dict[page_number] = returned_object_list
# returning final dict containing all the modified data
- LOG('ScribusParser', 0, ' => end ScribusParser.getPropertiesConversion')
+ LOG('ScribusParser', INFO,
+ ' => end ScribusParser.getPropertiesConversion')
return (returned_page_dict)
security.declarePublic('initFieldDict')
@@ -2057,7 +2076,7 @@
elif properties_field['input_order'] in ['year/month/day','ymd']:
object_dict['attributes']['input_order'] = 'ymd'
else:
- LOG('ScribusParser', 0,
+ LOG('ScribusParser', INFO,
" found incompatible 'input_order', assuming default ymd")
object_dict['attributes']['input_order'] = 'ymd'
# checking if date only or date + time
More information about the Erp5-report
mailing list