Commit ae41cd96 authored by Vincent Pelletier's avatar Vincent Pelletier

Drop broken import action.

parent 3a737e33
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>action</string> </key>
<value>
<persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
</value>
</item>
<item>
<key> <string>categories</string> </key>
<value>
<tuple>
<string>action_type/object_exchange</string>
</tuple>
</value>
</item>
<item>
<key> <string>category</string> </key>
<value> <string>object_exchange</string> </value>
</item>
<item>
<key> <string>condition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>icon</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>import</string> </value>
</item>
<item>
<key> <string>permissions</string> </key>
<value>
<tuple>
<string>Add portal content</string>
</tuple>
</value>
</item>
<item>
<key> <string>priority</string> </key>
<value> <float>1.0</float> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Import CD</string> </value>
</item>
<item>
<key> <string>visible</string> </key>
<value> <int>1</int> </value>
</item>
</dictionary>
</pickle>
</record>
<record id="2" aka="AAAAAAAAAAI=">
<pickle>
<global name="Expression" module="Products.CMFCore.Expression"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>text</string> </key>
<value> <string>string:${object_url}/MonetaryReceptionModule_importMonetaryReceptionFromCDForm</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </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 encoding="cdata"><![CDATA[
message_dict = {\n
\'00\' : \'Fichier colisage chargé...\'\n
,\'01\' : \'Date colisage incorrecte\'\n
,\'02\' : \'Numéro livraison du colisage inexistant\'\n
,\'03\' : \'Numéro livraison existe déja dans la base\'\n
,\'04\' : \'Lettre du pays incorrect\'\n
,\'05\' : \'Numéro caisse inexistant\'\n
,\'06\' : \'doublon avec une autre ligne\'\n
,\'07\' : \'Quantité billet incorrecte\'\n
,\'08\' : \'Livraison vide\'\n
,\'09\' : \'Billet ou lettre non défini\'\n
,\'10\' : \'Millésime incorrect\'\n
,\'11\' : \'Montant billet ou pièce incorrect\'\n
,\'12\' : \'Billet ou pièce correspondant au montant et à la millésime n\'\'existe pas dans la base\'\n
,\'13\' : \'L\'\'utilisateur connecté n\'\'est pas paramêtré pour exécuter cette fonction\'\n
}\n
\n
def isSameSet(a, b):\n
for i in a:\n
if not(i in b) : return 0\n
for i in b:\n
if not(i in a): return 0\n
if len(a) != len(b) : return 0\n
return 1\n
\n
reference_currency_id = context.Baobab_getPortalReferenceCurrencyID()\n
\n
from DateTime import DateTime\n
today_date = DateTime()\n
\n
def create_movement(CD_head_dict, CD_line_list):\n
# Head creation\n
movement_head = context.newContent( portal_type = \'Monetary Reception\'\n
, reindex_object = 1\n
, start_date = today_date\n
, comment = CD_head_dict[\'start_date\']\n
, destination = CD_head_dict[\'destination\']\n
, activate_kw = {"tag" : import_tag}\n
)\n
\n
# Container Creation\n
base_list=(\'emission_letter\', \'variation\', \'cash_status\')\n
category_list = (\'emission_letter/\' + CD_head_dict[\'emission_letter\'],\n
\'variation/\' + CD_head_dict[\'variation\'],\n
\'cash_status/\'+CD_head_dict[\'cash_status\'] )\n
\n
resource_total_quantity = 0\n
for CD_line in CD_line_list:\n
# create cash container\n
movement_container = movement_head.newContent(portal_type = \'Cash Container Item\'\n
, reindex_object = 1\n
, reference = CD_line[\'reference\']\n
, cash_number_range_start = CD_line[\'range_start\']\n
, cash_number_range_stop = CD_line[\'range_stop\']\n
, activate_kw = {"tag" : import_tag}\n
)\n
# create a cash container line\n
container_line = movement_container.newContent(portal_type = \'Container Line\'\n
, reindex_object = 1\n
, resource_value =CD_head_dict[\'resource\']\n
, quantity = CD_line[\'quantity\']\n
, activate_kw = {"tag" : import_tag}\n
)\n
\n
#container_line.setResourceValue(CD_head_dict[\'resource\'])\n
container_line.setVariationCategoryList(category_list)\n
container_line.updateCellRange(script_id=\'CashDetail_asCellRange\',base_id="movement")\n
for key in container_line.getCellKeyList(base_id=\'movement\'):\n
if isSameSet(key,category_list):\n
cell = container_line.newCell(activate_kw = {"tag" : import_tag}, *key)\n
cell.setCategoryList(category_list)\n
cell.setQuantity(CD_line[\'quantity\'])\n
cell.setMappedValuePropertyList([\'quantity\',\'price\'])\n
cell.setMembershipCriterionBaseCategoryList(base_list)\n
cell.setMembershipCriterionCategoryList(category_list)\n
cell.edit(force_update = 1,\n
price = container_line.getResourceValue().getBasePrice(),\n
activate_kw = {"tag" : import_tag})\n
\n
\n
resource_total_quantity += CD_line[\'quantity\']\n
container_line.getPrice() # Store "price" property on line when creating it, to avoid getting conflicts when reindexing.\n
\n
# once all cash containter created, create the movement line for the total\n
movement_line = movement_head.newContent(id = "movement"\n
, portal_type = \'Cash Delivery Line\'\n
, resource_value = CD_head_dict[\'resource\']\n
, quantity_unit_value = context.portal_categories.quantity_unit.unit\n
, activate_kw = {"tag" : import_tag}\n
)\n
movement_line.setVariationBaseCategoryList(base_list)\n
movement_line.setVariationCategoryList(category_list)\n
movement_line.updateCellRange(script_id="CashDetail_asCellRange", base_id="movement")\n
for key in movement_line.getCellKeyList(base_id=\'movement\'):\n
if isSameSet(key,category_list):\n
cell = movement_line.newCell(activate_kw = {"tag" : import_tag}, *key)\n
cell.setCategoryList(category_list)\n
cell.setQuantity(resource_total_quantity)\n
cell.setMappedValuePropertyList([\'quantity\',\'price\'])\n
cell.setMembershipCriterionBaseCategoryList(base_list)\n
cell.setMembershipCriterionCategoryList(category_list)\n
cell.edit(force_update = 1,\n
price = movement_line.getResourceValue().getBasePrice(),\n
activate_kw = {"tag" : import_tag})\n
\n
return {\'error\' : False, \'message\':message_dict[\'00\']+CD_head_dict[\'reference\'],\'delivery_id\':movement_head.getId()}\n
\n
\n
def split_head(CD_file_line_list):\n
\n
head_movement_id = CD_file_line_list[14][55:61]\n
head_start_date_string = CD_file_line_list[7][35:43]\n
head_resource_string = CD_file_line_list[11][32:56]\n
head_emission_letter = CD_file_line_list[14][25:26]\n
\n
# find letter in the emission_letter category\n
default_emissionLetter_list = [x[1] for x in context.portal_categories.emission_letter.getCategoryChildTitleItemList()[1:]]\n
head_emission_letter = string.lower(head_emission_letter)\n
if not head_emission_letter in default_emissionLetter_list :\n
return {\'error\':True, \'message\':message_dict[\'04\'], \'head_dict\':{}}\n
\n
# Movement ID verification\n
# Verify if Movement Id exist\n
head_movement_id = (head_movement_id or \'\').strip()\n
if head_movement_id == \'\':\n
return {\'error\':True, \'message\':message_dict[\'02\'], \'head_dict\':{}}\n
\n
# Verify if Movement Id is not already exist in the database\n
head_movement_id = head_movement_id+\'_\'+head_emission_letter\n
\n
# date verification\n
try:\n
head_start_date_string = \'20\' + head_start_date_string[6:8] + \\\n
\'/\' + head_start_date_string[3:5] + \\\n
\'/\' + head_start_date_string[0:2] + \' 0:0am\'\n
head_start_date = DateTime(head_start_date_string )\n
except:\n
return {\'error\':True, \'message\':message_dict[\'01\'], \'head_dict\':{}}\n
\n
head_resource_string = (head_resource_string or \'\').strip()\n
head_resource_string = string.replace(head_resource_string,\' \',\'\')\n
if head_resource_string == \'\':\n
return {\'error\':True, \'message\':message_dict[\'09\'], \'head_dict\':{}}\n
\n
try:\n
head_resource_variation_string = head_resource_string[-4:]\n
head_resource_variation = int(head_resource_variation_string)\n
if head_resource_variation <= 0 :\n
return {\'error\':True, \'message\':message_dict[\'10\'], \'head_dict\':{}}\n
except:\n
return {\'error\':True, \'message\':message_dict[\'10\'], \'head_dict\':{}}\n
\n
try:\n
column_end_price = head_resource_string.find(\'F\')\n
if column_end_price < 0:\n
return {\'error\':True, \'message\':message_dict[\'11\'], \'head_dict\':{}}\n
head_resource_price = int(head_resource_string[:column_end_price ])\n
if head_resource_price <= 0 :\n
return {\'error\':True, \'message\':message_dict[\'11\'], \'head_dict\':{}}\n
except:\n
return {\'error\':True, \'message\':message_dict[\'11\'], \'head_dict\':{}}\n
\n
\n
head_resource_list = context.portal_catalog(portal_type = (\'Banknote\',\'Coin\'))\n
\n
head_resource = None\n
test = []\n
for i_resource in head_resource_list:\n
resource_object = i_resource.getObject()\n
if (resource_object.getPriceCurrency() == \'currency_module/%s\' % reference_currency_id) \\\n
and (resource_object.getBasePrice() == head_resource_price):\n
head_resource = resource_object\n
break\n
\n
resource_variation_list = head_resource.getVariationList()\n
# get variation from resource\n
head_variation = str(head_resource_variation)\n
if head_variation not in resource_variation_list:\n
head_variation = max(resource_variation_list)\n
\n
if head_resource is None:\n
return {\'error\':True, \'message\':message_dict[\'12\'], \'head_dict\':{}}\n
\n
# Define destination\n
user_site = context.Baobab_getUserAssignedRootSite()\n
if user_site is None:\n
return {\'error\':True, \'message\':message_dict[\'13\'], \'head_dict\':{}}\n
\n
head_destination = \'%s/%s\' % (user_site,\'caveau/serre\')\n
if head_emission_letter in context.Baobab_getUserEmissionLetterList():\n
head_destination = \'%s/%s\' % (head_destination,\'encaisse_des_billets_neufs_non_emis\')\n
else:\n
site = context.Baobab_getEmissionLetterSiteValue(emission_letter=head_emission_letter)\n
head_destination = \'%s/%s/%s\' % (head_destination,\n
\'encaisse_des_billets_neufs_non_emis_en_transit_allant_a\',site.getId())\n
\n
\n
CD_head_dict = {\'reference\' : head_movement_id\n
,\'start_date\' : head_start_date\n
,\'resource\' : head_resource\n
,\'currency\' : head_resource.getPriceCurrency()\n
,\'emission_letter\' : head_emission_letter\n
,\'variation\' : head_variation\n
,\'cash_status\' : \'new_not_emitted\'\n
,\'destination\' : head_destination\n
}\n
\n
return {\'error\':False, \'message\':None, \'head_dict\':CD_head_dict}\n
\n
\n
def split_lines(CD_file_line_list):\n
CD_line_list = []\n
treated_container_list = []\n
line_number = 0\n
reference_list = []\n
ref_append = reference_list.append\n
for CD_line in CD_file_line_list:\n
line_number += 1\n
new_CD_line = string.replace(CD_line, \'\\n\', \'\')\n
new_CD_line = string.replace(new_CD_line, \'\\r\', \'\')\n
line_container_id = new_CD_line[:7]\n
line_range_start = new_CD_line[34:46]\n
line_range_stop = new_CD_line[49:61]\n
line_quantity_string = new_CD_line[64:70]\n
\n
line_container_id = (line_container_id or \'\').strip()\n
if line_container_id == \'\':\n
return {\'error\':True, \'message\':\'Ligne \' + str(line_number) + \' : \' + message_dict[\'05\'],\'lines_dict\':{}}\n
if line_container_id in treated_container_list :\n
return {\'error\':True, \'message\':\'Ligne \' + str(line_number) + \' : \' + message_dict[\'06\'],\'lines_dict\':{}}\n
\n
line_quantity_string = (line_quantity_string or \'\').strip()\n
line_quantity_string = string.replace(line_quantity_string,\' \',\'\')\n
try:\n
line_quantity = int(line_quantity_string)\n
if line_quantity <= 0 :\n
return {\'error\':True, \'message\':\'Ligne \' + str(line_number) + \' : \' + message_dict[\'07\'],\'lines_dict\':{}}\n
except:\n
return {\'error\':True, \'message\':\'Ligne \' + str(line_number) + \' : \' + message_dict[\'07\'],\'lines_dict\':{}}\n
treated_container_list.append(line_container_id)\n
\n
CD_line_list.append({\'reference\' : line_container_id\n
,\'range_start\' : line_range_start\n
,\'range_stop\' : line_range_stop\n
,\'quantity\' : line_quantity}\n
)\n
ref_append(line_container_id)\n
\n
\n
# check reference doesn\'t already exist for this resource\n
movement_container_list = context.portal_catalog(portal_type = "Cash Container Item",\n
reference = reference_list,\n
simulation_state = ["empty", "draft", "rejected", "confirmed", "delivered",])\n
# if we find container line with same reference, we must\n
# check the resource defined on line\n
resource_uid = resource_value.getUid()\n
for same_container in movement_container_list:\n
same_container = same_container.getObject()\n
for o in same_container.objectValues():\n
if o.getResourceUid() == resource_uid and o.getDestinationUid() == destination_uid:\n
return {\'error\':True, \'message\':message_dict[\'03\'], \'head_dict\':{}}\n
\n
\n
if line_number > 0:\n
return {\'error\':False, \'message\':\'Ligne \' + str(line_number) + \' : \' + message_dict[\'00\'],\'lines_dict\' : CD_line_list}\n
else:\n
return {\'error\':True, \'message\':\'Ligne \' + str(line_number) + \' : \' + message_dict[\'08\'],\'lines_dict\':{}}\n
\n
\n
def url_redirection(error_message,delivery_id=None):\n
if delivery_id is not None:\n
redirect_url = \'%s?%s\' % ( context.absolute_url()+\'/\'+delivery_id+\'/\'+\'view\', \'portal_status_message=\' + error_message)\n
else:\n
redirect_url = \'%s?%s\' % ( context.absolute_url()+\'/\'+\'view\', \'portal_status_message=\' + error_message)\n
request[ \'RESPONSE\' ].redirect( redirect_url )\n
\n
\n
request = context.REQUEST\n
\n
\n
if file_data is not None:\n
CD_file_line_list = file_data\n
else:\n
CD_file_line_list = import_file.readlines()\n
\n
# analyse the container head and split it into dictionnary\n
split_head_result_dict = split_head(CD_file_line_list[:20])\n
if split_head_result_dict[\'error\']:\n
if batch == 1:\n
raise ValueError, split_head_result_dict[\'message\']\n
else:\n
return url_redirection(split_head_result_dict[\'message\'])\n
\n
# check remaining activities tag is based on destination site and resource\n
destination = split_head_result_dict[\'head_dict\'][\'destination\']\n
destination_value = context.portal_categories.site.restrictedTraverse(destination)\n
# we serialize the destination to be sure we won\'t do the same operation twice at the same time\n
destination_value.serialize()\n
destination_uid = destination_value.getUid()\n
resource_value = split_head_result_dict[\'head_dict\'][\'resource\']\n
\n
import_tag = "%s_monetary_reception_%s" %(destination_uid, resource_value.getRelativeUrl())\n
if context.portal_activities.countMessageWithTag(import_tag) != 0:\n
if batch == 1:\n
raise ValueError, "Some activities are remaining from previous import, please try later."\n
else:\n
return url_redirection("Some activities are remaining from previous import, please try later.")\n
\n
\n
# analyse the container lines and split it into dictionnary\n
split_line_result_dict = split_lines(CD_file_line_list[20:])\n
if split_line_result_dict[\'error\']:\n
if batch == 1:\n
raise ValueError, split_line_result_dict[\'message\']\n
else:\n
return url_redirection(split_line_result_dict[\'message\'])\n
\n
\n
message_dict = create_movement(CD_head_dict = split_head_result_dict[\'head_dict\'],\n
CD_line_list = split_line_result_dict[\'lines_dict\'] )\n
\n
if message_dict[\'error\'] :\n
if batch == 1:\n
raise ValueError, message_dict[\'message\' ]\n
\n
return url_redirection(message_dict[\'message\' ],delivery_id=message_dict[\'delivery_id\'])\n
]]></string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>import_file=None, file_data=None, batch=0, **kw</string> </value>
</item>
<item>
<key> <string>_proxy_roles</string> </key>
<value>
<tuple>
<string>Manager</string>
</tuple>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>MonetaryReceptionModule_importMonetaryReceptionFromCDAction</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="ERP5Form" module="Products.ERP5Form.Form"/>
</pickle>
<pickle>
<dictionary>
<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/>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>action</string> </key>
<value> <string>MonetaryReceptionModule_importMonetaryReceptionFromCDAction</string> </value>
</item>
<item>
<key> <string>encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>enctype</string> </key>
<value> <string>multipart/form-data</string> </value>
</item>
<item>
<key> <string>group_list</string> </key>
<value>
<list>
<string>left</string>
<string>hidden</string>
</list>
</value>
</item>
<item>
<key> <string>groups</string> </key>
<value>
<dictionary>
<item>
<key> <string>hidden</string> </key>
<value>
<list/>
</value>
</item>
<item>
<key> <string>left</string> </key>
<value>
<list>
<string>my_import_file</string>
</list>
</value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>MonetaryReceptionModule_importMonetaryReceptionFromCDForm</string> </value>
</item>
<item>
<key> <string>method</string> </key>
<value> <string>POST</string> </value>
</item>
<item>
<key> <string>name</string> </key>
<value> <string>CashMovemMonetaryReceptionModule_importMonetaryReceptionFromCDForm</string> </value>
</item>
<item>
<key> <string>pt</string> </key>
<value> <string>form_dialog</string> </value>
</item>
<item>
<key> <string>row_length</string> </key>
<value> <int>4</int> </value>
</item>
<item>
<key> <string>stored_encoding</string> </key>
<value> <string>UTF-8</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Import CD</string> </value>
</item>
<item>
<key> <string>unicode_mode</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>update_action</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="FileField" module="Products.Formulator.StandardFields"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>id</string> </key>
<value> <string>my_import_file</string> </value>
</item>
<item>
<key> <string>message_values</string> </key>
<value>
<dictionary>
<item>
<key> <string>external_validator_failed</string> </key>
<value> <string>The input failed the external validator.</string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>overrides</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>tales</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</value>
</item>
<item>
<key> <string>values</string> </key>
<value>
<dictionary>
<item>
<key> <string>alternate_name</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>css_class</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>default</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>description</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_maxwidth</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>display_width</string> </key>
<value> <int>80</int> </value>
</item>
<item>
<key> <string>editable</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>enabled</string> </key>
<value> <int>1</int> </value>
</item>
<item>
<key> <string>external_validator</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>extra</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>hidden</string> </key>
<value> <int>0</int> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string>Upload</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -99,7 +99,6 @@ Monetary Recall Line | view
Monetary Recall Module | view
Monetary Recall | fastinput
Monetary Recall | view
Monetary Reception Module | import
Monetary Reception Module | view
Monetary Reception | cahs_container
Monetary Reception | fastinput
......
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