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
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
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
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Boxiang Sun
erp5
Commits
f36260d2
Commit
f36260d2
authored
Oct 10, 2012
by
Julien Muchembled
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Code clean up in ListBox & EditorField
parent
4d1b9357
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
67 additions
and
100 deletions
+67
-100
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Workflow_statusModify.xml
...m/portal_skins/erp5_xhtml_style/Workflow_statusModify.xml
+4
-9
product/ERP5Form/EditorField.py
product/ERP5Form/EditorField.py
+13
-19
product/ERP5Form/ListBox.py
product/ERP5Form/ListBox.py
+50
-72
No files found.
product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_xhtml_style/Workflow_statusModify.xml
View file @
f36260d2
...
...
@@ -94,15 +94,10 @@ for f in form.get_fields():\n
listbox = request.get(\'listbox\') # XXX: hardcoded field name\n
if listbox is not None:\n
listbox_line_list = []\n
listbox = getattr(request,\'listbox\',None) # XXX: hardcoded field name\n
listbox_keys = listbox.keys()\n
listbox_keys.sort()\n
for key in listbox_keys:\n
listbox_line = listbox[key]\n
listbox_line[\'listbox_key\'] = key\n
listbox_line_list.append(listbox[key])\n
listbox_line_list = tuple(listbox_line_list)\n
doaction_param_list[\'listbox\'] = listbox_line_list # XXX: hardcoded field name\n
for key, value in sorted(listbox.iteritems()):\n
value[\'listbox_key\'] = key\n
listbox_line_list.append(value)\n
doaction_param_list[\'listbox\'] = tuple(listbox_line_list)\n
\n
try:\n
context.portal_workflow.doActionFor(\n
...
...
product/ERP5Form/EditorField.py
View file @
f36260d2
...
...
@@ -83,16 +83,13 @@ class EditorWidget(Widget.TextAreaWidget):
"""
here
=
REQUEST
[
'here'
]
text_editor
=
field
.
get_value
(
'text_editor'
)
if
text_editor
==
'text_area'
:
return
Widget
.
TextAreaWidget
.
render
(
self
,
field
,
key
,
value
,
REQUEST
)
elif
text_editor
==
'bespin'
:
if
text_editor
==
'bespin'
:
# XXX The usage of bespin editor depends of erp5_bespin bt5
# installed and still experimental. If erp5_bespin is not installed, it
# render standard an standard editor field.
bespin_support
=
getattr
(
here
,
'bespin_support'
,
None
)
if
bespin_support
is
None
:
return
Widget
.
TextAreaWidget
.
render
(
self
,
field
,
key
,
value
,
REQUEST
)
return
bespin_support
.
pt_render
(
if
bespin_support
is
not
None
:
return
bespin_support
.
pt_render
(
extra_context
=
{
'field'
:
field
,
'inputvalue'
:
value
,
...
...
@@ -100,9 +97,8 @@ class EditorWidget(Widget.TextAreaWidget):
})
elif
text_editor
==
"xinha"
:
xinha_support
=
getattr
(
here
,
'xinha_support'
,
None
)
if
xinha_support
is
None
:
return
Widget
.
TextAreaWidget
.
render
(
self
,
field
,
key
,
value
,
REQUEST
)
return
xinha_support
.
pt_render
(
if
xinha_support
is
not
None
:
return
xinha_support
.
pt_render
(
extra_context
=
{
'field'
:
field
,
'field_value'
:
value
,
...
...
@@ -110,27 +106,25 @@ class EditorWidget(Widget.TextAreaWidget):
})
elif
text_editor
==
"svg_editor"
:
svg_editor_support
=
getattr
(
here
,
'svg_editor_support'
,
None
)
if
svg_editor_support
is
None
:
return
Widget
.
TextAreaWidget
.
render
(
self
,
field
,
key
,
value
,
REQUEST
)
return
svg_editor_support
.
pt_render
()
if
svg_editor_support
is
not
None
:
return
svg_editor_support
.
pt_render
()
elif
text_editor
==
"spreadsheet_editor"
:
sheet_editor_support
=
getattr
(
here
,
'sheet_editor_support'
,
None
)
if
sheet_editor_support
is
None
:
return
Widget
.
TextAreaWidget
.
render
(
self
,
field
,
key
,
value
,
REQUEST
)
return
sheet_editor_support
.
pt_render
()
if
sheet_editor_support
is
not
None
:
return
sheet_editor_support
.
pt_render
()
elif
text_editor
==
'ace'
:
ace_editor_support
=
getattr
(
here
,
'ace_editor_support'
,
None
)
if
ace_editor_support
is
None
:
return
Widget
.
TextAreaWidth
.
render
(
self
,
field
,
key
,
value
,
REQUEST
)
return
ace_editor_support
.
pt_render
(
extra_context
=
{
'field'
:
field
,
if
ace_editor_support
is
not
None
:
return
ace_editor_support
.
pt_render
(
extra_context
=
{
'field'
:
field
,
'content'
:
value
,
'id'
:
key
})
el
se
:
el
if
text_editor
!=
'text_area'
:
return
here
.
fckeditor_wysiwyg_support
.
pt_render
(
extra_context
=
{
'inputvalue'
:
value
,
'inputname'
:
key
})
return
Widget
.
TextAreaWidget
.
render
(
self
,
field
,
key
,
value
,
REQUEST
)
def
render_view
(
self
,
field
,
value
,
REQUEST
=
None
,
render_prefix
=
None
):
"""
...
...
product/ERP5Form/ListBox.py
View file @
f36260d2
...
...
@@ -2746,7 +2746,7 @@ class ListBoxValidator(Validator.Validator):
editable_columns
=
field
.
get_value
(
'editable_columns'
)
column_ids
=
[
x
[
0
]
for
x
in
columns
]
editable_column_ids
=
[
x
[
0
]
for
x
in
editable_columns
]
editable_field_dict
=
dict
()
editable_field_dict
=
{}
for
sql
in
editable_column_ids
:
alias
=
sql
.
replace
(
'.'
,
'_'
)
editable_field_dict
[
alias
]
=
ListBoxRenderer
(
...
...
@@ -2754,55 +2754,49 @@ class ListBoxValidator(Validator.Validator):
selection_name
=
field
.
get_value
(
'selection_name'
)
#LOG('ListBoxValidator', 0, 'field = %s, selection_name = %s' % (repr(field), repr(selection_name)))
params
=
here
.
portal_selections
.
getSelectionParamsFor
(
portal
=
here
.
getPortalObject
()
params
=
portal
.
portal_selections
.
getSelectionParamsFor
(
selection_name
,
REQUEST
=
REQUEST
)
portal_url
=
getToolByName
(
here
,
'portal_url'
)
portal
=
portal_url
.
getPortalObject
()
portal_url
=
portal
.
portal_url
result
=
{}
error_result
=
{}
MARKER
=
[]
listbox_uids
=
REQUEST
.
get
(
'%s_uid'
%
field
.
id
,
MARKER
)
if
listbox_uids
is
MARKER
:
raise
KeyError
,
'Field %s is not present in request object.'
%
(
field
.
id
,
)
try
:
listbox_uids
=
REQUEST
[
'%s_uid'
%
field
.
id
]
except
KeyError
:
raise
KeyError
(
'Field %s is not present in request object.'
%
field
.
id
)
#LOG('ListBox.validate: REQUEST',0,REQUEST)
errors
=
[]
object_list
=
[]
object_list
=
None
# We have two things to do in the case of temp objects,
# the first thing is to create a list with new temp objects
# then try to validate some data, and then create again
# the list with a listbox as parameter. Like this we
# can use tales expression
for
uid
in
listbox_uids
:
if
str
(
uid
).
find
(
'new'
)
==
0
:
list_method
=
field
.
get_value
(
'list_method'
)
list_method
=
getattr
(
here
,
list_method
.
method_name
)
#LOG('ListBoxValidator', 0, 'call %s' % repr(list_method))
object_list
=
list_method
(
REQUEST
=
REQUEST
,
**
params
)
break
listbox
=
{}
for
uid
in
listbox_uids
:
if
str
(
uid
).
find
(
'new'
)
==
0
:
o
=
None
for
object
in
object_list
:
if
object
.
getUid
()
==
uid
:
o
=
object
if
o
is
None
:
if
uid
[:
4
]
==
'new_'
:
if
object_list
is
None
:
list_method
=
field
.
get_value
(
'list_method'
)
list_method
=
getattr
(
here
,
list_method
.
method_name
)
#LOG('ListBoxValidator', 0, 'call %s' % repr(list_method))
object_list
=
list_method
(
REQUEST
=
REQUEST
,
**
params
)
row_key
=
uid
[
4
:]
for
o
in
object_list
:
if
o
.
getUid
()
==
uid
:
break
else
:
# First case: dialog input to create new objects
o
=
newTempBase
(
portal
,
uid
[
4
:]
)
# Arghhh - XXX acquisition problem - use portal root
o
=
newTempBase
(
portal
,
row_key
)
# Arghhh - XXX acquisition problem - use portal root
o
.
uid
=
uid
listbox
[
uid
[
4
:]]
=
{}
listbox
[
row_key
]
=
row_result
=
{}
# We first try to set a listbox corresponding to all things
# we can validate, so that we can use the same list
# as the one used for displaying the listbox
for
sql
in
editable_column_ids
:
alias
=
sql
.
replace
(
'.'
,
'_'
)
if
'.'
in
sql
:
property_id
=
'.'
.
join
(
sql
.
split
(
'.'
)[
1
:])
# Only take trailing part
else
:
property_id
=
alias
editable_field
=
editable_field_dict
.
get
(
alias
)
editable_field
=
editable_field_dict
.
get
(
sql
.
replace
(
'.'
,
'_'
))
if
editable_field
is
not
None
:
error_result_key
=
'%s_%s'
%
(
editable_field
.
id
,
o
.
uid
)
key
=
'field_'
+
error_result_key
...
...
@@ -2810,39 +2804,31 @@ class ListBoxValidator(Validator.Validator):
try
:
value
=
editable_field
.
_validate_helper
(
key
,
REQUEST
)
# We need cell
# Here we set the property
listbox
[
uid
[
4
:]]
[
sql
]
=
value
row_result
[
sql
]
=
value
except
ValidationError
,
err
:
pass
except
KeyError
:
pass
# Here we generate again the object_list with listbox the listbox we
# have just created
if
l
en
(
listbox
)
>
0
:
if
l
istbox
:
list_method
=
field
.
get_value
(
'list_method'
)
list_method
=
getattr
(
here
,
list_method
.
method_name
)
REQUEST
.
set
(
field
.
id
,
listbox
)
object_list
=
list_method
(
REQUEST
=
REQUEST
,
**
params
)
for
uid
in
listbox_uids
:
if
str
(
uid
).
find
(
'new'
)
==
0
:
row_result
=
{}
if
uid
[:
4
]
==
'new_'
:
# First case: dialog input to create new objects
#o = newTempBase(here, uid[4:]) # Arghhh - XXX acquisition problem - use portal root
#o.uid = uid
o
=
None
for
object
in
object_list
:
if
object
.
getUid
()
==
uid
:
o
=
object
if
o
is
None
:
# First case: dialog input to create new objects
o
=
newTempBase
(
portal
,
uid
[
4
:])
# Arghhh - XXX acquisition problem - use portal root
row_key
=
uid
[
4
:]
for
o
in
object_list
:
if
o
.
getUid
()
==
uid
:
break
else
:
o
=
newTempBase
(
portal
,
row_key
)
# Arghhh - XXX acquisition problem - use portal root
o
.
uid
=
uid
result
[
uid
[
4
:]]
=
{}
for
sql
in
editable_column_ids
:
alias
=
sql
.
replace
(
'.'
,
'_'
)
if
'.'
in
sql
:
property_id
=
'.'
.
join
(
sql
.
split
(
'.'
)[
1
:])
# Only take trailing part
else
:
property_id
=
alias
editable_field
=
editable_field_dict
.
get
(
alias
)
editable_field
=
editable_field_dict
.
get
(
sql
.
replace
(
'.'
,
'_'
))
if
editable_field
is
not
None
:
REQUEST
.
set
(
'cell'
,
o
)
editable
=
editable_field
.
get_value
(
'editable'
,
REQUEST
=
REQUEST
)
...
...
@@ -2851,8 +2837,8 @@ class ListBoxValidator(Validator.Validator):
error_result_key
=
'%s_%s'
%
(
editable_field
.
id
,
o
.
uid
)
key
=
'field_'
+
error_result_key
try
:
value
=
editable_field
.
_validate_helper
(
key
,
REQUEST
)
# We need cell
result
[
uid
[
4
:]][
sql
]
=
value
row_result
[
sql
]
=
editable_field
.
_validate_helper
(
key
,
REQUEST
)
# We need cell
except
ValidationError
,
err
:
#LOG("ListBox ValidationError",0,str(err))
err
.
field_id
=
error_result_key
...
...
@@ -2869,43 +2855,34 @@ class ListBoxValidator(Validator.Validator):
# because sometimes, we can be provided bad uids
try
:
o
=
here
.
portal_catalog
.
getObject
(
uid
)
except
(
KeyError
,
NotFound
,
ValueError
):
o
=
None
if
o
is
None
:
except
(
KeyError
,
NotFound
,
ValueError
),
err
:
# It is possible that this object is not catalogged yet. So
# the object must be obtained from ZODB.
if
not
object_list
:
if
object_list
is
None
:
list_method
=
field
.
get_value
(
'list_method'
)
list_method
=
getattr
(
here
,
list_method
.
method_name
)
object_list
=
list_method
(
REQUEST
=
REQUEST
,
**
params
)
for
o
bject
in
object_list
:
for
o
in
object_list
:
try
:
if
object
.
getUid
()
==
int
(
uid
):
o
=
object
if
o
.
getUid
()
==
int
(
uid
):
break
except
ValueError
:
if
str
(
object
.
getUid
())
==
uid
:
o
=
object
break
for
sql
in
editable_column_ids
:
alias
=
sql
.
replace
(
'.'
,
'_'
)
if
'.'
in
sql
:
property_id
=
'.'
.
join
(
sql
.
split
(
'.'
)[
1
:])
# Only take trailing part
else
:
property_id
=
alias
editable_field
=
editable_field_dict
.
get
(
alias
)
raise
err
row_key
=
o
.
getUrl
()
for
sql
in
editable_column_ids
:
editable_field
=
editable_field_dict
.
get
(
sql
.
replace
(
'.'
,
'_'
))
if
editable_field
is
not
None
:
REQUEST
.
set
(
'cell'
,
o
)
# We need cell
if
editable_field
.
get_value
(
'editable'
,
REQUEST
=
REQUEST
)
\
and
field
.
need_validate
(
REQUEST
):
if
editable_field
.
get_value
(
'editable'
,
REQUEST
=
REQUEST
)
and
\
editable_
field
.
need_validate
(
REQUEST
):
error_result_key
=
'%s_%s'
%
(
editable_field
.
id
,
o
.
uid
)
key
=
'field_'
+
error_result_key
try
:
value
=
editable_field
.
_validate_helper
(
key
,
REQUEST
)
error_result
[
error_result_key
]
=
value
if
not
result
.
has_key
(
o
.
getUrl
()):
result
[
o
.
getUrl
()]
=
{}
result
[
o
.
getUrl
()][
sql
]
=
value
row_result
[
sql
]
=
error_result
[
error_result_key
]
=
\
editable_field
.
_validate_helper
(
key
,
REQUEST
)
except
ValidationError
,
err
:
err
.
field_id
=
error_result_key
errors
.
append
(
err
)
...
...
@@ -2916,6 +2893,7 @@ class ListBoxValidator(Validator.Validator):
#except:
else
:
LOG
(
"ListBox WARNING"
,
0
,
"Object uid %s could not be validated"
%
uid
)
result
[
row_key
]
=
row_result
if
len
(
errors
)
>
0
:
#LOG("ListBox FormValidationError",0,str(error_result))
#LOG("ListBox FormValidationError",0,str(errors))
...
...
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