Commit 1ebfe3ef authored by Yoshinori Okuji's avatar Yoshinori Okuji

Initial import.

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@1493 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent 06f168ce
master allow_login_change allow_login_change_wip arnau arnau-TM-components-products-migration arnau-TM-isBuildable-with-multiple-BusinessLinks arnau-TM-jabber-client-desktop-notifications arnau-kns arnau-kns-without-property-mapping arnau-merge arnau-poc arnau-real-time-inventory-accounting auto_extend_select_list autoflake backup_erp5_workflow bk_erp5ish_actions_tool bk_sqlcatalog boc-interaction-drop bryton/py3 bt5_config cache callable-jupyter-storage catalog_filter catalog_fulltext catalog_fulltext_old cedric cedriclen cedriclen-eos certificate_authority cherry-pick-243c2f03 cherry-pick-304d7a28 cherry-pick-4a8e045d cleanJSByJSLint clean_up_upgrader cleanup_acquisition_base_category compact_title_no_reference credential_update_action datetimefield deferred_listbox delivery_item_barcode douglas_forum dream_distributor dsn-phase3 eos-dev erp5-component erp5-forum erp5-messenger erp5-preference erp5-release erp5-slapos-upgrade erp5-util-testing erp5-vifib erp5-vifib-cleanup erp5_calendar erp5_catalog erp5_catalog_final erp5_corporate_identity erp5_discussion_tool erp5_free_subscription erp5_hal_json_style_fix_restricted_access_with_traverse erp5_payslip_migration erp5_workflow erp5testnode_max_timeout experiment/coding_style_test_suite feat/olapy feat/pdm_content_translation feature/accounting-reports-stats feature/hal-actions-support feature/hal-support-update feature/jio-accounting-reports feature/jio-action-accounting feature/jio-selection-actions feature/json-allows-all-jio-actions feature/renderjs-matrixbox feature/renderjs-ui-no-header feature/rjs-listbox-stats feature/rjs-mass-transition feature/rjs-print-action fix/20180928-1D89375 fix/consistency_check_alarm fix/login_validate_check_consistency fix/multiple_small_fixes_to_zodb_history_tab fix/support-request-app-empty fix_system_processes_ownership for_testrunner_1 for_testrunner_2 for_testrunner_3 gabriel gabriel-fix-rounding-in-accounting-generation gabriel-fix-rounding-in-accounting-generation2 gadget-json-value hateoas hotfix/accounting-test-timeout hotfix/callable_tool hotfix/field-keeps-request hotfix/jio-mass-transition hotfix/jio_view hotfix/pdm-test hotfix/rjs-accounting-tests hotfix/rjs-editability hotfix/rjs-form-less-invasive hotfix/rjs-formfields-padding hotfix/rjs-listbox-mutex hotfix/rjs-replace-query-with-uids hotfix/tests-cleanup http_cache_fix improve_default_caching_policy_manager initsite interaction-drop isDeletable item_tracking_graph_editor ivan jerome-bt-reference-doc jerome_graph_editor_renderjs jerome_new_style_solve_divergence jerome_user_preference_time_zone jio jm/form-action-guard joblib-activity js-ui kns kns-kr lazy_simulation_causality lignan lingnan listbox-generator listbox_url macros_fix mame mame-bt5-cleanup mame-erp5_project-cleanup mame-naming-convention mame-naming-convention-list_method mame-test-stock-indexation mame-work mame2 maste_copy master-erp5-test-result-scalability master-erp5-test-result-scalability-rebase master-test-fix-additionalbt5path master_calendar_wip_patches master_calendar_wip_patches_extend_security master_no_guard_on_workflow_transition master_no_guard_on_workflow_transition_plus_calendar_wip_patchs mic_wind mmariani-inventory monitoring monitoring-graph mrp new-render-presentation no_longer_simulated_state officejs officejs_clean officejs_zip ojs_wip pere portal_callables portal_solver_process_security_configuration presentation rebased_mrp refactor/base_edit refactor/renderjs reindex_calendar_after_change_calendar_exception reverse_logistics revert-38554dbe revert-6c89fe9b rewrite_test_21_AcquiredPortalType romain-fulltext scalability-master scalability-master2 scalability-master2-rebase scalability-roque scalability-roque-2 scalability-run-command shop-box sms_more_than_140_characters strict_catalog syncml taskdistribution-xmlrpc-binary test_page testnode_software_link timezones tmp/getInstalledBusinessTemplate_never_installed_bt tristan tristan-merge tristan-performance ttrm upgradeSite view-aggregated-amounts vivekpab_renderjs_interfaces w3validator_removal wenjie wenjie_branch wip yryr yryr-components-cp yryr-inventory-cache yryr-test yryr-with-components yusei test-ui test-rjsacc test-rjs renderjs-test erp5.util-0.4.56 erp5.util-0.4.55 erp5.util-0.4.54 erp5.util-0.4.53 erp5.util-0.4.52 erp5.util-0.4.49 erp5.util-0.4.46 erp5.util-0.4.44 erp5.util-0.4.43 erp5.util-0.4.41 erp5.util-0.4.40 erp5.util-0.4.37 erp5.util-0.4.1 erp5.util-0.4 erp5.util-0.3 erp5.util-0.2 erp5.util-0.1
No related merge requests found
from Globals import get_request
from Acquisition import aq_base
from Products.ERP5Type.Base import Base
from zLOG import LOG
message = ''
def recodeDocumentRecursively(document, dry_run=0):
global message
klass = document.__class__
if not issubclass(klass, Base):
return
id_list = []
for property_sheet in klass.property_sheets:
for property in property_sheet._properties:
# Do not care about tokens, int, float, date or boolean because they should not have non-ASCII.
if property['type'] in ('string', 'text', 'lines') and 'acquisition_base_category' not in property:
id = property.get('storage_id', property['id'])
# Make sure that ids are not duplicated.
if id not in id_list:
id_list.append(id)
# Make sure working on the document itself.
base = aq_base(document)
for id in id_list:
#LOG('RecodeAllDocuments', 0, 'Recoding %s of %s' % (id, document.getRelativeUrl()))
value = getattr(base, id, None)
if value is not None:
if type(value) == type(''):
if len(value) > 0:
message += 'Recoding %s of %s\n' % (id, document.getRelativeUrl())
if not dry_run: setattr(base, id, unicode(value, 'iso-8859-1').encode('utf-8'))
elif type(value) in (type(()), type([])):
if len(value) > 0:
value_list = list(value)
for i in range(len(value_list)):
value = value_list[i]
if type(value) == type('') and len(value) > 0:
value_list[i] = unicode(value, 'iso-8859-1').encode('utf-8')
message += 'Recoding %s of %s\n' % (id, document.getRelativeUrl())
if not dry_run: setattr(base, id, tuple(value_list))
else:
raise RuntimeError, 'unknown type of value %r' % value
# Call itself recursively.
for object in document.objectValues():
recodeDocumentRecursively(object)
def recodeAllDocuments(self, REQUEST=None, dry_run=0):
global message
message = ''
if not REQUEST:
REQUEST = get_request()
try:
dry_run = int(dry_run)
except:
pass
portal = self.getPortalObject()
#for folder in portal.objectValues('ERP5 Folder'):
# message += '# Checking the folder %s\n' % folder.getId()
# recodeDocumentRecursively(folder, dry_run=dry_run)
for category in portal.portal_categories.objectValues('ERP5 Base Category'):
message += '# Checking the category %s\n' % category.getId()
recodeDocumentRecursively(category, dry_run=dry_run)
return message
\ 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