Commit ed5af4dd authored by Jérome Perrin's avatar Jérome Perrin

base: fix pylint messages and enable coding style test

parent cdae0727
...@@ -56,7 +56,7 @@ class Currency(Resource): ...@@ -56,7 +56,7 @@ class Currency(Resource):
# Unit conversion # Unit conversion
security.declareProtected(Permissions.AccessContentsInformation, 'convertQuantity') security.declareProtected(Permissions.AccessContentsInformation, 'convertQuantity')
def convertQuantity(self, quantity, from_unit, to_unit, variation_list=()): def convertQuantity(self, quantity, from_unit, to_unit, variation_list=(), transformed_resource=None, transformed_variation_list=()):
# 'variation_list' parameter may be deprecated: # 'variation_list' parameter may be deprecated:
# cf Measure.getConvertedQuantity # cf Measure.getConvertedQuantity
return quantity return quantity
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>Currency</string> </value> <value> <string>Currency</string> </value>
...@@ -14,6 +20,12 @@ ...@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key> <key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.Currency</string> </value> <value> <string>Products.ERP5.Document.Currency</string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>document.erp5.Currency</string> </value> <value> <string>document.erp5.Currency</string> </value>
...@@ -37,9 +49,7 @@ ...@@ -37,9 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W: 59, 2: Arguments number differs from overridden \'convertQuantity\' method (arguments-differ)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -49,13 +59,28 @@ ...@@ -49,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -68,7 +93,7 @@ ...@@ -68,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -77,7 +102,7 @@ ...@@ -77,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
...@@ -54,7 +54,7 @@ from Products.ERP5Type.ImageUtil import transformUrlToDataURI ...@@ -54,7 +54,7 @@ from Products.ERP5Type.ImageUtil import transformUrlToDataURI
# import mixin # import mixin
from Products.ERP5.mixin.text_convertable import TextConvertableMixin from Products.ERP5.mixin.text_convertable import TextConvertableMixin
def getDefaultImageQuality(portal, format=None): def getDefaultImageQuality(portal, format=None): # pylint: disable=redefined-builtin
preference_tool = portal.portal_preferences preference_tool = portal.portal_preferences
return preference_tool.getPreferredImageQuality() return preference_tool.getPreferredImageQuality()
...@@ -173,7 +173,10 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -173,7 +173,10 @@ class Image(TextConvertableMixin, File, OFSImage):
return self.height return self.height
security.declareProtected(Permissions.AccessContentsInformation, 'getContentType') security.declareProtected(Permissions.AccessContentsInformation, 'getContentType')
def getContentType(self, default=_MARKER): def getContentType( # pylint: disable=arguments-differ,dangerous-default-value
self,
default=_MARKER,
):
"""Original photo content_type.""" """Original photo content_type."""
self._upgradeImage() self._upgradeImage()
if self.hasData() and not self.hasContentType(): if self.hasData() and not self.hasContentType():
...@@ -208,8 +211,13 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -208,8 +211,13 @@ class Image(TextConvertableMixin, File, OFSImage):
return links return links
security.declareProtected(Permissions.AccessContentsInformation, 'displayMap') security.declareProtected(Permissions.AccessContentsInformation, 'displayMap')
def displayMap(self, exclude=None, format=None, quality=_MARKER,\ def displayMap( # pylint: disable=dangerous-default-value
resolution=None): self,
exclude=None,
format=None, # pylint: disable=redefined-builtin
quality=_MARKER,
resolution=None,
):
"""Return list of displays with size info.""" """Return list of displays with size info."""
displays = [] displays = []
if quality is _MARKER: if quality is _MARKER:
...@@ -236,7 +244,7 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -236,7 +244,7 @@ class Image(TextConvertableMixin, File, OFSImage):
security.declarePrivate('_convertToText') security.declarePrivate('_convertToText')
def _convertToText(self, format): def _convertToText(self, format): # pylint: disable=redefined-builtin
""" """
Convert the image to text with portaltransforms Convert the image to text with portaltransforms
""" """
...@@ -258,7 +266,7 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -258,7 +266,7 @@ class Image(TextConvertableMixin, File, OFSImage):
return mime_type, result return mime_type, result
# Conversion API # Conversion API
def _convert(self, format, **kw): def _convert(self, format, **kw): # pylint: disable=redefined-builtin
""" """
Implementation of conversion for Image files Implementation of conversion for Image files
""" """
...@@ -319,7 +327,16 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -319,7 +327,16 @@ class Image(TextConvertableMixin, File, OFSImage):
# Photo processing # Photo processing
# #
def _resize(self, quality, width, height, format, resolution, frame, crop=False): def _resize(
self,
quality,
width,
height,
format, # pylint: disable=redefined-builtin
resolution,
frame,
crop=False,
):
"""Resize and resample photo.""" """Resize and resample photo."""
icc_profile = os.path.join(os.path.dirname(__file__), icc_profile = os.path.join(os.path.dirname(__file__),
'..', 'misc', 'sRGB.icc') '..', 'misc', 'sRGB.icc')
...@@ -376,7 +393,15 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -376,7 +393,15 @@ class Image(TextConvertableMixin, File, OFSImage):
return StringIO(image) return StringIO(image)
raise ConversionError('Image conversion failed (%s).' % err) raise ConversionError('Image conversion failed (%s).' % err)
def _getDisplayData(self, format, quality, resolution, frame, image_size, crop): def _getDisplayData(
self,
format, # pylint: disable=redefined-builtin
quality,
resolution,
frame,
image_size,
crop,
):
"""Return raw photo data for given display.""" """Return raw photo data for given display."""
if crop: if crop:
width, height = image_size width, height = image_size
...@@ -389,13 +414,19 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -389,13 +414,19 @@ class Image(TextConvertableMixin, File, OFSImage):
return self.getData() return self.getData()
return self._resize(quality, width, height, format, resolution, frame, crop) return self._resize(quality, width, height, format, resolution, frame, crop)
def _makeDisplayPhoto(self, format=None, quality=_MARKER, def _makeDisplayPhoto( # pylint: disable=dangerous-default-value
resolution=None, frame=None, image_size=None, self,
crop=False): format=None, # pylint: disable=redefined-builtin
quality=_MARKER,
resolution=None,
frame=None,
image_size=None,
crop=False,
):
"""Create given display.""" """Create given display."""
if quality is _MARKER: if quality is _MARKER:
quality = self.getDefaultImageQuality(format) quality = self.getDefaultImageQuality(format)
width, height = image_size width, height = image_size # pylint: disable=unpacking-non-sequence
base, ext = splitext(self.id) base, ext = splitext(self.id)
id_ = '%s_%s_%s.%s'% (base, width, height, ext,) id_ = '%s_%s_%s.%s'% (base, width, height, ext,)
image = OFSImage(id_, self.getTitle(), image = OFSImage(id_, self.getTitle(),
...@@ -453,7 +484,7 @@ class Image(TextConvertableMixin, File, OFSImage): ...@@ -453,7 +484,7 @@ class Image(TextConvertableMixin, File, OFSImage):
self._update_image_info() self._update_image_info()
security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultImageQuality') security.declareProtected(Permissions.AccessContentsInformation, 'getDefaultImageQuality')
def getDefaultImageQuality(self, format=None): def getDefaultImageQuality(self, format=None): # pylint: disable=redefined-builtin
""" """
Get default image quality for a format. Get default image quality for a format.
""" """
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>Image</string> </value> <value> <string>Image</string> </value>
...@@ -14,6 +20,12 @@ ...@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key> <key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.Image</string> </value> <value> <string>Products.ERP5.Document.Image</string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>document.erp5.Image</string> </value> <value> <string>document.erp5.Image</string> </value>
...@@ -37,21 +49,7 @@ ...@@ -37,21 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W: 57, 35: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:176, 2: Dangerous default value _MARKER (__builtin__.list) as argument (dangerous-default-value)</string>
<string>W:176, 2: Arguments number differs from overridden \'getContentType\' method (arguments-differ)</string>
<string>W:211, 37: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:211, 2: Dangerous default value _MARKER (__builtin__.list) as argument (dangerous-default-value)</string>
<string>W:239, 27: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:261, 21: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:322, 44: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:379, 28: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:392, 30: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:392, 2: Dangerous default value _MARKER (__builtin__.list) as argument (dangerous-default-value)</string>
<string>W:398, 4: Attempting to unpack a non-sequence defined at line 393 (unpacking-non-sequence)</string>
<string>W:456, 35: Redefining built-in \'format\' (redefined-builtin)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -61,13 +59,28 @@ ...@@ -61,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -80,7 +93,7 @@ ...@@ -80,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -89,7 +102,7 @@ ...@@ -89,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# programmers who take the whole responsability of assessing all potential # programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs # consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial # End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software # guarantees and support are strongly adviced to contract a Free Software
# Service Company # Service Company
# #
# This program is Free Software; you can redistribute it and/or # This program is Free Software; you can redistribute it and/or
...@@ -30,9 +30,9 @@ from AccessControl import ClassSecurityInfo ...@@ -30,9 +30,9 @@ from AccessControl import ClassSecurityInfo
from erp5.component.mixin.EncryptedPasswordMixin import EncryptedPasswordMixin from erp5.component.mixin.EncryptedPasswordMixin import EncryptedPasswordMixin
from erp5.component.mixin.LoginAccountProviderMixin import LoginAccountProviderMixin from erp5.component.mixin.LoginAccountProviderMixin import LoginAccountProviderMixin
from Products.ERP5Type import Permissions, PropertySheet, interfaces from Products.ERP5Type import Permissions, PropertySheet, interfaces
from Products.ERP5Type.TransactionalVariable import getTransactionalVariable
from Products.ERP5Type.XMLObject import XMLObject from Products.ERP5Type.XMLObject import XMLObject
class Login(XMLObject, LoginAccountProviderMixin, EncryptedPasswordMixin): class Login(XMLObject, LoginAccountProviderMixin, EncryptedPasswordMixin):
meta_type = 'ERP5 Login' meta_type = 'ERP5 Login'
portal_type = 'Login' portal_type = 'Login'
......
...@@ -76,13 +76,13 @@ class MappedProperty(XMLObject): ...@@ -76,13 +76,13 @@ class MappedProperty(XMLObject):
return mapping_dict return mapping_dict
# XXX do we need to protect this method? # XXX do we need to protect this method?
def getMappedPropertyId(self, property, reverse=False): def getMappedPropertyId(self, property, reverse=False): # pylint: disable=redefined-builtin
return self.getMappingDict(reverse=reverse).get(property, property) return self.getMappingDict(reverse=reverse).get(property, property)
# Security should be handled by the target document not by the mapped # Security should be handled by the target document not by the mapped
# property document. # property document.
security.declarePublic('getMappedProperty') security.declarePublic('getMappedProperty')
def getMappedProperty(self, document, property): def getMappedProperty(self, document, property): # pylint: disable=redefined-builtin
if property.endswith('_list'): if property.endswith('_list'):
property = property[:-5] property = property[:-5]
getProperty = document.getPropertyList getProperty = document.getPropertyList
...@@ -98,7 +98,7 @@ class MappedProperty(XMLObject): ...@@ -98,7 +98,7 @@ class MappedProperty(XMLObject):
# Security should be handled by the target document not by the mapped # Security should be handled by the target document not by the mapped
# property document. # property document.
security.declarePublic('setMappedProperty') security.declarePublic('setMappedProperty')
def setMappedProperty(self, document, property, value): def setMappedProperty(self, document, property, value): # pylint: disable=redefined-builtin
if property.endswith('_list'): if property.endswith('_list'):
property = property[:-5] property = property[:-5]
setProperty = document.setPropertyList setProperty = document.setPropertyList
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>MappedProperty</string> </value> <value> <string>MappedProperty</string> </value>
...@@ -14,6 +20,12 @@ ...@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key> <key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.Document.MappedProperty</string> </value> <value> <string>Products.ERP5.Document.MappedProperty</string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>document.erp5.MappedProperty</string> </value> <value> <string>document.erp5.MappedProperty</string> </value>
...@@ -37,11 +49,7 @@ ...@@ -37,11 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W: 79, 32: Redefining built-in \'property\' (redefined-builtin)</string>
<string>W: 85, 40: Redefining built-in \'property\' (redefined-builtin)</string>
<string>W:101, 40: Redefining built-in \'property\' (redefined-builtin)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -51,13 +59,28 @@ ...@@ -51,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -70,7 +93,7 @@ ...@@ -70,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -79,7 +102,7 @@ ...@@ -79,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
...@@ -190,7 +189,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi ...@@ -190,7 +189,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi
return cached_getTargetFormatItemList(self.getBaseContentType()) return cached_getTargetFormatItemList(self.getBaseContentType())
def _getConversionFromProxyServer(self, format): def _getConversionFromProxyServer(self, format): # pylint: disable=redefined-builtin
""" """
Communicates with server to convert a file Communicates with server to convert a file
""" """
...@@ -226,7 +225,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi ...@@ -226,7 +225,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi
return response_dict['mime'], Pdata(dec(response_dict['data'])) return response_dict['mime'], Pdata(dec(response_dict['data']))
# Conversion API # Conversion API
def _convert(self, format, frame=0, **kw): def _convert(self, format, frame=0, **kw): # pylint: disable=redefined-builtin
"""Convert the document to the given format. """Convert the document to the given format.
If a conversion is already stored for this format, it is returned If a conversion is already stored for this format, it is returned
...@@ -346,8 +345,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi ...@@ -346,8 +345,7 @@ class OOoDocument(OOoDocumentExtensibleTraversableMixin, BaseConvertableFileMixi
if zip_file is None: if zip_file is None:
format_list = [x for x in self.getTargetFormatList() format_list = [x for x in self.getTargetFormatList()
if x.startswith('html') or x.endswith('html')] if x.startswith('html') or x.endswith('html')]
format = format_list[0] mime, data = self._getConversionFromProxyServer(format_list[0])
mime, data = self._getConversionFromProxyServer(format)
archive_file = cStringIO.StringIO() archive_file = cStringIO.StringIO()
archive_file.write(str(data)) archive_file.write(str(data))
zip_file = zipfile.ZipFile(archive_file) zip_file = zipfile.ZipFile(archive_file)
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>OOoDocument</string> </value> <value> <string>OOoDocument</string> </value>
...@@ -43,11 +49,7 @@ ...@@ -43,11 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W:193, 42: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:229, 21: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:349, 6: Redefining built-in \'format\' (redefined-builtin)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -57,13 +59,28 @@ ...@@ -57,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -76,7 +93,7 @@ ...@@ -76,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -85,7 +102,7 @@ ...@@ -85,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
...@@ -28,4 +28,7 @@ ...@@ -28,4 +28,7 @@
# for builders, and still distinguish order builders from others # for builders, and still distinguish order builders from others
# Once legacy simulation is dropped, "Order Builder" portal type should # Once legacy simulation is dropped, "Order Builder" portal type should
# should be changed to use SimulatedDeliveryBuilder class. # should be changed to use SimulatedDeliveryBuilder class.
from erp5.component.document.GeneratedDeliveryBuilder import GeneratedDeliveryBuilder as OrderBuilder from erp5.component.document.GeneratedDeliveryBuilder import GeneratedDeliveryBuilder
class OrderBuilder(GeneratedDeliveryBuilder):
pass
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>OrderBuilder</string> </value> <value> <string>OrderBuilder</string> </value>
...@@ -53,13 +59,28 @@ ...@@ -53,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -72,7 +93,7 @@ ...@@ -72,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -81,7 +102,7 @@ ...@@ -81,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
############################################################################## ##############################################################################
# #
# Copyright (c) 2002-2005 Nexedi SARL and Contributors. All Rights Reserved. # Copyright (c) 2002-2005 Nexedi SARL and Contributors. All Rights Reserved.
...@@ -46,10 +45,19 @@ else: ...@@ -46,10 +45,19 @@ else:
from Products.ERP5Security.ERP5UserManager import ERP5UserManager from Products.ERP5Security.ERP5UserManager import ERP5UserManager
from Products.ERP5Security.ERP5LoginUserManager import ERP5LoginUserManager from Products.ERP5Security.ERP5LoginUserManager import ERP5LoginUserManager
class UserExistsError(ValidationFailed):
class UserExistsError(
ValidationFailed,
# to workaround pylint's false positive:
# Exception doesn't inherit from standard "Exception" class (nonstandard-exception)
# because it cannot import ValidationFailed (which is set by a monkey patch), we also
# inherit from Exception.
Exception,
):
def __init__(self, user_id): def __init__(self, user_id):
super(UserExistsError, self).__init__('user id %s already exists' % (user_id, )) super(UserExistsError, self).__init__('user id %s already exists' % (user_id, ))
class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMixin): class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMixin):
""" """
An Person object holds the information about An Person object holds the information about
...@@ -91,7 +99,7 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMi ...@@ -91,7 +99,7 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMi
security.declareProtected(Permissions.AccessContentsInformation, security.declareProtected(Permissions.AccessContentsInformation,
'getTitle') 'getTitle')
def getTitle(self, **kw): def getTitle(self, **kw): # pylint: disable=super-on-old-class
""" """
Returns the title if it exists or a combination of Returns the title if it exists or a combination of
first name, middle name and last name first name, middle name and last name
...@@ -105,7 +113,7 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMi ...@@ -105,7 +113,7 @@ class Person(Node, LoginAccountProviderMixin, EncryptedPasswordMixin, ERP5UserMi
security.declareProtected(Permissions.AccessContentsInformation, security.declareProtected(Permissions.AccessContentsInformation,
'getTranslatedTitle') 'getTranslatedTitle')
def getTranslatedTitle(self, **kw): def getTranslatedTitle(self, **kw): # pylint: disable=super-on-old-class
""" """
Returns the title if it exists or a combination of Returns the title if it exists or a combination of
first name, middle name and last name first name, middle name and last name
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>Person</string> </value> <value> <string>Person</string> </value>
...@@ -43,11 +49,7 @@ ...@@ -43,11 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W:158, 10: Exception doesn\'t inherit from standard "Exception" class (nonstandard-exception)</string>
<string>W:166, 6: Exception doesn\'t inherit from standard "Exception" class (nonstandard-exception)</string>
<string>W:178, 6: Exception doesn\'t inherit from standard "Exception" class (nonstandard-exception)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -57,13 +59,28 @@ ...@@ -57,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -76,7 +93,7 @@ ...@@ -76,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -85,7 +102,7 @@ ...@@ -85,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
...@@ -203,8 +202,8 @@ class SimulatedDeliveryBuilder(BuilderMixin): ...@@ -203,8 +202,8 @@ class SimulatedDeliveryBuilder(BuilderMixin):
if property_dict in (None, {}): if property_dict in (None, {}):
return return
delivery = self.getPortalObject().restrictedTraverse(delivery_relative_url) delivery = self.getPortalObject().restrictedTraverse(delivery_relative_url)
for (property, value) in property_dict.iteritems(): for (prop, value) in property_dict.iteritems():
delivery.setPropertyList(property, value) delivery.setPropertyList(prop, value)
# Try to remove existing properties/categories from Movements that # Try to remove existing properties/categories from Movements that
# should exist on Deliveries. # should exist on Deliveries.
...@@ -341,7 +340,7 @@ class SimulatedDeliveryBuilder(BuilderMixin): ...@@ -341,7 +340,7 @@ class SimulatedDeliveryBuilder(BuilderMixin):
'solveDivergence') 'solveDivergence')
solveDivergence = UnrestrictedMethod(_solveDivergence) solveDivergence = UnrestrictedMethod(_solveDivergence)
def _createDelivery(self, delivery_module, movement_list, activate_kw): def _createDelivery(self, delivery_module, movement_list, activate_kw): # pylint: disable=super-on-old-class
""" """
Refer to the docstring in GeneratedDeliveryBuilder. Refer to the docstring in GeneratedDeliveryBuilder.
Unlike GeneratedDeliveryBuilder, SimulatedDeliveryBuilder needs to respect Unlike GeneratedDeliveryBuilder, SimulatedDeliveryBuilder needs to respect
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>SimulatedDeliveryBuilder</string> </value> <value> <string>SimulatedDeliveryBuilder</string> </value>
...@@ -43,9 +49,7 @@ ...@@ -43,9 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W:206, 9: Redefining built-in \'property\' (redefined-builtin)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -55,13 +59,28 @@ ...@@ -55,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -74,7 +93,7 @@ ...@@ -74,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -83,7 +102,7 @@ ...@@ -83,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
...@@ -10,7 +10,7 @@ def generateBarcodeImage(self, barcode_type, data, REQUEST=None): ...@@ -10,7 +10,7 @@ def generateBarcodeImage(self, barcode_type, data, REQUEST=None):
stdout=PIPE, stdout=PIPE,
stderr=PIPE, stderr=PIPE,
close_fds=True) close_fds=True)
output, error = process.communicate(input=data) output, _ = process.communicate(input=data)
elif barcode_type == 'ean13': elif barcode_type == 'ean13':
from hubarcode.ean13 import EAN13Encoder from hubarcode.ean13 import EAN13Encoder
encoder = EAN13Encoder(data) encoder = EAN13Encoder(data)
......
...@@ -6,10 +6,22 @@ ...@@ -6,10 +6,22 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>BarcodeUtils</string> </value> <value> <string>BarcodeUtils</string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>extension.erp5.BarcodeUtils</string> </value> <value> <string>extension.erp5.BarcodeUtils</string> </value>
...@@ -24,6 +36,18 @@ ...@@ -24,6 +36,18 @@
<none/> <none/>
</value> </value>
</item> </item>
<item>
<key> <string>text_content_error_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item> <item>
<key> <string>version</string> </key> <key> <string>version</string> </key>
<value> <string>erp5</string> </value> <value> <string>erp5</string> </value>
...@@ -31,13 +55,28 @@ ...@@ -31,13 +55,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -50,7 +89,7 @@ ...@@ -50,7 +89,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -59,26 +98,30 @@ ...@@ -59,26 +98,30 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
<pickle> <pickle>
<tuple> <dictionary>
<none/> <item>
<list> <key> <string>_log</string> </key>
<dictionary> <value>
<item> <list>
<key> <string>action</string> </key> <dictionary>
<value> <string>validate</string> </value> <item>
</item> <key> <string>action</string> </key>
<item> <value> <string>validate</string> </value>
<key> <string>validation_state</string> </key> </item>
<value> <string>validated</string> </value> <item>
</item> <key> <string>validation_state</string> </key>
</dictionary> <value> <string>validated</string> </value>
</list> </item>
</tuple> </dictionary>
</list>
</value>
</item>
</dictionary>
</pickle> </pickle>
</record> </record>
</ZopeData> </ZopeData>
...@@ -37,7 +37,6 @@ def migrateToEmbeddedFile(self, force=0): ...@@ -37,7 +37,6 @@ def migrateToEmbeddedFile(self, force=0):
if portal_type in ('File', 'Image') and self.getValidationState()=='embedded': if portal_type in ('File', 'Image') and self.getValidationState()=='embedded':
embedded_type = 'Embedded File' embedded_type = 'Embedded File'
container = self.getParentValue() container = self.getParentValue()
id = self.id
if force == 1: if force == 1:
changeObjectClass(container, id, getattr(erp5.portal_type, embedded_type)) changeObjectClass(container, self.id, getattr(erp5.portal_type, embedded_type))
return '%s: %s -> %s' % (self.getRelativeUrl(), portal_type, embedded_type), return '%s: %s -> %s' % (self.getRelativeUrl(), portal_type, embedded_type),
...@@ -6,10 +6,22 @@ ...@@ -6,10 +6,22 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>BaseMigration</string> </value> <value> <string>BaseMigration</string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>extension.erp5.BaseMigration</string> </value> <value> <string>extension.erp5.BaseMigration</string> </value>
...@@ -24,6 +36,18 @@ ...@@ -24,6 +36,18 @@
<none/> <none/>
</value> </value>
</item> </item>
<item>
<key> <string>text_content_error_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>text_content_warning_message</string> </key>
<value>
<tuple/>
</value>
</item>
<item> <item>
<key> <string>version</string> </key> <key> <string>version</string> </key>
<value> <string>erp5</string> </value> <value> <string>erp5</string> </value>
...@@ -31,13 +55,28 @@ ...@@ -31,13 +55,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -50,7 +89,7 @@ ...@@ -50,7 +89,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -59,26 +98,30 @@ ...@@ -59,26 +98,30 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.patches.WorkflowTool"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
<pickle> <pickle>
<tuple> <dictionary>
<none/> <item>
<list> <key> <string>_log</string> </key>
<dictionary> <value>
<item> <list>
<key> <string>action</string> </key> <dictionary>
<value> <string>validate</string> </value> <item>
</item> <key> <string>action</string> </key>
<item> <value> <string>validate</string> </value>
<key> <string>validation_state</string> </key> </item>
<value> <string>validated</string> </value> <item>
</item> <key> <string>validation_state</string> </key>
</dictionary> <value> <string>validated</string> </value>
</list> </item>
</tuple> </dictionary>
</list>
</value>
</item>
</dictionary>
</pickle> </pickle>
</record> </record>
</ZopeData> </ZopeData>
...@@ -47,7 +47,7 @@ class IEncryptedPassword(Interface): ...@@ -47,7 +47,7 @@ class IEncryptedPassword(Interface):
Check if the password value is acceptable - i.e. follows site rules. Check if the password value is acceptable - i.e. follows site rules.
""" """
def setEncodedPassword(value, format='default'): def setEncodedPassword(value, format='default'): # pylint: disable=redefined-builtin
""" """
Set an already encoded password. Set an already encoded password.
""" """
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>IEncryptedPassword</string> </value> <value> <string>IEncryptedPassword</string> </value>
...@@ -14,6 +20,12 @@ ...@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key> <key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.interfaces.encrypted_password</string> </value> <value> <string>Products.ERP5.interfaces.encrypted_password</string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>interface.erp5.IEncryptedPassword</string> </value> <value> <string>interface.erp5.IEncryptedPassword</string> </value>
...@@ -37,9 +49,7 @@ ...@@ -37,9 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W: 50, 32: Redefining built-in \'format\' (redefined-builtin)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -49,13 +59,28 @@ ...@@ -49,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -68,7 +93,7 @@ ...@@ -68,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -77,7 +102,7 @@ ...@@ -77,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
...@@ -77,14 +77,22 @@ class EncryptedPasswordMixin: ...@@ -77,14 +77,22 @@ class EncryptedPasswordMixin:
if not _checkPermission(Permissions.SetOwnPassword, self): if not _checkPermission(Permissions.SetOwnPassword, self):
raise AccessControl_Unauthorized('setPassword') raise AccessControl_Unauthorized('setPassword')
def _setEncodedPassword(self, value, format='default'): def _setEncodedPassword(
self,
value,
format='default', # pylint: disable=redefined-builtin
):
password = getattr(aq_base(self), 'password', None) password = getattr(aq_base(self), 'password', None)
if password is None or isinstance(password, basestring): if password is None or isinstance(password, basestring):
password = self.password = PersistentMapping() password = self.password = PersistentMapping()
self.password[format] = value self.password[format] = value
security.declarePublic('setEncodedPassword') security.declarePublic('setEncodedPassword')
def setEncodedPassword(self, value, format='default'): def setEncodedPassword(
self,
value,
format='default', # pylint: disable=redefined-builtin
):
""" """
""" """
self.checkUserCanChangePassword() self.checkUserCanChangePassword()
...@@ -121,14 +129,14 @@ class EncryptedPasswordMixin: ...@@ -121,14 +129,14 @@ class EncryptedPasswordMixin:
if password is marker: if password is marker:
password = default_password password = default_password
else: else:
format = kw.get('format', 'default') format_ = kw.get('format', 'default')
# Backward compatibility: if it's not a PersistentMapping instance, # Backward compatibility: if it's not a PersistentMapping instance,
# assume it's a monovalued string, which corresponds to default # assume it's a monovalued string, which corresponds to default
# password encoding. # password encoding.
if isinstance(password, PersistentMapping): if isinstance(password, PersistentMapping):
password = password.get(format, default_password) password = password.get(format_, default_password)
else: else:
if format != 'default': if format_ != 'default':
password = default_password password = default_password
return password return password
......
...@@ -6,6 +6,12 @@ ...@@ -6,6 +6,12 @@
</pickle> </pickle>
<pickle> <pickle>
<dictionary> <dictionary>
<item>
<key> <string>_recorded_property_dict</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item> <item>
<key> <string>default_reference</string> </key> <key> <string>default_reference</string> </key>
<value> <string>EncryptedPasswordMixin</string> </value> <value> <string>EncryptedPasswordMixin</string> </value>
...@@ -14,6 +20,12 @@ ...@@ -14,6 +20,12 @@
<key> <string>default_source_reference</string> </key> <key> <string>default_source_reference</string> </key>
<value> <string>Products.ERP5.mixin.encrypted_password</string> </value> <value> <string>Products.ERP5.mixin.encrypted_password</string> </value>
</item> </item>
<item>
<key> <string>description</string> </key>
<value>
<none/>
</value>
</item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
<value> <string>mixin.erp5.EncryptedPasswordMixin</string> </value> <value> <string>mixin.erp5.EncryptedPasswordMixin</string> </value>
...@@ -37,11 +49,7 @@ ...@@ -37,11 +49,7 @@
<item> <item>
<key> <string>text_content_warning_message</string> </key> <key> <string>text_content_warning_message</string> </key>
<value> <value>
<tuple> <tuple/>
<string>W: 79, 39: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W: 86, 38: Redefining built-in \'format\' (redefined-builtin)</string>
<string>W:123, 6: Redefining built-in \'format\' (redefined-builtin)</string>
</tuple>
</value> </value>
</item> </item>
<item> <item>
...@@ -51,13 +59,28 @@ ...@@ -51,13 +59,28 @@
<item> <item>
<key> <string>workflow_history</string> </key> <key> <string>workflow_history</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="2" aka="AAAAAAAAAAI="> <record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="PersistentMapping" module="Persistence.mapping"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>data</string> </key>
<value>
<dictionary/>
</value>
</item>
</dictionary>
</pickle>
</record>
<record id="3" aka="AAAAAAAAAAM=">
<pickle> <pickle>
<global name="PersistentMapping" module="Persistence.mapping"/> <global name="PersistentMapping" module="Persistence.mapping"/>
</pickle> </pickle>
...@@ -70,7 +93,7 @@ ...@@ -70,7 +93,7 @@
<item> <item>
<key> <string>component_validation_workflow</string> </key> <key> <string>component_validation_workflow</string> </key>
<value> <value>
<persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent> <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
</value> </value>
</item> </item>
</dictionary> </dictionary>
...@@ -79,7 +102,7 @@ ...@@ -79,7 +102,7 @@
</dictionary> </dictionary>
</pickle> </pickle>
</record> </record>
<record id="3" aka="AAAAAAAAAAM="> <record id="4" aka="AAAAAAAAAAQ=">
<pickle> <pickle>
<global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/> <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
</pickle> </pickle>
......
...@@ -67,8 +67,8 @@ iban_code = ''.join([str(letter_code_dict.get(x, x)) ...@@ -67,8 +67,8 @@ iban_code = ''.join([str(letter_code_dict.get(x, x))
for x in bban + country_code + checksum]) for x in bban + country_code + checksum])
try: try:
iban_int = int(iban_code) iban_int = int(iban_code)
except ValueError: except ValueError:
return False return False
return iban_int % 97 == 1 return iban_int % 97 == 1
# this script has an `id` argument
# pylint: disable=redefined-builtin
from Products.ERP5Type.Message import translateString from Products.ERP5Type.Message import translateString
if id and id != context.getId(): if id and id != context.getId():
......
...@@ -23,7 +23,7 @@ if content_type == 'text/html': ...@@ -23,7 +23,7 @@ if content_type == 'text/html':
else: else:
mail_template = context.Event_viewMimeMessage mail_template = context.Event_viewMimeMessage
attachment_list = attachment_list[:] attachment_list = list(attachment_list)
for embedded_file in embedded_file_list: for embedded_file in embedded_file_list:
mime_type, content = embedded_file.getMimeTypeAndContent() mime_type, content = embedded_file.getMimeTypeAndContent()
name = embedded_file.getFilename() name = embedded_file.getFilename()
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string>from_url, to_url, subject, body, content_type, attachment_list=[], embedded_file_list=[], extra_header_dict=None</string> </value> <value> <string>from_url, to_url, subject, body, content_type, attachment_list=(), embedded_file_list=(), extra_header_dict=None</string> </value>
</item> </item>
<item> <item>
<key> <string>id</string> </key> <key> <string>id</string> </key>
......
# this script has an `id` argument
# pylint: disable=redefined-builtin
domain = parent.generateTempDomain(id=id) domain = parent.generateTempDomain(id=id)
domain.edit(title=title, domain.edit(title=title,
criterion_property_list=[criterion_property]) criterion_property_list=[criterion_property])
......
...@@ -3,7 +3,7 @@ if not date: ...@@ -3,7 +3,7 @@ if not date:
try: try:
now = DateTime() now = DateTime()
date = DateTime(date) date = DateTime(date)
except: except Exception:
return '' return ''
Base_translateString = context.Base_translateString Base_translateString = context.Base_translateString
diff = now - date diff = now - date
......
translateString = context.Base_translateString translateString = context.Base_translateString
request = context.REQUEST
ptype = context.getPortalType() ptype = context.getPortalType()
if not description: if not description:
......
...@@ -6,14 +6,14 @@ ...@@ -6,14 +6,14 @@
# Assumes that 2 currencies with the same ID, they are the same currency # Assumes that 2 currencies with the same ID, they are the same currency
if from_currency is not None and to_currency is not None and \ if from_currency is not None and to_currency is not None and \
[x for x in from_currency.split('/') if x.strip()][-1] == [x for x in to_currency.split('/') if x.strip()][-1]: [x for x in from_currency.split('/') if x.strip()][-1] == [x for x in to_currency.split('/') if x.strip()][-1]:
return [1] return [1]
def sort_by_date(a, b): def sort_by_date(a, b):
if a.getStartDateRangeMin() > b.getStartDateRangeMin() : if a.getStartDateRangeMin() > b.getStartDateRangeMin() :
return -1 return -1
return 1 return 1
object = context object_ = context
from Products.ERP5Type.Cache import CachingMethod from Products.ERP5Type.Cache import CachingMethod
...@@ -37,15 +37,15 @@ if to_currency is not None: ...@@ -37,15 +37,15 @@ if to_currency is not None:
if currency_exchange_type is not None: if currency_exchange_type is not None:
temp_kw['category_list'].append('currency_exchange_type/%s' % currency_exchange_type) temp_kw['category_list'].append('currency_exchange_type/%s' % currency_exchange_type)
temp_object.edit(**temp_kw) temp_object.edit(**temp_kw)
object = temp_object object_ = temp_object
mapped_value = context.portal_domains.generateMappedValue(object, mapped_value = context.portal_domains.generateMappedValue(object_,
has_cell_content=0, has_cell_content=0,
validation_state='validated', validation_state='validated',
sort_method=sort_by_date) sort_method=sort_by_date)
base_price = getattr(mapped_value, 'base_price', None) base_price = getattr(mapped_value, 'base_price', None)
discount = getattr(mapped_value, 'discount', None) discount = getattr(mapped_value, 'discount', None)
if base_price is None and discount is None: if base_price is None and discount is None:
mapped_value = context.portal_domains.generateMappedValue(object, mapped_value = context.portal_domains.generateMappedValue(object_,
has_cell_content=1, has_cell_content=1,
validation_state='validated', validation_state='validated',
sort_method=sort_by_date) sort_method=sort_by_date)
...@@ -63,14 +63,14 @@ else: ...@@ -63,14 +63,14 @@ else:
if start_date is None: if start_date is None:
if getattr(context,'isDelivery',None): if getattr(context,'isDelivery',None):
start_date = context.getStartDate() start_date = context.getStartDate()
mapped_value = context.portal_domains.generateMappedValue(object, mapped_value = context.portal_domains.generateMappedValue(object_,
has_cell_content=0, has_cell_content=0,
validation_state='validated', validation_state='validated',
sort_method=sort_by_date) sort_method=sort_by_date)
base_price = getattr(mapped_value, 'base_price', None) base_price = getattr(mapped_value, 'base_price', None)
discount = getattr(mapped_value, 'discount', None) discount = getattr(mapped_value, 'discount', None)
if base_price is None and discount is None: if base_price is None and discount is None:
mapped_value = context.portal_domains.generateMappedValue(object, mapped_value = context.portal_domains.generateMappedValue(object_,
has_cell_content=1, has_cell_content=1,
validation_state='validated', validation_state='validated',
sort_method=sort_by_date) sort_method=sort_by_date)
......
...@@ -16,10 +16,10 @@ for divergence in divergence_list: ...@@ -16,10 +16,10 @@ for divergence in divergence_list:
uid = 'new_%s&%s' % (simulation_movement_url, uid = 'new_%s&%s' % (simulation_movement_url,
divergence.getProperty('tested_property')) divergence.getProperty('tested_property'))
object = portal_object.restrictedTraverse(object_relative_url) document = portal_object.restrictedTraverse(object_relative_url)
o = newTempBase(object.getParentValue(), object.getId(), uid=uid, o = newTempBase(document.getParentValue(), document.getId(), uid=uid,
message=str(divergence.getTranslatedMessage()), message=str(divergence.getTranslatedMessage()),
object_title=object.getTranslatedTitle(), object_title=document.getTranslatedTitle(),
prevision_title=prevision_title, prevision_title=prevision_title,
decision_title=decision_title, decision_title=decision_title,
candidate_list=[(context.Base_translateString('Do nothing'), 'ignore'), candidate_list=[(context.Base_translateString('Do nothing'), 'ignore'),
......
...@@ -10,14 +10,14 @@ for divergence in divergence_list: ...@@ -10,14 +10,14 @@ for divergence in divergence_list:
prop = divergence.getProperty('tested_property') prop = divergence.getProperty('tested_property')
if prop in (None, '') or divergence.getCollectOrderGroup() != 'delivery': if prop in (None, '') or divergence.getCollectOrderGroup() != 'delivery':
continue continue
message, candidate_list, value_list, decision_title_list, prevision_title_list = candidate_dict.get(prop, ['', [], [], [], []]) _, candidate_list, value_list, decision_title_list, prevision_title_list = candidate_dict.get(prop, ['', [], [], [], []])
decision_value = divergence.getProperty('decision_value') decision_value = divergence.getProperty('decision_value')
decision_title = divergence.getProperty('decision_title', decision_value) decision_title = divergence.getProperty('decision_title', decision_value)
prevision_value = divergence.getProperty('prevision_value') prevision_value = divergence.getProperty('prevision_value')
prevision_title = divergence.getProperty('prevision_title', prevision_value) prevision_title = divergence.getProperty('prevision_title', prevision_value)
object_relative_url = divergence.getProperty('object_relative_url') object_relative_url = divergence.getProperty('object_relative_url')
simulation_movement_url = divergence.getProperty('simulation_movement').getRelativeUrl() simulation_movement_url = divergence.getProperty('simulation_movement').getRelativeUrl()
object = portal_object.restrictedTraverse(object_relative_url) document = portal_object.restrictedTraverse(object_relative_url)
if decision_value not in value_list: if decision_value not in value_list:
candidate_list.append((decision_title, object_relative_url)) candidate_list.append((decision_title, object_relative_url))
value_list.append(decision_value) value_list.append(decision_value)
...@@ -32,11 +32,11 @@ for divergence in divergence_list: ...@@ -32,11 +32,11 @@ for divergence in divergence_list:
for prop, candidate_list in candidate_dict.items(): for prop, candidate_list in candidate_dict.items():
uid = 'new_%s' % prop uid = 'new_%s' % prop
object = context document = context
o = newTempBase(context.getParentValue(), context.getId(), uid, uid=uid, o = newTempBase(context.getParentValue(), context.getId(), uid, uid=uid,
message=candidate_list[0], message=candidate_list[0],
object_title=object.getTranslatedTitle(), object_title=document.getTranslatedTitle(),
decision_title=', '.join([str(x) for x in candidate_list[3]]), decision_title=', '.join([str(x) for x in candidate_list[3]]),
prevision_title=', '.join([str(x) for x in candidate_list[4]]), prevision_title=', '.join([str(x) for x in candidate_list[4]]),
candidate_list=[(context.Base_translateString('Do nothing'), 'ignore')]+candidate_list[1]) candidate_list=[(context.Base_translateString('Do nothing'), 'ignore')]+candidate_list[1])
......
...@@ -17,11 +17,11 @@ for divergence in divergence_list: ...@@ -17,11 +17,11 @@ for divergence in divergence_list:
uid = 'new_%s&%s' % (simulation_movement_url, uid = 'new_%s&%s' % (simulation_movement_url,
divergence.getProperty('tested_property')) divergence.getProperty('tested_property'))
object = portal_object.restrictedTraverse(object_relative_url) document = portal_object.restrictedTraverse(object_relative_url)
o = newTempBase(object.getParentValue(), object.getId(), uid=uid, o = newTempBase(document.getParentValue(), document.getId(), uid=uid,
message=str(divergence.getTranslatedMessage()), message=str(divergence.getTranslatedMessage()),
object_portal_type=object.getTranslatedPortalType(), object_portal_type=document.getTranslatedPortalType(),
object_title=object.getTranslatedTitle(), object_title=document.getTranslatedTitle(),
prevision_title=prevision_title, prevision_title=prevision_title,
decision_title=decision_title, decision_title=decision_title,
candidate_list=[(context.Base_translateString('Do nothing'), 'ignore'), candidate_list=[(context.Base_translateString('Do nothing'), 'ignore'),
......
# coding: utf-8
translateString = context.Base_translateString translateString = context.Base_translateString
request = context.REQUEST request = context.REQUEST
...@@ -94,7 +95,6 @@ def getTaxLineList(order): ...@@ -94,7 +95,6 @@ def getTaxLineList(order):
return tax_line_list return tax_line_list
line_base_contribution_list = [] line_base_contribution_list = []
number = 0
tax_free_line_totalprice = 0 tax_free_line_totalprice = 0
line_list = [] line_list = []
line_not_tax = [] line_not_tax = []
......
# this script has an `format` argument
# pylint: disable=redefined-builtin
""" """
This script provides a facility to permit conversion by format. This script provides a facility to permit conversion by format.
""" """
......
# this script has an `format` argument
# pylint: disable=redefined-builtin
"""Just an alias for real script """Just an alias for real script
""" """
from Products.ERP5Type.Log import log from Products.ERP5Type.Log import log
......
# this script has an `format` argument
# pylint: disable=redefined-builtin
""" """
This script returns a standard file name, build from reference, version and This script returns a standard file name, build from reference, version and
language (this is only the base part of the name, the extension should be appended language (this is only the base part of the name, the extension should be appended
......
""" """
WARNING: this script requires proxy manager WARNING: this script requires proxy manager
This script tries to acquire category values from other objects This script tries to acquire category values from other documents
base_category_list - list of category values we need to retrieve base_category_list - list of category values we need to retrieve
object - object which we want to assign roles to. obj - document which we want to assign roles to.
""" """
category_dict = {} category_dict = {}
if object is None: if obj is None:
return [] return []
for base_category in base_category_list: for base_category in base_category_list:
if base_category == 'parent': if base_category == 'parent':
o_list = [object.getParentValue()] o_list = [obj.getParentValue()]
else: else:
o_list = object.getValueList(base_category) o_list = obj.getValueList(base_category)
for o in o_list: for o in o_list:
for user, role_list in o.get_local_roles(): for user, role_list in o.get_local_roles():
for role in role_list: for role in role_list:
......
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</item> </item>
<item> <item>
<key> <string>_params</string> </key> <key> <string>_params</string> </key>
<value> <string>base_category_list, user_name, object, portal_type</string> </value> <value> <string>base_category_list, user_name, obj, portal_type</string> </value>
</item> </item>
<item> <item>
<key> <string>_proxy_roles</string> </key> <key> <string>_proxy_roles</string> </key>
......
...@@ -64,13 +64,12 @@ if download or not use_activity: ...@@ -64,13 +64,12 @@ if download or not use_activity:
if not from_url: if not from_url:
raise ValueError('Preferred Event Sender Email not configured') raise ValueError('Preferred Event Sender Email not configured')
# Return-Path # Return-Path (TODO)
if reply_url is None: if reply_url is None:
reply_url = portal.portal_preferences.getPreferredEventSenderEmail() reply_url = portal.portal_preferences.getPreferredEventSenderEmail()
additional_headers = None additional_headers = None # pylint: disable=unused-variable
if reply_url: if reply_url:
additional_headers = {'Return-Path':reply_url} additional_headers = {'Return-Path':reply_url}
content_type = context.getContentType() content_type = context.getContentType()
mail_message = context.Base_createMailMessageAsString( mail_message = context.Base_createMailMessageAsString(
......
# this script can be overridden as you wish. # this script can be overridden as you wish.
pass
...@@ -8,7 +8,7 @@ for career_step in all_career_step_list : ...@@ -8,7 +8,7 @@ for career_step in all_career_step_list :
career_step.getSubordination() == subordination_relative_url) and \ career_step.getSubordination() == subordination_relative_url) and \
career_step.getStartDate() and \ career_step.getStartDate() and \
career_step.getValidationState() not in ('cancelled', 'deleted'): career_step.getValidationState() not in ('cancelled', 'deleted'):
career_step_list.append(career_step) career_step_list.append(career_step)
# sort them by start date # sort them by start date
career_step_list.sort(key=lambda x: x.getStartDate()) career_step_list.sort(key=lambda x: x.getStartDate())
......
from Products.PythonScripts.standard import Object from Products.PythonScripts.standard import Object
from Products.ZSQLCatalog.SQLCatalog import Query
from Products.ERP5Type.DateUtils import atTheEndOfPeriod from Products.ERP5Type.DateUtils import atTheEndOfPeriod
request = container.REQUEST request = container.REQUEST
from_date = request.get('from_date', None) from_date = request.get('from_date', None)
...@@ -8,10 +7,10 @@ aggregation_level = request.get('aggregation_level', None) ...@@ -8,10 +7,10 @@ aggregation_level = request.get('aggregation_level', None)
portal = context.getPortalObject() portal = context.getPortalObject()
module_list = [] module_list = []
for module_id in portal.objectIds(spec=('ERP5 Folder',)): for module_id in portal.objectIds(spec=('ERP5 Folder',)):
module = portal.restrictedTraverse(module_id, None) module = portal.restrictedTraverse(module_id, None)
if module is not None: if module is not None:
if portal.portal_membership.checkPermission('View', module): if portal.portal_membership.checkPermission('View', module):
module_list.append(module) module_list.append(module)
module_list.sort(key=lambda x: x.getTitle()) module_list.sort(key=lambda x: x.getTitle())
# build document portal type list # build document portal type list
...@@ -69,25 +68,25 @@ line_list = [] ...@@ -69,25 +68,25 @@ line_list = []
append = line_list.append append = line_list.append
period_count_dict = {} period_count_dict = {}
for portal_type in portal_type_list: for portal_type in portal_type_list:
if portal_type_count_dict.has_key(portal_type): if portal_type_count_dict.has_key(portal_type):
period_count = portal_type_count_dict[portal_type] period_count = portal_type_count_dict[portal_type]
obj = Object(uid="new_") obj = Object(uid="new_")
obj["document_type"] = context.Base_translateString(portal_type) obj["document_type"] = context.Base_translateString(portal_type)
else: else:
continue continue
line_counter = 0 line_counter = 0
for period in period_list: for period in period_list:
if period_count.has_key(period): if period_count.has_key(period):
obj[period] = period_count[period] obj[period] = period_count[period]
line_counter += period_count[period] line_counter += period_count[period]
if period_count_dict.has_key(period): if period_count_dict.has_key(period):
period_count_dict[period] = period_count_dict[period] + period_count[period] period_count_dict[period] = period_count_dict[period] + period_count[period]
else:
period_count_dict[period] = period_count[period]
else: else:
obj[period] = 0 period_count_dict[period] = period_count[period]
obj['total'] = line_counter else:
append(obj) obj[period] = 0
obj['total'] = line_counter
append(obj)
# sort lines # sort lines
def cmpType(a, b): def cmpType(a, b):
......
from Products.ZSQLCatalog.SQLCatalog import Query
from Products.ERP5Type.DateUtils import atTheEndOfPeriod from Products.ERP5Type.DateUtils import atTheEndOfPeriod
request = container.REQUEST request = container.REQUEST
portal = context.getPortalObject() portal = context.getPortalObject()
......
...@@ -28,7 +28,7 @@ for assignment in context.contentValues(portal_type='Assignment'): ...@@ -28,7 +28,7 @@ for assignment in context.contentValues(portal_type='Assignment'):
and assignment.getValidationState() == 'open' \ and assignment.getValidationState() == 'open' \
and ( assignment.getStartDate() is None or and ( assignment.getStartDate() is None or
assignment.getStartDate() <= now <= assignment.getStopDate()): assignment.getStartDate() <= now <= assignment.getStopDate()):
existing_group_set[assignment.getGroup()] = 1 existing_group_set[assignment.getGroup()] = 1
# If we have multiple groups defined on assignments, this scripts does not # If we have multiple groups defined on assignments, this scripts does not
# try to guess, and fallback to the default career's group # try to guess, and fallback to the default career's group
......
...@@ -2,7 +2,6 @@ from Products.CMFActivity.Errors import ActivityPendingError ...@@ -2,7 +2,6 @@ from Products.CMFActivity.Errors import ActivityPendingError
Base_translateString = context.Base_translateString Base_translateString = context.Base_translateString
person = context person = context
career_list = []
default_career = None default_career = None
if 'default_career' in person.objectIds(): if 'default_career' in person.objectIds():
......
request = container.REQUEST request = container.REQUEST
RESPONSE = request.RESPONSE
stat_line = request.get('stat_line', None) stat_line = request.get('stat_line', None)
return stat_line return stat_line
# XXX example of another way to get the stat line but this is slower
from Products.ERP5Type.Log import log
from Products.PythonScripts.standard import Object
from Products.ZSQLCatalog.SQLCatalog import Query
request = container.REQUEST
from_date = request.get('from_date', None)
to_date = request.get('at_date', None)
aggregation_level = request.get('aggregation_level', None)
log("in stat method", "")
# build document portal type list
portal_type_list = []
extend = portal_type_list.extend
for title, path in context.ERP5Site_getModuleItemList():
document_type_list = context.restrictedTraverse(path).allowedContentTypes()
extend([x.id for x in document_type_list])
# compute sql params, we group and order by date and portal type
if aggregation_level == "year":
sql_format = "%Y"
elif aggregation_level == "month":
sql_format = "%Y-%m"
elif aggregation_level == "week":
sql_format = "%Y-%u"
elif aggregation_level == "day":
sql_format = "%Y-%m-%d"
count_kw = {}
if from_date is not None and to_date is not None:
count_kw['creation_date'] = {
'range': 'minngt',
'query': (from_date, to_date),
}
elif from_date is not None:
count_kw['creation_date'] = {
'range': 'min',
'query': from_date,
}
elif to_date is not None:
count_kw['creation_date'] = {
'range': 'ngt',
'query': to_date,
}
# count number of object created by the user for each type of document
result_list = context.portal_catalog.countResults(select_dict={'date': 'DATE_FORMAT(creation_date, "%s")' % sql_format},
portal_type=portal_type_list,limit=None,
owner=context.Person_getUserId(),
group_by=['DATE_FORMAT(creation_date, "%s")' % sql_format],
**count_kw)
# build result dict per portal_type then period
period_count_dict = {}
for result in result_list:
period_count_dict[result[1]] = result[0]
# build line
obj = Object(uid="new_")
obj["document_type"] = 'Total'
line_counter = 0
for period in period_list:
if period_count_dict.has_key(period):
obj[period] = period_count_dict[period]
line_counter += period_count_dict[period]
else:
obj[period] = 0
obj['total'] = line_counter
return [obj,]
...@@ -14,9 +14,8 @@ context.setMembershipCriterionCategoryList(membership_list) ...@@ -14,9 +14,8 @@ context.setMembershipCriterionCategoryList(membership_list)
context.setResourceValue(context.getParentValue()) context.setResourceValue(context.getParentValue())
context.setMappedValuePropertyList(('base_price','discount')) context.setMappedValuePropertyList(('base_price','discount'))
if cell_range_key_list != [[None, None]] : if cell_range_key_list != [[None, None]] :
i = 0
for k in cell_range_key_list: for k in cell_range_key_list:
category_list = filter(lambda k_item: k_item is not None, k) category_list = [k_item for k_item in k if k is not None]
c = context.newCell(*k, **kwd) c = context.newCell(*k, **kwd)
c.edit(mapped_value_property_list = ('base_price','discount'), c.edit(mapped_value_property_list = ('base_price','discount'),
force_update = 1, force_update = 1,
......
...@@ -13,8 +13,7 @@ if listbox is not None: ...@@ -13,8 +13,7 @@ if listbox is not None:
for k, v in listbox.items(): for k, v in listbox.items():
object_url = v['choice'] object_url = v['choice']
if object_url != 'ignore': if object_url != 'ignore':
object = delivery.restrictedTraverse(object_url) delivery_solve_property_dict[k] = delivery.restrictedTraverse(object_url).getPropertyList(k)
delivery_solve_property_dict[k] = object.getPropertyList(k)
divergence_to_accept_list = [] divergence_to_accept_list = []
divergence_to_adopt_list = [] divergence_to_adopt_list = []
...@@ -22,8 +21,7 @@ divergence_to_adopt_list = [] ...@@ -22,8 +21,7 @@ divergence_to_adopt_list = []
divergence_dict = {} divergence_dict = {}
for divergence in divergence_list: for divergence in divergence_list:
simulation_movement_url = divergence.getProperty('simulation_movement').getRelativeUrl() simulation_movement_url = divergence.getProperty('simulation_movement').getRelativeUrl()
property = divergence.getProperty('tested_property') divergence_dict['%s&%s' % (simulation_movement_url, divergence.getProperty('tested_property'))] = divergence
divergence_dict['%s&%s' % (simulation_movement_url, property)] = divergence
for listbox in [state_change['kwargs'].get('line_group_listbox'), for listbox in [state_change['kwargs'].get('line_group_listbox'),
state_change['kwargs'].get('cell_group_listbox')]: state_change['kwargs'].get('cell_group_listbox')]:
......
...@@ -3,8 +3,6 @@ delivery = state_change['object'] ...@@ -3,8 +3,6 @@ delivery = state_change['object']
stop_date = state_change.kwargs['stop_date'] stop_date = state_change.kwargs['stop_date']
start_date = state_change.kwargs['start_date'] start_date = state_change.kwargs['start_date']
tag = delivery.getPath() + '_split'
split_and_defer = 0
listbox = state_change['kwargs'].get('listbox') listbox = state_change['kwargs'].get('listbox')
split_movement_list = [] split_movement_list = []
if listbox is not None: if listbox is not None:
......
...@@ -19,10 +19,10 @@ delivery.activate(after_tag=tag).updateCausalityState() ...@@ -19,10 +19,10 @@ delivery.activate(after_tag=tag).updateCausalityState()
# Create delivery # Create delivery
explanation_uid_list = [] explanation_uid_list = []
object = delivery object_ = delivery
while object is not None: while object_ is not None:
explanation_uid_list.append(object.getUid()) explanation_uid_list.append(object_.getUid())
object = object.getCausalityValue() object_ = object_.getCausalityValue()
previous_tag = None previous_tag = None
for delivery_builder in delivery.getBuilderList(): for delivery_builder in delivery.getBuilderList():
......
delivery = state_change['object'] delivery = state_change['object']
portal = delivery.getPortalObject() portal = delivery.getPortalObject()
try: if not (hasattr(portal, 'portal_solvers') and hasattr(portal, 'portal_solver_processes')):
portal.portal_solvers
portal.portal_solver_processes
except AttributeError:
delivery.diverge() delivery.diverge()
else: else:
solver_tag = '%s_solve' % delivery.getPath() solver_tag = '%s_solve' % delivery.getPath()
......
...@@ -7,12 +7,12 @@ catalog. ...@@ -7,12 +7,12 @@ catalog.
""" """
from Products.ERP5Type.Log import log from Products.ERP5Type.Log import log
object = sci['object'] document = sci['object']
portal = object.getPortalObject() portal = document.getPortalObject()
translateString = portal.Base_translateString translateString = portal.Base_translateString
# Get the owner # Get the owner
owner = object.getViewPermissionOwner() owner = document.getViewPermissionOwner()
owner_value = portal.Base_getUserValueByUserId(owner) owner_value = portal.Base_getUserValueByUserId(owner)
# Get the authenticated user # Get the authenticated user
...@@ -43,11 +43,11 @@ Answer: ...@@ -43,11 +43,11 @@ Answer:
${answer} ${answer}
""" """
msg = translateString(msg, msg = translateString(msg,
mapping=dict(id=object.getId(), mapping=dict(id=document.getId(),
subject=subject, subject=subject,
user=user_value.getTitle(), user=user_value.getTitle(),
question=object.getDescription(), question=document.getDescription(),
answer=object.getTextContent()) answer=document.getTextContent())
) )
# We can now notify the owner through the notification tool # We can now notify the owner through the notification tool
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment