Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
140
Merge Requests
140
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
nexedi
erp5
Commits
23d7bdd2
Commit
23d7bdd2
authored
Oct 13, 2014
by
Julien Muchembled
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
style: use new syntax (from Python 2.7) for dict comprehensions
parent
daffb775
Changes
38
Show whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
120 additions
and
161 deletions
+120
-161
product/ERP5/Document/AppliedRule.py
product/ERP5/Document/AppliedRule.py
+1
-1
product/ERP5/Document/BudgetLine.py
product/ERP5/Document/BudgetLine.py
+2
-2
product/ERP5/Document/PaySheetTransaction.py
product/ERP5/Document/PaySheetTransaction.py
+8
-8
product/ERP5/Document/Resource.py
product/ERP5/Document/Resource.py
+4
-6
product/ERP5/Document/RoleDefinition.py
product/ERP5/Document/RoleDefinition.py
+2
-2
product/ERP5/Document/SQLNonContinuousIncreasingIdGenerator.py
...ct/ERP5/Document/SQLNonContinuousIncreasingIdGenerator.py
+2
-2
product/ERP5/Document/TradeModelSimulationRule.py
product/ERP5/Document/TradeModelSimulationRule.py
+2
-2
product/ERP5/Document/VariationEquivalenceTester.py
product/ERP5/Document/VariationEquivalenceTester.py
+3
-3
product/ERP5/ExplanationCache.py
product/ERP5/ExplanationCache.py
+1
-1
product/ERP5/Tool/TaskDistributionTool.py
product/ERP5/Tool/TaskDistributionTool.py
+2
-2
product/ERP5/Tool/TemplateTool.py
product/ERP5/Tool/TemplateTool.py
+2
-2
product/ERP5/mixin/builder.py
product/ERP5/mixin/builder.py
+3
-7
product/ERP5/tests/testAmount.py
product/ERP5/tests/testAmount.py
+1
-2
product/ERP5/tests/testInventoryAPI.py
product/ERP5/tests/testInventoryAPI.py
+1
-1
product/ERP5/tests/testTemplateTool.py
product/ERP5/tests/testTemplateTool.py
+18
-17
product/ERP5/tests/testTradeModelLine.py
product/ERP5/tests/testTradeModelLine.py
+4
-4
product/ERP5/tests/testTranslation.py
product/ERP5/tests/testTranslation.py
+2
-2
product/ERP5/tests/testWorklist.py
product/ERP5/tests/testWorklist.py
+2
-2
product/ERP5Catalog/tests/testERP5Catalog.py
product/ERP5Catalog/tests/testERP5Catalog.py
+2
-3
product/ERP5Configurator/Document/WorkflowSecurityConfiguratorItem.py
...Configurator/Document/WorkflowSecurityConfiguratorItem.py
+1
-1
product/ERP5Form/MultiRelationField.py
product/ERP5Form/MultiRelationField.py
+6
-14
product/ERP5Form/ParallelListField.py
product/ERP5Form/ParallelListField.py
+6
-14
product/ERP5Form/Selection.py
product/ERP5Form/Selection.py
+4
-3
product/ERP5TioSafe/Conduit/TioSafeNodeConduit.py
product/ERP5TioSafe/Conduit/TioSafeNodeConduit.py
+4
-9
product/ERP5Type/Accessor/Acquired.py
product/ERP5Type/Accessor/Acquired.py
+1
-4
product/ERP5Type/Accessor/Category.py
product/ERP5Type/Accessor/Category.py
+1
-3
product/ERP5Type/Accessor/Related.py
product/ERP5Type/Accessor/Related.py
+1
-3
product/ERP5Type/Accessor/RelatedValue.py
product/ERP5Type/Accessor/RelatedValue.py
+2
-6
product/ERP5Type/Core/AcquiredProperty.py
product/ERP5Type/Core/AcquiredProperty.py
+4
-3
product/ERP5Type/Tool/TypesTool.py
product/ERP5Type/Tool/TypesTool.py
+3
-3
product/ERP5Type/TranslationProviderBase.py
product/ERP5Type/TranslationProviderBase.py
+1
-2
product/ERP5Type/Utils.py
product/ERP5Type/Utils.py
+10
-8
product/ERP5Type/patches/DCWorkflow.py
product/ERP5Type/patches/DCWorkflow.py
+2
-2
product/ERP5Type/patches/WorkflowTool.py
product/ERP5Type/patches/WorkflowTool.py
+3
-3
product/ERP5VCS/Subversion.py
product/ERP5VCS/Subversion.py
+2
-2
product/ERP5VCS/SubversionClient.py
product/ERP5VCS/SubversionClient.py
+1
-2
product/ZSQLCatalog/SQLCatalog.py
product/ZSQLCatalog/SQLCatalog.py
+4
-7
product/ZSQLCatalog/SearchKey/RelatedKey.py
product/ZSQLCatalog/SearchKey/RelatedKey.py
+2
-3
No files found.
product/ERP5/Document/AppliedRule.py
View file @
23d7bdd2
...
...
@@ -369,7 +369,7 @@ class AppliedRule(XMLObject, ExplainableMixin):
del
AppliedRule
.
isIndexable
,
SimulationMovement
.
isIndexable
self
.
recursiveReindexObject
()
assert
str
not
in
map
(
type
,
old_dict
),
old_dict
return
dict
((
k
,
sum
(
v
.
values
(),
[]))
for
k
,
v
in
deleted
)
,
delivery_set
return
{
k
:
sum
(
v
.
values
(),
[])
for
k
,
v
in
deleted
}
,
delivery_set
simulation_tool
.
_delObject
(
self
.
getId
())
def
_checkExpand
(
self
):
...
...
product/ERP5/Document/BudgetLine.py
View file @
23d7bdd2
...
...
@@ -90,8 +90,8 @@ class BudgetLine(Predicate, XMLMatrix, VariatedMixin):
"""Returns all the engagements in a dict where the keys are the cells, and
the value is the engaged budget.
"""
budget_dict
=
dict
([(
k
,
v
*
-
1
)
for
(
k
,
v
)
in
self
.
getEngagedBudgetDict
(
**
kw
).
items
()])
budget_dict
=
{
k
:
v
*
-
1
for
k
,
v
in
self
.
getEngagedBudgetDict
(
**
kw
).
iteritems
()}
cell_key_list
=
self
.
getCellKeyList
()
for
cell_key
in
cell_key_list
:
...
...
product/ERP5/Document/PaySheetTransaction.py
View file @
23d7bdd2
...
...
@@ -150,10 +150,10 @@ class PaySheetTransaction(Invoice):
security
.
declarePrivate
(
'updateAggregatedAmountList'
)
def
updateAggregatedAmountList
(
self
,
*
args
,
**
kw
):
amount_dict
=
dict
((
(
x
.
getReference
(),
tuple
(
x
.
getVariationCategoryList
())),
x
)
amount_dict
=
{
(
x
.
getReference
(),
tuple
(
x
.
getVariationCategoryList
())):
x
for
x
in
self
.
getAggregatedAmountList
(
*
args
,
**
kw
)
if
x
.
getResource
())
if
x
.
getResource
()}
movement_to_delete_list
=
[]
for
movement
in
self
.
getMovementList
():
if
movement
.
getBaseApplication
():
...
...
@@ -163,9 +163,9 @@ class PaySheetTransaction(Invoice):
if
amount
is
None
:
movement_to_delete_list
.
append
(
movement
)
else
:
movement
.
edit
(
**
dict
((
x
,
amount
.
getProperty
(
x
)
)
movement
.
edit
(
**
{
x
:
amount
.
getProperty
(
x
)
for
x
in
(
'price'
,
'resource'
,
'quantity'
,
'base_application_list'
,
'base_contribution_list'
)
)
)
'base_application_list'
,
'base_contribution_list'
)
}
)
return
{
'movement_to_delete_list'
:
movement_to_delete_list
,
'movement_to_add_list'
:
amount_dict
.
values
()}
...
...
@@ -208,8 +208,8 @@ class PaySheetTransaction(Invoice):
# convert Amount into Simulation Movement with Business Link
movement_list
=
[]
for
amount
in
movement_list_trade_phase_dic
[
trade_phase
]:
variation_dict
=
dict
(
[
tuple
(
x
.
split
(
'/'
,
1
))
for
x
in
amount
.
getVariationCategoryList
()]
)
variation_dict
=
dict
(
x
.
split
(
'/'
,
1
)
for
x
in
amount
.
getVariationCategoryList
()
)
movement_list
.
extend
(
business_process
.
getTradePhaseMovementList
(
self
,
amount
,
trade_phase
,
update_property_dict
=
variation_dict
))
...
...
product/ERP5/Document/Resource.py
View file @
23d7bdd2
...
...
@@ -119,14 +119,14 @@ class Resource(XMLObject, XMLMatrix, VariatedMixin):
sort_on
=
[(
'title'
,
'ascending'
)])
individual_variation_list
=
[
x
.
getObject
()
for
x
in
individual_variation_list
]
other_base_category_
dict
=
dict
([(
i
,
1
)
for
i
in
base_category_list
]
)
other_base_category_
set
=
set
(
base_category_list
)
if
not
omit_individual_variation
:
for
variation
in
individual_variation_list
:
for
base_category
in
variation
.
getVariationBaseCategoryList
():
if
base_category_list
is
()
\
or
base_category
in
base_category_list
:
other_base_category_
dict
[
base_category
]
=
0
other_base_category_
set
.
discard
(
base_category
)
# XXX now, call Renderer a lot of time.
# Better implementation needed
result
.
extend
(
Renderer
(
...
...
@@ -136,12 +136,10 @@ class Resource(XMLObject, XMLMatrix, VariatedMixin):
current_category
=
current_category
,
display_id
=
display_id
).
render
([
variation
]))
other_base_category_list
=
[
x
for
x
,
y
in
other_base_category_dict
.
iteritems
()
if
y
==
1
]
# Get category variation
if
other_base_category_
lis
t
:
if
other_base_category_
se
t
:
result
.
extend
(
super
(
Resource
,
self
).
getVariationRangeCategoryItemList
(
base_category_list
=
other_base_category_list
,
base_category_list
=
list
(
other_base_category_set
)
,
base
=
base
,
display_base_category
=
display_base_category
,
**
kw
))
# Return result
return
result
...
...
product/ERP5/Document/RoleDefinition.py
View file @
23d7bdd2
...
...
@@ -63,6 +63,6 @@ class RoleDefinition(XMLObject):
group_id_generator
=
getattr
(
ob
,
ERP5TYPE_SECURITY_GROUP_ID_GENERATION_SCRIPT
)
role_list
=
self
.
getRoleName
(),
return
dict
((
group_id
,
role_list
)
return
{
group_id
:
role_list
for
group_id
in
group_id_generator
(
category_order
=
(
'agent'
,),
agent
=
self
.
getAgentList
())
)
agent
=
self
.
getAgentList
())
}
product/ERP5/Document/SQLNonContinuousIncreasingIdGenerator.py
View file @
23d7bdd2
...
...
@@ -236,8 +236,8 @@ class SQLNonContinuousIncreasingIdGenerator(IdGenerator):
if
self
.
getStoredInZodb
():
self
.
_updateSqlTable
()
# Return values from sql
return
dict
([(
line
[
'id_group'
],
int
(
line
[
'last_id'
]))
for
line
in
self
.
_getValueListFromTable
()])
return
{
line
[
'id_group'
]:
int
(
line
[
'last_id'
])
for
line
in
self
.
_getValueListFromTable
()}
security
.
declareProtected
(
Permissions
.
ModifyPortalContent
,
'importGeneratorIdDict'
)
...
...
product/ERP5/Document/TradeModelSimulationRule.py
View file @
23d7bdd2
...
...
@@ -100,9 +100,9 @@ class TradeModelRuleMovementGenerator(MovementGeneratorMixin):
if
amount
.
getResource
():
# FIXME: Is it the right way to have source/destination and other
# non-Amount properties set on the generated movement ?
movement
=
input_movement
.
asContext
(
**
dict
((
k
,
v
)
movement
=
input_movement
.
asContext
(
**
{
k
:
v
for
k
,
v
in
amount
.
__dict__
.
iteritems
()
if
k
[
0
]
!=
'_'
and
k
!=
'categories'
)
)
if
k
[
0
]
!=
'_'
and
k
!=
'categories'
}
)
base_category_set
=
set
(
amount
.
getBaseCategoryList
())
base_category_set
.
remove
(
'price_currency'
)
# XXX
movement
.
_setCategoryMembership
(
base_category_set
,
...
...
product/ERP5/Document/VariationEquivalenceTester.py
View file @
23d7bdd2
...
...
@@ -116,6 +116,6 @@ class VariationEquivalenceTester(Predicate, EquivalenceTesterMixin):
decision_movement -- a delivery movement (decision)
"""
get
=
self
.
_getTestedPropertyValue
return
dict
((
tested_property
,
get
(
prevision_movement
,
tested_property
)
)
return
{
tested_property
:
get
(
prevision_movement
,
tested_property
)
for
tested_property
in
(
'variation_category_list'
,
'variation_property_dict'
))
'variation_property_dict'
)}
product/ERP5/ExplanationCache.py
View file @
23d7bdd2
...
...
@@ -240,7 +240,7 @@ class ExplanationCache:
# Build a list of path patterns which apply to current business_link
path_list = iter(self.getSimulationPathPatternList())
path_dict =
dict((x, path_list.next()) for x in path_list)
path_dict =
{x: path_list.next() for x in path_list}
# path_dict is like this;
# {'
/
erp5
/
portal_simulation
/
3
/
4
': r'
/
erp5
/
portal
\
_simulation
/
3
/
4
/%
'}
path_list = []
...
...
product/ERP5/Tool/TaskDistributionTool.py
View file @
23d7bdd2
...
...
@@ -228,8 +228,8 @@ class TaskDistributionTool(BaseTool):
"""
extract all xmlrpclib.Binary instance
"""
return
dict
([(
x
,
isinstance
(
y
,
Binary
)
and
y
.
data
or
y
)
\
for
(
x
,
y
)
in
xmlrpc_dict
.
iteritems
()])
return
{
x
:
y
.
data
if
isinstance
(
y
,
Binary
)
else
y
for
x
,
y
in
xmlrpc_dict
.
iteritems
()}
security
.
declarePublic
(
'reportTaskFailure'
)
def
reportTaskFailure
(
self
,
test_result_path
,
status_dict
,
node_title
):
...
...
product/ERP5/Tool/TemplateTool.py
View file @
23d7bdd2
...
...
@@ -1177,8 +1177,8 @@ class TemplateTool (BaseTool):
operation_log = []
resolved_template_list = self.resolveBusinessTemplateListDependency(
template_list)
installed_bt5_dict =
dict((x.getTitle(), x.getRevision()
)
for x in self.getInstalledBusinessTemplateList()
)
installed_bt5_dict =
{x.getTitle(): x.getRevision(
)
for x in self.getInstalledBusinessTemplateList()
}
if only_different:
template_url_dict = self._getBusinessTemplateUrlDict()
...
...
product/ERP5/mixin/builder.py
View file @
23d7bdd2
...
...
@@ -526,14 +526,10 @@ class BuilderMixin(XMLObject, Amount, Predicate):
return
# Update variation category list on line
variation_category_dict
=
dict
([(
variation_category
,
True
)
for
variation_category
in
delivery_line
.
getVariationCategoryList
()])
variation_category_set
=
set
(
delivery_line
.
getVariationCategoryList
())
for
movement
in
movement_group_node
.
getMovementList
():
for
category
in
movement
.
getVariationCategoryList
():
variation_category_dict
[
category
]
=
True
variation_category_list
=
sorted
(
variation_category_dict
.
keys
())
delivery_line
.
setVariationCategoryList
(
variation_category_list
)
variation_category_set
.
update
(
movement
.
getVariationCategoryList
())
delivery_line
.
setVariationCategoryList
(
sorted
(
variation_category_set
))
# Then, create delivery movement (delivery cell or complete delivery
# line)
grouped_node_list
=
movement_group_node
.
getGroupList
()
...
...
product/ERP5/tests/testAmount.py
View file @
23d7bdd2
...
...
@@ -118,8 +118,7 @@ class TestAmount(ERP5TypeTestCase):
resource
=
sequence
.
get
(
'resource'
)
amount
.
setResourceValue
(
resource
)
sequence
.
edit
(
variation_property_dict
=
\
dict
([(
x
,
None
)
for
x
in
self
.
variation_property_dict
])
variation_property_dict
=
dict
.
fromkeys
(
self
.
variation_property_dict
)
)
def
stepCheckEmptyGetVariationPropertyDict
(
self
,
sequence
=
None
,
...
...
product/ERP5/tests/testInventoryAPI.py
View file @
23d7bdd2
...
...
@@ -3214,7 +3214,7 @@ class TestUnitConversion(BaseTestUnitConversion):
(
None
,
None
,
None
,
None
),
## empty
)}.
iteritems
():
for
measure
in
measure_list
:
kw
=
dict
((
keys
[
i
],
v
)
for
i
,
v
in
enumerate
(
measure
)
if
v
is
not
None
)
kw
=
{
keys
[
i
]:
v
for
i
,
v
in
enumerate
(
measure
)
if
v
is
not
None
}
resource
.
newContent
(
portal_type
=
'Measure'
,
**
kw
)
self
.
resource
.
setOptionalVariationBaseCategory
(
'industrial_phase'
)
...
...
product/ERP5/tests/testTemplateTool.py
View file @
23d7bdd2
...
...
@@ -611,14 +611,14 @@ class TestTemplateTool(ERP5TypeTestCase):
many business templates that are already installed
"""
template_tool
=
self
.
portal
.
portal_templates
before
=
dict
((
bt
.
getTitle
(),
bt
.
getId
()
)
for
bt
in
template_tool
.
getInstalledBusinessTemplateList
()
)
before
=
{
bt
.
getTitle
():
bt
.
getId
(
)
for
bt
in
template_tool
.
getInstalledBusinessTemplateList
()
}
bt_title
=
'erp5_calendar'
template_tool
.
installBusinessTemplateListFromRepository
([
bt_title
],
install_dependency
=
True
)
self
.
tic
()
after
=
dict
((
bt
.
getTitle
(),
bt
.
getId
()
)
for
bt
in
template_tool
.
getInstalledBusinessTemplateList
()
)
after
=
{
bt
.
getTitle
():
bt
.
getId
(
)
for
bt
in
template_tool
.
getInstalledBusinessTemplateList
()
}
del
after
[
bt_title
]
self
.
assertEqual
(
before
,
after
)
...
...
@@ -645,19 +645,20 @@ class TestTemplateTool(ERP5TypeTestCase):
fourth_group
=
range
(
10
,
12
)
fifth_group
=
range
(
12
,
13
)
expected_position_dict
=
dict
(((
'erp5_property_sheets'
,
first_group
),
(
'erp5_core_proxy_field_legacy'
,
first_group
),
(
'erp5_mysql_innodb_catalog'
,
first_group
),
(
'erp5_core'
,
first_group
),
(
'erp5_full_text_myisam_catalog'
,
first_group
),
(
'erp5_xhtml_style'
,
first_group
),
(
'erp5_ingestion_mysql_innodb_catalog'
,
second_group
),
(
'erp5_base'
,
second_group
),
(
'erp5_jquery'
,
third_group
),
(
'erp5_ingestion'
,
third_group
),
(
'erp5_web'
,
fourth_group
),
(
'erp5_crm'
,
fourth_group
),
(
'erp5_credential'
,
fifth_group
)))
expected_position_dict
=
{
'erp5_property_sheets'
:
first_group
,
'erp5_core_proxy_field_legacy'
:
first_group
,
'erp5_mysql_innodb_catalog'
:
first_group
,
'erp5_core'
:
first_group
,
'erp5_full_text_myisam_catalog'
:
first_group
,
'erp5_xhtml_style'
:
first_group
,
'erp5_ingestion_mysql_innodb_catalog'
:
second_group
,
'erp5_base'
:
second_group
,
'erp5_jquery'
:
third_group
,
'erp5_ingestion'
:
third_group
,
'erp5_web'
:
fourth_group
,
'erp5_crm'
:
fourth_group
,
'erp5_credential'
:
fifth_group
}
for
bt
in
ordered_list
:
self
.
assertTrue
(
ordered_list
.
index
(
bt
)
in
expected_position_dict
[
bt
[
1
]],
...
...
product/ERP5/tests/testTradeModelLine.py
View file @
23d7bdd2
...
...
@@ -415,8 +415,8 @@ class TestTradeModelLine(TestTradeModelLineMixin):
for
line
in
delivery
.
getMovementList
():
simulation_movement_list
,
=
\
self
.
getTradeModelSimulationMovementList
(
line
)
result_dict
=
dict
((
sm
.
getResourceValue
().
getUse
(),
sm
)
for
sm
in
simulation_movement_list
)
result_dict
=
{
sm
.
getResourceValue
().
getUse
():
sm
for
sm
in
simulation_movement_list
}
self
.
assertEqual
(
len
(
simulation_movement_list
),
len
(
result_dict
))
for
use
in
'discount'
,
'tax'
:
...
...
@@ -596,8 +596,8 @@ class TestTradeModelLine(TestTradeModelLineMixin):
# on invoice, make specialise point to a new TC and check it diverged
trade_condition
=
self
[
'trade_condition'
]
new_trade_condition
=
self
.
clone
(
trade_condition
)
line_dict
=
dict
((
line
.
getReference
(),
line
)
for
line
in
new_trade_condition
.
objectValues
())
line_dict
=
{
line
.
getReference
():
line
for
line
in
new_trade_condition
.
objectValues
()}
line_dict
[
'discount'
].
edit
(
reference
=
'discount_2'
,
price
=
self
.
new_discount_ratio
)
line_dict
[
'tax'
].
edit
(
reference
=
'tax_2'
,
...
...
product/ERP5/tests/testTranslation.py
View file @
23d7bdd2
...
...
@@ -149,8 +149,8 @@ class TestWorkflowStateTitleTranslation(ERP5TypeTestCase):
# State ID has multiple translation associated, and it leads to
# unexpected results for the user when using portal catalog.
rejected_key_list
=
translation_dict
.
keys
()
result_dict
=
dict
([(
x
,
[])
for
x
in
rejected_key_list
])
error_dict
=
dict
([(
x
,
[])
for
x
in
rejected_key_list
])
result_dict
=
{
x
:
[]
for
x
in
rejected_key_list
}
error_dict
=
{
x
:
[]
for
x
in
rejected_key_list
}
error
=
0
# Browse all workflows to ease fixing this issue.
...
...
product/ERP5/tests/testWorklist.py
View file @
23d7bdd2
...
...
@@ -163,8 +163,8 @@ class TestWorklist(ERP5TypeTestCase):
worklists
.
addWorklist
(
worklist_id
)
worklists
.
_getOb
(
worklist_id
).
setProperties
(
''
,
actbox_name
=
'%s (%%(count)s)'
%
actbox_name
,
actbox_url
=
actbox_url
,
props
=
dict
((
k
.
startswith
(
'guard_'
)
and
k
or
'var_match_'
+
k
,
v
)
for
k
,
v
in
kw
.
iteritems
())
)
props
=
{
k
if
k
.
startswith
(
'guard_'
)
else
'var_match_'
+
k
:
v
for
k
,
v
in
kw
.
iteritems
()}
)
def
removeWorklist
(
self
,
workflow_id
,
worklist_id_list
):
worklists
=
self
.
getWorkflowTool
()[
workflow_id
].
worklists
...
...
product/ERP5Catalog/tests/testERP5Catalog.py
View file @
23d7bdd2
...
...
@@ -3935,9 +3935,8 @@ VALUES
org4
=
module
.
newContent
(
portal_type
=
'Organisation'
,
title
=
'org4'
)
org4
.
setGroupList
([
'nexedi'
,
'tiolive'
])
# check associations are correct
actual_group_title_map
=
dict
((
org
.
getTitle
(),
sorted
(
org
.
getGroupTitleList
()))
for
org
in
(
org1
,
org2
,
org3
,
org4
))
actual_group_title_map
=
{
org
.
getTitle
():
sorted
(
org
.
getGroupTitleList
())
for
org
in
(
org1
,
org2
,
org3
,
org4
)}
expected_group_title_map
=
dict
(
org1
=
[],
org2
=
[
'Nexedi'
],
org3
=
[
'TIOLive'
],
...
...
product/ERP5Configurator/Document/WorkflowSecurityConfiguratorItem.py
View file @
23d7bdd2
...
...
@@ -93,7 +93,7 @@ class WorkflowSecurityConfiguratorItem(ConfiguratorItemMixin, XMLObject):
for
permission
in
permission_list
:
state
.
setPermission
(
permission
,
0
,
[])
# Update state matrix
permission_dict
=
dict
([(
x
,
[])
for
x
in
permission_list
])
permission_dict
=
{
x
:
[]
for
x
in
permission_list
}
for
role
,
perm_symbol
in
state_config
.
items
():
managed_permission_list
=
[]
if
'A'
in
perm_symbol
:
...
...
product/ERP5Form/MultiRelationField.py
View file @
23d7bdd2
...
...
@@ -68,9 +68,12 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget,
'size'
,
'extra_item'
,
]
property_names
=
Widget
.
LinesTextAreaWidget
.
property_names
+
\
Widget
.
TextWidget
.
property_names
+
\
local_property_names
property_names
=
(
lambda
name_list
,
name_set
=
set
():
# delete double (but preserve order) in order to keep a usable ZMI...
[
x
for
x
in
name_list
if
not
(
x
in
name_set
or
name_set
.
add
(
x
))])(
Widget
.
LinesTextAreaWidget
.
property_names
+
Widget
.
TextWidget
.
property_names
+
local_property_names
)
# XXX Field to remove...
update_method
=
fields
.
StringField
(
'update_method'
,
...
...
@@ -194,17 +197,6 @@ class MultiRelationStringFieldWidget(Widget.LinesTextAreaWidget,
default
=
''
,
required
=
0
)
# delete double in order to keep a usable ZMI...
# XXX need to keep order !
#property_names = dict([(i,0) for i in property_names]).keys()
_v_dict
=
{}
_v_property_name_list
=
[]
for
property_name
in
property_names
:
if
not
_v_dict
.
has_key
(
property_name
):
_v_property_name_list
.
append
(
property_name
)
_v_dict
[
property_name
]
=
1
property_names
=
_v_property_name_list
default_widget_rendering_instance
=
Widget
.
LinesTextAreaWidgetInstance
def
_getContextValue
(
self
,
field
,
REQUEST
):
...
...
product/ERP5Form/ParallelListField.py
View file @
23d7bdd2
...
...
@@ -68,9 +68,12 @@ class ParallelListWidget(Widget.MultiListWidget,
default: 0
"""
property_names
=
Widget
.
MultiListWidget
.
property_names
+
\
Widget
.
ListWidget
.
property_names
+
\
[
'hash_script_id'
]
property_names
=
(
lambda
name_list
,
name_set
=
set
():
# delete double (but preserve order) in order to keep a usable ZMI...
[
x
for
x
in
name_list
if
not
(
x
in
name_set
or
name_set
.
add
(
x
))])(
Widget
.
MultiListWidget
.
property_names
+
Widget
.
ListWidget
.
property_names
+
[
'hash_script_id'
])
hash_script_id
=
fields
.
StringField
(
'hash_script_id'
,
title
=
'Hash script'
,
...
...
@@ -78,17 +81,6 @@ class ParallelListWidget(Widget.MultiListWidget,
"The method to call to hash items list."
),
required
=
0
)
# delete double in order to keep a usable ZMI...
# XXX need to keep order !
#property_names = dict([(i,0) for i in property_names]).keys()
_v_dict
=
{}
_v_property_name_list
=
[]
for
property_name
in
property_names
:
if
not
_v_dict
.
has_key
(
property_name
):
_v_property_name_list
.
append
(
property_name
)
_v_dict
[
property_name
]
=
1
property_names
=
_v_property_name_list
def
__init__
(
self
):
"""
Generate some subwidget used for rendering.
...
...
product/ERP5Form/Selection.py
View file @
23d7bdd2
...
...
@@ -163,8 +163,8 @@ class Selection(Acquisition.Implicit, Traversable, Persistent):
# We should only keep params which do not start with field_
# in order to make sure we do not collect unwanted params
# resulting form the REQUEST generated by an ERP5Form submit
params
=
dict
(
[
item
for
item
in
params
.
iteritems
()
\
if
not
item
[
0
].
startswith
(
'field_'
)]
)
params
=
dict
(
item
for
item
in
params
.
iteritems
()
if
not
item
[
0
].
startswith
(
'field_'
)
)
if
self
.
params
!=
params
:
self
.
params
=
params
if
kw
is
not
None
:
...
...
@@ -371,7 +371,8 @@ class Selection(Acquisition.Implicit, Traversable, Persistent):
security
.
declarePublic
(
'getAnonymousSelectionKey'
)
def
getAnonymousSelectionKey
(
self
):
return
md5
(
repr
(
dict
([(
k
,
v
)
for
k
,
v
in
self
.
__dict__
.
iteritems
()
if
k
!=
'index'
]))).
hexdigest
()
return
md5
(
repr
({
k
:
v
for
k
,
v
in
self
.
__dict__
.
iteritems
()
if
k
!=
'index'
})).
hexdigest
()
InitializeClass
(
Selection
)
allow_class
(
Selection
)
...
...
product/ERP5TioSafe/Conduit/TioSafeNodeConduit.py
View file @
23d7bdd2
...
...
@@ -175,18 +175,13 @@ class TioSafeNodeConduit(TioSafeBaseConduit):
keyword
[
tag
]
=
value
document
.
context
.
person_module
.
updatePersonAddress
(
**
keyword
)
else
:
# getter used to retrieve the current values and to check conflicts
property_list
=
[
'birthday'
,
]
getter_value_dict
=
dict
([
(
prop
,
getattr
(
document
,
prop
))
for
prop
in
property_list
if
getattr
(
document
,
prop
,
None
)
is
not
None
])
assert
tag
==
'birthday'
,
tag
current_value
=
getattr
(
document
,
tag
)
assert
current_value
is
not
None
,
current_value
# create and fill a conflict when the integration site value, the erp5
# value and the previous value are differents
current_value
=
getter_value_dict
[
tag
]
if
current_value
not
in
[
value
,
previous_value
]:
if
value
!=
current_value
!=
previous_value
:
conflict_list
.
append
(
self
.
_generateConflict
(
path
=
document
.
getPhysicalPath
(),
tag
=
tag
,
xml
=
xml
,
...
...
product/ERP5Type/Accessor/Acquired.py
View file @
23d7bdd2
...
...
@@ -207,7 +207,4 @@ class SetGetter(ListGetter):
Gets a category value set
"""
def
__call__
(
self
,
instance
,
*
args
,
**
kw
):
result_list
=
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)
result_set
=
dict
([(
x
,
0
)
for
x
in
result_list
]).
keys
()
return
result_set
return
list
(
set
(
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)))
product/ERP5Type/Accessor/Category.py
View file @
23d7bdd2
...
...
@@ -164,9 +164,7 @@ class SetGetter(ListGetter):
Gets a category value set
"""
def
__call__
(
self
,
instance
,
*
args
,
**
kw
):
result_list
=
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)
result_set
=
dict
([(
x
,
0
)
for
x
in
result_list
]).
keys
()
return
result_set
return
list
(
set
(
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)))
# ItemList is outdated XXX -> ItemList
...
...
product/ERP5Type/Accessor/Related.py
View file @
23d7bdd2
...
...
@@ -105,6 +105,4 @@ class SetGetter(ListGetter):
Gets a category value set
"""
def
__call__
(
self
,
instance
,
*
args
,
**
kw
):
result_list
=
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)
result_set
=
dict
([(
x
,
0
)
for
x
in
result_list
]).
keys
()
return
result_set
return
list
(
set
(
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)))
product/ERP5Type/Accessor/RelatedValue.py
View file @
23d7bdd2
...
...
@@ -111,9 +111,7 @@ class SetGetter(ListGetter):
Gets a category value set
"""
def
__call__
(
self
,
instance
,
*
args
,
**
kw
):
result_list
=
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)
result_set
=
dict
([(
x
,
0
)
for
x
in
result_list
]).
keys
()
return
result_set
return
list
(
set
(
ListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)))
class
DefaultPropertyGetter
(
BaseGetter
):
...
...
@@ -193,9 +191,7 @@ class PropertySetGetter(PropertyListGetter):
Gets a category value set
"""
def
__call__
(
self
,
instance
,
*
args
,
**
kw
):
result_list
=
PropertyListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)
result_set
=
dict
([(
x
,
0
)
for
x
in
result_list
]).
keys
()
return
result_set
return
list
(
set
(
PropertyListGetter
.
__call__
(
self
,
instance
,
*
args
,
**
kw
)))
class
DefaultIdGetter
(
PropertyGetter
):
...
...
product/ERP5Type/Core/AcquiredProperty.py
View file @
23d7bdd2
...
...
@@ -73,9 +73,10 @@ class AcquiredProperty(StandardProperty):
'translation_acquired_property_id'
)
# Add names specific to 'content' type (see StandardProperty)
_name_mapping_filesystem_to_zodb_dict
=
\
dict
([
(
name
,
'content_'
+
name
,)
for
name
in
_content_type_attribute_tuple
],
**
StandardProperty
.
_name_mapping_filesystem_to_zodb_dict
)
_name_mapping_filesystem_to_zodb_dict
=
{
name
:
'content_'
+
name
for
name
in
_content_type_attribute_tuple
}
_name_mapping_filesystem_to_zodb_dict
.
update
(
StandardProperty
.
_name_mapping_filesystem_to_zodb_dict
)
# ZODB name of attributes whose value is a TALES Expression string
_expression_attribute_tuple
=
\
...
...
product/ERP5Type/Tool/TypesTool.py
View file @
23d7bdd2
...
...
@@ -344,9 +344,9 @@ class OldTypesTool(OFSFolder):
new_type
.
_importRole
(
role
.
__getstate__
())
elif
k
not
in
(
'uid'
,
'isIndexable'
):
if
k
==
'_property_domain_dict'
:
v
=
dict
((
k
,
t
.
__class__
(
property_name
=
t
.
property_name
,
domain_name
=
t
.
domain_name
)
)
for
k
,
t
in
v
.
iteritems
())
v
=
{
k
:
t
.
__class__
(
property_name
=
t
.
property_name
,
domain_name
=
t
.
domain_name
)
for
k
,
t
in
v
.
iteritems
()}
setattr
(
new_type
,
k
,
v
)
finally
:
del
new_type
.
generateNewId
...
...
product/ERP5Type/TranslationProviderBase.py
View file @
23d7bdd2
...
...
@@ -47,8 +47,7 @@ class TranslationProviderBase(object):
pass
else
:
property_domain_dict
.
update
(
my_property_domain_dict
)
return
dict
((
k
,
v
.
__of__
(
self
))
for
k
,
v
in
property_domain_dict
.
iteritems
())
return
{
k
:
v
.
__of__
(
self
)
for
k
,
v
in
property_domain_dict
.
iteritems
()}
security
.
declarePublic
(
'getContentTranslationDomainPropertyNameList'
)
def
getContentTranslationDomainPropertyNameList
(
self
):
...
...
product/ERP5Type/Utils.py
View file @
23d7bdd2
...
...
@@ -1720,14 +1720,16 @@ def guessEncodingFromText(data, content_type='text/html'):
'
You
must
install
python
-
magic
'
raise NotImplementedError, message
_reencodeUrlEscapes_map = dict((chr(x), chr(x) in (# safe
_reencodeUrlEscapes_map = {chr(x): chr(x) if chr(x) in
# safe
"!'
()
*-
.
" "
0123456789
" "
_
~
"
"
ABCDEFGHIJKLMNOPQRSTUVWXYZ
"
"
abcdefghijklmnopqrstuvwxyz
"
# reserved (maybe unsafe)
"
#$&+,/:;=?@[]")
and
chr
(
x
)
or
"%%%02X"
%
x
)
for
x
in
xrange
(
256
))
"
#$&+,/:;=?@[]"
else
"%%%02X"
%
x
for
x
in
xrange
(
256
)}
def
reencodeUrlEscapes
(
url
):
"""Fix a non-conformant %-escaped URL (or quote an unescaped one)
...
...
product/ERP5Type/patches/DCWorkflow.py
View file @
23d7bdd2
...
...
@@ -318,8 +318,8 @@ def DCWorkflowDefinition_getWorklistVariableMatchDict(self, info,
format_data
=
TemplateDict
()
format_data
.
_push
(
info
)
variable_match
.
setdefault
(
SECURITY_PARAMETER_ID
,
())
format_data
.
_push
(
dict
((
k
,
(
'&%s:list='
%
k
).
join
(
v
))
for
\
k
,
v
in
variable_match
.
iteritems
())
)
format_data
.
_push
(
{
k
:
(
'&%s:list='
%
k
).
join
(
v
)
for
k
,
v
in
variable_match
.
iteritems
()}
)
variable_match
[
WORKLIST_METADATA_KEY
]
=
{
'format_data'
:
format_data
,
'worklist_title'
:
action_box_name
,
'worklist_id'
:
worklist_id
,
...
...
product/ERP5Type/patches/WorkflowTool.py
View file @
23d7bdd2
...
...
@@ -382,8 +382,8 @@ def sumCatalogResultByWorklist(grouped_worklist_dict, catalog_result):
if
len
(
catalog_result
)
>
0
:
# Transtype all worklist definitions where needed
criterion_id_list
=
[]
class_dict
=
dict
(((
name
,
_sql_cast_dict
.
get
(
x
[
'type'
],
_sql_cast_fallback
)
)
for
name
,
x
in
catalog_result
.
data_dictionary
().
iteritems
()
))
class_dict
=
{
name
:
_sql_cast_dict
.
get
(
x
[
'type'
],
_sql_cast_fallback
)
for
name
,
x
in
catalog_result
.
data_dictionary
().
iteritems
()
}
for
criterion_dict
in
grouped_worklist_dict
.
itervalues
():
for
criterion_id
,
criterion_value_list
in
criterion_dict
.
iteritems
():
if
type
(
criterion_value_list
)
is
not
ExclusionList
:
...
...
@@ -691,7 +691,7 @@ def WorkflowTool_refreshWorklistCache(self):
#LOG('refreshWorklistCache', WARNING, 'Using query: %s' % \
# (search_result(src__=1, **search_result_kw), ))
catalog_brain_result
=
search_result
(
**
search_result_kw
)
value_column_dict
=
dict
([(
x
,
[])
for
x
in
table_column_id_set
])
value_column_dict
=
{
x
:
[]
for
x
in
table_column_id_set
}
for
catalog_brain_line
in
catalog_brain_result
.
dictionaries
():
for
column_id
,
value
in
catalog_brain_line
.
iteritems
():
if
column_id
in
value_column_dict
:
...
...
product/ERP5VCS/Subversion.py
View file @
23d7bdd2
...
...
@@ -381,8 +381,8 @@ class BusinessTemplateWorkingCopy(BusinessTemplateFolder):
def export(self, business_template):
# Dicts to track svn status in case it is not consistent with existing
# files and directories
self.versioned_dict =
dict((x.getPath(), x)
for x in self.client.status('
.
')
if str(x.getTextStatus()) not in ('
ignored
', '
unversioned
')
)
self.versioned_dict =
{x.getPath(): x
for x in self.client.status('
.
')
if str(x.getTextStatus()) not in ('
ignored
', '
unversioned
')
}
del self.versioned_dict['
.
']
self.versioned_dict[''] = None
self.added_set = set()
...
...
product/ERP5VCS/SubversionClient.py
View file @
23d7bdd2
...
...
@@ -376,8 +376,7 @@ try:
# transform entry to dict to make it more usable in zope
members_tuple
=
(
'url'
,
'uuid'
,
'revision'
,
'kind'
,
\
'commit_author'
,
'commit_revision'
,
'commit_time'
,)
entry_dict
=
dict
([(
member
,
getattr
(
entry
,
member
))
\
for
member
in
members_tuple
])
entry_dict
=
{
member
:
getattr
(
entry
,
member
)
for
member
in
members_tuple
}
entry_dict
[
'revision'
]
=
entry_dict
[
'revision'
].
number
entry_dict
[
'commit_revision'
]
=
entry_dict
[
'commit_revision'
].
number
entry_dict
[
'commit_time'
]
=
DateTime
(
entry_dict
[
'commit_time'
])
...
...
product/ZSQLCatalog/SQLCatalog.py
View file @
23d7bdd2
...
...
@@ -1661,12 +1661,9 @@ class Catalog(Folder,
method
.
func_code
.
co_varnames
[:
method
.
func_code
.
co_argcount
]
else
:
arguments
=
[]
kw
=
dict
(
(
x
,
LazyIndexationParameterList
(
catalogged_object_list
,
x
,
argument_cache
,
))
for
x
in
arguments
)
kw
=
{
x
:
LazyIndexationParameterList
(
catalogged_object_list
,
x
,
argument_cache
)
for
x
in
arguments
}
# Alter/Create row
try
:
...
...
@@ -2352,7 +2349,7 @@ class Catalog(Folder,
else
:
select_dict
=
None
elif
isinstance
(
select_dict
,
(
list
,
tuple
)):
select_dict
=
dict
([(
x
,
None
)
for
x
in
select_dict
]
)
select_dict
=
dict
.
fromkeys
(
select_dict
)
# Handle left_join_list
left_join_list
=
kw
.
pop
(
'left_join_list'
,
())
# Handle implicit_join. It's True by default, as there's a lot of code
...
...
product/ZSQLCatalog/SearchKey/RelatedKey.py
View file @
23d7bdd2
...
...
@@ -211,9 +211,8 @@ class RelatedKey(SearchKey):
destination_table
))
# map aliases to use in ZSQLMethod.
table_alias_dict
=
dict
((
'table_%s'
%
(
index
,
),
table_alias
)
for
(
index
,
(
table_alias
,
table_name
))
in
enumerate
(
table_alias_list
))
table_alias_dict
=
{
'table_%s'
%
index
:
alias
[
0
]
for
index
,
alias
in
enumerate
(
table_alias_list
)}
assert
len
(
table_alias_list
)
==
len
(
table_alias_dict
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment