[Erp5-dev] ZODB Components now in master
Jean-Paul Smets
jp at nexedi.com
Wed Mar 7 11:56:05 CET 2012
Hi,
Thanks for your hard work. Please publish some doc in erp5.com site or blog.
Regards,
JPS.
On 07/03/2012 11:50, Arnaud Fontaine wrote:
> Hello,
>
> I have just merged zodb-component branch which implements bt5
> Extensions, Documents and live tests into the ZODB, called Components
> and accessible through Component Tool (portal_components), rather than
> on the filesystem. Later on, ERP5 products will be progressively moved
> to the ZODB as well.
>
> One of the main advantage from a deployment point of view is that you no
> longer have to manually synchronize bt5 Extensions, Documents and live
> tests accross all ZEO clients, likewise ZODB Property Sheets.
>
> Also, as mentioned by Jean-Paul in his previous email about ZODB
> Components, you can easily define new versions (similar to git branch)
> and their priorities (similar to portal skins), and switch immediately
> to one version or another of Components without restarting Zope. For
> example, versions could be useful to override ERP5 Components with your
> project ones or to create snapshots before upgrade.
>
>
> Migrating bt5 Extensions, Documents and live tests to ZODB
> ==========================================================
>
> 1) Only users who have Developer Role can edit Components and Component
> Tool. Therefore, you must first edit your zope configuration file to
> add users to Developer Role (separated by spaces). This can *only* be
> done through Zope configuration file for security reasons (similar to
> ClassTool with ALLOW_CLASS_TOOL file in ERP5Type product).
>
> Here is an example of configuration:
>
> %import Products.ERP5Type
> <ERP5Type erp5>
> developers zope
> </ERP5Type>
>
> 2) Upgrade erp5_core and erp5_property_sheets Business Templates.
>
> 3) Once you have restarted Zope, go to the Business Template to be
> migrated and add version(s) if necessary in 'Registered Version
> Priority Selection' field. The versions format is 'VERSION |
> PRIORITY' where PRIORITY is optional and equals to 0.0 if missing. By
> default, 'erp5 | 0.0' is defined upon site creation, thus you must
> not add any additional version for migrating ERP5 Components.
>
> 4) Then, you can migrate Components thanks to 'Migrate Components From
> Filesystem' action defined on Business Template. Please note that
> this will update Extensions (template_extension_id_list), Documents
> (template_document_id_list), and Tests (template_test_id_list) in the
> Business Template to match migrated Components IDs in
> portal_components.
>
> Upon export, you will get two files for each Component: one is the
> metadata (ending with '.xml') and the other one is the source code
> itself (ending with '.py'). Therefore, you can keep Git history while
> not having source code crippled as with XML.
>
> 5) You may have to modify some imports in the migrated Components
> (especially absolute imports for tests for example) to use Components
> modules instead.
>
> Notes
> =====
>
> * Like Portal Type as classes, all Components are lazily loaded and are
> available in erp5.component.{document,extension,test} packages if and
> only if they have been validated before. You can import them just like
> usual Python modules (implemented through modules hooks as defined in
> PEP 302) and also import a specific version of a Component:
> 'erp5.component.XXX.VERSION_version.COMPONENT'.
>
> * When you edit an already validated Component, checkConsistency will
> check whether the reference, version and source code are valid and if
> not, the Component will be in modified state (e.g. when the Component
> is loaded, only the validated values will be used), and will switch to
> validated state automatically once reported errors have been fixed.
>
> * Everytime a Component switches to validated or invalidated state, all
> components are reset. For now this is a global reset but it may be
> improved in the future if necessary.
>
> * At any time, you can change the versions (and priorities) order by
> editing version_priority_list ERP5Site property, which will
> automatically trigger a reset of all Component packages.
>
> * You can run live tests like you used to do with ClassTool through 'Run
> Live Tests' action on Component Tool.
>
> * erp5_core_component Business Template does not contain anything for
> now but will be useful when the Products will be migrated to the ZODB
> in the future.
>
> Besides of that, you can just add Extensions and use ZODB Document
> Component as Portal Type type_class as you used to do (available
> validated ZODB Components will always be used over filesystem modules).
>
> Editing Components
> ==================
>
> You can manage Components through a web browser (portal_components) and
> install erp5_ace_editor bt5 if you wish to use Ace Javascript editor to
> edit components instead of a plain textarea. Soon, there will be a
> setting in Preference to choose which source code editor to use (either
> textarea, ace editor...), this has already been implemented but not
> merged yet.
>
> You can also edit Components through webdav, once set up in your Zope
> configuration, for example:
>
> <webdav-source-server>
> address IP:PORT
> force-connection-close off
> </webdav-source-server>
>
> Then, you can mount it using davfs2 package (or with your favourite
> editor as long as it supports webdav). For example, with davfs2:
>
> mount -o gid=GID,uid=UID -t davfs http://IP:PORT/ MOUNTPOINT
>
> Test results compared to master
> ===============================
>
> Here is a diff with annotations of the tests summary between master and
> zodb-component branch (only test failures which happen on zodb-component
> branch):
>
> - testAccountingReports (9 failures)
> + testAccountingReports (11 failures)
> + testAccountStatementMultipleSection (testAccountingReports.TestAccountingReports)
> + testOtherPartiesReport (testAccountingReports.TestAccountingReports)
>
> => Not reproducible (test environment?).
>
> - testCacheTool (1 failures)
> + testCacheTool (3 failures)
> + test_01_CacheFactoryOnePlugin (testCacheTool.TestCacheTool), Test cache factory containing only one cache plugin.
> + test_02_CacheFactoryMultiPlugins (testCacheTool.TestCacheTool), Test a cache factory containing multiple cache plugins.
>
> => Random failure happening on master as well (timing issue).
>
> - testDmsWithFlare (2 failures, 2 skips)
> + testDmsWithFlare (3 failures, 2 skips)
> + test_09_SearchableText (testDmsWithFlare.TestDocumentWithFlare)
>
> => Not reproducible (test environment?).
>
> + testERP5BankingAccountingDate (1 errors)
> + test_AccountingDate (testERP5BankingAccountingDate.TestERP5BankingAccountingDate)
>
> => Not reproducible (test environment?).
>
> + testERP5Catalog (48 errors, 1 skips)
> + test_48bis_ERP5Site_hotReindexAllCheckCachedValues (testERP5Catalog.TestERP5Catalog)
> + test_50_LocalRolesArgument (testERP5Catalog.TestERP5Catalog), test local_roles= argument
> + test_50_LocalRolesArgument (testERP5Catalog.TestERP5Catalog), test local_roles= argument
> + test_51_SearchWithKeyWords (testERP5Catalog.TestERP5Catalog)
> + test_52_QueryAndTableAlias (testERP5Catalog.TestERP5Catalog)
> + test_53_DateFormat (testERP5Catalog.TestERP5Catalog)
> + test_54_FixIntUid (testERP5Catalog.TestERP5Catalog)
> + test_55_FloatFormat (testERP5Catalog.TestERP5Catalog)
> + test_56_CreateUidDuringClearCatalog (testERP5Catalog.TestERP5Catalog)
> + test_60_ViewableOwnerIndexing (testERP5Catalog.TestERP5Catalog)
> + test_BackwardCompatibilityWithOldMethods (testERP5Catalog.TestERP5Catalog)
> + test_CatalogUidDuplicates (testERP5Catalog.TestERP5Catalog)
> + test_EscapingLoginInSescurityQuery (testERP5Catalog.TestERP5Catalog)
> + test_ExactMatchSearch (testERP5Catalog.TestERP5Catalog)
> + test_IndexationContextIndependence (testERP5Catalog.TestERP5Catalog)
> + test_KeywordSearch (testERP5Catalog.TestERP5Catalog)
> + test_MonoValueAssigneeIndexing (testERP5Catalog.TestERP5Catalog)
> + test_ObjectReindexationConcurency (testERP5Catalog.TestERP5Catalog)
> + test_ParameterSelectDict (testERP5Catalog.TestERP5Catalog)
> + test_PercentCharacter (testERP5Catalog.TestERP5Catalog)
> + test_PersonDocumentWithMonovaluedLocalRole (testERP5Catalog.TestERP5Catalog), Test when user is added, which has local roles on own Person Document
> + test_QueryDictFromRequest (testERP5Catalog.TestERP5Catalog), use a dict from REQUEST as a keyword parameter.
> + test_RealOwnerIndexing (testERP5Catalog.TestERP5Catalog)
> + test_SearchFolderWithMultipleSpaces (testERP5Catalog.TestERP5Catalog)
> + test_SearchFolderWithParenthesis (testERP5Catalog.TestERP5Catalog)
> + test_SearchFolderWithRelatedDynamicRelatedKey (testERP5Catalog.TestERP5Catalog)
> + test_SearchFolderWithRelatedDynamicStrictRelatedKey (testERP5Catalog.TestERP5Catalog)
> + test_SearchFolderWithSingleQuote (testERP5Catalog.TestERP5Catalog)
> + test_SearchOnOwner (testERP5Catalog.TestERP5Catalog)
> + test_SearchedStringIsNotStripped (testERP5Catalog.TestERP5Catalog)
> + test_SelectDictWithDynamicRelatedKey (testERP5Catalog.TestERP5Catalog)
> + test_SubDocumentsSecurityIndexing (testERP5Catalog.TestERP5Catalog)
> + test_SubDocumentsWithAcquireLocalRoleSecurityIndexing (testERP5Catalog.TestERP5Catalog)
> + test_UserOrGroupLocalRoleIndexing (testERP5Catalog.TestERP5Catalog)
> + test_UserOrGroupRoleIndexing (testERP5Catalog.TestERP5Catalog)
> + test_WildcardMatchesUnsetValue (testERP5Catalog.TestERP5Catalog)
> + test_check_security_table_content (testERP5Catalog.TestERP5Catalog)
> + test_complex_query (testERP5Catalog.TestERP5Catalog)
> + test_countResultsUsesFromExpression (testERP5Catalog.TestERP5Catalog)
> + test_distinct_select_expression (testERP5Catalog.TestERP5Catalog)
> + test_getParentUid (testERP5Catalog.TestERP5Catalog)
> + test_getRecordForUid (testERP5Catalog.TestERP5Catalog)
> + test_ignore_empty_string (testERP5Catalog.TestERP5Catalog)
> + test_ignore_empty_string_related_key (testERP5Catalog.TestERP5Catalog)
> + test_multipleRelatedKeyDoMultipleJoins (testERP5Catalog.TestERP5Catalog)
> + test_path (testERP5Catalog.TestERP5Catalog)
> + test_queriesEndingWithSemicolon (testERP5Catalog.TestERP5Catalog)
> + test_sortOnRelatedKeyWithUnsetRelation (testERP5Catalog.TestERP5Catalog)
>
> => Random failure to be investigated but also happening on master. I
> haven't had time to investigate this issue, but this is coming most
> likely from test_48bis_ERP5Site_hotReindexAllCheckCachedValues which
> then makes the following tests fail.
>
> Shortcomings to be addressed soon
> =================================
>
> One shortcoming I intend to fix after the merge is to be able to get
> proper tracebacks (for now, you get something similar to PythonScript as
> tracebacks). Besides of that, there should not be anything else.
>
>
> If you have any suggestions or comments, please let me know...
>
> Regards,
More information about the Erp5-dev
mailing list