Commit 06a56692 authored by Rafael Monnerat's avatar Rafael Monnerat

Unified clone behavior between erp5_web and usual clone.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@22620 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent f1984759
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<tuple>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
<tuple/>
</tuple>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Python_magic</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>__ac_local_roles__</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>"""\n
Currently it is not possible to change it to checkConsistency.\n
If it added similar constraints at Documents will break archive \n
behaviour. \n
"""\n
form_data = context.REQUEST.form\n
translateString = context.Base_translateString\n
\n
if clone:\n
portal_type = context.getPortalType()\n
else:\n
portal_type = form_data[\'clone_portal_type\']\n
\n
# prepare query params\n
kw = {\'portal_type\' : portal_type}\n
if form_data.get(\'clone_reference\'): \n
kw[\'reference\'] = form_data[\'clone_reference\']\n
if form_data.get(\'clone_version\'): \n
kw[\'version\'] = form_data[\'clone_version\']\n
if form_data.get(\'clone_language\'): \n
kw[\'language\'] = form_data[\'clone_language\']\n
\n
# Count documents of same reference and prepare kw\n
count = int(context.portal_catalog.countResults(**kw)[0][0])\n
\n
if count:\n
return translateString("Sorry, a ${portal_type} with reference \'${reference}\' and version \'${version} [${language}]\' already exists. Please select another reference or version.", mapping = kw)\n
\n
return None\n
</string> </value>
</item>
<item>
<key> <string>_code</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_filepath</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>clone=1, **kw</string> </value>
</item>
<item>
<key> <string>errors</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>func_code</string> </key>
<value>
<object>
<klass>
<global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>co_argcount</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>co_varnames</string> </key>
<value>
<tuple>
<string>clone</string>
<string>kw</string>
<string>_getattr_</string>
<string>context</string>
<string>form_data</string>
<string>translateString</string>
<string>portal_type</string>
<string>_getitem_</string>
<string>_write_</string>
<string>int</string>
<string>_apply_</string>
<string>count</string>
<string>None</string>
</tuple>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>func_defaults</string> </key>
<value>
<tuple>
<int>1</int>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>Base_checkCloneConsistency</string> </value>
</item>
<item>
<key> <string>warnings</string> </key>
<value>
<tuple/>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -75,82 +75,10 @@
with same reference, version, language. Pretty messages\n
are provided to the user.\n
"""\n
\n
translateString = context.Base_translateString\n
form_data = context.REQUEST.form\n
\n
# Define a list of field name to take into account in the cloning process\n
ACCEPTABLE_FORM_ID_LIST = [ \\\n
\'clone_reference\'\n
, \'clone_language\'\n
, \'clone_version\'\n
, \'clone_revision\'\n
, \'clone_title\'\n
, \'clone_short_title\'\n
]\n
\n
# First make sure that no document already exists with the\n
# same portal_type, reference, language and version.\n
if clone:\n
portal_type = context.getPortalType()\n
else:\n
portal_type = form_data[\'clone_portal_type\']\n
\n
# prepare query params\n
kw = {\'portal_type\' : portal_type}\n
if form_data.get(\'clone_reference\'): \n
kw[\'reference\'] = form_data[\'clone_reference\']\n
if form_data.get(\'clone_version\'): \n
kw[\'version\'] = form_data[\'clone_version\']\n
if form_data.get(\'clone_language\'): \n
kw[\'language\'] = form_data[\'clone_language\']\n
\n
# Count documents of same reference and prepare kw\n
count = int(context.portal_catalog.countResults(**kw)[0][0])\n
kw[\'reference\'] = kw.get(\'reference\', \'undefined\')\n
kw[\'language\'] = kw.get(\'language\', \'any\')\n
kw[\'version\'] = kw.get(\'version\', \'undefined\')\n
\n
# if count results not 0, warn user\n
if count:\n
msg = translateString("Sorry, a ${portal_type} with reference \'${reference}\' and version \'${version} [${language}]\' already exists. Please select another reference or version.", mapping = kw)\n
return context.Base_redirect(form_id, \n
editable_mode=editable_mode,\n
keep_items={\'portal_status_message\': msg})\n
\n
# Standard cloning method\n
if clone:\n
# We copy contents in place if possible\n
directory = getattr(context, \'original_container\', None) or context.getParentValue()\n
# Copy and paste the object\n
original_id = getattr(context, \'original_id\', None) or context.getId()\n
# This is required for objects acquired in Web Section\n
clipboard = directory.manage_copyObjects(ids=[original_id])\n
paste_result = directory.manage_pasteObjects(cb_copy_data=clipboard)\n
new_object = directory[paste_result[0][\'new_id\']]\n
message_kind = \'clone\'\n
else:\n
# Guess the new document module\n
portal = context.getPortalObject()\n
module = portal.getDefaultModule(portal_type=portal_type)\n
new_object = module.newContent(portal_type = portal_type)\n
form_id = \'view\'\n
message_kind = \'new\'\n
\n
# Set properties to the new object\n
edit_kw = {}\n
property_id_list = new_object.propertyIds()\n
for (key, val) in form_data.items():\n
if key in ACCEPTABLE_FORM_ID_LIST and key[len(\'clone_\'):] in property_id_list:\n
edit_kw[key[len(\'clone_\'):]] = val\n
new_object.edit(**edit_kw)\n
\n
if not editable_mode: \n
form_id = \'view\'\n
msg = translateString("Created %s ${portal_type} with reference \'${reference}\' and version \'${version} [${language}]\'." % message_kind, mapping = kw)\n
return new_object.Base_redirect(form_id, \n
editable_mode=1,\n
keep_items={\'portal_status_message\': msg})\n
context.Base_createCloneDocument(web_mode=1, \n
clone=clone, \n
form_id=form_id, \n
editable_mode=editable_mode)\n
</string> </value>
</item>
<item>
......@@ -206,33 +134,6 @@ return new_object.Base_redirect(form_id, \n
<string>editable_mode</string>
<string>_getattr_</string>
<string>context</string>
<string>translateString</string>
<string>form_data</string>
<string>ACCEPTABLE_FORM_ID_LIST</string>
<string>portal_type</string>
<string>_getitem_</string>
<string>kw</string>
<string>_write_</string>
<string>int</string>
<string>_apply_</string>
<string>count</string>
<string>msg</string>
<string>getattr</string>
<string>None</string>
<string>directory</string>
<string>original_id</string>
<string>clipboard</string>
<string>paste_result</string>
<string>new_object</string>
<string>message_kind</string>
<string>portal</string>
<string>module</string>
<string>edit_kw</string>
<string>property_id_list</string>
<string>_getiter_</string>
<string>key</string>
<string>val</string>
<string>len</string>
</tuple>
</value>
</item>
......
688
\ No newline at end of file
690
\ No newline at end of file
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