Commit 59b3273a authored by Vincent Pelletier's avatar Vincent Pelletier

Do not use "getattr" to guess the folder type:

 - Object is wrapped in acquisition, so we can get attributes from its containers
 - Classes implemeting folder-ish objects *do* define those attributes with varying values (empty tuple on OFS.Folder, None on BTreeFolder, etc).
So the attribute presence must be grabbed from instance properties *only*.


git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@16607 20353a03-c40f-0410-a6d1-a30d3c3de9de
parent d6d7c5f6
master add_microsoft_graph_connector allow_login_change allow_login_change_differentiate_id_and_login allow_login_change_wip arnau arnau-kns arnau-kns-without-property-mapping arnau-merge arnau-poc auto_extend_select_list autoflake backup_erp5_workflow bk_erp5ish_actions_tool bk_sqlcatalog boc-interaction-drop bt5_config cache catalog_fulltext catalog_fulltext_old cedric cedriclen cedriclen-eos certificate_authority 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 drop-legacy-simulation dsn-phase3 eos-dev erp5-component erp5-data-notebook erp5-forum erp5-preference erp5-release erp5-slapos-upgrade erp5-util-testing erp5-vifib erp5-vifib-cleanup erp5_calendar erp5_catalog erp5_catalog_final erp5_free_subscription erp5_workflow erp5testnode_max_timeout experiment/coding_style_test_suite feat/accounting_internal_payment feat/accounting_stop_using_getObject feat/accounting_translate_gap feat/no_useless_records_in_predicate_table feat/olapy feat/remove_owner_role_permissions_on_document_workflow feat/test_inventory_api_domain_selection feat/trade_shipment_report feat/wendelin-py-data feature/action-object-jio-report feature/jio-reports feature/json-allows-all-jio-actions feature/renderjs-matrixbox feature/renderjs-reports feature/renderjs-ui-no-header fix/full_text_script_conflict fix/login_validate_check_consistency 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 heads/fix/notification_tool_unauthorized hotfix/jio_view http_cache_fix improve_default_caching_policy_manager initsite interaction-drop isDeletable item_tracking_graph_editor ivan jerome-bt-reference-doc jerome-test jerome_events jerome_graph_editor_renderjs jerome_new_style_solve_divergence jerome_promise_in_tests jerome_user_preference_time_zone jio jm/form-action-guard joblib-activity kns kns-kr lazy_simulation_causality lignan lingnan listbox-generator 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 merge_xhtml_jquery mmariani-inventory monitoring monitoring-graph mrp new-render-presentation nexedi-erp5-jp no_longer_simulated_state officejs officejs_clean officejs_zip pere portal_callables portal_solver_process_security_configuration presentation rebased_mrp refactor/base_edit refactor/renderjs reindex_calendar_after_change_calendar_exception reverse_logistics rewrite_test_21_AcquiredPortalType romain-fulltext scalability-master2 scalability-master2-rebase scalability-rebase scalability-roque scalability-roque-2 shop-box simulation sms_more_than_140_characters strict_catalog sws_fix syncml taskdistribution-xmlrpc-binary test3 test_page testnode_software_link timezones tmp/getInstalledBusinessTemplate_never_installed_bt tristan tristan-merge tristan-performance ttrm tutorial_update upgradeSite view-aggregated-amounts vivekpab_erp5webrenderjs_layoutconfig vivekpab_jabberclient vivekpab_renderjs_interfaces wenjie wenjie_branch yryr yryr-components-cp yryr-inventory-cache yryr-test yryr-with-components yusei 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
...@@ -375,10 +375,7 @@ class CMFBTreeFolderHandler(FolderHandler): ...@@ -375,10 +375,7 @@ class CMFBTreeFolderHandler(FolderHandler):
return getattr(CMFBTreeFolder, id) return getattr(CMFBTreeFolder, id)
def isApplicable(self, folder): def isApplicable(self, folder):
result = False return '_tree' in getattr(folder, '__dict__', tuple())
if getattr(folder, '_tree', None) is not None:
result = True
return result
class CMFHBTreeFolderHandler(FolderHandler): class CMFHBTreeFolderHandler(FolderHandler):
...@@ -389,10 +386,7 @@ class CMFHBTreeFolderHandler(FolderHandler): ...@@ -389,10 +386,7 @@ class CMFHBTreeFolderHandler(FolderHandler):
return getattr(CMFHBTreeFolder, id) return getattr(CMFHBTreeFolder, id)
def isApplicable(self, folder): def isApplicable(self, folder):
result = False return '_htree' in getattr(folder, '__dict__', tuple())
if getattr(folder, '_htree', None) is not None:
result = True
return result
class OFSFolderHandler(FolderHandler): class OFSFolderHandler(FolderHandler):
...@@ -403,10 +397,7 @@ class OFSFolderHandler(FolderHandler): ...@@ -403,10 +397,7 @@ class OFSFolderHandler(FolderHandler):
return getattr(OFSFolder, id) return getattr(OFSFolder, id)
def isApplicable(self, folder): def isApplicable(self, folder):
result = False return '_objects' in getattr(folder, '__dict__', tuple())
if getattr(folder, '_objects', None) is not None:
result = True
return result
global folder_handler_dict global folder_handler_dict
folder_handler_dict = {} folder_handler_dict = {}
......
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