From 4043163fc491170c64ea2e50569b02d0f68c88e2 Mon Sep 17 00:00:00 2001 From: Gaetan Delannay Date: Mon, 29 Jun 2009 14:06:01 +0200 Subject: [PATCH] Initial import --- __init__.py | 1 + bin/__init__.py | 0 bin/clean.py | 33 + bin/publish.py | 519 +++++ bin/runOpenOffice.sh | 4 + bin/zip.py | 41 + doc/appy.css | 150 ++ doc/artwork.odg | Bin 0 -> 9153 bytes doc/docToc.html | 9 + doc/gen.html | 166 ++ doc/genCreatingAdvancedClasses.html | 1098 +++++++++++ doc/genCreatingBasicClasses.html | 644 +++++++ doc/genSecurityAndWorkflows.html | 371 ++++ doc/gossips.odt | Bin 0 -> 8254 bytes doc/helloWorld.odt | Bin 0 -> 7598 bytes doc/img/ElseAmbiguous.png | Bin 0 -> 11642 bytes doc/img/ElseAmbiguous.res.png | Bin 0 -> 3803 bytes doc/img/ElseNotAmbiguous.png | Bin 0 -> 13043 bytes doc/img/ElseNotAmbiguous.res.png | Bin 0 -> 314 bytes doc/img/ElseStatements.png | Bin 0 -> 21689 bytes doc/img/ElseStatements.res.png | Bin 0 -> 2629 bytes doc/img/ErrorExpression.png | Bin 0 -> 803 bytes doc/img/ErrorExpression.res.png | Bin 0 -> 3992 bytes doc/img/ErrorForParsetime.png | Bin 0 -> 6328 bytes doc/img/ErrorForParsetime.res.png | Bin 0 -> 19823 bytes doc/img/ErrorForRuntime.png | Bin 0 -> 5099 bytes doc/img/ErrorForRuntime.res.png | Bin 0 -> 5618 bytes doc/img/ErrorIf.png | Bin 0 -> 3024 bytes doc/img/ErrorIf.res.png | Bin 0 -> 3735 bytes doc/img/ForCellNotEnough.png | Bin 0 -> 3073 bytes doc/img/ForCellNotEnough.res.png | Bin 0 -> 2407 bytes doc/img/ForCellTooMuch2.png | Bin 0 -> 3188 bytes doc/img/ForCellTooMuch2.res.png | Bin 0 -> 2622 bytes doc/img/ForTableMinus.png | Bin 0 -> 16594 bytes doc/img/ForTableMinus.res.png | Bin 0 -> 6205 bytes doc/img/ForTableMinusError.png | Bin 0 -> 19431 bytes doc/img/ForTableMinusError.res.png | Bin 0 -> 18912 bytes doc/img/FromWithFor.png | Bin 0 -> 13470 bytes doc/img/FromWithFor.res.png | Bin 0 -> 2874 bytes doc/img/IfAndFors1.png | Bin 0 -> 6952 bytes doc/img/IfAndFors1.res.png | Bin 0 -> 12211 bytes doc/img/IfExpression.png | Bin 0 -> 3675 bytes doc/img/IfExpression.res.png | Bin 0 -> 2414 bytes doc/img/OnlyExpressions.png | Bin 0 -> 12081 bytes doc/img/OnlyExpressions.res.png | Bin 0 -> 11902 bytes doc/img/SimpleFrom.png | Bin 0 -> 7789 bytes doc/img/SimpleFrom.res.png | Bin 0 -> 897 bytes doc/img/SimpleTest.png | Bin 0 -> 11528 bytes doc/img/SimpleTest.res.png | Bin 0 -> 8115 bytes doc/img/actions1.png | Bin 0 -> 12079 bytes doc/img/actions2.png | Bin 0 -> 13983 bytes doc/img/advisory.png | Bin 0 -> 2383 bytes doc/img/booleans1.png | Bin 0 -> 1593 bytes doc/img/builtinFunctionInPodExpression.png | Bin 0 -> 15271 bytes .../builtinFunctionInPodExpression.res.png | Bin 0 -> 23120 bytes doc/img/computed1.png | Bin 0 -> 9355 bytes doc/img/computed2.png | Bin 0 -> 17743 bytes doc/img/computed3.png | Bin 0 -> 34101 bytes doc/img/contact.gif | Bin 0 -> 138 bytes doc/img/dates1.png | Bin 0 -> 3978 bytes doc/img/dates2.png | Bin 0 -> 2698 bytes doc/img/dates3.png | Bin 0 -> 14476 bytes doc/img/dates4.png | Bin 0 -> 2533 bytes doc/img/documentFunction1.png | Bin 0 -> 16457 bytes doc/img/documentFunction2.png | Bin 0 -> 9302 bytes doc/img/documentFunction3.png | Bin 0 -> 12144 bytes doc/img/download.gif | Bin 0 -> 150 bytes doc/img/emptyQuery.png | Bin 0 -> 3355 bytes doc/img/files1.png | Bin 0 -> 5384 bytes doc/img/files2.png | Bin 0 -> 5115 bytes doc/img/files3.png | Bin 0 -> 9725 bytes doc/img/files4.png | Bin 0 -> 7080 bytes doc/img/files5.png | Bin 0 -> 12723 bytes doc/img/filledQuery.png | Bin 0 -> 6249 bytes doc/img/flavourOptions.png | Bin 0 -> 14062 bytes doc/img/genpod1.png | Bin 0 -> 7007 bytes doc/img/genpod10.png | Bin 0 -> 9933 bytes doc/img/genpod11.png | Bin 0 -> 7996 bytes doc/img/genpod12.png | Bin 0 -> 7525 bytes doc/img/genpod13.png | Bin 0 -> 15642 bytes doc/img/genpod14.png | Bin 0 -> 9560 bytes doc/img/genpod2.png | Bin 0 -> 4117 bytes doc/img/genpod3.png | Bin 0 -> 15367 bytes doc/img/genpod4.png | Bin 0 -> 14067 bytes doc/img/genpod5.png | Bin 0 -> 4406 bytes doc/img/genpod6.png | Bin 0 -> 18900 bytes doc/img/genpod7.png | Bin 0 -> 14978 bytes doc/img/genpod8.png | Bin 0 -> 11547 bytes doc/img/genpod9.png | Bin 0 -> 7782 bytes doc/img/gnu.png | Bin 0 -> 3134 bytes doc/img/home.png | Bin 0 -> 751 bytes doc/img/i18n1.png | Bin 0 -> 4927 bytes doc/img/inherit1.png | Bin 0 -> 1628 bytes doc/img/inherit2.png | Bin 0 -> 3660 bytes doc/img/inherit3.png | Bin 0 -> 5274 bytes doc/img/inherit4.png | Bin 0 -> 1689 bytes doc/img/inherit5.png | Bin 0 -> 4676 bytes doc/img/inherit6.png | Bin 0 -> 4676 bytes doc/img/integersFloats1.png | Bin 0 -> 3499 bytes doc/img/integersFloats2.png | Bin 0 -> 10507 bytes doc/img/integersFloats3.png | Bin 0 -> 8332 bytes doc/img/integersFloats4.png | Bin 0 -> 5962 bytes doc/img/mastersSlaves1.png | Bin 0 -> 10029 bytes doc/img/mastersSlaves2.png | Bin 0 -> 11466 bytes doc/img/mastersSlaves3.png | Bin 0 -> 3484 bytes doc/img/mastersSlaves4.png | Bin 0 -> 1940 bytes doc/img/objectStorage1.png | Bin 0 -> 54407 bytes doc/img/objectStorage2.png | Bin 0 -> 29806 bytes doc/img/pagesAndGroups1.png | Bin 0 -> 16441 bytes doc/img/pagesAndGroups2.png | Bin 0 -> 20371 bytes doc/img/pagesAndGroups3.png | Bin 0 -> 22045 bytes doc/img/pagesAndGroups4.png | Bin 0 -> 17313 bytes doc/img/pagesAndGroups5.png | Bin 0 -> 24326 bytes doc/img/pagesAndGroups6.png | Bin 0 -> 19024 bytes doc/img/pagesAndGroups7.png | Bin 0 -> 11440 bytes doc/img/pagesAndGroups8.png | Bin 0 -> 22672 bytes doc/img/plone.png | Bin 0 -> 81057 bytes doc/img/portlet.png | Bin 0 -> 2573 bytes doc/img/python.gif | Bin 0 -> 1154 bytes doc/img/refs1.png | Bin 0 -> 1663 bytes doc/img/refs10.png | Bin 0 -> 18449 bytes doc/img/refs10b.png | Bin 0 -> 2703 bytes doc/img/refs10c.png | Bin 0 -> 2705 bytes doc/img/refs11.png | Bin 0 -> 18544 bytes doc/img/refs12.png | Bin 0 -> 32710 bytes doc/img/refs13.png | Bin 0 -> 22715 bytes doc/img/refs14.png | Bin 0 -> 3390 bytes doc/img/refs15.png | Bin 0 -> 2355 bytes doc/img/refs2.png | Bin 0 -> 13367 bytes doc/img/refs3.png | Bin 0 -> 7311 bytes doc/img/refs4.png | Bin 0 -> 11980 bytes doc/img/refs5.png | Bin 0 -> 15775 bytes doc/img/refs6.png | Bin 0 -> 7948 bytes doc/img/refs7.png | Bin 0 -> 11807 bytes doc/img/refs8.png | Bin 0 -> 15828 bytes doc/img/refs9.png | Bin 0 -> 10700 bytes doc/img/specialMethods1.png | Bin 0 -> 14010 bytes doc/img/specialMethods2.png | Bin 0 -> 11694 bytes doc/img/strings1.png | Bin 0 -> 2334 bytes doc/img/strings2.png | Bin 0 -> 1824 bytes doc/img/strings3.png | Bin 0 -> 3598 bytes doc/img/strings4.png | Bin 0 -> 2289 bytes doc/img/strings5.png | Bin 0 -> 10458 bytes doc/img/strings6.png | Bin 0 -> 5757 bytes doc/img/strings7.png | Bin 0 -> 31658 bytes doc/img/strings8.png | Bin 0 -> 11911 bytes doc/img/strings9.png | Bin 0 -> 6554 bytes doc/img/todo.gif | Bin 0 -> 389 bytes doc/img/tool.png | Bin 0 -> 18042 bytes doc/img/toolAndFlavours1.png | Bin 0 -> 2561 bytes doc/img/toolAndFlavours10.png | Bin 0 -> 11116 bytes doc/img/toolAndFlavours11.png | Bin 0 -> 6155 bytes doc/img/toolAndFlavours12.png | Bin 0 -> 11127 bytes doc/img/toolAndFlavours13.png | Bin 0 -> 19540 bytes doc/img/toolAndFlavours14.png | Bin 0 -> 13677 bytes doc/img/toolAndFlavours15.png | Bin 0 -> 19359 bytes doc/img/toolAndFlavours16.png | Bin 0 -> 19038 bytes doc/img/toolAndFlavours17.png | Bin 0 -> 24914 bytes doc/img/toolAndFlavours18.png | Bin 0 -> 9938 bytes doc/img/toolAndFlavours19.png | Bin 0 -> 2716 bytes doc/img/toolAndFlavours2.png | Bin 0 -> 18696 bytes doc/img/toolAndFlavours20.png | Bin 0 -> 14839 bytes doc/img/toolAndFlavours21.png | Bin 0 -> 40078 bytes doc/img/toolAndFlavours22.png | Bin 0 -> 8445 bytes doc/img/toolAndFlavours23.png | Bin 0 -> 25935 bytes doc/img/toolAndFlavours2b.png | Bin 0 -> 11228 bytes doc/img/toolAndFlavours2c.png | Bin 0 -> 3095 bytes doc/img/toolAndFlavours3.png | Bin 0 -> 4919 bytes doc/img/toolAndFlavours4.png | Bin 0 -> 9851 bytes doc/img/toolAndFlavours5.png | Bin 0 -> 3150 bytes doc/img/toolAndFlavours6.png | Bin 0 -> 4537 bytes doc/img/toolAndFlavours7.png | Bin 0 -> 6026 bytes doc/img/toolAndFlavours8.png | Bin 0 -> 14516 bytes doc/img/toolAndFlavours9.png | Bin 0 -> 31074 bytes doc/img/workflow1.png | Bin 0 -> 9581 bytes doc/img/workflow10.png | Bin 0 -> 16071 bytes doc/img/workflow11.png | Bin 0 -> 21364 bytes doc/img/workflow12.png | Bin 0 -> 17839 bytes doc/img/workflow2.png | Bin 0 -> 4718 bytes doc/img/workflow3.png | Bin 0 -> 25622 bytes doc/img/workflow4.png | Bin 0 -> 20250 bytes doc/img/workflow5.png | Bin 0 -> 29372 bytes doc/img/workflow6.png | Bin 0 -> 12924 bytes doc/img/workflow7.png | Bin 0 -> 17739 bytes doc/img/workflow8.png | Bin 0 -> 9828 bytes doc/img/workflow9.png | Bin 0 -> 14241 bytes doc/img/xhtmlChunk.png | Bin 0 -> 18047 bytes doc/img/xhtmlResult.png | Bin 0 -> 23113 bytes doc/img/xhtmlStylesMapping.png | Bin 0 -> 12553 bytes doc/img/xhtmlTemplate.png | Bin 0 -> 8912 bytes doc/img/zmi.png | Bin 0 -> 78718 bytes doc/img/zopeComponentEdit.png | Bin 0 -> 83928 bytes doc/index.html | 27 + doc/license.txt | 240 +++ doc/pod.html | 39 + doc/podRenderingTemplates.html | 184 ++ doc/podWritingAdvancedTemplates.html | 265 +++ doc/podWritingTemplates.html | 209 ++ doc/template.html | 64 + doc/todo.txt | 69 + doc/version.txt | 41 + gen/__init__.py | 459 +++++ gen/descriptors.py | 193 ++ gen/generator.py | 420 ++++ gen/odt/__init__.py | 0 gen/odt/generator.py | 54 + gen/odt/templates/basic.odt | Bin 0 -> 10487 bytes gen/plone25/__init__.py | 0 gen/plone25/descriptors.py | 666 +++++++ gen/plone25/generator.py | 712 +++++++ gen/plone25/installer.py | 496 +++++ gen/plone25/mixins/ClassMixin.py | 42 + gen/plone25/mixins/FlavourMixin.py | 113 ++ gen/plone25/mixins/PodTemplateMixin.py | 97 + gen/plone25/mixins/ToolMixin.py | 192 ++ gen/plone25/mixins/__init__.py | 840 ++++++++ gen/plone25/model.py | 226 +++ gen/plone25/notifier.py | 105 + gen/plone25/templates/AppyReference.pt | 228 +++ gen/plone25/templates/ArchetypesTemplate.py | 34 + gen/plone25/templates/FlavourTemplate.py | 38 + gen/plone25/templates/Install.py | 36 + gen/plone25/templates/Macros.pt | 765 ++++++++ gen/plone25/templates/PodTemplate.py | 34 + gen/plone25/templates/Portlet.pt | 45 + gen/plone25/templates/ProfileInit.py | 19 + gen/plone25/templates/Query.pt | 63 + gen/plone25/templates/Styles.css.dtml | 264 +++ gen/plone25/templates/ToolTemplate.py | 49 + gen/plone25/templates/__init__.py | 23 + gen/plone25/templates/appyConfig.gif | Bin 0 -> 899 bytes gen/plone25/templates/appyWrappers.py | 21 + gen/plone25/templates/appy_edit.cpt | 155 ++ gen/plone25/templates/appy_edit.cpt.metadata | 13 + gen/plone25/templates/appy_view.pt | 35 + gen/plone25/templates/arrowDown.png | Bin 0 -> 174 bytes gen/plone25/templates/arrowUp.png | Bin 0 -> 174 bytes gen/plone25/templates/colophon.pt | 7 + gen/plone25/templates/config.py | 43 + gen/plone25/templates/configure.zcml | 14 + gen/plone25/templates/createAppyObject.cpy | 27 + .../templates/createAppyObject.cpy.metadata | 2 + gen/plone25/templates/current.png | Bin 0 -> 244 bytes gen/plone25/templates/do.py | 51 + gen/plone25/templates/doc.png | Bin 0 -> 818 bytes gen/plone25/templates/done.png | Bin 0 -> 248 bytes gen/plone25/templates/footer.pt | 7 + gen/plone25/templates/frontPage.pt | 15 + gen/plone25/templates/import_steps.xml | 8 + gen/plone25/templates/nextPhase.png | Bin 0 -> 201 bytes gen/plone25/templates/nextState.png | Bin 0 -> 192 bytes gen/plone25/templates/odt.png | Bin 0 -> 754 bytes gen/plone25/templates/pdf.png | Bin 0 -> 228 bytes gen/plone25/templates/plus.png | Bin 0 -> 225 bytes gen/plone25/templates/rtf.png | Bin 0 -> 225 bytes gen/plone25/templates/tool.gif | Bin 0 -> 339 bytes gen/plone25/templates/workflows.py | 11 + gen/plone25/utils.py | 40 + gen/plone25/workflow.py | 172 ++ gen/plone25/wrappers/FlavourWrapper.py | 67 + gen/plone25/wrappers/PodTemplateWrapper.py | 3 + gen/plone25/wrappers/ToolWrapper.py | 13 + gen/plone25/wrappers/__init__.py | 136 ++ gen/po.py | 347 ++++ gen/test/applications/AppyCar/Engine.odt | Bin 0 -> 6853 bytes gen/test/applications/AppyCar/Engine.py | 6 + .../applications/AppyCar/Interior/Radio.py | 5 + .../applications/AppyCar/Interior/__init__.py | 0 gen/test/applications/AppyCar/Wheel.py | 6 + gen/test/applications/AppyCar/__init__.py | 37 + gen/test/applications/AppyMeeting.py | 10 + gen/test/applications/Meeting.odt | Bin 0 -> 8565 bytes gen/test/applications/MoreGossips.odt | Bin 0 -> 8254 bytes gen/test/applications/Readme.txt | 10 + gen/test/applications/SordidGossips.odt | Bin 0 -> 8254 bytes gen/test/applications/ZopeComponent.py | 140 ++ gen/test/applications/Zzz.py | 67 + gen/utils.py | 173 ++ pod/__init__.py | 82 + pod/actions.py | 205 ++ pod/buffers.py | 501 +++++ pod/converter.py | 222 +++ pod/doc_importers.py | 230 +++ pod/elements.py | 87 + pod/odf_parser.py | 51 + pod/pod_parser.py | 303 +++ pod/renderer.py | 447 +++++ pod/styles.in.content.xml | 107 ++ pod/styles.in.styles.xml | 6 + pod/styles_manager.py | 238 +++ pod/test/Readme.txt | 16 + pod/test/Tester.py | 223 +++ pod/test/Tests.rtf | 1688 +++++++++++++++++ pod/test/__init__.py | 1 + pod/test/contexts/ElseStatements.py | 10 + pod/test/contexts/Empty.py | 1 + pod/test/contexts/FileHandlerImport.py | 6 + pod/test/contexts/IfAndFors1.py | 3 + pod/test/contexts/ImagesImport.py | 6 + pod/test/contexts/OnlyExpressions.py | 3 + pod/test/contexts/PathImport.py | 6 + pod/test/contexts/PersonsEight.py | 4 + pod/test/contexts/PersonsFour.py | 3 + pod/test/contexts/PersonsThree.py | 3 + pod/test/contexts/PersonsTwo.py | 3 + pod/test/contexts/SimpleForEmptyList.py | 1 + pod/test/contexts/SimpleForFilledList.py | 1 + pod/test/contexts/SimpleForRow.py | 3 + pod/test/contexts/SimpleIfIsFalse.py | 1 + pod/test/contexts/SimpleIfIsTrue.py | 1 + pod/test/contexts/SimpleTest.py | 2 + pod/test/contexts/XhtmlComplex.py | 25 + pod/test/contexts/XhtmlComplex2.py | 30 + pod/test/contexts/XhtmlComplexTables.py | 57 + pod/test/contexts/XhtmlEntities.py | 4 + pod/test/contexts/XhtmlKeepWithNext.py | 44 + pod/test/contexts/XhtmlNominal.py | 6 + pod/test/contexts/XhtmlStylesErrors.py | 12 + pod/test/contexts/XhtmlStylesMapping.py | 12 + pod/test/contexts/XhtmlTables.py | 35 + pod/test/contexts/__init__.py | 18 + pod/test/images/linux.jpg | Bin 0 -> 1495 bytes pod/test/images/plone.png | Bin 0 -> 2412 bytes pod/test/images/python.gif | Bin 0 -> 1194 bytes pod/test/results/elseStatements.odt | Bin 0 -> 53254 bytes pod/test/results/errorExpression.odt | Bin 0 -> 31908 bytes pod/test/results/errorFooter.odt | Bin 0 -> 42683 bytes pod/test/results/errorForParsetime.odt | Bin 0 -> 38286 bytes pod/test/results/errorForRuntime.odt | Bin 0 -> 35159 bytes pod/test/results/errorIf.odt | Bin 0 -> 34128 bytes pod/test/results/fileHandlerImport.odt | Bin 0 -> 32790 bytes pod/test/results/forCellCorrectNumber.odt | Bin 0 -> 33894 bytes pod/test/results/forCellNotEnough.odt | Bin 0 -> 33893 bytes pod/test/results/forCellOnlyOne.odt | Bin 0 -> 33820 bytes pod/test/results/forCellTooMuch1.odt | Bin 0 -> 33892 bytes pod/test/results/forCellTooMuch2.odt | Bin 0 -> 34473 bytes pod/test/results/forCellTooMuch3.odt | Bin 0 -> 35038 bytes pod/test/results/forCellTooMuch4.odt | Bin 0 -> 35673 bytes pod/test/results/forTable.odt | Bin 0 -> 34137 bytes pod/test/results/forTableMinus.odt | Bin 0 -> 32541 bytes pod/test/results/forTableMinus2.odt | Bin 0 -> 35604 bytes pod/test/results/forTableMinusError.odt | Bin 0 -> 32585 bytes pod/test/results/forTableMinusError2.odt | Bin 0 -> 32667 bytes pod/test/results/headerFooter.odt | Bin 0 -> 43594 bytes pod/test/results/ifAndFors1.odt | Bin 0 -> 39172 bytes pod/test/results/ifElseErrors.odt | Bin 0 -> 39790 bytes pod/test/results/imagesImport.odt | Bin 0 -> 45345 bytes pod/test/results/noPython.odt | Bin 0 -> 44933 bytes pod/test/results/onlyExpressions.odt | Bin 0 -> 46086 bytes pod/test/results/pathImport.odt | Bin 0 -> 32780 bytes pod/test/results/simpleForEmptyList.odt | Bin 0 -> 31789 bytes pod/test/results/simpleForFilledList.odt | Bin 0 -> 32144 bytes pod/test/results/simpleForRow.odt | Bin 0 -> 36729 bytes pod/test/results/simpleFromTest.odt | Bin 0 -> 41036 bytes pod/test/results/simpleIfIsFalse.odt | Bin 0 -> 31882 bytes pod/test/results/simpleIfIsTrue.odt | Bin 0 -> 31938 bytes pod/test/results/simpleIfIsTrue003.odt | Bin 0 -> 37500 bytes pod/test/results/simpleMinusError.odt | Bin 0 -> 33287 bytes pod/test/results/simpleTest.odt | Bin 0 -> 32637 bytes pod/test/results/withAnImage.odt | Bin 0 -> 52698 bytes pod/test/results/xhtmlComplex.odt | Bin 0 -> 53082 bytes pod/test/results/xhtmlComplex2.odt | Bin 0 -> 41347 bytes pod/test/results/xhtmlComplexTables.odt | Bin 0 -> 39366 bytes pod/test/results/xhtmlEntities.odt | Bin 0 -> 35060 bytes pod/test/results/xhtmlKeepWithNext.odt | Bin 0 -> 40770 bytes pod/test/results/xhtmlNominal.odt | Bin 0 -> 43052 bytes pod/test/results/xhtmlStylesErrors.odt | Bin 0 -> 40705 bytes pod/test/results/xhtmlStylesMapping.odt | Bin 0 -> 43341 bytes pod/test/results/xhtmlTables.odt | Bin 0 -> 37481 bytes pod/test/templates/ElseStatements.odt | Bin 0 -> 18252 bytes pod/test/templates/ErrorExpression.odt | Bin 0 -> 6410 bytes pod/test/templates/ErrorFooter.odt | Bin 0 -> 10018 bytes pod/test/templates/ErrorForParsetime.odt | Bin 0 -> 6916 bytes pod/test/templates/ErrorForRuntime.odt | Bin 0 -> 6832 bytes pod/test/templates/ErrorIf.odt | Bin 0 -> 6695 bytes pod/test/templates/FileHandlerImport.odt | Bin 0 -> 7465 bytes pod/test/templates/ForCell.odt | Bin 0 -> 6938 bytes pod/test/templates/ForCell2.odt | Bin 0 -> 6881 bytes pod/test/templates/ForCell3.odt | Bin 0 -> 6934 bytes pod/test/templates/ForCell4.odt | Bin 0 -> 6952 bytes pod/test/templates/ForCell5.odt | Bin 0 -> 6732 bytes pod/test/templates/ForTable.odt | Bin 0 -> 6542 bytes pod/test/templates/ForTableMinus.odt | Bin 0 -> 6798 bytes pod/test/templates/ForTableMinus2.odt | Bin 0 -> 7323 bytes pod/test/templates/ForTableMinusError.odt | Bin 0 -> 7098 bytes pod/test/templates/ForTableMinusError2.odt | Bin 0 -> 7099 bytes pod/test/templates/HeaderFooter.odt | Bin 0 -> 10215 bytes pod/test/templates/IfAndFors1.odt | Bin 0 -> 7473 bytes pod/test/templates/IfElseErrors.odt | Bin 0 -> 11041 bytes pod/test/templates/ImagesImport.odt | Bin 0 -> 9303 bytes pod/test/templates/NoPython.odt | Bin 0 -> 8298 bytes pod/test/templates/OnlyExpressions.odt | Bin 0 -> 8810 bytes pod/test/templates/PathImport.odt | Bin 0 -> 7483 bytes pod/test/templates/SimpleForEmptyList.odt | Bin 0 -> 6345 bytes pod/test/templates/SimpleForFilledList.odt | Bin 0 -> 6520 bytes pod/test/templates/SimpleForRow.odt | Bin 0 -> 7160 bytes pod/test/templates/SimpleFromTest.odt | Bin 0 -> 9750 bytes pod/test/templates/SimpleIfIsFalse.odt | Bin 0 -> 6378 bytes pod/test/templates/SimpleIfIsTrue.odt | Bin 0 -> 6378 bytes pod/test/templates/SimpleIfIsTrue003.odt | Bin 0 -> 8227 bytes pod/test/templates/SimpleMinusError.odt | Bin 0 -> 6567 bytes pod/test/templates/SimpleTest.odt | Bin 0 -> 8250 bytes pod/test/templates/WithAnImage.odt | Bin 0 -> 15044 bytes pod/test/templates/Xhtml.odt | Bin 0 -> 14907 bytes pod/test/templates/XhtmlComplex2.odt | Bin 0 -> 9287 bytes pod/test/templates/XhtmlComplexTables.odt | Bin 0 -> 8395 bytes pod/test/templates/XhtmlKeepWithNext.odt | Bin 0 -> 9131 bytes pod/test/templates/XhtmlSimple.odt | Bin 0 -> 7580 bytes pod/test/templates/XhtmlStyles.odt | Bin 0 -> 14046 bytes pod/test/templates/XhtmlStylesErrors.odt | Bin 0 -> 11839 bytes pod/test/templates/XhtmlTables.odt | Bin 0 -> 7834 bytes pod/version.txt | 1 + pod/xhtml2odt.py | 527 +++++ shared/__init__.py | 10 + shared/errors.py | 31 + shared/rtf.py | 503 +++++ shared/test.py | 401 ++++ shared/utils.py | 48 + shared/version.txt | 1 + shared/xml_parser.py | 130 ++ versions/appy.0.0.2.zip | Bin 0 -> 473744 bytes versions/appy.0.0.3.zip | Bin 0 -> 548870 bytes versions/appy.0.0.4.zip | Bin 0 -> 581033 bytes versions/appy.0.2.0.zip | Bin 0 -> 636433 bytes versions/appy.0.2.1.zip | Bin 0 -> 661549 bytes versions/appy.0.3.0.zip | Bin 0 -> 839205 bytes versions/appy.0.3.1.zip | Bin 0 -> 883163 bytes 427 files changed, 18387 insertions(+) create mode 100755 __init__.py create mode 100755 bin/__init__.py create mode 100755 bin/clean.py create mode 100755 bin/publish.py create mode 100755 bin/runOpenOffice.sh create mode 100755 bin/zip.py create mode 100755 doc/appy.css create mode 100755 doc/artwork.odg create mode 100755 doc/docToc.html create mode 100755 doc/gen.html create mode 100755 doc/genCreatingAdvancedClasses.html create mode 100755 doc/genCreatingBasicClasses.html create mode 100755 doc/genSecurityAndWorkflows.html create mode 100755 doc/gossips.odt create mode 100755 doc/helloWorld.odt create mode 100755 doc/img/ElseAmbiguous.png create mode 100755 doc/img/ElseAmbiguous.res.png create mode 100755 doc/img/ElseNotAmbiguous.png create mode 100755 doc/img/ElseNotAmbiguous.res.png create mode 100755 doc/img/ElseStatements.png create mode 100755 doc/img/ElseStatements.res.png create mode 100755 doc/img/ErrorExpression.png create mode 100755 doc/img/ErrorExpression.res.png create mode 100755 doc/img/ErrorForParsetime.png create mode 100755 doc/img/ErrorForParsetime.res.png create mode 100755 doc/img/ErrorForRuntime.png create mode 100755 doc/img/ErrorForRuntime.res.png create mode 100755 doc/img/ErrorIf.png create mode 100755 doc/img/ErrorIf.res.png create mode 100755 doc/img/ForCellNotEnough.png create mode 100755 doc/img/ForCellNotEnough.res.png create mode 100755 doc/img/ForCellTooMuch2.png create mode 100755 doc/img/ForCellTooMuch2.res.png create mode 100755 doc/img/ForTableMinus.png create mode 100755 doc/img/ForTableMinus.res.png create mode 100755 doc/img/ForTableMinusError.png create mode 100755 doc/img/ForTableMinusError.res.png create mode 100755 doc/img/FromWithFor.png create mode 100755 doc/img/FromWithFor.res.png create mode 100755 doc/img/IfAndFors1.png create mode 100755 doc/img/IfAndFors1.res.png create mode 100755 doc/img/IfExpression.png create mode 100755 doc/img/IfExpression.res.png create mode 100755 doc/img/OnlyExpressions.png create mode 100755 doc/img/OnlyExpressions.res.png create mode 100755 doc/img/SimpleFrom.png create mode 100755 doc/img/SimpleFrom.res.png create mode 100755 doc/img/SimpleTest.png create mode 100755 doc/img/SimpleTest.res.png create mode 100755 doc/img/actions1.png create mode 100755 doc/img/actions2.png create mode 100755 doc/img/advisory.png create mode 100755 doc/img/booleans1.png create mode 100755 doc/img/builtinFunctionInPodExpression.png create mode 100755 doc/img/builtinFunctionInPodExpression.res.png create mode 100755 doc/img/computed1.png create mode 100755 doc/img/computed2.png create mode 100755 doc/img/computed3.png create mode 100755 doc/img/contact.gif create mode 100755 doc/img/dates1.png create mode 100755 doc/img/dates2.png create mode 100755 doc/img/dates3.png create mode 100755 doc/img/dates4.png create mode 100755 doc/img/documentFunction1.png create mode 100755 doc/img/documentFunction2.png create mode 100755 doc/img/documentFunction3.png create mode 100755 doc/img/download.gif create mode 100755 doc/img/emptyQuery.png create mode 100755 doc/img/files1.png create mode 100755 doc/img/files2.png create mode 100755 doc/img/files3.png create mode 100755 doc/img/files4.png create mode 100755 doc/img/files5.png create mode 100755 doc/img/filledQuery.png create mode 100755 doc/img/flavourOptions.png create mode 100755 doc/img/genpod1.png create mode 100755 doc/img/genpod10.png create mode 100755 doc/img/genpod11.png create mode 100755 doc/img/genpod12.png create mode 100755 doc/img/genpod13.png create mode 100755 doc/img/genpod14.png create mode 100755 doc/img/genpod2.png create mode 100755 doc/img/genpod3.png create mode 100755 doc/img/genpod4.png create mode 100755 doc/img/genpod5.png create mode 100755 doc/img/genpod6.png create mode 100755 doc/img/genpod7.png create mode 100755 doc/img/genpod8.png create mode 100755 doc/img/genpod9.png create mode 100755 doc/img/gnu.png create mode 100755 doc/img/home.png create mode 100755 doc/img/i18n1.png create mode 100755 doc/img/inherit1.png create mode 100755 doc/img/inherit2.png create mode 100755 doc/img/inherit3.png create mode 100755 doc/img/inherit4.png create mode 100755 doc/img/inherit5.png create mode 100755 doc/img/inherit6.png create mode 100755 doc/img/integersFloats1.png create mode 100755 doc/img/integersFloats2.png create mode 100755 doc/img/integersFloats3.png create mode 100755 doc/img/integersFloats4.png create mode 100755 doc/img/mastersSlaves1.png create mode 100755 doc/img/mastersSlaves2.png create mode 100755 doc/img/mastersSlaves3.png create mode 100755 doc/img/mastersSlaves4.png create mode 100755 doc/img/objectStorage1.png create mode 100755 doc/img/objectStorage2.png create mode 100755 doc/img/pagesAndGroups1.png create mode 100755 doc/img/pagesAndGroups2.png create mode 100755 doc/img/pagesAndGroups3.png create mode 100755 doc/img/pagesAndGroups4.png create mode 100755 doc/img/pagesAndGroups5.png create mode 100755 doc/img/pagesAndGroups6.png create mode 100755 doc/img/pagesAndGroups7.png create mode 100755 doc/img/pagesAndGroups8.png create mode 100755 doc/img/plone.png create mode 100755 doc/img/portlet.png create mode 100755 doc/img/python.gif create mode 100755 doc/img/refs1.png create mode 100755 doc/img/refs10.png create mode 100755 doc/img/refs10b.png create mode 100755 doc/img/refs10c.png create mode 100755 doc/img/refs11.png create mode 100755 doc/img/refs12.png create mode 100755 doc/img/refs13.png create mode 100755 doc/img/refs14.png create mode 100755 doc/img/refs15.png create mode 100755 doc/img/refs2.png create mode 100755 doc/img/refs3.png create mode 100755 doc/img/refs4.png create mode 100755 doc/img/refs5.png create mode 100755 doc/img/refs6.png create mode 100755 doc/img/refs7.png create mode 100755 doc/img/refs8.png create mode 100755 doc/img/refs9.png create mode 100755 doc/img/specialMethods1.png create mode 100755 doc/img/specialMethods2.png create mode 100755 doc/img/strings1.png create mode 100755 doc/img/strings2.png create mode 100755 doc/img/strings3.png create mode 100755 doc/img/strings4.png create mode 100755 doc/img/strings5.png create mode 100755 doc/img/strings6.png create mode 100755 doc/img/strings7.png create mode 100755 doc/img/strings8.png create mode 100755 doc/img/strings9.png create mode 100755 doc/img/todo.gif create mode 100755 doc/img/tool.png create mode 100755 doc/img/toolAndFlavours1.png create mode 100755 doc/img/toolAndFlavours10.png create mode 100755 doc/img/toolAndFlavours11.png create mode 100755 doc/img/toolAndFlavours12.png create mode 100755 doc/img/toolAndFlavours13.png create mode 100755 doc/img/toolAndFlavours14.png create mode 100755 doc/img/toolAndFlavours15.png create mode 100755 doc/img/toolAndFlavours16.png create mode 100755 doc/img/toolAndFlavours17.png create mode 100755 doc/img/toolAndFlavours18.png create mode 100755 doc/img/toolAndFlavours19.png create mode 100755 doc/img/toolAndFlavours2.png create mode 100755 doc/img/toolAndFlavours20.png create mode 100755 doc/img/toolAndFlavours21.png create mode 100755 doc/img/toolAndFlavours22.png create mode 100755 doc/img/toolAndFlavours23.png create mode 100755 doc/img/toolAndFlavours2b.png create mode 100755 doc/img/toolAndFlavours2c.png create mode 100755 doc/img/toolAndFlavours3.png create mode 100755 doc/img/toolAndFlavours4.png create mode 100755 doc/img/toolAndFlavours5.png create mode 100755 doc/img/toolAndFlavours6.png create mode 100755 doc/img/toolAndFlavours7.png create mode 100755 doc/img/toolAndFlavours8.png create mode 100755 doc/img/toolAndFlavours9.png create mode 100755 doc/img/workflow1.png create mode 100755 doc/img/workflow10.png create mode 100755 doc/img/workflow11.png create mode 100755 doc/img/workflow12.png create mode 100755 doc/img/workflow2.png create mode 100755 doc/img/workflow3.png create mode 100755 doc/img/workflow4.png create mode 100755 doc/img/workflow5.png create mode 100755 doc/img/workflow6.png create mode 100755 doc/img/workflow7.png create mode 100755 doc/img/workflow8.png create mode 100755 doc/img/workflow9.png create mode 100755 doc/img/xhtmlChunk.png create mode 100755 doc/img/xhtmlResult.png create mode 100755 doc/img/xhtmlStylesMapping.png create mode 100755 doc/img/xhtmlTemplate.png create mode 100755 doc/img/zmi.png create mode 100755 doc/img/zopeComponentEdit.png create mode 100755 doc/index.html create mode 100755 doc/license.txt create mode 100755 doc/pod.html create mode 100755 doc/podRenderingTemplates.html create mode 100755 doc/podWritingAdvancedTemplates.html create mode 100755 doc/podWritingTemplates.html create mode 100755 doc/template.html create mode 100755 doc/todo.txt create mode 100755 doc/version.txt create mode 100755 gen/__init__.py create mode 100644 gen/descriptors.py create mode 100755 gen/generator.py create mode 100755 gen/odt/__init__.py create mode 100755 gen/odt/generator.py create mode 100644 gen/odt/templates/basic.odt create mode 100755 gen/plone25/__init__.py create mode 100755 gen/plone25/descriptors.py create mode 100755 gen/plone25/generator.py create mode 100644 gen/plone25/installer.py create mode 100644 gen/plone25/mixins/ClassMixin.py create mode 100644 gen/plone25/mixins/FlavourMixin.py create mode 100644 gen/plone25/mixins/PodTemplateMixin.py create mode 100644 gen/plone25/mixins/ToolMixin.py create mode 100644 gen/plone25/mixins/__init__.py create mode 100755 gen/plone25/model.py create mode 100644 gen/plone25/notifier.py create mode 100755 gen/plone25/templates/AppyReference.pt create mode 100755 gen/plone25/templates/ArchetypesTemplate.py create mode 100755 gen/plone25/templates/FlavourTemplate.py create mode 100755 gen/plone25/templates/Install.py create mode 100755 gen/plone25/templates/Macros.pt create mode 100755 gen/plone25/templates/PodTemplate.py create mode 100755 gen/plone25/templates/Portlet.pt create mode 100755 gen/plone25/templates/ProfileInit.py create mode 100755 gen/plone25/templates/Query.pt create mode 100755 gen/plone25/templates/Styles.css.dtml create mode 100755 gen/plone25/templates/ToolTemplate.py create mode 100755 gen/plone25/templates/__init__.py create mode 100755 gen/plone25/templates/appyConfig.gif create mode 100755 gen/plone25/templates/appyWrappers.py create mode 100755 gen/plone25/templates/appy_edit.cpt create mode 100755 gen/plone25/templates/appy_edit.cpt.metadata create mode 100755 gen/plone25/templates/appy_view.pt create mode 100755 gen/plone25/templates/arrowDown.png create mode 100755 gen/plone25/templates/arrowUp.png create mode 100755 gen/plone25/templates/colophon.pt create mode 100755 gen/plone25/templates/config.py create mode 100755 gen/plone25/templates/configure.zcml create mode 100755 gen/plone25/templates/createAppyObject.cpy create mode 100755 gen/plone25/templates/createAppyObject.cpy.metadata create mode 100755 gen/plone25/templates/current.png create mode 100755 gen/plone25/templates/do.py create mode 100755 gen/plone25/templates/doc.png create mode 100755 gen/plone25/templates/done.png create mode 100755 gen/plone25/templates/footer.pt create mode 100755 gen/plone25/templates/frontPage.pt create mode 100755 gen/plone25/templates/import_steps.xml create mode 100755 gen/plone25/templates/nextPhase.png create mode 100755 gen/plone25/templates/nextState.png create mode 100755 gen/plone25/templates/odt.png create mode 100755 gen/plone25/templates/pdf.png create mode 100755 gen/plone25/templates/plus.png create mode 100755 gen/plone25/templates/rtf.png create mode 100755 gen/plone25/templates/tool.gif create mode 100644 gen/plone25/templates/workflows.py create mode 100755 gen/plone25/utils.py create mode 100644 gen/plone25/workflow.py create mode 100644 gen/plone25/wrappers/FlavourWrapper.py create mode 100644 gen/plone25/wrappers/PodTemplateWrapper.py create mode 100644 gen/plone25/wrappers/ToolWrapper.py create mode 100644 gen/plone25/wrappers/__init__.py create mode 100755 gen/po.py create mode 100644 gen/test/applications/AppyCar/Engine.odt create mode 100644 gen/test/applications/AppyCar/Engine.py create mode 100644 gen/test/applications/AppyCar/Interior/Radio.py create mode 100644 gen/test/applications/AppyCar/Interior/__init__.py create mode 100644 gen/test/applications/AppyCar/Wheel.py create mode 100644 gen/test/applications/AppyCar/__init__.py create mode 100644 gen/test/applications/AppyMeeting.py create mode 100644 gen/test/applications/Meeting.odt create mode 100644 gen/test/applications/MoreGossips.odt create mode 100644 gen/test/applications/Readme.txt create mode 100644 gen/test/applications/SordidGossips.odt create mode 100644 gen/test/applications/ZopeComponent.py create mode 100644 gen/test/applications/Zzz.py create mode 100755 gen/utils.py create mode 100755 pod/__init__.py create mode 100755 pod/actions.py create mode 100755 pod/buffers.py create mode 100755 pod/converter.py create mode 100755 pod/doc_importers.py create mode 100755 pod/elements.py create mode 100755 pod/odf_parser.py create mode 100755 pod/pod_parser.py create mode 100755 pod/renderer.py create mode 100755 pod/styles.in.content.xml create mode 100755 pod/styles.in.styles.xml create mode 100755 pod/styles_manager.py create mode 100755 pod/test/Readme.txt create mode 100755 pod/test/Tester.py create mode 100755 pod/test/Tests.rtf create mode 100755 pod/test/__init__.py create mode 100755 pod/test/contexts/ElseStatements.py create mode 100755 pod/test/contexts/Empty.py create mode 100755 pod/test/contexts/FileHandlerImport.py create mode 100755 pod/test/contexts/IfAndFors1.py create mode 100755 pod/test/contexts/ImagesImport.py create mode 100755 pod/test/contexts/OnlyExpressions.py create mode 100755 pod/test/contexts/PathImport.py create mode 100755 pod/test/contexts/PersonsEight.py create mode 100755 pod/test/contexts/PersonsFour.py create mode 100755 pod/test/contexts/PersonsThree.py create mode 100755 pod/test/contexts/PersonsTwo.py create mode 100755 pod/test/contexts/SimpleForEmptyList.py create mode 100755 pod/test/contexts/SimpleForFilledList.py create mode 100755 pod/test/contexts/SimpleForRow.py create mode 100755 pod/test/contexts/SimpleIfIsFalse.py create mode 100755 pod/test/contexts/SimpleIfIsTrue.py create mode 100755 pod/test/contexts/SimpleTest.py create mode 100755 pod/test/contexts/XhtmlComplex.py create mode 100755 pod/test/contexts/XhtmlComplex2.py create mode 100755 pod/test/contexts/XhtmlComplexTables.py create mode 100755 pod/test/contexts/XhtmlEntities.py create mode 100755 pod/test/contexts/XhtmlKeepWithNext.py create mode 100755 pod/test/contexts/XhtmlNominal.py create mode 100755 pod/test/contexts/XhtmlStylesErrors.py create mode 100755 pod/test/contexts/XhtmlStylesMapping.py create mode 100755 pod/test/contexts/XhtmlTables.py create mode 100755 pod/test/contexts/__init__.py create mode 100755 pod/test/images/linux.jpg create mode 100755 pod/test/images/plone.png create mode 100755 pod/test/images/python.gif create mode 100755 pod/test/results/elseStatements.odt create mode 100755 pod/test/results/errorExpression.odt create mode 100755 pod/test/results/errorFooter.odt create mode 100755 pod/test/results/errorForParsetime.odt create mode 100755 pod/test/results/errorForRuntime.odt create mode 100755 pod/test/results/errorIf.odt create mode 100755 pod/test/results/fileHandlerImport.odt create mode 100755 pod/test/results/forCellCorrectNumber.odt create mode 100755 pod/test/results/forCellNotEnough.odt create mode 100755 pod/test/results/forCellOnlyOne.odt create mode 100755 pod/test/results/forCellTooMuch1.odt create mode 100755 pod/test/results/forCellTooMuch2.odt create mode 100755 pod/test/results/forCellTooMuch3.odt create mode 100755 pod/test/results/forCellTooMuch4.odt create mode 100755 pod/test/results/forTable.odt create mode 100755 pod/test/results/forTableMinus.odt create mode 100755 pod/test/results/forTableMinus2.odt create mode 100755 pod/test/results/forTableMinusError.odt create mode 100755 pod/test/results/forTableMinusError2.odt create mode 100755 pod/test/results/headerFooter.odt create mode 100755 pod/test/results/ifAndFors1.odt create mode 100755 pod/test/results/ifElseErrors.odt create mode 100755 pod/test/results/imagesImport.odt create mode 100755 pod/test/results/noPython.odt create mode 100755 pod/test/results/onlyExpressions.odt create mode 100755 pod/test/results/pathImport.odt create mode 100755 pod/test/results/simpleForEmptyList.odt create mode 100755 pod/test/results/simpleForFilledList.odt create mode 100755 pod/test/results/simpleForRow.odt create mode 100755 pod/test/results/simpleFromTest.odt create mode 100755 pod/test/results/simpleIfIsFalse.odt create mode 100755 pod/test/results/simpleIfIsTrue.odt create mode 100755 pod/test/results/simpleIfIsTrue003.odt create mode 100755 pod/test/results/simpleMinusError.odt create mode 100755 pod/test/results/simpleTest.odt create mode 100755 pod/test/results/withAnImage.odt create mode 100755 pod/test/results/xhtmlComplex.odt create mode 100644 pod/test/results/xhtmlComplex2.odt create mode 100755 pod/test/results/xhtmlComplexTables.odt create mode 100755 pod/test/results/xhtmlEntities.odt create mode 100755 pod/test/results/xhtmlKeepWithNext.odt create mode 100755 pod/test/results/xhtmlNominal.odt create mode 100755 pod/test/results/xhtmlStylesErrors.odt create mode 100755 pod/test/results/xhtmlStylesMapping.odt create mode 100644 pod/test/results/xhtmlTables.odt create mode 100755 pod/test/templates/ElseStatements.odt create mode 100755 pod/test/templates/ErrorExpression.odt create mode 100755 pod/test/templates/ErrorFooter.odt create mode 100755 pod/test/templates/ErrorForParsetime.odt create mode 100755 pod/test/templates/ErrorForRuntime.odt create mode 100755 pod/test/templates/ErrorIf.odt create mode 100755 pod/test/templates/FileHandlerImport.odt create mode 100755 pod/test/templates/ForCell.odt create mode 100755 pod/test/templates/ForCell2.odt create mode 100755 pod/test/templates/ForCell3.odt create mode 100755 pod/test/templates/ForCell4.odt create mode 100755 pod/test/templates/ForCell5.odt create mode 100755 pod/test/templates/ForTable.odt create mode 100755 pod/test/templates/ForTableMinus.odt create mode 100755 pod/test/templates/ForTableMinus2.odt create mode 100755 pod/test/templates/ForTableMinusError.odt create mode 100755 pod/test/templates/ForTableMinusError2.odt create mode 100755 pod/test/templates/HeaderFooter.odt create mode 100755 pod/test/templates/IfAndFors1.odt create mode 100755 pod/test/templates/IfElseErrors.odt create mode 100755 pod/test/templates/ImagesImport.odt create mode 100755 pod/test/templates/NoPython.odt create mode 100755 pod/test/templates/OnlyExpressions.odt create mode 100755 pod/test/templates/PathImport.odt create mode 100755 pod/test/templates/SimpleForEmptyList.odt create mode 100755 pod/test/templates/SimpleForFilledList.odt create mode 100755 pod/test/templates/SimpleForRow.odt create mode 100755 pod/test/templates/SimpleFromTest.odt create mode 100755 pod/test/templates/SimpleIfIsFalse.odt create mode 100755 pod/test/templates/SimpleIfIsTrue.odt create mode 100755 pod/test/templates/SimpleIfIsTrue003.odt create mode 100755 pod/test/templates/SimpleMinusError.odt create mode 100755 pod/test/templates/SimpleTest.odt create mode 100755 pod/test/templates/WithAnImage.odt create mode 100755 pod/test/templates/Xhtml.odt create mode 100755 pod/test/templates/XhtmlComplex2.odt create mode 100755 pod/test/templates/XhtmlComplexTables.odt create mode 100755 pod/test/templates/XhtmlKeepWithNext.odt create mode 100755 pod/test/templates/XhtmlSimple.odt create mode 100755 pod/test/templates/XhtmlStyles.odt create mode 100755 pod/test/templates/XhtmlStylesErrors.odt create mode 100755 pod/test/templates/XhtmlTables.odt create mode 100755 pod/version.txt create mode 100755 pod/xhtml2odt.py create mode 100755 shared/__init__.py create mode 100755 shared/errors.py create mode 100755 shared/rtf.py create mode 100755 shared/test.py create mode 100755 shared/utils.py create mode 100755 shared/version.txt create mode 100755 shared/xml_parser.py create mode 100755 versions/appy.0.0.2.zip create mode 100755 versions/appy.0.0.3.zip create mode 100755 versions/appy.0.0.4.zip create mode 100755 versions/appy.0.2.0.zip create mode 100755 versions/appy.0.2.1.zip create mode 100755 versions/appy.0.3.0.zip create mode 100644 versions/appy.0.3.1.zip diff --git a/__init__.py b/__init__.py new file mode 100755 index 0000000..8b13789 --- /dev/null +++ b/__init__.py @@ -0,0 +1 @@ + diff --git a/bin/__init__.py b/bin/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/bin/clean.py b/bin/clean.py new file mode 100755 index 0000000..e4d5255 --- /dev/null +++ b/bin/clean.py @@ -0,0 +1,33 @@ +# Imports ---------------------------------------------------------------------- +import os, os.path +from appy.shared import appyPath +from appy.shared.utils import FolderDeleter + +# ------------------------------------------------------------------------------ +class Cleaner: + exts = ('.pyc', '.class') + def run(self, verbose=True): + print 'Cleaning folder', appyPath, '...' + # Remove files with an extension listed in self.exts + for root, dirs, files in os.walk(appyPath): + for fileName in files: + ext = os.path.splitext(fileName)[1] + if (ext in Cleaner.exts) or ext.endswith('~'): + fileToRemove = os.path.join(root, fileName) + if verbose: + print 'Removing %s...' % fileToRemove + os.remove(fileToRemove) + # Remove all files in temp folders + for tempFolder in ('%s/temp' % appyPath, + '%s/pod/test/temp' % appyPath): + if os.path.exists(tempFolder): + FolderDeleter.delete(tempFolder) + # Remove test reports if any + for testReport in ('%s/pod/test/Tester.report.txt' % appyPath,): + if os.path.exists(testReport): + os.remove(testReport) + +# Main program ----------------------------------------------------------------- +if __name__ == '__main__': + Cleaner().run() +# ------------------------------------------------------------------------------ diff --git a/bin/publish.py b/bin/publish.py new file mode 100755 index 0000000..ea27e67 --- /dev/null +++ b/bin/publish.py @@ -0,0 +1,519 @@ +# Imports ---------------------------------------------------------------------- +import os, os.path, shutil, re, zipfile, sys, ftplib +from appy.shared import appyPath +from appy.shared.utils import FolderDeleter +from appy.bin.clean import Cleaner +from appy.gen.utils import produceNiceMessage + +# ------------------------------------------------------------------------------ +versionRex = re.compile('(\d+\.\d+\.\d+)') +eggInfo = '''import os, setuptools +setuptools.setup( + name = "appy", version = "%s", description = "The Appy framework", + long_description = "See http://appyframework.org", + author = "Gaetan Delannay", author_email = "gaetan.delannay AT gmail.com", + license = "GPL", keywords = "plone, pod, pdf, odt, document", + url = 'http://appyframework.org', + classifiers = ['Development Status :: 4 - Beta', "License :: OSI Approved"], + packages = setuptools.find_packages('src'), include_package_data = True, + package_dir = {'':'src'}, data_files = [('.', [])], + namespace_packages = ['appy'], zip_safe = False)''' + +def askLogin(): + print 'Login: ', + login = sys.stdin.readline().strip() + print 'Password: ', + passwd = sys.stdin.readline().strip() + return (login, passwd) + +def askQuestion(question, default='yes'): + '''Asks a question to the user (yes/no) and returns True if the user + answered "yes".''' + defaultIsYes = (default.lower() in ('y', 'yes')) + if defaultIsYes: + yesNo = '[Y/n]' + else: + yesNo = '[y/N]' + print question + ' ' + yesNo + ' ', + response = sys.stdin.readline().strip().lower() + res = False + if response in ('y', 'yes'): + res = True + elif response in ('n', 'no'): + res = False + elif not response: + # It depends on default value + if defaultIsYes: + res = True + else: + res = False + return res + +class FtpFolder: + '''Represents a folder on a FTP site.''' + def __init__(self, name): + self.name = name + self.parent = None + self.subFolders = [] + self.files = [] + self.isComplete = False # Is True if all contained files and direct + # subFolders were analysed. + def getFullName(self): + if not self.parent: + res = '.' + else: + res = '%s/%s' % (self.parent.getFullName(), self.name) + return res + def addSubFolder(self, subFolder): + self.subFolders.append(subFolder) + subFolder.parent = self + def isFullyComplete(self): + res = self.isComplete + for subFolder in self.subFolders: + res = res and subFolder.isFullyComplete() + return res + def getIncompleteSubFolders(self): + res = [] + for subFolder in self.subFolders: + if not subFolder.isComplete: + res.append(subFolder) + elif not subFolder.isFullyComplete(): + res += subFolder.getIncompleteSubFolders() + return res + def __str__(self): + res = 'Folder %s' % self.getFullName() + if self.files: + res += '\nFiles:\n' + for f in self.files: + res += '%s\n' % f + if self.subFolders: + res += '\nSubFolders:\n' + for subFolder in self.subFolders: + res += str(subFolder) + return res + def clean(self, site): + '''Cleans this folder''' + # First, clean subFolders if they exist + for subFolder in self.subFolders: + subFolder.clean(site) + # Remove the subFolder + site.rmd(subFolder.getFullName()) + # Then, remove the files contained in the folder. + for f in self.files: + fileName = '%s/%s' % (self.getFullName(), f) + site.delete(fileName) + +# ------------------------------------------------------------------------------ +class AppySite: + '''Represents the Appy web sie where the project is published.''' + name = 'appyframework.org' + textExtensions = ('.htm', '.html', '.css', '.txt') + def __init__(self): + # Delete the "egg" folder on not-yet-copied local site. + eggFolder = '%s/temp/egg' % appyPath + if os.path.isdir(eggFolder): + FolderDeleter.delete(eggFolder) + # Ask user id and password for FTP transfer + userId, userPassword = askLogin() + self.site = ftplib.FTP(self.name) + self.site.login(userId, userPassword) + self.rootFolder = None # Root folder of appy site ~FtpFolder~ + self.currentFolder = None # Currently visited folder ~FtpFolder~ + def analyseFolderEntry(self, folderEntry): + '''p_line corresponds to a 'ls' entry.''' + elems = folderEntry.split(' ') + elemName = elems[len(elems)-1] + if (not elemName.startswith('.')) and \ + (not elemName.startswith('_')): + if elems[0].startswith('d'): + self.currentFolder.addSubFolder(FtpFolder(elemName)) + else: + self.currentFolder.files.append(elemName) + def createFolderProxies(self): + '''Creates a representation of the FTP folders of the appy site in the + form of FtpFolder instances.''' + self.rootFolder = FtpFolder('.') + self.currentFolder = self.rootFolder + self.site.dir(self.currentFolder.getFullName(), self.analyseFolderEntry) + self.rootFolder.isComplete = True + while not self.rootFolder.isFullyComplete(): + incompleteFolders = self.rootFolder.getIncompleteSubFolders() + for folder in incompleteFolders: + self.currentFolder = folder + self.site.dir(self.currentFolder.getFullName(), + self.analyseFolderEntry) + self.currentFolder.isComplete = True + def copyFile(self, fileName): + '''Copies a file on the FTP server.''' + localFile = file(fileName) + cmd = 'STOR %s' % fileName + fileExt = os.path.splitext(fileName)[1] + if fileExt in self.textExtensions: + # Make a transfer in text mode + print 'Transfer file %s (text mode)' % fileName + self.site.storlines(cmd, localFile) + else: + # Make a transfer in binary mode + print 'Transfer file %s (binary mode)' % fileName + self.site.storbinary(cmd, localFile) + def publish(self): + # Delete the existing content of the distant site + self.createFolderProxies() + print 'Removing existing data on site...' + self.rootFolder.clean(self.site) + curDir = os.getcwd() + os.chdir('%s/temp' % appyPath) + for root, dirs, files in os.walk('.'): + for folder in dirs: + folderName = '%s/%s' % (root, folder) + self.site.mkd(folderName) + for f in files: + fileName = '%s/%s' % (root, f) + self.copyFile(fileName) + os.chdir(curDir) + self.site.close() + +# ------------------------------------------------------------------------------ +class Text2Html: + '''Converts a text file into a HTML file.''' + def __init__(self, txtFile, htmlFile): + self.txtFile = file(txtFile) + self.htmlFile = file(htmlFile, 'w') + def retainLine(self, line): + '''Must we dump this line in the result ?''' + pass + def getFirstChar(self, line): + '''Gets the first relevant character of the line. For a TodoConverter + this is not really the first one because lines taken into account start + with a 'v' character.''' + return line[self.firstChar] + def getCleanLine(self, line, isTitle=False): + '''Gets the line as it will be inserted in the HTML result: remove some + leading and trailing characters.''' + start = self.firstChar + if not isTitle: + start += 1 + return line[start:-1] + def getProlog(self): + '''If you want to write a small prolog in the HTML file, you may + generate it here.''' + return '' + def run(self): + self.htmlFile.write('\n\n%s\n\n' \ + '\n' % self.title) + self.htmlFile.write(self.getProlog()) + inList = False + for line in self.txtFile: + if self.retainLine(line): + firstChar = self.getFirstChar(line) + if firstChar == '-': + if not inList: + # Begin a new bulleted list + self.htmlFile.write('\n') + inList = False + self.htmlFile.write( + '

%s

\n' % self.getCleanLine(line, True)) + self.htmlFile.write('\n\n\n') + self.txtFile.close() + self.htmlFile.close() + +class TodoConverter(Text2Html): + title = 'To do' + firstChar = 1 # Position of the first relevant char in each line + def retainLine(self, line): + return line.startswith('v') and len(line) > 2 + +class VersionsConverter(Text2Html): + title = 'Versions' + firstChar = 0 + svnUrl = 'http://svn.communesplone.org/svn/communesplone/appy' + setupToolsUrl = 'http://peak.telecommunity.com/DevCenter/setuptools' + def retainLine(self, line): + return len(line) > 1 + def getCleanLine(self, line, isTitle=False): + line = Text2Html.getCleanLine(self, line, isTitle) + if isTitle: + # This title represents a version of the appy framework. + version = versionRex.search(line).group(1) + if os.path.exists('%s/versions/appy.%s.zip' % ( + appyPath, version)): + line = '%s (download zip)' %( + line, version) + return line + def getProlog(self): + return '

Appy releases are available for download as zip files ' \ + 'below. Under Windows, unzip the file with a tool like ' \ + '7zip and copy the ' \ + '"appy" folder to <where_you_installed_python>\Lib\s' \ + 'ite-packages\. Under Linux, unzip the file by typing "unzip ' \ + 'appy-x.x.x.zip", copy the appy folder wherever you want (in ' \ + '/opt/appy for example) and make a symbolic link in your ' \ + 'Python lib folder (for example: "ln -s /opt/appy /usr/lib/' \ + 'python2.5/site-packages/appy").

' \ + ' ' \ + '

In order to check that everything works, launch a Python ' \ + 'shell and type "import appy". If you get the >>> '\ + 'prompt again without error it\'s ok. You may also want to ' \ + 'launch the automated pod test suite: go to the pod test ' \ + 'folder (in <pod folder>/test, where <pod ' \ + 'folder> may be something like /usr/lib/python2.5/' \ + 'site-packages/appy/pod or /usr/lib/python2.5/site-packages/' \ + 'appy-0.3.0-py2.5.egg/appy/pod) and type "sudo python ' \ + 'Tester.py".

' \ + '' % ( + self.setupToolsUrl, self.setupToolsUrl, + self.svnUrl, self.svnUrl) + +# ------------------------------------------------------------------------------ +class Publisher: + '''Publishes Appy on the web.''' + pageBody = re.compile('(.*)', re.S) + eggVersion = re.compile('version\s*=\s*".*?"') + pythonTargets = ('2.4', '2.5') + svnServer = 'http://svn.communesplone.org/svn/communesplone/appy' + + def __init__(self): + self.genFolder = '%s/temp' % appyPath + self.ftp = None # FTP connection to appyframework.org + # Retrieve version-related information + versionFileName = '%s/doc/version.txt' % appyPath + f = file(versionFileName) + self.versionLong = f.readline().strip() + # Long version includes version number & date + self.versionShort = versionRex.search(self.versionLong).group(1).strip() + # Short version includes version number only + f.close() + + def executeCommand(self, cmd): + '''Executes the system command p_cmd.''' + print 'Executing %s...' % cmd + os.system(cmd) + + def createCodeAndEggReleases(self): + '''Updates the subversion repository as needed (tags, branches) + and publishes the needed eggs on pypi.python.org.''' + # Update subversion repository + curdir = os.getcwd() + # Create a branch for this new version if the user wants it. + lastDotIndex = self.versionShort.rfind('.') + branchName = self.versionShort[:lastDotIndex] + cmd = 'svn cp -m "Branch for releases %s.x" %s/trunk %s/branches/%s' % ( + branchName, self.svnServer, self.svnServer, branchName) + if askQuestion('Create new branch? (%s)' % cmd, default='no'): + os.system(cmd) + # Create a tag for this version if the user wants it. + tagUrl = '%s/tags/%s' % (self.svnServer, self.versionShort) + cmd = 'svn cp -m "Tag for release %s" %s/trunk %s' % ( + self.versionShort, self.svnServer, tagUrl) + if askQuestion('Create new tag? (%s)' % cmd, default='no'): + os.system(cmd) + if askQuestion('Upload eggs on PyPI?', default='no'): + # Create egg structure + eggFolder = '%s/egg' % self.genFolder + os.mkdir(eggFolder) + f = file('%s/setup.py' % eggFolder, 'w') + f.write(eggInfo % self.versionShort) + f.close() + os.mkdir('%s/docs' % eggFolder) + os.mkdir('%s/src' % eggFolder) + os.mkdir('%s/src/appy' % eggFolder) + shutil.copy('%s/doc/version.txt' % appyPath, + '%s/docs/HISTORY.txt' % eggFolder) + shutil.copy('%s/doc/license.txt' % appyPath, + '%s/docs/LICENSE.txt' % eggFolder) + # Move appy sources within the egg + os.rename('%s/appy' % self.genFolder, '%s/src/appy' % eggFolder) + # Create eggs and publish them on pypi + os.chdir(eggFolder) + print 'Uploading appy%s source egg on PyPI...' % self.versionShort + #self.executeCommand('python setup.py sdist upload') + self.executeCommand('python setup.py sdist') + for pythonTarget in self.pythonTargets: + print 'Uploading appy%s binary egg for python%s...' % \ + (self.versionShort, pythonTarget) + #self.executeCommand('python%s setup.py bdist_egg upload' % \ + # pythonTarget) + self.executeCommand('python%s setup.py bdist_egg' % \ + pythonTarget) + os.chdir(curdir) + + def createZipRelease(self): + '''Creates a zip file with the appy sources.''' + newZipRelease = '%s/versions/appy.%s.zip' % (appyPath, self.versionShort) + if os.path.exists(newZipRelease): + if not askQuestion('"%s" already exists. Replace it?' % \ + newZipRelease, default='yes'): + print 'Publication cancelled.' + sys.exit(1) + print 'Removing obsolete %s...' % newZipRelease + os.remove(newZipRelease) + zipFile = zipfile.ZipFile(newZipRelease, 'w', zipfile.ZIP_DEFLATED) + curdir = os.getcwd() + os.chdir(self.genFolder) + for dir, dirnames, filenames in os.walk('appy'): + for f in filenames: + fileName = os.path.join(dir, f) + zipFile.write(fileName) + # [2:] is there to avoid havin './' in the path in the zip file. + zipFile.close() + # Copy the new zip release to the gen folder + shutil.copy(newZipRelease, '%s/versions' % self.genFolder) + os.chdir(curdir) + + def applyTemplate(self): + '''Decorates each page with the template.''' + # First, load the template into memory + templateFileName = '%s/doc/template.html' % appyPath + templateFile = open(templateFileName) + templateContent = templateFile.read() + templateFile.close() + # Then, decorate each other html file + for pageName in os.listdir(self.genFolder): + if pageName.endswith('.html'): + pageFileName = '%s/%s' % (self.genFolder, pageName) + pageFile = file(pageFileName) + pageContent = pageFile.read() + pageFile.close() + # Extract the page title + i, j = pageContent.find(''), pageContent.find('') + pageTitle = pageContent[i+7:j] + # Extract the body tag content from the page + pageContent = self.pageBody.search(pageContent).group(1) + pageFile = open(pageFileName, 'w') + templateWithTitle = templateContent.replace('{{ title }}', + pageTitle) + pageFile.write(templateWithTitle.replace('{{ content }}', + pageContent)) + pageFile.close() + + def _getPageTitle(self, url): + '''Returns the documentation page title from its URL.''' + res = url.split('.')[0] + if res not in ('pod', 'gen'): + res = produceNiceMessage(res[3:]) + return res + + mainToc = re.compile('') + tocLink = re.compile('(.*?)') + subSection = re.compile('

(.*?)

') + subSectionContent = re.compile('.*?(.*)') + def createDocToc(self): + res = '' + docToc = '%s/docToc.html' % self.genFolder + # First, parse template.html to get the main TOC structure + template = file('%s/doc/template.html' % appyPath) + mainData = self.mainToc.search(template.read()).group(0) + links = self.tocLink.findall(mainData)[1:] + sectionNb = 0 + for url, title in links: + if title in ('gen', 'pod'): + tag = 'h1' + indent = 0 + styleBegin = '' + styleEnd = '' + if title == 'pod': + res += '' + res += '
' + else: + tag = 'p' + indent = 2 + styleBegin = '' + styleEnd = '' + tabs = ' ' * indent * 2 + res += '<%s>%s%s%s%s\n' % \ + (tag, tabs, styleBegin, url, self._getPageTitle(url), + styleEnd, tag) + # Parse each HTML file and retrieve sections title that have an + # anchor defined + docFile = file('%s/doc/%s' % (appyPath, url)) + docContent = docFile.read() + docFile.close() + sections = self.subSection.findall(docContent) + for section in sections: + r = self.subSectionContent.search(section) + if r: + sectionNb += 1 + tabs = ' ' * 8 + res += '
%s%d. %s
\n' % \ + (tabs, sectionNb, url, r.group(1), r.group(2)) + res += '
' + f = file(docToc) + toc = f.read() + f.close() + toc = toc.replace('{{ doc }}', res) + f = file(docToc, 'w') + f.write(toc) + f.close() + + def prepareGenFolder(self): + '''Creates the basic structure of the temp folder where the appy + website will be generated.''' + # Reinitialise temp folder where the generated website will be dumped + if os.path.exists(self.genFolder): + FolderDeleter.delete(self.genFolder) + shutil.copytree('%s/doc' % appyPath, self.genFolder) + shutil.copytree('%s/versions' % appyPath, '%s/versions' %self.genFolder) + # Create a temp clean copy of appy sources (without .svn folders, etc) + genSrcFolder = '%s/appy' % self.genFolder + os.mkdir(genSrcFolder) + for aFile in ('__init__.py',): + shutil.copy('%s/%s' % (appyPath, aFile), genSrcFolder) + for aFolder in ('gen', 'pod', 'shared'): + shutil.copytree('%s/%s' % (appyPath, aFolder), + '%s/%s' % (genSrcFolder, aFolder)) + # Write the appy version into the code itself (in appy/version.py)''' + print 'Publishing version %s...' % self.versionShort + # Dump version info in appy/version.py + f = file('%s/version.py' % genSrcFolder, 'w') + f.write('short = "%s"\n' % self.versionShort) + f.write('verbose = "%s"' % self.versionLong) + f.close() + # Remove unwanted files + os.remove('%s/todo.txt' % self.genFolder) + os.remove('%s/version.txt' % self.genFolder) + os.remove('%s/license.txt' % self.genFolder) + os.remove('%s/template.html' % self.genFolder) + os.remove('%s/artwork.odg' % self.genFolder) + # Remove subversion folders + for root, dirs, files in os.walk(self.genFolder): + for dirName in dirs: + if dirName == '.svn': + FolderDeleter.delete(os.path.join(root, dirName)) + # Generates the "to do" and "versions" pages, based on todo.txt and + # version.txt + TodoConverter('%s/doc/todo.txt' % appyPath, + '%s/todo.html' % self.genFolder).run() + VersionsConverter('%s/doc/version.txt' % appyPath, + '%s/version.html' % self.genFolder).run() + + def run(self): + Cleaner().run(verbose=False) + print 'Generating site in %s...' % self.genFolder + self.prepareGenFolder() + self.createDocToc() + self.applyTemplate() + self.createZipRelease() + self.createCodeAndEggReleases() + if askQuestion('Do you want to publish the site on ' \ + 'appyframework.org?', default='no'): + AppySite().publish() + if askQuestion('Delete locally generated site ?', default='no'): + FolderDeleter.delete(self.genFolder) + +# ------------------------------------------------------------------------------ +if __name__ == '__main__': + Publisher().run() +# ------------------------------------------------------------------------------ diff --git a/bin/runOpenOffice.sh b/bin/runOpenOffice.sh new file mode 100755 index 0000000..29db906 --- /dev/null +++ b/bin/runOpenOffice.sh @@ -0,0 +1,4 @@ +#!/bin/sh +/opt/openoffice.org3/program/soffice "-accept=socket,host=localhost,port=2002;urp;" +echo "Press ..." +read R diff --git a/bin/zip.py b/bin/zip.py new file mode 100755 index 0000000..f55cdf5 --- /dev/null +++ b/bin/zip.py @@ -0,0 +1,41 @@ +# ------------------------------------------------------------------------------ +import os, os.path, zipfile, sys +from appy.shared import appyPath +from appy.bin.clean import Cleaner + +# ------------------------------------------------------------------------------ +class Zipper: + def __init__(self): + self.zipFileName = '%s/Desktop/appy.zip' % os.environ['HOME'] + def createZipFile(self): + print 'Creating %s...' % self.zipFileName + zipFile = zipfile.ZipFile(self.zipFileName, 'w', zipfile.ZIP_DEFLATED) + for dir, dirnames, filenames in os.walk(appyPath): + for f in filenames: + fileName = os.path.join(dir, f) + arcName = fileName[fileName.find('appy/'):] + print 'Adding %s' % fileName + zipFile.write(fileName, arcName) + zipFile.close() + + def run(self): + # Where to put the zip file ? + print "Where do you want to put appy.zip ? [Default is %s] " % \ + os.path.dirname(self.zipFileName), + response = sys.stdin.readline().strip() + if response: + if os.path.exists(response) and os.path.isdir(response): + self.zipFileName = '%s/appy.zip' % response + else: + print '%s is not a folder.' % response + sys.exit(1) + if os.path.exists(self.zipFileName): + print 'Removing existing %s...' % self.zipFileName + os.remove(self.zipFileName) + Cleaner().run(verbose=False) + self.createZipFile() + +# Main program ----------------------------------------------------------------- +if __name__ == '__main__': + Zipper().run() +# ------------------------------------------------------------------------------ diff --git a/doc/appy.css b/doc/appy.css new file mode 100755 index 0000000..be462c3 --- /dev/null +++ b/doc/appy.css @@ -0,0 +1,150 @@ +/* HTML element types */ + +a:link { COLOR: #888888; text-decoration: none; } +a:visited{ COLOR: #888888; text-decoration: none; } +a:active { COLOR: #888888; text-decoration: none; } +a:hover { COLOR: #888888; text-decoration: underline; } + +input { + font-family: Verdana; + font-size: 9pt; + font-weight:normal; +} + +textarea { + font-family: Verdana; + font-size: 9pt; + width: auto; +} + +select { + font-family: Verdana, helvetica, sans-serif; + font-size: 9pt; + font-weight:normal; + width: auto; +} + +table { + border-collapse: separate; + border-spacing: 0 0; +} + +tr { + vertical-align: top; +} + +td { + font-family: Verdana, helvetica, sans-serif; + font-size: 9pt; +} + +th { + font-family: Verdana, helvetica, sans-serif; + font-size: 9pt; + font-style: italic; + font-weight: bold; + padding: 0 1em 0.1em 0; + border-bottom: 1px solid black; + text-align: left; +} + +p { + font-family: Verdana, helvetica, sans-serif; + font-size: 9pt; +} + +img { + border-width: 0 +} + +div { + font-family: Verdana, helvetica, sans-serif; + font-size: 9pt; +} + +body { + margin:10; + padding-left:10px; + padding-right:10px; +} + +h1 { + font-family: Verdana, helvetica, sans-serif; + font-size: 10pt; + font-weight: bold; +} + +h2 { + font-family: Verdana, helvetica, sans-serif; + font-size: 10pt; + font-style: italic; + font-weight: normal; +} + +ul { + font-family: Verdana, helvetica, sans-serif; + font-size: 9pt; + list-style-type:circle; +} + +li { + font-family: Verdana, helvetica, sans-serif; + font-size: 9pt; +} + +/* Classes */ + +.borders { + border-bottom-style: inset; + border-bottom-width: 1px; + padding-top: 8px; + padding-bottom: 8px; +} + +.code { + font-family: Courier new, Nimbus Mono L, sans-serif; + font-size: 10pt; +} + +.appyTable { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.siteTitle { + font-size: 12pt; +} + +.headerStrip { + text-align: right; + font-size: 10pt; + font-style: italic; + background-color: #f1f1ed; + padding-right: 1em; +} + +.bottomStrip { + font-size: 9pt; + font-weight:bold; + background-color: #F8F8F8; + padding-bottom: 0.1em; + padding-top: 0.1em; +} + +.doc { + padding-left: 2em; + padding-top: 0.5em; + font-size: 9pt; + font-style: italic; +} + +.tabs { + padding-left: 1em; + font-size: 9pt; +} + +.footer { + text-align: right; + font-size: 9pt; + font-style: italic; +} diff --git a/doc/artwork.odg b/doc/artwork.odg new file mode 100755 index 0000000000000000000000000000000000000000..4bd18991633a6de7e1e392112b2338bfdd36052d GIT binary patch literal 9153 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 +
+ <b>Appy documentation</b> - Table of contents + +
+ + {{ doc }} + + diff --git a/doc/gen.html b/doc/gen.html new file mode 100755 index 0000000..85eceed --- /dev/null +++ b/doc/gen.html @@ -0,0 +1,166 @@ + + + An introduction to <b>gen</b> + + + +

What is gen ?

+ +

gen is a code generator that allows you write web applications without having to face and understand the plumbery of a given web framework. gen protects you. Concentrate on functionalities that need to be implemented: gen will fight for you, by itself, against the low-level twisted machineries and will let you evolve in your pure, elegant and minimalistic Python world.

+ +

OK, but concretely, on what technologies is gen built upon?

+ +

gen generates code that will run on Plone 2.5. Soon, the code will also be compatible with the latest Plone version. In my point of view, Plone 2.5 has reached the maximum level of complexity a Python developer may tolerate. Plone 2.5 heavily relies on Zope 2. While Plone 3 still runs on Zope 2, it has become heavily based on Zope 3 through the use of the "Five" product (=Zope 2 + Zope 3), that allows to use Zope 3 functionalities within Zope 2. Some people began to be angry about how complex certain tasks (like creating a portlet) became with Plone 3 (consult this, for instance.) In order to fight against this trend, we decided to create a new code generator (a kind of concurrent to ArchGenXML so) that already makes sense for Plone 2.5 and will be more and more relevant for the current and future Plone versions, as the Plone community took the debatable decision to move to Zope 3.

+ +

Before starting, let's get bored by some (counter-)principles that underlie gen

+ +

If you have strict deadlines, skip this.

+
    +
  • The code-centric approach. Other approaches for generating code like the idea of starting from some abstract vision like a (graphical) model (boxes, arrows, things like that); from it, tools generate code skeletons that need to be completed in a subsequent "development" phase. Such "transformational" approaches (I vaguely know some buzzwords for it: MDA, MDD I think) may even count more than two phases and manipulate different models at different abstraction levels before producing code (I am not joking: I've learned that at the university). Such approaches spread the information in several places, because every model or representation has limited expressivity. It produces redundancy and eventually leads to maintenance problems. It violates the DRY principle, which is closely related to our null-IT principle. On the contrary, gen knows only about code. The "model" you write is a simple Python file or package. Being written in a high-level programming language, it does not constrain your expressivity in any way. More important: this code *is* the running code, and thus the only place where you describe your software. Simply, "wrappers" are added to it in order to plug him into the low-level Plone and Zope machinery. A gen-powered Python program acts like a comedian manipulating a tuned marionette: simple moves from the comedian produce complex, cascading and funny behaviours at the puppet level. Moreover, a code-based approach has the following benefits:
  • +
      +
    • when using a graphical model, you are emprisoned into a poorly expressive notation. Let's take an example. If you express a state machine with a UML state diagram, how will you be able to define another state machine based on the previous one? If you express it with code, it is as simple as using class inheritance. Typically, with appy.gen, you may achieve nice results like workflow inheritance; it is completely impossible with ArchGenXML. Of course, using graphical models for communicating or focusing on some parts of your program may be very valuable; this is why we foresee to implement model generation (class diagrams, statecharts, etc) from a appy.gen application. This is our way to see how to use graphical models: as views generated from the code. We don't believe at all in approaches like generating code from models or round-trip engineering.
    • +
    • when using some centralized code repository like subversion, a UML model, for example, is typically stored as a binary file. So it is impossible to work concurrently on various parts of it; nor is it possible to view who has changed what in it, etc;
    • +
    • factoring similar groups of attributes or doing other intelligent treatment on a graphical model is not possible;
    • +
    • there is no need to write and maintain a model parser (like XMI);
    • +
    • yes, you can use cut-and-paste with any text editor! If you want to do similar things with a model, you will probably need to buy some expensive UML editor;
    • +
    +
  • Violating the model-view-controller pattern (and a lot of other patterns, too). Design patterns are elegant low-level constructs used to overcome the limitations of programming languages (ie statically-typed languages like Java) or frameworks. Using them implies adding classes just for making the plumbery work; it augments code complexity and, again, spreads information at several places. Separating code describing data from code presenting it produces the same problem. appy.gen takes the approach of grouping everything at the same place. For example, information that dictates how a given field will be displayed is part of the field definition. +
  • +
  • All-in-one objects. As a consequence of the two previous bullets, gen objects (which are Plain Old Python Objects: you do not even have to inherit from a base gen class!) are self-sufficient. If you want to understand some (group of) functionality within a well-designed gen Python program, you will not loose yourself walking through an intricate web of Python classes and XML definition files. +
  • +
  • Building complex and shared web applications. While Plone and related tools are mainly targeted at building CMS websites (Content Management Systems = websites whose content may be edited by normal human beings), they provide poor support for those who want to build complex and shared web applications. +
  • +
      +
    • By "complex", I mean real "business applications" (or "information systems", like accounting systems, HR systems or online booking systems) whose interfaces are web interfaces; a "CMS" website being a particular case whose main purpose is to provide information (the website of a city or a company, etc) with some limited degree of interaction with the user. Web business applications are characterized by (1) a rich conceptual model featuring a complex web of inter-related classes. Moreover, such applications also need (2) complex querying and reporting facilities, be it through-the-web or within generated documents. Standard Plone provides little support for both (1) and (2). For instance, the basic reference fields and widgets are embryonic (ie no built-in notion of order among references): creating complex inter-related objects is tedious. Standard Plone does not provide any standard document-generation solution and provides limited through-the-web querying facilities. appy.gen comes with a brand new ordered Reference field/widget that automates a lot of repetitive programming tasks and yields unexpected recurrent visualization possibilities. Through its integration with appy.pod, any gen-powered app is by default ready for document generation. gen also generates paramerized through-the-web views and queries. +
    • +
    • Currently, free software is widespread within the "IT infrastructure" (operating systems, networking components, web servers, application servers...) and contaminates more and more general-purpose software applications, like word processors, spreadsheets or multimedia players. For the most of it, the free movement currently reaches domains where requirements are either perfectly known by the developers themselves, deduced from observing proprietary software or part of some general cultural background. In order to raise freedom at the higher levels of business and innovation, we need new mechanisms allowing to tackle (business-)specific requirements, while maintaining the possibility to spread and share software from one organization to the other. appy.gen was built to cope with this new scale of challenges and proposes a set of built-in constructs for creating generic business kernels implementing common requirements and allowing to tailor it to the specific needs of a given organization. This work results from experience gained from a deep involvement in the PloneGov community, an international group of public administrations developing and sharing free software for their own needs. It also benefits from a close collaboration with several research initiatives (the PRECISE research center and the MoVES project) exploring Software Product Lines Engineering and inventing new ways to manage variability among software systems. +
    • +
    +
+ +

Getting started with gen

+ +

Read only this if you want to run a "Hello world" gen application on your machine. This section is dedicated to Joel, a tremedous application and framework tester that ignores the essence of his gift.

+ +

Note for Windows users

+ +

I've never installed or tested gen on Windows. Feedback is welcome!

+ +

First step: download and install Plone

+ +

You need to get Plone 2.5.5 installed on your system. The simplest way to do it is run the unified installer available here. If a message warns you that the release is not supported anymore, please send a mail to plone.org asking them why the official Plone site still uses a dangerous unsupported Plone version (at this time of writing, December 8th 2008).

+ +

Let's suppose you have Plone, Zope and Python now installed in /opt/Plone-2.5.5. The unifier installed created a ZEO cluster in /opt/Plone-2.5.5/zeocluster. A ZEO cluster is a kind of load balancer that runs in front of several Zope servers, also called Zope "instances" (and also called "ZEO clients" in this context). For developement, a ZEO cluster is not needed; it is preferable to start from a fresh Zope server (from now on I will use the term "Zope instance") that you will install somewhere in your home folder.

+ +

Create a new Zope instance by typing /opt/Plone-2.5.5/Python-2.4.4/bin/python /opt/Plone-2.5.5/bin/mkzopeinstance.py. This is important to run this Python script with the Python interpreter that will run your Zope instance, ie the one installed in /opt/Plone-2.5.5/Python2.4.4. I will suppose you have created it in [myZopeInstance]. You will use the username and password asked by the script for connecting to the Zope instance as administrator. A Zope instance has the following structure: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bincontains the script for starting/stopping the Zope instance. Go to this folder and type ./zopectl fg. It will start Zope in debug mode, in 'foreground' in your shell, by default on port 8080. If you want to start and stop the instance normally, (without being tied to your shell) use ./zopectl start and ./zopectl stop.
etccontains zope.conf, the configuration file of your Zope instance. Every time you modify this file you will need to restart the server. It is well documented; edit this if, for example, you need to change the port on which the instance listens.
ExtensionsI don't care about this.
importI don't care about this.
lib, and more specifically lib/python, is the folder where additional Python packages used by your Zope instance will lie. As gen-applications are standard Python packages, this is the typical place where you will store them.
logcontains the log files of your instance: Z2.log is the web server log (every HTTP request dumps a line into it); event.log contains more relevant, "application-level" information (debug info, warnings, infos, etc). When running the instance in foreground, events dumped in event.log will also show up in your shell.
Productsis the folder where Zope "add-ons" will reside. Although a Zope "product" is also a Python package, it contains additional ugly code that transforms it into a real Zope add-on. For every gen-application that you will create or sim-link in lib/python, gen will create and maintain for you the corresponding Zope Product in Products. There is a 1-1 relationship between a gen-application and the generated Zope product.
varis where Zope stores its database (DB) and related files. Unlike other DB technologies, there is no separate process that controls the DB and that needs to be called by the web/application server for reading or writing into the DB. Here, the Zope instance itself is directly connected to the DB, which is a single file named Data.fs. The DB technology used by Zope is named ZODB (which stands for Zope Object DataBase).
+

But what about Plone, huh? Plone is simply a bunch of Zope Products that add plenty of nice predefined functionalities and pages to Zope which is a bit arid as-is. So let's take a look at the Products folder of your Zope instance. It is empty! For transforming it into a Plone-ready Zope instance, simply copy the Plone products from /opt/Plone-2.5.5/zeocluster/Products. Go to [myZopeInstance]/Products and type cp -R /opt/Plone-2.5.5/zeocluster/Products/* .

+ +

Your Zope instance is now ready-to-use. Start it and go to http://localhost:8080/manage with a web browser. Type the username and password you have entered while creating the instance and you will arrive in the ZMI (the Zope Management Interface). You may see the ZMI as a database viewer that shows you the content of Data.fs. You may also see it as an admin interface allowing you to trigger administrative functions. Because the ZODB is an object-oriented database, both visions are merged: functions and data are bundled into objects that are organized into a hierarchy (and more). The figure below shows the ZMI.

+ +

+ +

You will notice that an empty Zope database still contains some predefined objects and folders: a "control panel", a folder (acl_users) where users are stored (it contains currently only one user), a web page "index_html" that is shown if you go to http://localhost:8080, etc. Everything is an object there, even the main error_log which is a nice way to browse through-the-web the log entries also dumped on the file system in [myZopeInstance]/log/event.log.

+ +

A Plone site is simply one more object to create within the Zope hierarchy of objects. In the ZMI, select, in the listbox at the right-top corner, "Plone site" and click on the "Add" button. Choose "Appy" as Id and "Hello world" as Title and click on "Add Plone Site". You have now created a Plone site! If you want to access a given object through-the-web, you simply have to type the "path" of the object within the Zope hierarchy. So now, go to http://localhost:8080/Appy and you will see the main page of your Plone site, like shown below.

+ +

+ +

Second step: download and install Appy

+ +

The underlying technologies required by gen are now up-and-running. Let's install gen. gen is a simple Python package available as a zip file (and more) here. For example, you may unzip it in [myZopeInstance]/lib/python or in /opt/Plone-2.5.5/Python-2.4.4/lib/python2.4/site-packages. If you put it in the latter place, it will be enabled for all future Zope instances you may use or create (including the ZEO cluster in /opt/Plone-2.5.5/zeocluster).

+ +

Third step: develop the "Hello world" application

+ +

We are ready to create our first gen-application. Imagine we are a software company that creates components using Zope 3. The company is a start-up, but after a few months, it has already developed hundreds of Zope 3 components (indeed, every single web page is considered a component). The company decides to create a simple tool for managing those small pieces of code. Let's create a simple gen-application for this, in a file named ZopeComponent.py:

+ +

+ 01 from appy.gen import *
+ 02 
+ 03 class ZopeComponent:
+ 04   root = True
+ 05   description = String()
+ 06   technicalDescription = String(format=String.XHTML)
+ 07   status = String(validator=['underDevelopement', 'stillSomeWorkToPerform',
+ 08     'weAreAlmostFinished', 'alphaReleaseIsBugged', 'whereIsTheClient'])
+ 09   funeralDate = Date()
+

+ +

9 lines of code (with a blank one; please note that I'm obsessed by lines that do not span more than 80 characters): yes, you are done. Every Zope component will be described by this bunch of attributes. Specifying the class as root makes it a class of special importance to gen; it will be treated with some honors. We will see how in a moment.

+ +

Fourth step: generate the Zope/Plone product

+ +

Please put ZopeComponent.py in [myZopeInstance]/lib/python, cd into this folder and type the following line.

+ +

python [whereYouInstalledAppy]/appy/gen/generator.py ZopeComponent.py plone25 ../../Products

+ +

You will get an output similar to this:

+ +

+ Generating product in /home/gde/ZopeInstance2/Products...
+ Generating class ZopeComponent.ZopeComponent...
+ Done.
+

+ +

If you are familiar with Zope/Plone products, you may take a look to the one gen has generated in [myZopeInstance]/Products/ZopeComponent.

+ +

Fifth step: admire the result

+ +

Restart your Zope instance, go to http://localhost:8080/Appy, log in with your Zope admin password and click on the link "site setup" in the top-right corner: you arrive in the Plone configuration panel. Click on "Add/Remove products". Among the "products available for install" you will find ZopeComponent:select it and install it. Right. Click now on the Plone logo to come back to the main page, and see what's new. On the left, you see a new "portlet" entitled "zope component": this is the main entry point for your application. gen generates a portlet for every gen-application. The link "Zope component" allows you to access a kind of "dashboard" displaying all Zope components. The page is empty for the moment: no component was created yet:

+ +

+ +

Click on the "plus" sign for creating your first Zope component. A form allows you to enter information according to your Python class definition in ZopeComponent.py.

+ +

+ +

Note that the order of the widgets correspond to the order of the fields in the Python class definition. Clicking on "Save" creates your first Zope 3 component, and brings you to the "view" page for your component. Clicking again on the portlet link will show you this:

+ +

+ +

On this screen, every Python class you declare as "root" in your gen-application will get a tab allowing you to view instances of this class or add new ones. If you've defined more than one root class, a global tab will precede all others and display all instances of all root classes. Table columns are all sortable; they also contain special fields used for filtering rows according to type entered. Actions the user may trigger on Zope components are available in the last column. Clicking on the component title will bring you back to the "view" page for it.

+ +

Besides the view/edit pages and this dashboard, gen also generates a configuration panel for your application. It is directly accessible through the portlet by clicking on the hammer.

+ +

+ +

This configuration panel is called a "tool". By default, the ZopeComponent tool defines one "flavour" named "ZopeComponent". A flavour is a particular set of configuration options that may apply only to a subset of your application objects. The concept of flavour allows you to get, in a single web application, several variants of it running concurrently, all with distinct configuration options. If, for example, you create a software for managing the agenda and decisions of a company's meetings, you may need to create one flavour for each meeting type (IT department meetings, HR department meetings, board of directors, etc): every meeting type will get its own configuration options. In the application portlet, one link is created for every flavour defined in the tool. If you have only one flavour, it makes sense to rename it with something like "All components". You may do it by clicking on the pen besides the flavour name. This way, the application portlet will look like this:

+ +

+ +

A the tool level, some general configuration options are defined (they apply to all defined flavours), like the way Plone will contact OpenOffice in server mode for producing documents (document-generation through appy.pod is built-in for every gen-app) or the number of elements to display per page on the dashboard. If you click on the flavour title, you will discover some configuration options that you may customize at the flavour level (the whole set of options in the flavour depends on options specified in your Python classes). For example, clicking on the pen within the "user interface" tab allows you to customize the columns shown in the dashboard for objects corresponding to this flavour. Select one or more columns here (keep the "control" key pressed if you want to select several columns), save the result and see how the dashboard evolves accordingly.

+ + diff --git a/doc/genCreatingAdvancedClasses.html b/doc/genCreatingAdvancedClasses.html new file mode 100755 index 0000000..14cc3ac --- /dev/null +++ b/doc/genCreatingAdvancedClasses.html @@ -0,0 +1,1098 @@ + + + <b>gen</b> - Creating advanced classes + + + +

Class inheritance

+ +

A gen-class may inherit from another gen-class. Suppose you work as director of human resources in a company and you need to measure employee productivity. Incredible but true: you are also a Python programmer. So you start developing a small application for managing employees. Although you are a director, you have reached a high level of wisdom (maybe due to the fact that you program in Python). So you know that there are two kinds of employees: those that work and those that don't. You decide to create 2 different classes to reflect this:

+ +

+ class Person:
+   root = True
+   title = String(show=False)
+   firstName = String()
+   name = String()
+   def onEdit(self, created):
+     self.title = self.firstName + ' ' + self.name
+
+ class Worker(Person):
+   root = True
+   productivity = Integer()
+

+ +

Indeed, evaluating productivity on persons that do not work has no sense. Because both Persons and Workers are specified with root=True, they become key concepts and you can create instances of both classes through the dashboard:

+ +

+ +

The "edit" view for creating a person looks like this:

+ +

+ +

The "edit" view for creating a worker looks like this:

+ +

+ +

After a while, you become anxious about having 95% of the data in your database (=Person instances) serving absolutely no purpose. Logically, you decide to register the hair color for every non-worker. You realize that you need to change your model to be able to do this:

+ +

+ class Person:
+   abstract = True
+   title = String(show=False)
+   firstName = String()
+   name = String()
+   def onEdit(self, created):
+     self.title = self.firstName + ' ' + self.name
+
+ class Worker(Person):
+   root = True
+   productivity = Integer()
+
+ class Parasite(Person):
+   root = True
+   hairColor= String()
+

+ +

With this new model, class Person serves the single purpose of defining fields which are common to Workers and Parasites. It has no sense to create Person instances anymore, so it becomes abstract. Specifying classes as abstract is as simple as adding abstract=True in the class definition. There is no specific Python construct for declaring classes as abstract. With this new model, the dashboard evolves:

+ +

+ +

While the "edit" view is left untouched for workers, it evolves for parasites:

+ +

+ +

After a while, you become so excited about encoding hair colors that you would like to encode it even before encoding a parasite's name and first name. You have noticed that with gen, order of fields within the "edit" and "consult" views follows order of field declarations in the corresponding gen-classes; furthermore, fields defined in child classes appear after the fields defined in parent classes. Fortunately, the "move" parameter allows to change this default setting. Changing the Parasite class this way produces the desired result:

+ +

+ class Parasite(Person):
+   root = True
+   hairColor= String(move=-2)
+

+ +

+ +

Special methods

+ +

When defining a gen-class, some method names are reserved. Until now, we have already encountered the method onEdit, like in this example:

+ +

+ class Person:
+   abstract = True
+   title = String(show=False)
+   firstName = String()
+   name = String()
+   def onEdit(self, created):
+     self.title = self.firstName + ' ' + self.name
+

+ +

This method is called by gen every time an instance of Person is created (be it through-the-web or through code --yes, at present we have only created instances through-the-web; it is also possible to do it through code like explained below) or modified. Besides the self parameter (which is the newly created or modified instance), the method has one boolean parameter, created. When an object is newly created, created=True. When the object is modified, created=False. Note that the method is not called when an object is modified through code (else it could lead to infinite recursion). In the example, the title of a person is updated from its name and first name every time it is created or modified.

+ +

Another special method is named validate. While the field-specific validators are used for validating field values individually, the validate method allows to perform "inter-field" validation when all individual field validations have succeeded. Consider this extension of class Parasite:

+ +

+ class Parasite(Person):
+   root = True
+   hairColor= String(move=-2)
+   def validate(self, new, errors):
+     if (new.hairColor == 'flashy') and (new.firstName == 'Gerard'):
+       errors.hairColor = True
+       errors.firstName = "Flashy Gerards are disgusting."
+

+ +

Besides the self parameter, the validate method has 2 parameters: new is an object containing new values entered by the user for every visible field of the currently displayed page; errors is an empty object waiting for your action. Every time you consider that a field has not the right value, feel free to add, to the errors object, a new attribute whose name is the name of the erroneous field and whose value is either a text message or simply a boolean value. In the latter case, gen will render the standard error message for that field (more about error messages below). In the above example, you, as a director, felt that people whose first name is Gerard and whose hair color is too flashy are simply not allowed to work in your company. Trying to encode such a disgusting person would lead to this screen:

+ +

+ +

By the way, I have changed class Person such that the field name is now mandatory (name = String(multiplicity=(1,1))). So I can show you now that inter-field validation is only triggered when all individual field validations succeed. Check what happens if you don't give Gerard a name:

+ +

+ +

The validate method didn't come into play (yet...).

+ +

Integration with pod

+ +

pod (Python Open Document) is another component that is part of the Appy framework. It allows to produce documents from data available to Python code. Guess what? gen is tightly integrated with pod! Until now, gen allows us to produce "web" (edit and consult) views from gen-classes. Through pod, we will now create "document" views from gen-classes, like ODT, PDF, Doc or RTF documents.

+ +

Let's begin with the "hello world" pod-gen integration. Suppose you want to produce a document from a given gen-class, let's say the class Person. In this class, simply add the declaration pod=True. Re-generate your product, re-install it through Plone (Site setup) and go the configuration panel for your application. Go to the default flavour: a new tab "document generation" has been added:

+ +

+ +

Now, create this beautiful document with your favorite word processor and save it as "helloWorld.odt":

+ +

+ +

self.title must be typed while the word processor is in mode "record changes". Now, go back to your browser and click on the "plus" icon for associating the POD template you just created to the class Person:

+ +

+ +

Save this and go to the consult view of a Person. In the example below, I am on the consult view of a worker:

+ +

+ +

The list of available documents one may generate from this person are visible in the top-right corner of the consult view. Here, only one document may be generated: "Secret file". Click on it and you will get this file:

+ +

+ +

You have noticed that a class inherits from POD templates defined in its parents: the "Secret file" template was defined for class Person and is available for Worker and Parasite instances. Let's add another POD template that we will build specifically for parasites. First, add pod=True in the class Parasite. Please add also another field to parasites (a String in XHTML format): it will allow to illustrate how to render such a field in a document. So add this line to class Parasite:

+ +

sordidGossips = String(format = String.XHTML)

+ +

Now, please create this parasite:

+ +

+ +

Create this POD template and associate it to class Parasite in the default flavour:

+ +

+ +

With OpenOffice, create a note by selecting Insert->Note in the menu. The "document generation" tab in the flavour should now look like this:

+ +

+ +

From any parasite, it is now possible to generate 2 documents:

+ +

+ +

Clicking on "gossips" wil produce this file:

+ +

+ +

Exhaustive documentation about writing POD templates may be found on this site (start here). You have noticed that the set of POD templates associated to a given class is specific to a given flavour. Although a POD template is associated to a class, the POD template may render a lot of information coming from a complex web of interrelated objects. Indeed, the object that is referred to as self in the POD template is only a starting point. Our example doesn't allow to illustrate this because we have a single class which has no Ref fields. That said, in the future we will also provide the possibility to define POD templates for rendering dashboard views. The starting point here will not be a single instance but the list of objects that is currently displayed in the dashboard.

+ +

What you need to know when using pod with gen is the exact pod context (ie the set of Python objects, variables, modules, etc) that is given by gen to your pod template. The table below presents all entries included in it.

+ + + + + + + + + + + + + + + + + + + + + + +
EntryDescription
selfThe object that is the starting point for this template.
userThe user that is currently logged in. Its id is given by user.id.
podTemplateThe POD template (object) that is currently rendered. Attributes of a POD template are: title, description, podTemplate (= the file descriptor to the corresponding ODT POD template), podFormat (the output format, a string that may be odt, pdf, doc or rtf). +
projectFolder  A string containing the absolute path of the folder where your gen-application resides on disk. If your gen-application is a folder hierarchy, projectFolder is the root folder of it.
+ +

In the previous examples, we have always rendered documents in Odt format. When generating ODT, gen and pod do not need any other piece of software. If you configure a template for generating documents in Adobe PDF (Pdf), Rich Text Format (Rtf) or Microsoft Word (Doc), you will need to run OpenOffice in server mode. Indeed, for producing any of these formats, pod will generate, from your POD template, an ODT file and will ask OpenOffice to convert it into PDF, DOC or RTF. Suppose you modify the ODT template named "Gossips" for producing documents in PDF instead of ODT (in the config, default flavour, tab "document generation", edit the template named "gossips" and choose "Pdf" as "Pod format"). If now you go back to the consult view for a parasite, the PDF icon will show up for the template "Gossips":

+ +

+ +

If you click now on "Gossips", gen will produce an error page because he can't connect to OpenOffice. Please run it now as explained here (section "Launching OpenOffice in server mode"). If now you retry to generate gossips, you will probably have an error again. Why? 2 main causes: (1) The Python interpreter that runs your Zope and Plone does not include the OpenOffice connectors (="UNO"); (2) You did not run OpenOffice on port 2002 which is the port configured by default in any gen-application. For solving both problems, any configuration panel of any gen-application allows you to configure 2 parameters. In the portlet of your gen-application, click on the hammer and then on the pen that lies besides the title of the application:

+ +

+ +

In this example, the Python interpreter that runs my Zope is not UNO-compliant. So I have specified, in parameter "Uno enabled python", the path of such an interpreter. My machine runs Ubuntu: the interpreter installed at /usr/bin/python is UNO-enabled. If you don't have Ubuntu, the simplest way is to specify the path to the UNO-enabled Python interpreter that ships with OpenOffice. When clicking on "Save", if the specified path does not correspond to an UNO-enabled Python interpreter, you will get a validation error. Change the OpenOffice port if necessary; now, when trying to get PDF gossips it should work.

+ +

Until now, we have uploaded POD templates in the configuration panel (for a given flavour). It is also possible to specify "file-system" POD templates through code. In fact, it is even the default behaviour. When declaring a class with pod=True, when (re-)installing the application, gen will check on the file system if a POD template exists for this class. If yes, it will already load it. If no, it simply proposes a non-filled widget in the flavour that will allow you to upload POD templates through-the-web (this is what happened in our examples so far). Suppose that the class Parasite lies in /home/gde/ZopeInstance1/lib/python/ZopeComponent.py. Move your file gossips.odt to /home/gde/ZopeInstance1/lib/python/Parasite.odt. In the flavour, remove the existing ODT template named "Gossips" for class Parasite. Now, reinstall you gen-application. In the same folder as where class Parasite is defined on the file system, gen finds a file named <class_name>.odt (<class_name> being Parasite in this case.) So it will load the corresponding template (for every flavour defined in your gen-application). Now, if you go back to your flavour (tab "document generation"), you will find an ODT template named "Parasite":

+ +

+ +

Instead of writing pod=True, you may define a list of names. Remove again the POD template named "Parasite" from the flavour. Then, on the file system, move Parasite.odt to SordidGossips.odt and copy it also to MoreGossips.odt in the same folder. Then, in class Parasite, replace pod=True with pod=['SordidGossips', 'MoreGossips']. Re-generate your Plone product, restart Zope and re-install your gen-application. Now go back to your flavour (tab "document generation"), you should get this:

+ +

+ +

When POD templates are loaded from code, only minimalistic information is available for getting the corresponding POD template objects in the flavour: fields title and podTemplate (=the ODT file) are filled, but field description is empty and field podFormat is always Odt. Although you may now modify all those data through-the-web, in the future gen will allow you to write things like pod=[PodTemplate('SordidGossips', format='odt', description='blabla'...),...]. Moreover, new fields will be added to the POD template object in the flavour: a condition and a permission for restricting document generation from an ODT template to some users or under some circumstances; the possibility to define a "freeze event" (when this event occurs --typically a workflow transition--, the generated document is written in the Plone database and subsequent clicks do not compute a new document but simply download the frozen one), etc.

+ +

View layouts into pages and groups

+ +

We already know that for each gen-class, gen creates the web "consult" and "edit" views. We also know from the page "Creating basic classes", that both views may be splitted into several pages if the number of widgets becomes too large; on every page, widgets may lie together into groups. It can be accomplished through attributes page and group that one may define on class attributes.

+ +

By default, all widgets are rendered on both edit and consult views on a single page which is named main (main is the default value for parameter page). The default value for parameter group is None: by default, a widget is not rendered into a group but simply added at the end of the current page.

+ +

Let's consider the following example. It is an improved version of the Human Resources software developed by yourself several minutes ago (see above). I have added more fields in order to illustrate how to layout fields into pages and groups.

+ +

+ class Person:
+   abstract = True
+   pod = True
+   title = String(show=False)
+   n = 'name_3'
+   firstName = String(group=n, width=15)
+   middleInitial = String(group=n, width=3)
+   name = String(multiplicity=(1,1), group=n, width=30)
+   contractDetails = String(format=String.XHTML)
+   cia = {'page': 'contactInformation', 'group': 'address_2'}
+   street = String(**cia)
+   number = Integer(**cia)
+   country = String(**cia)
+   zipCode = Integer(**cia)
+   cio = {'page': 'contactInformation', 'group': 'numbers_3', 'width': 20}
+   phoneNumber = String(**cio)
+   faxNumber = String(**cio)
+   mobilePhone = String(**cio)
+   workPhoneNumber = String(**cio)
+   workFaxNumber = String(**cio)
+   workMobilePhone = String(**cio)
+   def onEdit(self, created):
+     self.title = self.firstName + ' ' + self.name
+
+ class Worker(Person):
+   root = True
+   productivity = Integer()
+
+ class Parasite(Person):
+   root = True
+   pod = ['SordidGossips', 'MoreGossips']
+   hairColor = String(group='hairyCharacteristics')
+   sordidGossips = String(format = String.XHTML, page='Gossips')
+   parasiteIndex = String(validator=['low', 'medium', 'high'],
+     page='contactInformation', group='numbers')
+   avoidAnyPhysicalContact = Boolean(page='contactInformation')
+   def validate(self, new, errors):
+     if (new.hairColor == 'flashy') and (new.firstName == 'Gerard'):
+       errors.hairColor = True
+       errors.firstName = "Flashy Gerards are disgusting."
+

+ +

Oufti! Let's give some explanations about this bunch of lines. Attributes firstName, middleInitial and name of class Person are in group name which will be rendered as a table having 3 columns because of the trailing _3 of n = 'name_3'. For those fields, no page was specified; they will be rendered on the first (=main) page. When defining several widgets in a group, the shortest way to write it is to define a dictionary (like cia or cio) containing common parameters (page and group) and use it with the ** prefix that "converts" it into parameters (like for attributes street, number, etc).

+ +

Based on this new definition, the "consult" view for a worker looks like this (main tab):

+ +

+ +

The page "contact information" is here:

+ +

+ +

Changing the layout is as simple as changing some details into your class, re-generating and restarting Zope. For example, try to render group "numbers" in 2 columns instead of 3:

+ +

+ +

Better ! The "edit" view renders the widgets in the same way, but uses their "editable" version instead. Here is the main page:

+ +

+ +

Moreover, buttons "next" and "back" are displayed when relevant. Here is the page "contact information" from the "edit" view:

+ +

+ +

Now, for displaying parasites, we can of course reuse some pages and groups from the parent class Person and potentially add new pages and/or groups. In our example, attribute hairColor was added to the main page, in a new group named hairyCharacteristics:

+ +

+ +

Attribute sordidGossips was put in a page that does not exist for workers:

+ +

+ +

Attribute parasiteIndex was put in an existing group of an existing page, while avoidAnyPhysicalContact was added to the end of an existing page outside any group:

+ +

+ +

Tip: try to avoid performing inter-field validation on fields that are not on the same page.

+ +

In the future, gen will provide specific Page and Group class descriptors that will allow to go further into the layout customization. For example, you will be able to write things like hairColor = String(group=Group('hairyCharacteristics', columns=['50%', '25%', '25%'])).

+ +

The configuration panel (=Tool) and its flavours

+ +

In the introductory page about gen, we have already introduced the tool and its flavours that are available in any gen-application; at several other places we have also described features involving them. In this section, we will go one step further and describe the tool and its flavours in a more systematic way (or at least give pointers to explanations given in other places).

+ +

We will use a gen-application named ZopeComponent.py, which contains the ZopeComponent class as defined in this page, augmented with classes Person, Worker and Parasite as defined above. Here is the portlet for this gen-application:

+ +

+ +

When clicking on the hammer, you are redirected to the main page of the configuration panel (we will say "tool" in the remainder of this page):

+ +

+ +

Before talking about flavours, let's explain the parameters that are directly visible in this page. Those parameters apply throughout your whole gen-application (for all flavours). Parameters in group "Connection to Open Office" are used for connecting Plone to OpenOffice in server mode for producing documents from gen-applications in PDF, DOC or RTF. This is already described here. The "number of results per page" is the maximum number of objects that are displayed on any dashboard page. Set this number to "4" (click on the pen besides "ZopeComponent"). Then, go back to the Plone main page (by clicking on the blue tab named "home", for example) and click on the link in the application portlet. If you created more than 4 objects, you will get a screen like this one:

+ +

+ +

An additional banner in the bottom of the page allows to browse the next/previous objects. Finally, the boolean parameter "Show workflow comment field" allows to display or not a field allowing you to introduce a comment every time you trigger a workflow transition on an object. Workflows and security are covered in more detail in the next page. When enabled (which is the default), on every main page (consult view) of every object you will get a field besides the buttons for triggering transitions, like this:

+ +

+ +

Clicking on any of these buttons will trigger a transition on the object; if you have entered a comment in the field it will be stored as comment for the transition.

+ +

Let's come back to the flavours. As already explained, the tool defines a series of flavours. Every flavour is a given set of configuration options that will apply to a subset of all objects in your application. In order to illustrate this, let's create a second flavour by clicking on the "plus" icon. Name it "Free components":

+ +

+ +

Rename the first flavour "Proprietary components" to get this:

+ +

+ +

The portlet was updated accordingly:

+ +

+ +

Clicking on "Free components" will retrieve no object at all:

+ +

+ +

Indeed, all objects created so far were created for the flavour renamed "Proprietary components". Before entering into the details of flavours, you need to get a more precise explanation about the "dashboard". As you can see from the previous screenshot, the dashboard proposes one "tab" for every "root" class (defined with root=True, more info here) and one tab (named "consult all" by default) for consulting all instances of all root classes. Clicking on the tab of a given root class displays all instances of this class; clicking on the "plus icon" related to this tab brings you to a form that will allow you to create a new instance of this class. Any dashboard page displays a table that contains one row per object. All those tables have at least 2 columns: title (object title is also called "name") and "actions" (this column presents actions that one may perform on objects (edit, delete, etc). The example below shows the dashbord page for zope components:

+ +

+ +

The dashboard page "consult all" contains one more column containing the type or class the object belongs to:

+ +

+ +

Now let's talk about flavours. Indeed, within a given flavour (in tab "user interface"), you may add new columns to dashboard pages. In this tab, for every root class, a listbox allows you to choose zero, one or more class attributes (this list contains an additional special attribute which represents workflow state) for displaying them into the dashboard. In flavour "Proprietary software", go to the "edit" view of this tab, select the values as shown below (keep the "control" key pressed for selecting multiple values) and click on "save":

+ +

+ +

Now, check how dashboard pages have evolved. For example, the dashboard for Zope components looks like this now:

+ +

+ +

This change only impacts a given flavour. If you create a Zope component among "Free components", you will get the default dashboard page:

+ +

+ +

When using additional columns this way, the "consult all" tab may also evolve. In fact, if an attribute with a given name is selected as dashboard column for every root class, it will also appear in the tab "consult all". This can be useful when root classes all inherit from a parent class for example.

+ +

Every flavour also contains a tab "document generation". A detailed explanation about this tab can be found here, so I will not explain it further in this section.

+ +

parameter optional

+ +

When introducing parameters common to all fields (check here), we have introduced field optional. When a field is defined as optional, it may or not be used from flavour to flavour. Let's take an example. Please modify class ZopeComponent and add parameter optional=True to attributes status and funeralDate. Re-generate your application, restart Zope and re-install the corresponding Plone product. Now, in every flavour, you have the possibility to use or not those fields. Go for example to flavour "Free components". A new tab "data" appears (it groups all parameters that customize the conceptual model behind your application). Edit this tab and select both fields:

+ +

+ +

In flavour "Proprietary components", do the same but select only field "status".

+ +

In flavour "Free components", for every Zope component, both fields appear (on the "edit" and "consult" views). Here is the consult view, for example:

+ +

+ +

In flavour "Proprietary components", for every Zope component, the field funeralDate does not appear anymore. Here is the edit view, for example:

+ +

+ +

Making fields optional or not has no impact in the Zope database. All fields are always present, but simply hidden in all views if optional=False. It means that you may easily change your mind and decide at any time to start using a optional field for a given flavour.

+ +

parameter editDefault

+ +

When introducing parameters common to all fields (check here), we have introduced field editDefault. In a lot of situations, we need default values for fields. But in some cases, instead of "hard-coding" the default value (in the Python code) it is preferable to have the possibility to modify this default value throug-the-web. This will happen with gen, on a per-flavour basis, for every field declared with editDefault=True: a new widget will appear in every flavour for editing the default value.

+ +

Let's illustrate this with an example. For class ZopeComponent, add parameter editDefault=True to attributes description and status. Re-generate your application, restart Zope and re-install the corresponding Plone product. Now, in every flavour (tab "data"), widgets were added. Go for example to flavour "Free components" and edit this tab this way:

+ +

+ +

If you try to create a new Zope component in flavour "Free components" you will get this "pre-filled" form:

+ +

+ +

Customizing the Tool and its flavours

+ +

Until now, we have seen all Tool and Flavour attributes managed by gen itself. If you want to add your own attributes, you can also do it. This way, the Tool and its flavours may become the unique configuration panel for your whole application. Beyond some simple configuration options that one may edit through-the-web, one interesting use case justifying tool and flavour customization is the definition, through Ref attributes added to your custom Tool or Flavour, of some "global" objects, typically controlled by a limited number of power-users, that are referred to by user-defined, "root-class-like" objects.

+ +

Let's illustrate it first by defining a custom Tool. We will use our ZopeComponent example. Suppose that the company that creates those components is organized into bunches of geeks. Every component is developed under the responsibility of a bunch. We first need a class for defining bunches:

+ +

+ class BunchOfGeek:
+   description = String(format=String.TEXT)
+

+ +

Creating a custom tool is as simple as inheriting from class appy.gen.Tool:

+ +

+ class ZopeComponentTool(Tool):
+   someUsefulConfigurationOption = String()
+   bunchesOfGeeks = Ref(BunchOfGeek, multiplicity=(0,None), add=True,
+     link=False, back=Ref(attribute='backToTool'),
+     shownInfo=('description',))
+

+ +

In this tool, I have created a dummy attribute for storing some configuration option as a String, and a Ref attribute that will, at the Tool level, maintain all bunches defined in our company.

+ +

Now please modify class ZopeComponent by adding a Ref attribute that will allow to assign the component to a given bunch:

+ +

+   responsibleBunch = Ref(BunchOfGeek, multiplicity=(1,1), add=False,
+     link=True, back=Ref(attribute='components'))
+

+ +

Pshhhhhhhhhh! 9 new lines of code, my synapses are melting. Again: re-generate, re-start Zope and re-install the Plone product. Then, go to the Tool: our 2 new attributes are there!

+ +

+ +

Create a bunch of bunches of geeks:

+ +

+ +

Now, go to the dashboard for flavour "Proprietary components" and edit a given Zope component. In the edit view, a new field allows you to select the responsible bunch. You can choose among your 3 bunches.

+ +

+ +

Now, go to flavour "Free components" and try to edit a given Zope component. Aaargh! For field "responsible bunch" the selection box is empty! Why? Remember that flavours are a way to partition your application objects into independent sets, each one having its own configuration. But what about instances of BunchOfGeek? To what set do they belong? You have found the answer: all objects you define at the Tool level (through Ref attributes) belong to the "set" defined by the first flavour that gen creates when your gen-application comes to life. It means that bunches of geeks should be defined at the flavour level and not at the tool level. In a lot of situations, though, you will have a single flavour; in this case, all your global objects may reside at the Tool level.

+ +

We will now transform our example in order to define bunches of geeks at the flavour level. First, delete from your tool the 3 bunches you have created. Then, move attribute bunchesOfGeeks from your custom tool to a new custom Flavour:

+ +

+ class ZopeComponentTool(Tool):
+   someUsefulConfigurationOption = String()
+
+ class ZopeComponentFlavour(Flavour):
+   anIntegerOption = Integer()
+   bunchesOfGeeks = Ref(BunchOfGeek, multiplicity=(0,None), add=True,
+     link=False, back=Ref(attribute='backToTool'),
+     shownInfo=('description',), page='data')
+

+ +

Notice an additional small change: within the flavour, the attribute will be present in page data, which is one of the default flavour pages. Re-generate, blablah... Then, this page for every Flavour will look like this:

+ +

+ +

Now, let's create 2 bunches for every flavour. Create or edit a Zope component within flavour "Free components". Field "Responsible bunch" will only be filled with the ones you have created within this flavour.

+ +

As you may have noticed, the default Tool class defines only one page (the main page). Feel free to add pages to your custom tool. The default Flavour class defines the following pages; within your custom flavour, you may either add fields to those existing pages (like in the previous example) or add your own pages.

+ + + + + + + + + + + + + + + + + + + + + + +
Page nameDescription
mainBy default, the main Flavour page (corresponding to the left-most tab) only shows the Flavour name and a link to go back to the Tool.
documentGeneration  All stuff tied to generation of documents from POD templates.
dataConfiguration options related to the conceptual model behind your application. Usage of optional fields or default editable values are configured through this page for example.
userInterfaceConfiguration options related to the way your gen-application looks. Columns displayed in the dashboards are configured here for example.
+ +

When defining fields on custom tools and flavours, some parameters have no sense. This is the case for all parameters enabling "configurability", like editDefault, optional, etc: you can't meta-configure (=configure the configuration). If you try to use those parameters on fields defined on custom tools and flavour they will be ignored by gen.

+ +

Now that we know everything about tools and flavours, we may give more precisions about object storage, first introduced in the previous page. The tool for your application, be it customized or not, corresponds to a Zope object that lies directly within the object corresponding to your Plone site. You may see it from the ZMI:

+ +

+ +

The name of the Tool object is based on your application name. Here, within the Plone Appy site, the tool corresponding to the application named ZopeComponent is called (=has id) portal_zopecomponent. Furthermore, you see that flavours are folders contained within the tool. Every object created through Ref fields associated to a tool or flavour will be stored within the folder that corresponds to this tool or flavour. For example, you may verify that bunches of geeks are stored within their corresponding flavour.

+ +

Manipulating objects from code

+ +

Until now, we have already encountered several places where we manipulate objects from code (ie within an onEdit method) or from POD templates, for, i.e., getting or setting field values. You deserve more explanations about those objects. The truth is: they are not real instances of the classes you define in your application. Why?

+ +

"Real" objects are created and managed by Zope (remember: we use Zope as underlying framework). But those objects are complex and squeezed, their interface is ugly and contains an incredible number of methods inherited from dozens of Zope classes. Yes, I know, I am responsible for the choice of Zope for Appy. Understand me: Zope already implements a lot of interesting things like security. In order to preserve Appy developers from Zope complexity I decided to create some nice, simple, minimalistic wrappers around Zope objects. When you manipulate objects, the truth is that you manipulate instances of those wrappers.

+ +

The nice news about wrapper classes is that they inherit from your gen-classes. So you are always able to use on objects/wrappers the methods you have defined in your classes. But they also inherit from a wrapper class that inherits itself from other wrappers (like wrappers corresponding to parent classes of your gen-class if relevant) and ultimately from an abstract root AbstractWrapper class. If you are curious, you may consult all wrapper definitions which are generated in [yourZopeInstance]/Products/[yourApplicatonName]/Extensions/appyWrappers.py.

+ +

This "wrapper mechanism" abstracts the Appy developer from the underlying technology. It means that gen could potentially run with other Python-based frameworks than Zope/Plone. The gen architecture is ready for integrating other code generators; but for the moment, only one generator has been written (the Plone generator).

+ +

Pragmatically, what you need to know is the following. For every Appy field defined in a gen-class, the corresponding wrapper class contains a Python property (more info here) that has the same name, for which a getter function is defined. Every time you write a thing like:

+ +

self.bunchesOfGeeks

+ +

The getter function is triggered behind the scenes and queries the real Zope object for getting the expected result. After it, the function may potentialy adapt the result before giving it to you. In this example, every "Zope" bunch of geeks is wrapped and you get a list of BunchOfGeek wrappers. This way, you always manipulate wrappers and you may forget everything about the cruel Zope world.

+ +

Doing the same thing on a Computed field will trigger the machinery you have defined for computing the field; you will simply get the result!

+ +

For setting field values on Zope objects, wrappers override the standard Python method __setattr__ (more info here; it did not work by defining a setter through on the Python property). Again, when writing things like

+ +

self.title = self.firstName + ' ' + self.name

+ +

field title of the corresponding Zope object is updated through a real, behind-the-scenes call to the corresponding Zope method.

+ +

If you are an experienced Zope developer and you feel nostalgic about manipulating real Zope objects, or if you believe that in some situations the wrapping mechanism may constitute a potential performance problem, Appy still allows you to manipulate real Zope objects directly. Suppose self represents a wrapper; writing

+ +

self.o + +

gives you the real Zope object. In these pages I will not document Zope objects because I am in the process of trying to forget everything about them.

+ +

Beyond getters and setters, Appy wrappers give you plenty of nice attributes and methods for manipulating your objects. The following table shows you available attributes (or Python properties).

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
field namewritable?description
toolNoFrom any wrapper, you may access the application tool through this property.
sessionYesGives you access to the Zope "session" object. By "writable" I mean you may put things into it (this is a dict-like object), but don't try to replace this object with anything else.
typeNameNoGives you a string containing the name of the gen-class tied to this object.
idNoThe id of the underlying Zope object.
stateNoThe current workflow state of the object (as a string value).
stateLabel  NoThe translated label of the current workflow state.
klassNoThe Python class (=gen-class) related to this class. Indeed, because the instances you manipulate in the code inherit from special wrappers, writing self.__class__ will give you a wrapper class. So write self.klass instead.
+ +

The following table shows you available methods.

+ + + + + + + + + + + + + + + + + +
method nameparametersdescription
createfieldName, **kwargsCreates a new object and links it to this one through Ref field having name fieldName. Remaining parameters **kwargs are used for initialising fields of the newly created object. Here is an example, inspired from the one described above. Suppose that, in every flavour, a bunch of geeks called "Escadron de la mort" must absolutely be present: it includes the best geeks that you use for debugging the most critical Zope components. So every time you create or edit a flavour, you need to ensure that this bunch is there. If not, you will create it automatically. Code for class ZopeComponentFlavour must evolve this way: +

+ class ZopeComponentFlavour(Flavour):
+   anIntegerOption = Integer()
+   bunchesOfGeeks = Ref(BunchOfGeek, multiplicity=(0,None), add=True,
+     link=False, back=Ref(attribute='backToTool'),
+     shownInfo=('description',), page='data')
+   def onEdit(self, created):
+     if 'Escadron de la mort' not in [b.title for b in self.bunchesOfGeeks]:
+       self.create('bunchesOfGeeks', title='Escadron de la mort',
+         description='I want those guys everywhere!')
+

+ The create method creates the bunch, and appends it to the existing bunches (if any): it does not remove the existing bunches. The create method returns the newly created object. In this example I don't need it so I don't put the method result into some variable. +
linkfieldName, objLinks the existing object obj to the current one through Ref field fieldName. Already linked objects are not unlinked. This method is used by method create but may also be used independently.
+ +

For setting Ref fields, please use the create and link methods instead of the predefined setters which may not work as expected.

+ +

Manipulating tools and flavours from code

+ +

Tool and Flavour objects, be they customized or not, adopt the same "wrapper" mechanism as described above. In this section, we will simply explain how to get/set programmatically the predefined fields that gen generates automatically on tools and flavours. The following table presents the names of the predefined attributes defined on any Tool:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
field namedescription
flavoursThe list of flavours defined in this tool.
unoEnabledPythonThe path to a potential UNO-enabled Python interpreter (for connecting to Open Office in server mode).
openOfficePortThe port on which OpenOffice runs in server mode.
numberOfResultsPerPageThe maximum number of results shown on any dashboard page.
listBoxesMaximumWidthThe maximum width of listboxes managed by gen (the ones used for displaying the list of objets which are available through Ref fields defined with link=True, for example).
showWorkflowCommentField  The boolean indicating if the field for entering comments when triggering a worflow transition must be shown or not.
+ +

For flavours, things are a little more complex. Imagine we have, throughout our gen-application, 25 fields parameterized with editDefault=True in 6 classes. The corresponding attributes that hold the default values in the flavours have an ugly name that includes the full package name of the class. Instead of forcing you to remember this obscure naming convention, a nice method defined on the Flavour class allows to retrieve this attribute name:

+ + + + + + + + + + + + +
method nameparametersdescription
getAttributeName  attributeType, klass, attrName=NoneThis method generates the attribute name based on attributeType, + a klass from your gen-application, and an attrName (given only if needed, for example if attributeType is defaultValue). attributeType may be:

+ + + + + + + + + + + + + + + + + +
defaultValueAttribute that stores the editable default value for a given attrName of a given klass
podTemplatesAttribute that stores the POD templates that are defined for a given klass
resultColumnsAttribute that stores the list of columns that must be shown on the dashboard when displaying instances of a given root klass
optionalFieldsAttribute that stores the list of optional attributes that are in use in the current flavour for the given klass

+ Here is an example. Suppose you want to modify programmatically, on a given flavour, the list of columns that are shown on the dashboard that present ZopeComponents. You can do it this way: + +

+ attrName = flavour.getAttributeName('resultColumns', ZopeComponent)
+ columns = ['status', 'funeralDate', 'responsibleBunch']
+ setattr(flavour, attrName, columns)
+

+
+ +

Besides flavour attributes having oscure names, some attributes have a normal name:

+ + + + + + + + + + + + +
field namewritable?description
numberNoThe flavour number.
+ +

When choosing field and method names for your gen-classes, try to avoid using names corresponding to fields or methods from base Appy classes (wrappers, tool, flavours).

+ +

Defining a custom installation procedure

+ +

When (re-)installing your gen-application, you may want to initialize it with some data or configuration options. You do this by specifying a special action named install on your customized tool, like in the example below (the ZopeComponent application).

+ +

+ class ZopeComponentTool(Tool):
+   someUsefulConfigurationOption = String()
+   def onInstall(self):
+     self.someUsefulConfigurationOption = 'My app is configured now!'
+   install = Action(action=onInstall)
+

+ +

Re-generate your gen-application, re-start Zope, log in as administrator and go to site setup->Add/Remove products. Your product wil look like this (it needs re-installation):

+ +

+ +

Re-install your product and go to the consult view of your configuration panel. The install action has been executed:

+ +

+ +

Moreover, because your installation procedure is an action, you may trigger your custom installation procedure via the available "install" button.

+ +

Note that actions defined on custom tools or flavours are well suited for importing data or executing migration scripts (so actions may, in a certain sense, represent a way to replace the notion of "profiles" available in Plone. Actions are easier to trigger because they can be displayed anywhere on your tool, flavour or on any gen-class).

+ +

i18n (internationalization)

+ +

gen-applications benefit from an automated support for i18n. How does it work? First of all, you need to declare what language(s) need to be supported in your gen-application. This is done through the creation, anywhere in your gen-application, of an instance of class appy.gen.Config:

+ +

+ from appy.gen import Config
+ c = Config()
+ c.languages = ('en', 'fr')
+

+ +

By configuring your Config instance this way, you tell gen to support English and French. If you don't do this, only English is supported by default.

+ +

Every time you (re-)generate your gen-application, i18n files are created or updated in the corresponding generated Plone product. With the above settings, gen will generate the following files, in [yourZopeInstance]/Products/[yourApplication]/i18n (the product here is named ZopeComponent):

+ +

+ ZopeComponent.pot
+ ZopeComponent-en.po
+ ZopeComponent-fr.po
+

+ +

ZopeComponent.pot contains all i18n labels generated for your application, together with their default values (in English). English translations are in ZopeComponent-en.po, while French translations are in ZopeComponent-fr.po.

+ +

The format of these files is quite standard in the i18n world. Le'ts take a look to the beginning of ZopeComponent.pot:

+ +

+ msgid ""
+ msgstr ""
+ "Project-Id-Version: ZopeComponent\n"
+ "POT-Creation-Date: 2008-12-12 14:18-46\n"
+ "MIME-Version: 1.0\n"
+ "Content-Type: text/plain; charset=utf-8\n"
+ "Content-Transfer-Encoding: 8bit\n"
+ "Plural-Forms: nplurals=1; plural=0\n"
+ "Language-code: \n"
+ "Language-name: \n"
+ "Preferred-encodings: utf-8 latin1\n"
+ "Domain: ZopeComponent\n"
+

+ +

An interesting general information here is the domain name (last line) which is ZopeComponent. Indeed, Plone structures translations into domains. A domain is a group of translations that relate to a bunch of functionality or to a given Plone component. gen creates a specific domain for every gen-application. In the example, domain ZopeComponent has been created. Why do I explain this to you? Really, I don't know. With gen, you don't care about i18n domains, gen manages all this boring stuff for you. Sorry. Mmh. Let's continue to analyse the file. In the (very similar) headers of the English and French translation files (ZopeComponent-en.po and ZopeComponent-fr.po), the important thing that is filled is the code and name of the supported language (parameters Language-code and Language-name).

+ +

After this header, you will find a list of labels. In the pot file, every label is defined like this one:

+ +

+ #. Default: "Funeral date"
+ msgid "ZopeComponent_ZopeComponent_funeralDate"
+ msgstr ""
+

+ +

In every related po file, you will find the same entry. Translating a gen-application is as simple as editing, for every po file, every msgstr line for every i18n label. If you don't fill a given msgstr, the default value will be used. You may insert HTML code within msgstr entries.

+ +

The i18n machinery of Plone works this way: every time Zope/Plone encounters an i18n label in a web page (or part of it), it tries to find, in the language specified by the web browser, a translation in the corresponding po file (or a cached version of it; if you change the translations in the po files you need to restart Zope or refresh, through the ZMI, the corresponding "catalog object" Zope has created in Root Folder/Control_Panel/TranslationService). Plone and Appy-generated web pages do not "hard-code" any translation; they always consult Zope i18n catalog objects. So after having translated all labels in all po files, changing your browser language and refreshing a given page will produce the same page, fully translated in the new specified language.

+ +

gen creates and maintains pot and po files itself. So gen implements the same functionality as tools like i18dude. You don't need such tools to manage i18n files of gen-applications. Although i18n files are stored in the generated Plone product, they will never be deleted by triggering a code (re-)generation. gen will potentially complete the files but will never delete them.

+ +

Now, you need to know the meaning of every label gen creates and maintains in the po(t) file(s), and at what place(s) they are used within the generated edit and consult views (or in the dashboards, etc). The following table explains this. Dynamic parts used in labels (like [className]) are explained in yet another table below. For every label, the default value is specified. For the majority of labels, gen proposes a "nice" default value. For example, field responsibleBunch will have default value Responsible bunch; class BunchOfGeeks will have default value Bunch of geeks. The "nice" algorithm tries simply to recognize camel-cased words and separates them.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
label "pattern"usagedefault value
[className]_[fieldName]The label of the Appy field of a given gen-class. It appears on both edit and consult views, as widget label. For example, field funeralDate of class ZopeComponent in ZopeComponent.py will produce label ZopeComponent_ZopeComponent_funeralDate.nice
[className]_[fieldName]_descrA description associated to a given Appy field. It appears on the edit view, between the widget label and the widget. Here is an example of a field shown on an edit view, with a label and description.
+ +
empty
[className]_[fieldName]_list_[fieldValue]When defining a String field with a list of values as validator, such a label is created for every value of this list. Consider the following field declaration (in class ZopeComponent from ZopeComponent.py):
status = String(validator=['underDevelopement', 'stillSomeWorkToPerform', 'weAreAlmostFinished', 'alphaReleaseIsBugged', 'whereIsTheClient']).
gen will generate 5 labels (one for each possible value). The first one will be ZopeComponent_ZopeComponent_status_list_underDevelopement.
nice
[className]_[fieldName]_validError message produced when validation fails on a given field (edit view) and the validation mechanism does not return an error message."Please fill or correct this."
[className]_[fieldName]_backLabel of a back reference. Consider the following field definition in class ZopeComponent:
responsibleBunch = Ref(BunchOfGeek, multiplicity=(1,1), add=False, link=True, back=Ref(attribute='components'))
+ On the consult view related to BunchOfGeek, the label of the back reference for consulting components for which this bunch is responsible for will be ZopeComponent_BunchOfGeek_components_back.
nice
[className]_[fieldName]_action_okOnly generated for Action fields. Represents the message to display when the action succeeds."The action has been successfully executed."
[className]_[fieldName]_action_koOnly generated for Action fields. Represents the message to display when the action fails."A problem occurred while executing the action."
[applicationName]This unique label translates the name of the application. It is used as title for the application portlet. + nice
[className]The name of a gen-class. It appears at several places (dashboard tabs, edit views, ...). This label is then "declined" into several others, suffixed with [_flavourNumber] for flavours 2 to n. It means that you may name your concepts differently from one flavour to the other. For example, a class named Meeting may be named "Government meeting" in one flavour and "Parliament meeting" in the other.nice
[className]_edit_descrThe description of a gen-class. It appears on edit views, when creating instances of this class. Like the previous label, this one is then "declined" into several others, suffixed with [_flavourNumber] for flavours 2 to n.empty
[className]_page_[pageName]This label is used for translating the name of a page which is not the main page (the main page takes the --translated-- name of the corresponding gen-class). Page names are visible on page tabs. Because this label is prefixed with the className, for every child class of a given class that defines pages, gen will produce an additional label prefixed with the child class name.nice
[className]_group_[groupName]This label is used for translating the name of a group, used as label for group fieldsets on both edit and consult views. Because this label is prefixed with the className, for every child class of a given class that defines groups, gen will produce an additional label prefixed with the child class name.nice
[workflowName]_[stateName]This label is used for translating the name of a workflow state. Because this label is prefixed with the workflowName, for every child workflow of the one that defines the corresponding state, gen will produce an additional label prefixed with the child workflow name.nice
[workflowName]_[transitionName]This label is used for translating the name of a workflow transition. Because this label is prefixed with the workflowName, for every child workflow of the one that defines the corresponding transition, gen will produce an additional label prefixed with the child workflow name.nice
workflow_stateTranslation of term "workflow state" (used a.o. if the corresponding column is shown in a dashboard)."state"
root_typeTranslation of term "type" used for the corresponding column on the dashboard tab "consult all"."type"
workflow_commentLabel of the field allowing to enter comments when triggering a workflow transition."Optional comment"
choose_a_valueTranslation of the "empty" value that appears in listboxes when the user has not chosen any value."- none -"
min_ref_violatedError message shown when, according to multiplicities, too few elements are selected for a Ref field."You must choose more elements here."
max_ref_violatedError message shown when, according to multiplicities, too many elements are selected for a Ref field."Too much elements are selected here."
no_refText shown when a Ref field contains no object."No object."
add_refText shown as tooltip for icons that allow to add an object through a Ref field."Add a new one"
ref_nameWhen displaying referenced objects for a Ref field with showHeaders=True, this label translates the title of the first column (=name or title of the referenced object)."name"
ref_actionsWhen displaying referenced objects for a Ref field with showHeaders=True, this label translates the title of the last column (=actions)."actions"
move_upTooltip for the icon allowing to move an element up in a Ref field."Move up"
move_downTooltip for the icon allowing to move an element down in a Ref field."Move down"
query_createText shown as tooltip for icons that allow to create a new root object on a dashboard."create"
query_no_resultText shown when a dashboard or query contains no object."Nothing to see for the moment."
query_consult_allLabel of the leftmost dashboard tab (consult all instances of all root classes for a given flavour)."consult all"
bad_intGeneral error message displayed when a non-integer value is entered in an Integer field."An integer value is expected; do not enter any space."
bad_floatGeneral error message displayed when a non-float value is entered in a Float field."A floating-point number is expected; use the dot as decimal separator, not a comma; do not enter any space."
bad_emailGeneral error message displayed when an invalid email is entered in a String field with validator=String.EMAIL."Please enter a valid email."
bad_urlGeneral error message displayed when an invalid URL is entered in a String field with validator=String.URL."Please enter a valid URL."
bad_alphanumericGeneral error message displayed when an invalid alphanumeric value is entered in a String field with validator=String.ALPHANUMERIC."Please enter a valid alphanumeric value."
+ +

As already mentioned, in the table below, some label "parts" are explained.

+ + + + + + + + + + + + + + + + + + +
label partdescription
applicationName   + The name of your gen-application. If your application is a Python package (=a file), it corresponds to the name of the file without its extension (application name for ZopeComponent.py is ZopeComponent). If you application is a Python module (=a folder), it corresponds to the name of this folder.
className + Refers to the full package name of a gen-class, where dots have been replaced with underscores. For example, class ZopeComponent in ZopeComponent.py will have className "ZopeComponent_ZopeComponent". There are 2 exceptions to this rule. className for a flavour, be it the default one or a custom class in your gen-application, will always be [applicationName]Flavour. In the same way, className for a tool will always be [applicationName]Flavour.
workflowName + Refers to the full package name of a gen-workflow, where dots have been replaced with underscores and all characters have been lowerized. For example, workflow ZopeComponentWorkflow in ZopeComponent.py will have workflowName "zopecomponent_zopecomponentworkflow".
fieldName + Refers to the name of an Appy field, declared as a static attribute in a gen-class. For example, attribute responsibleBunch of class ZopeComponent will have fieldName "responsibleBunch".
+ +

Creating and using new i18n labels

+ +

Although gen tries to manage automatically the whole i18n thing, in some cases you may need to create and use specific labels. You create new labels by adding them "by hand" in the pot file. For example, edit ZopeComponent.pot and add the following label:

+ +

+ #. Default: "Please be honest and do not pretend there is any kind of simplicity in your Zope 3 component."
+ msgid "zope_3_is_not_simple"
+ msgstr "" +

+ +

As part of the generation process, gen synchronizes the pot and po files. So re-generate your product and consult ZopeComponent-fr.po and ZopeComponent-en.po: the label has been added in both files. You may now edit those translations and save the edited po files.

+ +

In the following example, we use the new label for producing a translated validation message on a given field.

+ +

+ class ZopeComponent: +   ...
+   def validateDescription(self, value):
+     res = True
+     if value.find('simple') != -1:
+       res = self.translate('zope_3_is_not_simple')
+     return res
+   technicalDescription = String(format=String.XHTML, validator=validateDescription)
+   ...
+

+ +

On any (wrapped) instance of a gen-class, a method named translate allows you to translate any label. This method accepts 2 parameters: label and domain. In the example, no value was given for parameter domain; it defaults to the application-specific domain (in this case, ZopeComponent). Maybe one day you will need to use and translate labels packaged with Plone or another Plone product; in this case you will need to specify another domain. The main domain for Plone is named plone (case sensitive). For example, "delete" icons in Appy pages have a tooltip corresponding to label "label_remove" defined in domain "plone". If you want to use it, write self.translate('label_remove', domain='plone'). Labels in standard Plone domains are already translated in a great number of languages.

+ +

Now imagine you need to change the default value for this label in ZopeComponent.pot. It means that your translations in ZopeComponent-fr.po and ZopeComponent-en.po need a potential revision. Edit the default value and re-generate your product. The labels in the po files will be flagged as "fuzzy":

+ +

+ #. Default: "Please be honest and do not pretend there is any kind of simplicity in your Zope 3 component. I changed the default value."
+ #, fuzzy
+ msgid "zope_3_is_not_simple"
+ msgstr "ZOPE 3 n'est pas simple!"
+

+ +

Edit the translation, remove the line with "fuzzy" and you are done!

+ +

Field interactions: masters and slaves

+ +

It is possible to make your gen pages more dynamic by defining relationships between fields belonging to the same page. For example, by selecting a given item in a list (on a master field), another (slave) field may become visible. This is achieved by using parameters master and masterValue. Let's try it on an example. Remember that, in our HR system, we have added the ability to associate a "parasite index" to a parasite. Suppose that in some cases, the parasite is so weird that you are unable to give him a parasite index. Among the values for field parasiteIndex, we add the value unquantifiable; but in this case, you must give, in another field, details about why you can't quantify its parasiteness:

+ +

+ class Parasite(Person):
+   ...
+   parasiteIndex = String(validator=['low', 'medium', 'high', 'unquantifiable'],
+     page='contactInformation', group='numbers')
+   details = String(page='contactInformation', group='numbers',
+     master=parasiteIndex, masterValue='unquantifiable')
+   ...
+

+ +

Now, if you edit page "contactInformation" for any parasite, selecting, for field parasiteIndex, any value excepted "unquantifiable" will give you something like this:

+ +

+ +

Selecting "unquantifiable" will display field details:

+ +

+ +

Of course, you may use the validation machinery (method validate) and check that, when parasiteIndex is "unquantifiable", field details is not empty. This will be your exercise for tonight.

+ +

Note that master/slaves relationships also modify the "consult" pages. When "unquantifiable" is chosen, both fields are rendered:

+ +

+ +

When another value is selected, field details is invisible:

+ +

+ +

A master widget may have any number of slaves. Of course, masters and slaves must be on the same page. For the moment, the only behaviour on slaves is to display them or not. In future gen releases, other ways to persecute slaves will be implemented, like changing default values, adapting the list of possible values, etc). For the moment, only the following fields may become masters:

+ +
    +
  • Single-valued lists (String fields with max multiplicity = 1 and validator being a list of string values): this was the case in the previous example). In this case, masterValue must be a string belonging to the master's validator list);
  • +
  • Multiple-valued lists (idem, but with max multiplicity > 1);
  • +
  • Checkboxes (Boolean fields). In this case, masterValue must be a boolean value.
  • +
+ +

In future gen releases, masterValue will accept a list of values or a single value.

+ +

The Config instance

+ +

As already mentioned, a series of configuration options for your gen-application may be defined in an instance of class appy.gen.Config. There must be only one such instance by gen-application. The following table describes the available options defined as Config attributes.

+ + + + + + + + + + + + + + + + + + + + + + +
AttributeDefault valueDescription
languages['en']See here.
defaultCreators['Manager', 'Owner']See here.
minimalistPlone  FalseIf True, this flag will produce a minimalist Plone, where some user interface elements, like actions, portlets or other stuff less relevant for building web applications, are removed or hidden. Using this produces effects on your whole Plone site! This can be interesting on development machines: less visual gadgets make geeks more productive.
+ +

Here is an example of a Config instance:

+ +

+ from appy.gen import Config
+ c = Config()
+ c.languages = ('en', 'fr')
+ c.defaultCreators += ['ZLeader']
+ c.minimalistPlone = True +

+ +

This code may be placed anywhere in your gen-application (in the main package, in a sub-package...)

+ + diff --git a/doc/genCreatingBasicClasses.html b/doc/genCreatingBasicClasses.html new file mode 100755 index 0000000..06b3e75 --- /dev/null +++ b/doc/genCreatingBasicClasses.html @@ -0,0 +1,644 @@ + + + <b>gen</b> - Creating basic classes + + + +

Gen-applications

+ +

A gen-application is a simple Python module (a single Python file) or package (a hierarchy of folders where every (sub-)folder contains a file named __init__.py). In the main gen presentation page, we've created a simple application in the form of a Python module, we've run it by installing Zope and Plone and by generating a Plone product. Working with a Python package instead of a Python module is quite easy: instead of creating MyModule.py in [myZopeInstance]/lib/python you simply create a folder "MyPackage" at the same place.

+ +

Within your Python module or package, you create standard Python classes. Those classes do not need to inherit from any base class provided by gen. If you want to turn a given class into a "gen-class" (= a class whose instances will be visualized, created and edited throug-the-web with Plone), you need to provide static attributes that will represent the associated data you need to edit and/or view through-the-web. Those attributes must be instances of any sub-class of appy.gen.Type. We will see that some attribute and method names are "reserved" for specific uses; all other methods and attributes you will define on "gen-classes" will be kept untouched by gen. "gen-classes" do not need any constructor at all, because instances will be created throug-the-web or via some gen-specific mechanisms that we will explain later.

+ +

What gen tries to do is to be as invisible as possible, by leaving your Python classes as "pure" as possible.

+ +

Gen-classes and attributes

+ +

The code below shows an example of a gen-class.

+ +

+ from appy.gen import *
+ class A:
+   at1 = String()
+   at2 = Integer()
+   at3 = Float()
+   at4 = Date()
+   at5 = 'Hello'
+   def sayHello(self):
+     print self.at5 + str(self.at2)
+

+ +

String, Integer, Float and Date all inherit from appy.gen.Type. You may still define standard Python attributes like at5 and methods like sayHello. The list of basic types provided by gen is shown below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Integer Holds an integer value.
Float Holds a floating-point number.
String Holds a string value (entered by the user, selected from a drop-down list, etc).
Boolean Holds a boolean value (typically rendered as a checkbox).
Date Holds a date (with or without hours and minutes).
File Holds a binary file.
Ref Holds references to one or more other objects.
Computed Holds nothing; the field value is computed from a specified Python method.
Action Holds nothing; the field represents a button or icon that triggers a function specified as a Python method.
+ +

When defining instances of those types, you will typically give some parameters to it. Below is the list of parameters that are common to all types. In the next sections, we will see into more detail every type with its specificities.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
parameterdefault valueexplanation
validatorNoneA validator is something that restricts the valid range of values that the field may hold. It can be: +
    +
  • A Python (instance) method belonging to the class defining the field (or one of its parents). Every time an object is created or updated, this method will be called, with a single argument containing the new value the user has entered for the field. If this method returns a string (more precisely, an instance of basestring), validation will fail and this string will be shown to the user as error message. Else, validation will succeed if the return value is True (or equivalent value) and will fail else. In this latter case, the error message that the user will get will correspond to i18n label [full_class_name]_[field_name]_valid in the application-specific i18n domain, where [full_class_name] is the class name including the package prefix where dots have been replaced with underscores. More information about i18n may be found here. Examples are presented hereafter.
  • +
  • A list of string values. It only applies for String fields. This list contains the possible values the field may hold.
  • +
  • A regular expression (under the form of a compiled regular expression generated with re.compile).
  • +
+
multiplicity(0,1)Multiplicity is a 2-tuple that represents the minimum and maximum number of values the field may hold. (0,1) means that the field may be empty or contain one value. (1,1) means that a value is required. For all types excepted Ref and some Strings, the maximum value must be 1. The Python value None is used for representing an unbounded value: (1,None) means "at least 1" (no upper bound).
defaultNoneThe default value for the field. The default value must be a Python value that corresponds to the Appy type. Correspondence with Python and Appy types is given here: + + + + + + + + + + + + + + + + + + + + + + + + + +
Appy typePython type
Integerint, long
Floatfloat
Stringstr, unicode
Booleanbool
DateThe Date type shipped with Zope (class DateTime.DateTime). The corresponding type from standard datetime package is less sexy.
+
optionalFalseWhen you define a field as optional, you may turn this field on or off in every flavour (a specific widget will be included in the flavour for this). If you turn the field on, it will appear in view/edit pages; else, it will completely disappear. This is one of the features that allow to tackle variability: in a given organisation the field may be used, in another one it may not. Or even within the same application, the field can be enabled in a given flavour and disabled in another. More information about this parameter may be found here.
editDefaultFalseWhen editDefault = True, a special widget will be present in every flavour; it will allow you to enter or edit the default value for the field. Instead of "hardcoding" the default value through parameter default, using editDefault allows to do it through-the-web, flavour by flavour. More information about this parameter may be found here.
showTrueYou may specify here a special condition under which the field will be visible or not. This condition may be: +
    +
  • a simple boolean value;
  • +
  • a Python (instance) method that returns True, False (one any other equivalent value). This method does not take any argument.
  • +
+ Note that visibility of a given field does not only depend on this parameter. It also depends on its optionality (see parameter optional) and on the user having or not the permission to view and/or edit the field (see parameters specificReadPermission and specificWritePermission below). +
pagemainBy default, for every gen-class you define, gen will produce 2 views: one for consulting information about an instance, one for editing this information. If you have a limited number of fields, a single page is sufficient for displaying all fields on both views. You may also decide to create several pages. The default page is named "main". If, for this parameter, you specify another page, gen will automatically create it (on both views) and allow the user to navigate from one page to the other while consulting or editing an instance (every page will be represented as a tab). If you define several pages for a given class, the main page will take the internationalized name of the class (it corresponds to i18n label [full_class_name] in i18n domain plone, where [full_class_name] is the class name including the package prefix where dots have been replaced with underscores), and the other pages will take their names from i18n label [full_class_name]_page_[page_name] again in i18n domain plone. More information about pages may be found here; more information about i18n may be found here.
groupNoneWithin every page, you may put widgets into "groups" that will be graphically rendered as fieldsets. Normally, widgets are rendered in the same order as the order of their declaration in the Python class; putting them into groups may change this behaviour. If you specify a string here, a group will be created and this field will be rendered into it on both views (consult/edit). The name of the group will correspond to i18n label [full_class_name]_group_[group_name] in i18n domain plone, where [full_class_name] is the class name including the package prefix where dots have been replaced with underscores. More information about i18n may be found here. If you add something like _[number] to the group name, widgets from the group will be rendered into columns; number being the number of columns in the group. For example, if you define several fields with parameter group="groupA_3", field values will be put in group groupA that will span 3 columns. If you specify different number of columns every time you use the group parameter for different fields, all numbers will be ignored excepted the one of the first field declaration. For subsequent field declarations, you don't need to specify the columns number again. More information about pages and groups may be found here.
move0Normally, fields are rendered in consult/edit pages in the order of their declaration in the Python class. You may change this by specifying an integer value for the parameter move. For example, specifing move=-2 for a given field will move the field up to 2 positions in the list of field declarations. This feature may be useful when you have a class hierarchy and you want to place fields from a child class at a given position among the fields from a parent class.
searchableFalseWhen defining a field as searchable, the field declaration will be registered in the low-level indexing mechanisms provided by Zope and Plone, allowing fast queries based on this field; the searches performed via the global "search" in Plone will take the field into account, too.
specificReadPermissionNoneBy default, permission to read every field declared in a class is granted if the user has the right to read class instances as a whole. If you want this field to get its own "read" permission, set this parameter to True. More information about security may be found here; specific details about usage of this field may be found here. +
specificWritePermissionNoneBy default, permission to write (=edit) every field declared in a class is granted if the user has the right to create an edit instances as a whole. If you want this field to get its own "write" permission, set this parameter to True. More information about security may be found here; specific details about usage of this field may be found here. +
widthNoneAn integer value that represents the width of a widget. For the moment, it is only used for Strings whose format is String.LINE. For those Strings, default value is 50.
masterNoneAnother field that will in some manner influence the current field (display it or not, for example). More information about master/slave relationships between fields may be found here.
masterValueNoneIf a master is specified (see previous parameter), this parameter specifies the value of the master field that will influence the current field (display it or not, for example). More information about master/slave relationships between fields may be found here.
+ +

Integers and Floats

+ +

Integers and floats have no additional parameters. In this section, we will simply illustrate, on Integers and Floats, some parameters defined in the previous section. Let's consider the following class:

+ +

from appy.gen import *
+ class Zzz:
+   root = True
+   def show_f1(self): return True
+   def validate_i2(self, value):
+     if (value != None) and (value < 10):
+       return 'Value must be higher or equal to 10.'
+     return True
+   i1 = Integer(show=False)
+   i2 = Integer(validator = validate_i2)
+   f1 = Float(show=show_f1, page='other')
+   f2 = Float(multiplicity=(1,1))
+

+ +

Recall from the introduction that a class declared as root is of special importance: it represents a "main" concept in your application. For every root class, a tab is available in the dashboard for viewing, editing and deleting objects of this class.

+ +

Because i1 is defined with show=False, it will never appear on Appy views. i2 illustrates a validator method that prevents entered values to be lower than 10 (be careful: because the value is not mandatory (default multiplicity=(0,1)), validate_i2 will still be called even if value is None. f1 illustrates how to define a Python method for the show parameter; because this is a silly method that always return True, f1 will always be displayed. f1 will be displayed on another page named other. f2 will be mandatory. So when creating an instance of Zzz through-the-web, you get the following screen:

+ +

+ +

Plone needs a field named title; because you did not had any field named title in your class, Plone has added one automatically. This is because at several places Plone and gen use the title of objects. If you don't care about this, simply create an attribute title=String(multiplicity=(0,1), show=False). The field will disappear (don't forget to specify this multiplicity; else, the field will not show up but will still be mandatory: it will produce an error and you will be blocked); an internal title will be generated instead that will produce ugly results at some places: so it is not recommanded to do it. Let's see how the validation system behaves if we type a wrong value in i2 and nothing in f2:

+ +

+ +

If we enter a value lower than 10 in i2 we get our specific error message:

+ +

+ +

After corrections have been made, clicking on "next" will bring us to the second page where f1 lies.

+ +

+ +

Now, through the green tabs, you may browse the 2 pages for any Zzz instance. Clicking into the tab will display the consult view, while clicking on the pen will bring the edit view. Going from one edit page to the other can also be done through "next" and "previous" buttons.

+ +

Beyond validation of specific fields, gen also allows to perform global, "inter-field" validation. More information here.

+ +

Strings

+ +

Strings have an additional attribute named format which may take the following values:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
valuedefault?exampleresult (edit view)result (consult view)
String.LINEyesoneLineString = String()
String.TEXTnotextString = String(format=String.TEXT)
String.XHTMLnotextXhtml = String(format=String.XHTML)
+ +

With Strings, adequate use of arguments validator and multiplicity may produce more widgets and/or behaviours. Consider the following class:

+ +

+ class SeveralStrings:
+   root=True
+   anEmail = String(validator=String.EMAIL)
+   anUrl = String(validator=String.URL)
+   anAlphanumericValue = String(validator=String.ALPHANUMERIC)
+   aSingleSelectedValue = String(validator=['valueA', 'valueB', 'valueC'])
+   aSingleMandatorySelectedValue = String(
+     validator=['valueX', 'valueY', 'valueZ'], multiplicity=(1,1))
+   aMultipleSelectedValue = String(
+     validator=['valueS', 'valueT', 'valueU', 'valueV'],
+     multiplicity=(1,None), searchable=True)
+

+ +

The edit view generated from this class looks like this:

+ +

+ +

For field anEmail, a valid email was entered so the validation machinery does not complain. For anUrl and anAlphanumericValue (the 2 other predefined regular expressions for validating String fields shipped with gen) an error message is generated. The field aSingleSelectedValue uses a list of strings as validator and maximum multiplicity is 1: the generated widget is a listbox where a single value may be selected. The field aSingleMandatorySelectedValue is mandatory because of the multiplicity parameter being (1,1); a validation error is generated because no value was selected. The field aMultipleSelectedValue does not limit the maximum number of chosen values (multiplicity=(1,None)): the widget is a listbox where several values may be selected.

+ +

Field aMultipleSelectedValue has also been specified as searchable. Suppose we have created this instance of SeveralStrings:

+ +

+ +

When using the Plone global search in the right top corner, you will notice that entering "Value u" will produce a match for our instance:

+ +

+ +

Entering "Value x" for example will produce no match at all because aSingleMandatorySelectedValue was not specified as searchable. Note that title fields are automatically set as searchable.

+ +

Booleans

+ +

Booleans have no additional parameters. Specifying aBooleanValue = Boolean(default=True) will produce this on the edit view:

+ +

+ +

Dates

+ +

Dates have an additional attribute named format which may take the following values:

+ + + + + + + + + + + + + + + + + + + + + + + +
valuedefault?exampleresult (edit view)result (consult view)
Date.WITH_HOURyesdateWithHour = Date()
Date.WITHOUT_HOURnodateWithoutHour = Date(format=Date.WITHOUT_HOUR)
+ +

When editing a Date in any format, instead of using the listboxes for selecting values for year, month and day, you may click on the icon with a "12" on it: a nice Date chooser written in Javascript will pop up as shown above.

+ +

Files

+ +

When specifying this: anAttachedFile = File() you get this result on the edit view when an object is being created:

+ +

+ +

("Parcourir" means "Browse" in french). You get this result on the consult view:

+ +

+ +

If you want to edit the corresponding object, you will get this:

+ +

+ +

Any kind of file may be uploaded in File fields, but for png, jpg and gif files, you may specify an additional parameter isImage=True and your gen-ified Plone will render the image. Let's define this field:

+ +

anAttachedImage = File(isImage=True)

+ +

The consult view will render the image like on this example:

+ +

+ +

On the edit view, the widget that allows to modify the image will look like this:

+ +

+ +

References

+ +

References allow to specify associations between classes in order to build webs of interrelated objects. Suppose you want to implement this association:

+ +

+ +

The corresponding gen model looks like this:

+ +

+ class Order:
+   description = String(format=String.TEXT)
+
+ class Client:
+   root = True
+   title = String(show=False)
+   firstName = String()
+   name = String()
+   orders = Ref(Order, add=True, link=False, multiplicity=(0,None),
+     back=Ref(attribute='client'))
+   def onEdit(self, created):
+     self.title = self.firstName + ' ' + self.name
+

+ +

Such an association is expressed in gen by 2 "crossed" Ref instances (see definition of attribute orders): +

    +
  • the attribute named orders specifies the "main" or "forward" reference;
  • +
  • the attribute named client specifies the "secondary" or "backward" reference.
  • +
+

+ +

As implemented in gen, an association is always dyssymmetric: one association end is more "important" than the other and provides some functionalities like adding or linking objects. In the above example, the association end named orders allows to create and add new Order instances (add=True). In the generated product, once you have created a Client instance, for field orders you will get the following consult view:

+ +

+ +

Remember that you can't get rid of the title field. So one elegant solution is to specify it as invisible (show=False) and compute it from other fields every time an object is created or updated (special method onEdit: when an object was just created, parameter created is True; when an object was just modified, created is False). Here, in both cases, we update the value of field title with firstName + ' ' + name.

+ +

On this view, because you specified add=True for field orders, the corresponding widget displays a "plus" icon for creating new Order instances and link them to you this client. Clicking on it will bring you to the edit view for Order:

+ +

+ +

Saving the order brings you to the consult view for this order:

+ +

+ +

On this view, a specific widget was added (it corresponds to backward reference client) that allows you to walk to the linked object. Clicking on "Gaetan Delannay" will bring you back to him. After repeating this process several times, you will get a result that will look like this:

+ +

+ +

If you had specified multiplicity=(0,4) for field orders, the "plus" icon would have disappeared, preventing you from creating an invalid fifth order. Unlike standard Plone references, gen Ref fields are ordered; the arrows allow you to move them up or down. The other icons allow you to edit and delete them.

+ +

Besides the "add" functionality, association ends may also provide the "link" functionality. This produces another widget that allows you to link an object to existing ones instead of creating + linking them. Suppose you extend you model with the concept of Product: an order may now specify one or several products. The model would include the new Product class and the Order class would get an additional Ref field:

+ +

+ class Product:
+   root = True
+   description = String(format=String.TEXT)
+
+ class Order:
+   description = String(format=String.TEXT)
+   products = Ref(Product, add=False, link=True, multiplicity=(1,None),
+     back=Ref(attribute='orders'))
+

+ +

Tip: when making changes to you model, re-generate it, relaunch Zope, go to "site setup"-> Add/Remove Products" and reinstall the generated product. Another tip: any change you make to your Python code needs a Zope restart; else it will not be taken into account.

+ +

So now you are able to create products. Because you specified class Product with root=True, on the main dashboard for you application you get a new tab that allows you to consult and create products. After some product creations you will get a setting like this:

+ +

+ +

Now, if you go back to the first order made by Gaetan Delannay, and go to the edit view by clicking on the pen, a new widget will allow to select which products are concerned by this order:

+ +

+ +

Clicking on "save" will bring you back to the consult view for this order:

+ +

+ +

What is a bit annoying for the moment is that the Ref widget configured with add=True is rendered only on the consult view, while the Ref widget configured with link=True behaves "normally" and renders on both edit and consult views. This is a technical limitation; we will try to improve this in the near future. Another improvement will be to be able to select both add=True and link=True (this is not possible right now).

+ +

You will also notice that when defining an association, both Ref instances are defined in one place (=at the forward reference, like in products = Ref(Product, add=False, link=True, multiplicity=(1,None),back=Ref(attribute='orders'))). The main reason for this choice is to be able in the future to link gen-classes with external, standard Plone content types. The name of the backward reference is given in the attribute parameter of the backward Ref instance. For example, from a Product instance p you may get all orders related to it by typing p.orders. The consult view uses this feature and displays it:

+ +

+ +

Rendering of backward references is currently less polished than forward references. If, for any reason, you don't want a backward reference to be visible, you can simply configure it like any other widget: back=Ref(attribute='orders', show=False)

+ +

Until now, all examples are done using the "admin" user. So for example all actions that one may trigger on objects (edit, delete, change order of references, etc) are enabled. We will present the security model that underlies Plone and gen later on; then we will be able to configure security.

+ +

For references, 2 more parameters allow to customize the way they are rendered: the boolean showHeaders and shownInfo. Let's consider again the consult view for a client (5 pictures above: gold client "Gaetan Delannay"). Beyond order's titles, I would like to display their description, too, in another column. But If I have several columns, it would be nice to get some columns headers. You may achieve the desired result by changing the definition of the field orders this way:

+ +

+   orders = Ref(Order, add=True, link=False, multiplicity=(0,None),
+     back=Ref(attribute='client'), showHeaders=True,
+     shownInfo=('description',))
+

+ +

showHeaders simply tells gen to display or not headers for the table; shownInfo specifies (in a list or tuple) names of fields to display for the referenced objects. By default, field title is always displayed; you don't have to specify it in shownInfo. Here's the result:

+ +

+ +

The shownInfo parameter may also be used with Refs specifying link=True. For Ref field products of class Order, specifying shownInfo=('description',) will produce this, when creating a new Order:

+ +

+ +

The title/name of the referred object always appears; here, the description also appears. If you want the title to appear at a different place, simply specify it in the shownInfo parameter. For example, specifying shownInfo=('description','title') will produce:

+ +

+ +

By adding parameter wide=True, Ref tables take all available space. Returning to the previous example, specifying this parameter will produce this:

+ +

+ +

When using shownInfo, you may specify any field name, including Ref fields. If you specify shownInfo=('description', 'products') for the field orders of class Client and modify rendering of field products from class Order this way:

+ +

+ class Order:
+   description = String(format=String.TEXT)
+   products = Ref(Product, add=False, link=True, multiplicity=(1,None),
+     back=Ref(attribute='orders'), showHeaders=True,
+     shownInfo=('description',)) +

+ +

You will get this result:

+ +

+ +

If, for field products, add=True was specified, on this screen you would have been able to add directly new products to orders through specific "plus" icons:

+ +

+ +

Let's consider again attribute products of class Order (with add=False and link=True). When specifying this, gen allows every Order to be associated with any Product defined in the whole Plone site (in this case, Product A, Product B and Product C):

+ +

+ +

You may want to filter only some products instead of gathering all defined products. The select parameter may be used for this. Here is an example:

+ +

+ class Order:
+   description = String(format=String.TEXT)
+   def filterProducts(self, allProducts):
+     return [f for f in allProducts if f.description.find('Descr') != -1]
+   products = Ref(Product, add=False, link=True, multiplicity=(1,None),
+     back=Ref(attribute='orders'), showHeaders=True,
+     shownInfo=('description',), select=filterProducts)
+

+ +

This silly example only selects products whose description contains the word "Descr", which is only the case for Products Product B and Product C. So the "Products" widget will not contain Product A anymore:

+ +

+ +

The use of the select attribute may cause performance problems for large numbers of objects; an alternative attribute may appear in the future.

+ +

Computed fields

+ +

If you want to define a field whose value is not hardcoded in the database, but depends on some computation, then you must use a Computed field. Computed fields have two main purposes:

+ +
    +
  • displaying fields whose values are computed from other fields or other data (like the "reference" of an item, that includes some elements like a category's acronym, a year, etc);
  • +
  • producing nice representations of a field (for example, the computation may produce a graphical representation of the field value).
  • +
+ +

Because computed fields, like any other field, may be displayed on dashboards, it allows you to make the latters even more appealing! (please note how good I am at marketing gen)

+ +

Let's try it on our example. Suppose we want to produce nice references for orders, based on some random number (yes, it would have been better to use some incremental number: it it really easy to do this with gen, but you need to know how to customize the configuration panel, which is explained later). We need to define a field number that will hold the order number and will be invisible. Then, we will define a Computed field named reference that will produce the reference based on some prefix and the order number. Class Order need to be updated like this:

+ +

+ class Order:
+   ...
+   number = Float(show=False)
+   # Reference field
+   def getReference(self): return 'OR-%f' % self.number
+   reference = Computed(method=getReference)
+   ...
+   def onEdit(self, created):
+     if created:
+       import random
+       self.number = random.random()
+

+ +

Method onEdit is used to generate the order number when the order is created. The reference field is a Computed field: parameter method specifies the Python method that will compute the field value. In this case, this value is simply the order number with some prefix. Now, let's create this order and see what happens:

+ +

+ +

Computed fields do not appear on edit views, only on consult views. Clicking on "Save" will bring you to the following consult view:

+ +

+ +

Like any other field, Computed fields may appear on Ref fields or on dashboards. For example, if we change the definition of Ref field orders on class Client this way:

+ +

+ class Client:
+   ...
+   orders = Ref(Order, add=True, link=False, multiplicity=(0,None),
+     back=Ref(attribute='client'), showHeaders=True,
+     shownInfo=('reference', 'description', 'products'), wide=True)
+

+ +

order references will appear on the corresponding consult view:

+ +

+ +

Python methods specified in attribute with may return HTML code.

+ +

Actions

+ +

Actions are special fields that allow to trigger functions. For the moment, they are represented as buttons and are shown only on consult views (not on edit views). Let's take an example. Suppose we modify class Product this way:

+ +

+ class Product:
+   root = True
+   description = String(format=String.TEXT)
+   stock = Integer()
+   def needOrder(self): return self.stock < 3
+   def orderProduct(self): self.stock = 3
+   order = Action(action=orderProduct, show=needOrder)
+

+ +

Firstly, we have added attribute stock, that allows us to know how many Product items we have in stock. Then, we have added a dummy action named order that allows us to re-order a product when the stock is too low. Suppose we have defined this product:

+ +

+ +

Because the stock is lower than 3, the order action (every action is defined as an instance of appy.gen.Action) is visible (because of parameter show of action order). The triggered behaviour is specified by a Python method given in parameter action. In this silly example, the action as the direct effect of setting stock to value 3. Clicking on button "order" will have this effect:

+ +

+ +

stock is equal to 3; the order action is not visible anymore (because the method specified in parameter show returns False.

+ +

Considering actions as "fields" is quite different from other frameworks or standard Plone. This has several advantages:

+ +
    +
  • You may reuse the security machinery linked to fields;
  • +
  • You may render them where you want, on any page/group, on Ref fields, or on dashboards.
  • +
+ +

Note that the action parameter may hold a list/tuple of Python methods instead of a single method (like in the previous example).

+ +

In the example, you've seen that a standard message was rendered: "The action has been successfully executed.". If you want to change this message, please read the section on i18n first. In fact, for every action field, gen generates 2 i18n labels: [full_class_name]_[field_name]_action_ok and [full_class_name]_[field_name]_action_ko. The first is rendered when the action succeeds; the second one is rendered when the action fails. The action succeeds when the Python method given in the action parameter:

+ +
    +
  • returns nothing (or None) (it was the case in the example);
  • +
  • returns the boolean value True or any Python equivalent.
  • +
+ +

The action fails when the Python method returns False or if it raises an exception. In this latter case, the exception message is part of the rendered message.

+ +

If the action parameter specifies several Python methods, the action succeeds if all Python methods succeed.

+ +

If you need to render different messages under different circumstances, the 2 labels generated by gen may not be sufficient. This is why a Python method specified in an action parameter may return a 2-tuple instead of None, True or False. The first element of this tuple determines if the method succeeded or not (True or False); the second element is a string containing the specific message to render. If this latter must be i18n'ed, you can create your own i18n label and use the method translate as described here (near the end of the section). In the case of multiple Python methods, messages returned are concatenated.

+ +

The installation procedure for your gen-application is defined as an action. More information about this here.

+ +

In future gen releases, you will be able to define an icon as an alternative way to render the action. We will also add the concept of action parameters.

+ +

Some thoughts about how gen-controlled objects are stored

+ +

Remember that the ZODB is a kind of folder hierarchy; the Plone site itself is a "folderish" object within that hierarchy. For every gen-application, a folder is created within the Plone site object. All objects created through this application (with the exception of objects tied to the application "configuration", more info here) will be created within this folder.

+ +

+ +

This screenshot shows the ZMI (Zope Management Interface) available at http://localhost:8080/manage. You see that within the Appy object (which is a Plone site) you have, among some predefined Plone objects like MailHost or Members, 2 folders named ZopeComponent and Zzz. Each of these 2 folders correspond to a gen-application that has the same name. Those folders are an Appy adaptation of the Plone standard content type named "Large Plone Folder", which is used for storing a large number of objects. If you click on this folder you will see its content (=all objects created through the corresponding gen-application). For several reasons, you may want to put more structure among this folder. Firstly, if you reach a large number of objects, it could lead to performance problems. Secondly, if you use the standard Plone "navigation" portlet, you will see in it all your objects in a single long and unstructured list under a single folder entry named according to your application. The solution is to tell gen that some classes are "folderish". You simply tell this by specifying folder=True on your class. Suppose you do this on class Client:

+ +

+ class Client:
+   root = True
+   folder = True
+   title = String(show=False)
+   firstName = String()
+   ... +

+ +

If now I start from a database with 3 products and 1 client and I add a new order I will get this:

+ +

+ +

You see in the "navigation" portlet on the left that "Gaetan Delannay" is now a folder that "contains" the order "First order".

+ +

Note that instances of classes tagged with root=True will always be created in the root application folder.

+ + + diff --git a/doc/genSecurityAndWorkflows.html b/doc/genSecurityAndWorkflows.html new file mode 100755 index 0000000..1c4dc24 --- /dev/null +++ b/doc/genSecurityAndWorkflows.html @@ -0,0 +1,371 @@ + + + <b>gen</b> - Security and workflows + + + +

The principles

+ +

The security model behinds gen-applications is similar to what Zope and Plone offer; simply, gen tries to simplify the way to declare and manage security within your applications. According to this model, users are put into groups; groups have some roles; roles are granted basic permissions on objects (create, read, write, delete, etc). Permissions-to-roles mappings may vary according to the state of objects.

+ +

Yes! We are done with the principles

+ +

In this chapter, we will use the ZopeComponent example, first introduced here and refined here. Our company developing Zope 3 components hires some lucky managers: they understand almost nothing to Zope but they are well paid. Then, there are some project leaders, still lucky and incompetent. Finally, one or two guys are Zope/Python developers.

+ +

According to the principles introduced above, we will begin by creating some users. Although the standard Plone interface for managing users, groups and roles is not perfect, gen has not (yet?) re-worked it; we will then use it now. In a standard Plone site, users register themselves. We need to change this setting in order to create users ourselves. Log in to Plone as administrator, go to "Site setup" and click on "Portal settings" and configure the "password policy" this way:

+ +

+ +

Now, go to "Users and Groups Administration" (still in "Site setup") and add the following users using the button "add new user" (do not check "Send a mail with the password" and enter a dummy email):

+ + + + + + + + + + +
User NamePassword
sydney + sydney +
ludovic + ludovic +
+ +

Now, we need groups. Guess what? We will not create groups. Why? Because gen will generate groups automatically for you!

+ +

Now that we have users and groups, it is time to create roles. Guess what? We will not do it. Why? Because it is simply not needed. gen will scan your code and find every role you mention and will create them automatically at the Zope/Plone level if they do not exist yet. We will use the following roles:

+ + + + + + + + + + + + + + + + + + +
role namedescription
ZManagerManager in our company that creates Zope components
ZLeaderProject leader in our company
ZDeveloperZope/Python developer
+ +

gen will create one group for every role defined in your application; the group will be granted only the corresponding role. Note that we will probably not use the role ZDeveloper. Indeed, developers work. They will probably not use a management tool. Now, let's tackle permissions. Again, it is not needed to create permissions (at least now): gen provides the following default permissions:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
namecorresponding code objectdescription
create-Permission to create an object
readappy.gen.rPermission to access/view the content (=field values) of an object
writeappy.gen.wPermission to edit/modify the content (=field values) of an object
deleteappy.gen.dPermission to delete an object
+ +

All the security ingredients are now ready (users, groups, roles and permissions): we will now see how to use them to define security on a gen-application.

+ +

Managing the create permission

+ +

Permission to create objects is done at 2 levels. First, you may define a global list of roles that will, by default, be allowed to create any object of any class in your gen-application. In our company, ZLeaders are responsible for creating Zope components. You declare this global list in attribute defaultCreators of your appy.gen.Config instance introduced while presenting i18n:

+ +

+ c = Config()
+ c.languages = ('en', 'fr')
+ c.defaultCreators += ['ZLeader']
+

+ +

Why do I write += and not = ? Because the defaultCreators attribute is already initialised with this list of default Plone roles: ['Manager', 'Owner']. Manager is the role granted to any Plone/Zope administrator (like the admin user we have used in our examples so far); Owner is a special role that is granted to the user that created a given object.

+ +

Defining default creator roles for every class of your application may not be subtle enough. This is why gen allows you do it per class, with static attribute creators. For example, you may use this attribute on class ZopeComponent:

+ +

+ class ZopeComponent:
+   ...
+   creators = c.defaultCreators + ['ZLeader']
+

+ +

With this piece of code, Managers and ZLeaders will be able to create ZopeComponents; only Managers will be able to create instances of other classes in your application (provided no specific creators attribute is defined on them). Note that the creators attribute infringes the classical rules of class inheritance: If you have non abstract classes A and B(A), defining attribute creators on A will have absolutely no effect on B. + +

Managing all other permissions: defining workflows

+ +

For granting all other permissions (like read, write and delete, in short r, w, d), we will not use the same approach as for the create permission. Indeed, the permissions-to-roles mapping for a given object may depend on its state. For example, at some point in the object's life, we would like some users to be able to edit it; after a while (once the object has been validated by a manager, for example), we would like to prevent further modifications (at least for persons having certain roles). This is why we will use the concept of workflow as provided by Zope and Plone. This concept is simple: for a given gen-class, you may define several states (like "created", "validated", "ongoing" or whatever you want); for every state, you define a permissions-to-role mapping (while an object is in this state, what roles are granted what permissions on that object?). Finally, you need to decide what will be the initial state of the object and what are the valid state changes (= transitions).

+ +

Workflows are defined on a per-class basis. At present, if you don't define any workflow for one of your gen-classes, a default workflow provided by Plone will be used. As Plone is not really made for building web applications, this workflow will probably not be relevant for your class (it is a workflow for publishing web pages on a collaborative web site, with states like "under creation", "under validation" or "published"). In future gen releases, I will probably add an attribute defaultWorkflow in the Config instance and even provide some kind of web-application-minded default workflow (with some states like "active" and "inactive"). Hey I realize that it is useful to write documentation! It forces you to explore in a systematic way every aspect of the thing you have developed! Is it the birth of a new quality paradigm? Beuaaahhrk: I have written the word "quality".

+ +

So let's define a simple workflow for our class ZopeComponent. Until now our class looks like this:

+ +

+ class ZopeComponent:
+   root = True
+   def showDate(self):
+     return True
+   def validateDescription(self, value):
+     res = True
+     if value.find('simple') != -1:
+       res = self.translate('zope_3_is_not_simple')
+     return res
+   description = String(editDefault=True)
+   technicalDescription = String(format=String.XHTML,
+     validator=validateDescription)
+   status = String(validator=['underDevelopement', 'stillSomeWorkToPerform',
+     'weAreAlmostFinished', 'alphaReleaseIsBugged', 'whereIsTheClient'],
+     optional=True, editDefault=True)
+   funeralDate = Date(optional=True)
+   responsibleBunch = Ref(BunchOfGeek, multiplicity=(1,1), add=False,
+     link=True, back=Ref(attribute='components'))
+

+ +

Field status seems to be a kind of workflow embryo. So we will remove it and create a workflow whose states will look like values of this field:

+ +

+ class ZopeComponentWorkflow:
+   # Roles
+   zManager = 'ZManager'
+   zLeader = 'ZLeader'
+   managerM = (zManager, 'Manager')
+   leaderM = (zLeader, 'Manager')
+   everybody = (zManager, zLeader, 'Manager')
+   # States
+   created = State({r:leaderM, w:leaderM, d:leaderM}, initial=True)
+   validated = State({r:everybody, w:everybody, d:None})
+   underDevelopment = State({r:everybody, w:leaderM, d:None})
+   whereIsTheClient = State({r:everybody, w:managerM, d:None})
+   # Transitions
+   validate = Transition( (created, validated), condition=managerM )
+   startDevelopment = Transition( (validated, underDevelopment),
+     condition=leaderM)
+   cancelDevelopment = Transition( (underDevelopment, whereIsTheClient),
+     condition=managerM)
+   cancel = Transition( ( (whereIsTheClient, underDevelopment),
+     (underDevelopment, validated),
+     (validated, created)), condition='Manager')
+
+ class ZopeComponent:
+   ...
+   workflow = ZopeComponentWorkflow
+   ...
+

+ +

21 lines of code for the workflow ! (including 3 lines of comments and several lines splitted because of this silly 80-characters-length constraint). Sorry, the states do not correspond exactly to the values of the removed status field; this is because I felt myself guilty about being so ironic.

+ +

Like gen-classes, gen-workflows do not inherit from any base class provided by gen. Simply, static fields are instances of classes provided by gen like appy.gen.State and appy.gen.Transition. gen will decide if your class is a gen-class or a gen-workflow by analysing its static attributes. So please avoid creating hybrid classes mixing field definitions (String, Ref, etc) and workflow definitions (State, Transition, etc).

+ +

As shown in the last lines of the example, associating a gen-workflow to a gen-class is done through the workflow attribute of a gen-class. The same workflow may be associated to different gen-classes. A gen-class defining no workflow inherits from a potential workflow association defined on a parent.

+ +

Let's analyse the workflow in itself. We begin by putting some roles in variables. It is not really necessary (this is not a role "registration" at all); I do it in order to avoid writing syntax errors within role names because it would lead to the creation of silly roles.

+ +

Then, we have the definitions of states. The first paramater is the permissions-to-roles mapping, that indicates, for every permission defined on the associated class, what role(s) have the permission. This parameter is a dictionary whose keys are permissions (remember that r, w, and d correspond to read, write and delete permissions; I can use them as is because of the clause from appy.gen import *) and whose values are, as suggested by the example, either a tuple/list of roles, a single role, or None. For example, when the component is underDevelopment, only project leaders (and administrators) may modify them; when it is in state whereIsTheClient, only managers (and administrators) may edit them. As soon as a component is validated, nobody may delete it: permission d is granted to None (=nobody). The parameter initial=True indicates that the first state is the one the object gets as soon as it is created. Avoid specifying this for more than one state.

+ +

Definitions of transitions are based on state definitions. Indeed, when defining a transition, the first parameter is a 2-tuple (startState, endState). So a transition is simply a specified way to go to from one state to the other. Additional parameter condition specifies under what circumstances the transition may be "triggered". In the example, only persons having roles Manager or ZManager are allowed to trigger transition validate, that will change object state from created to validated. It is also possible to define multi-transitions, which are transitions having multiple 2-tuples (startState, endState) (grouped in one big tuple) like transition cancel. Multi-transitions may be seen as a shortcut that allows you to write several similar transitions in only one. In the example, cancel transitions are used to "go backward", if a user triggered a transition by error.

+ +

Such a workflow is called a state machine. The following diagram represents the workflow defined above.

+ +

+ +

Other frameworks allow you to define your workflows this way, with tools like ArgoUML. This is the case for ArchGenXML for example. I have been a ArchGenXML user for 2 years, and this is why I decided to create a code-based approach for defining workflows in gen. Why? As already mentioned, working with a UML model gives you an additional dependency (towards a tool and a format), prevents collaborative work, cut & paste or more powerful subtleties like multi-transitions or workflow inheritance (see below). Moreover, a model is (when you compare it with code) a much poorer way to describe things. It abstracts a lot of "details", that you are forced to add in an unnatural way (like defining permissions-to-roles mappings in UML tagged values that you can't represent on the diagram), or, worse, that you can't simply put in the model (like the actions triggered by the workflow or specific conditions that you define with Python methods, like explained hereafter). The conclusion is: when using a model approach, you are always forced to complete it with a code approach (this is what happens typically with ArchGenXML: specific actions and conditions are written in additional Python scripts. It implies spreading and duplicating information about the workflow, augmenting complexity and the maintainability effort. That said, diagrams may represent a good way to communicate your ideas. This is why we plan to integrate in future gen releases the possibility to generate diagrams from gen-workflows and gen-classes.

+ +

Granting roles

+ +

In order to see our workflow at work, we need to perform a last action: granting roles to our users. Because gen managed automatically groups, roles, and their links, the only action we need to perform is to put sidney and ludovic in the right groups.

+ +

Re-generate your product, restart Zope, go to "Site setup", re-install your Plone product, go to "Site setup" -> "Users and Groups Administration" and click on tab "groups". You will get this screen:

+ +

+ +

Groups "Administrators" and "Reviewers" are default Plone groups. Your gen-application has added groups "ZManager_group" and "ZLeader_group": each one has the corresponding role. Click on "ZManager_group": there is nobody in it. Click on "show all": Ludovic and Sidney appear. Check the checkbox besides Sydney and add her to the group. In a similar way, add Ludovic to group "ZLeader_group".

+ +

We will first walk through the application as user admin, as usual. According to the workflow, admin, as Manager, is God: he can do everything. Besides this pleasant feeling, it will allow us to trigger all workflow transitions.

+ +

Because role Manager may add ZopeComponent instances (thanks to Config.defaultCreators), on the dashboard, the "plus" icon is available in tab "Zope component". Create a new Zope component: the consult view will look like this:

+ +

+ +

Besides the component title, its state appears (here: "Created"). According to the workflow, the only possible transition to trigger from this state is validate; as Manager I have the right to trigger it, so the corresponding button appears on the bottom of the page. Please enter a nice comment in the field and click on button "validate": the component will go in state validated as dictated by the workflow. The consult view has now evolved accordingly:

+ +

+ +

Component state is now "Validated". I have expanded the plus icon "History": all workflow actions triggered on the component appear in a table, with the (optional) comments entered by the triggering user(s). Again, according to the workflow, 2 actions may now be triggered, and I have te rights to trigger both: 2 new buttons appear... I guess you understand now how the workflow works: try now by yourself, walk through the state machine by triggering available actions and see how the history evolves.

+ +

The following screenshot shows how the dashboard may evolve according to permissions:

+ +

+ +

Because the workflow says that nobody may delete Zope components once they are validated, the delete icon is not available for component named "New component". By the way, you can display the workflow state in the dashboard: go to the corresponding flavour, click on tab "user interface" and, for class ZopeComponent, select "workflow state" in field "Columns to display while showing query results".

+ +

Now, please log out (a link is available in the top-right corner, within the blue strip) and log in as ludovic. Because ZLeaders are among default creators, as Ludovic we may create a new Zope component. If you do so, you will then get a consult view like this one:

+ +

+ +

No workflow action is shown because Ludovic has not the right to validate the component. Reconnect now as Sidney. First of all, let's view the dashboard as it is shown to her:

+ +

+ +

Sidney is not among ZopeComponent creators, so the "plus" icon is not shown in the corresponding tab. Moreover, according to the workflow, she does not have the right to modify components in state "Created": the "pen" icon is not available for component "Aaaa". But if you go to the consult view for this component, Sidney will be able to validate it:

+ +

+ +

We have now finished our first security tour. An important remark is that we have granted roles "globally" to groups: any user of the group has always the globally granted role, under all circumstances, on any related object in your gen-application. In our example, Ludovic and all potential other project leaders have the right to edit all created components. This may not be the desired behaviour. Maybe would you prefer any project leader to be able to edit his own components but not components created by other project leaders. This is where "local roles" come into play. A local role is a role that a user or group has, but only on a given object. The default Plone role "Owner" is an example of local role: this is not a role that you grant "globally" to a user or group (like the ones shown in tab "groups" or "users" of "Site setup -> Users and Groups Administration"); this is a role that is granted on an object to the user that created it. You may of course reference local roles within gen-workflows. For example, if you want to restrict component modifications to Owners and Managers when the component is created, you may modify the workflow state created like this:

+ +

created = State({r:leaderM, w:('Owner', 'Manager'), d:leaderM}, initial=True) +

+ +

Re-generate your product and re-install it. The Plone procedure for re-installing a product updates the workflow definition but does not update the permissions-to-roles mappings defined on existing objects. In order to synchronize them with the new workflow definition, you need to go, through the ZMI, in object "portal_workflow" within your Plone site. At the bottom of the page, you will find a button "Update security settings". Click on it. This may take a long time if you have a large number of objects in your database. In future gen releases, you will be able to re-install your product directly from your tool. This specific procedure will ask you if you want to "Update workflow settings on existing objects" or not.

+ +

Now, log in as Ludovic. Consider the following dashboard as seen by him:

+ +

+ +

Components "ZC1" and "Aaaa" were created by admin: Ludovic may not edit them. He can only edit the one he has created itself (= the last one in the table).

+ +

In future gen releases, you will be able to define and manage "custom" local roles.

+ +

Conditions and actions linked to transitions

+ +

Until now, we have seen that, as transition condition, you can specify role(s) (one, as a string, or a tuple of roles). You can also specify Python method(s) the same way, and even mix roles and Python methods. Specified Python method(s) must belong to your gen-workflow (or one of its parents, yes, we will soon talk about workflow inheritance!). With such methods, more complex conditions may be defined. Let's show it by refining our previous example. Suppose that components can be validated only if a funeral date (which is not a mandatory field) has been specified. Transition validate need to evolve:

+ +

+ class ZopeComponentWorkflow:
+   ...
+   def funeralOk(self, obj): return obj.funeralDate
+   validate = Transition( (created, validated), condition=managerM + (funeralOk,))
+   ...
+

+ +

It means that beyond having one of the roles defined in managerM, method funeralOk must also return True (or an equivalent value) as prerequisite for triggering transition validate. This kind of method takes a single parameter: the related object. In short: a transition may be triggered if the user has at least one of the roles specified and all specified methods return True. So gen computes an or-operator on roles and an and-operator on methods.

+ +

One may also define action(s) (as Python method(s)) that are executed after any transition has been triggered. Let's suppose we want to reinitialise the component description when we start its development. This is completely silly of course. But I like to force you doing silly things, it is a pleasant feeling. So let's update transition startDevelopment:

+ +

+ class ZopeComponentWorkflow:
+   ...
+   def updateDescription(self, obj):
+     obj.description = 'Description edited by my manager was silly.'
+   startDevelopment = Transition( (validated, underDevelopment),
+     condition=leaderM, action=updateDescription)
+   ...
+

+ +

We have specified a Python method in a new parameter named action. Now, try to click on button "startDevelopment" and you will see the description changing. As for conditions, actions need to be Python methods defined on the gen-workflow or one of its parents. Those methods take only one parameter: the related object. As already announced, the action parameter may also take a list or tuple of methods instead of a single method.

+ +

Specific field permissions

+ +

Until now, we have considered security as an homogeneous layer encompassing a whole gen-class: when someone may read or write objects of a gen-class, she may read or write any field on this object. In some cases, though, we may need to be more subtle, and define specific read or write permissions on individual fields. As already mentioned, this can be done at the time of field definition, with boolean parameters specificReadPermission and specificWritePermission. For every field for which you do not declare using a specific read or write permission, the gen-class-wide read or write permission will come into play for protecting it.

+ +

Let's try it on our class ZopeComponent. Suppose we need a specific write permission on field funeralDate and a specific read permission on field responsibleBunch:

+ +

+ class ZopeComponent:
+   ...
+   funeralDate = Date(optional=True, specificWritePermission=True)
+   responsibleBunch = Ref(BunchOfGeek, multiplicity=(1,1), add=False,
+     link=True, back=Ref(attribute='components'),
+     specificReadPermission=True)
+   ... +

+ +

Now, in our workflow, for every state, we need to update the permissions-to-roles mapping by specifying the roles that will be granted those 2 new permissions. But first, we need a way to designate those permissions. This is done by using classes appy.gen.ReadPermission and appy.gen.WritePermission like this:

+ +

+ class ZopeComponentWorkflow:
+   # Specific permissions
+   wf = WritePermission('ZopeComponent.funeralDate')
+   rb = ReadPermission('ZopeComponent.responsibleBunch')
+   # Roles
+   ...
+

+ +

When constructing a WritePermission or ReadPermission instance, you give as parameter the "path name" of the field on which the corresponding specific permission was defined. Within this "path name", you find the name of the class where the field is defined (ZopeComponent in the example). If the workflow class and the field class are in the same package (like, in our case, ZopeComponentWorkflow and ZopeComponent), you can specify the "relative" class name of the field class (without prefixing it with the package name, ie ZopeComponent). Else, you need to specify the full package name of the class (ie ZopeComponent.ZopeComponent.funeralDate).

+ +

Now let's update every state definition by integrating those 2 permissions in the permissions-to-roles mappings:

+ +

+ class ZopeComponentWorkflow:
+   ...
+   # States
+   created = State({r:leaderM, w:('Owner', 'Manager'), d:leaderM, wf:'Owner', rb:everybody}, initial=True)
+   validated = State({r:everybody, w:everybody, d:None, wf:everybody, rb:everybody})
+   underDevelopment = State({r:everybody, w:leaderM, d:None, wf:leaderM, rb:everybody})
+   whereIsTheClient = State({r:everybody, w:managerM, d:None, wf:managerM, rb:everybody})
+   ...
+

+ +

Now, re-generate your product, restart Zope and re-install the product, update the security settings on portal_workflow and try, as admin, to edit a component that is in state created and was created by Ludovic. Because Managers have the right to modify components in this state, you will be able to get the edit view. But on this view, because you do not have the specific "edit" permission on field funeralDate (you are not the component Owner), the field will not show up:

+ +

+ +

Aaaaargh! The field is visible! Impossible! How can user admin bypass our security like this? This is the occasion to learn something about local roles: they propagate from a given object to its contained objects. Remember that Zope components, as root objects, are stored in a folder within the Plone site. This folder was created by the generated Plone product with the admin user: so admin has local role Owner on it (and, by the way, has local role Owner on the Plone site as well). It means that admin will have role Owner on all sub-objects of your Plone site. When you think about this, it is normal: admin is God (and you are admin).

+ +

In order to produce a working example, let's create a new user (let's call it gerard) and grant him role Manager. This way, we will get a Manager that is not Owner of all objects. Log in as gerard, and go the previous edit view:

+ +

+ +

Yes! You do not see (so you can't edit) field funeralDate. Consult views (or dashboards) will behave similarly with read permissions: fields for which the currently logged user have no read permission will be invisible. Note that if you don't have the whole-gen-class read (write) permission, and you have a read (write) permission on one of its fields, you will not be allowed to read (write) the specific field.

+ +

For the moment, for every state definition, you are forced to specify a permissions-to-roles mapping that includes all related permissions (class-wide and field-specific). In future gen releases, this will change. We will implement things like: if you don't specify roles for a specific read (write) field-permission, it will take the value from the corresponding read (write) class-wide permission; unspecified values may also be copied from the previous state definition, etc. This way, as usual, you will continue to be as lazy and concise as possible while writing gen-applications.

+ +

Workflow inheritance

+ +

With gen, workflows are Python classes. This allows us to benefit from class inheritance and apply it to workflows. Our company that creates Zope components is now used to heavy technologies. They got a business revelation: some managers discovered that COBOL and Zope 3 had a lot in common on both philosophical and technical points of view. So they decided to begin creating components in COBOL. They were so excited about it that they needed to update their management software as quickly as possible. So a new class was added for registering information about COBOL components. The associated workflow was almost similar to the existing ZopeComponentWorkflow; a new workflow inheriting from it was created:

+ +

+ class CobolComponentWorkflow(ZopeComponentWorkflow):
+   p = ZopeComponentWorkflow # Shortcut to workflow parent
+   # An additional state
+   finished = State(p.whereIsTheClient.permissions)
+   # Override validate: condition on funeralDate has no sense here
+   validate = Transition(p.validate.states, condition=p.managerM)
+   # Override cancelDevelopment: go to finished instead
+   cancelDevelopment = Transition( (p.underDevelopment, finished),
+     condition=p.managerM)
+   # Update cancel accordingly
+   cancel = Transition( ((finished, p.underDevelopment),) +p.cancel.states[1:],
+     condition=p.cancel.condition)
+
+ class CobolComponent:
+   root = True
+   workflow = CobolComponentWorkflow
+   description = String()
+

+ +

Basically, this new workflow "removes" state whereIsTheClient, creates a more optimistic end state finished and performs some surgical operations on transitions for reflecting navigation to and from the new state. For defining it, we reuse the permissions-to-roles mapping that was defined on state whereIsTheClient. Then, we have overridden transition validate because the condition that related to field funeralDate is not relevant anymore (COBOL components have no funeral date). Transition cancelDevelopment was also overridden: the end state is not whereIsTheClient anymore, but finished instead. We also need to override transition cancel for updating the tuple of (startState, endState).

+ +

And we are done! You may now test the result. As for classical inheritance, it is not really possible to remove elements in a child class. So state whereIsTheClient is still there, but unreachable because of our operations on transitions (so it is more or less the same as a deletion). Workflow inheritance ensures reuse and conciseness: any element that does not change from ZopeComponentWorkflow is kept in the child workflow; any change made in the reused part of the parent workflow will automatically impact the child workflow(s).

+ +

Workflows and i18n

+ +

As usual, for every workflow state and transition, i18n labels have been automatically generated (in the plone domain), together with a "nice" default value. The format of those labels is defined here. There is still a small problem with the CobolComponentWorkflow: the transition for finishing the work is called cancelDevelopment. I am too lazy for creating another transition, so I will simply modify here the translation of this transition in the corresponding i18n file (=ZopeComponent-plone-en.po in this case):

+ +

+ #. Default: "Cancel development"
+ msgid "zopecomponent_cobolcomponentworkflow_cancelDevelopment"
+ msgstr "Finish"
+

+ +

Note that i18n labels are "duplicated" for every child workflow. Here, I modify label zopecomponent_cobolcomponentworkflow_cancelDevelopment without perturbing parent label for the same transition which is zopecomponent_zopecomponentworkflow_cancelDevelopment.

+ + + diff --git a/doc/gossips.odt b/doc/gossips.odt new file mode 100755 index 0000000000000000000000000000000000000000..d0d9a81b669b152012b5d476ea0078b856635fba GIT binary patch literal 8254 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 OefD9JkHB9m@c#kWhv$m` literal 0 HcmV?d00001 diff --git a/doc/helloWorld.odt b/doc/helloWorld.odt new file mode 100755 index 0000000000000000000000000000000000000000..29611463865c8b4de757d14f903a4202d024b6fa GIT binary patch literal 7598 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 JNOAS+e*l2%Zjb-~ literal 0 HcmV?d00001 diff --git a/doc/img/ElseAmbiguous.png b/doc/img/ElseAmbiguous.png new file mode 100755 index 0000000000000000000000000000000000000000..99b2fe983e26f8ff34859dfb998281989b052be8 GIT binary patch literal 11642 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

M+>`gpIEO;-tCT%7rhXpaaA1a|BhSOt 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 SE(E8f5ii8$kOj|P`TiettaMob literal 0 HcmV?d00001 diff --git a/doc/img/ElseAmbiguous.res.png b/doc/img/ElseAmbiguous.res.png new file mode 100755 index 0000000000000000000000000000000000000000..8a90bcf5c1eea4917a9032663db98d4f9ffdaf03 GIT binary patch literal 3803 zcmd5XE*f0Rr=i>qbOe8ue24boWc4h0~ooil$~}L0dm2TP}~wNB`W1FB!{a+UA9G76=d1;G0(kN1>^z(FFve``zHQI{c)vbmdE@hY zNt^F;g;4|o;lt8Wxbeb^25bds`@=BuD2Yl{2feCs>v~Ec%rILw>{@%tIf=Qr#ekZ7 zPd+|3h_|$}dmIbqbMK1dY0&=7e1g<}Zh7#VUu}QV*w`ou-v3T&2SDXVGl)HTYUmG4W-Qr*UR+jYbVR`8x#Un($TZd8 zz}+3bFqj|DEvzsRtmEv5Mni>!*a0~HU}yidv&P(`o0^(FO-qaU(x2_o`G~V`a8PZM z{*Vp)CqRmfjK8|OyI&0s@?>UadQDH?4Ny~4bEx&?qz265x96~Yj@8uZoP|BAh7hXv z?kM4Kli}(>yRXIyFE0ALbZX+4kdOd97#+2J@#4kJuR{eKe0;`HQ97WT^KFqLiZ?+z zhZ{DBm--z)i7pn@&v`3ukH69dLU1&f92pL$sRSHQmGc8z-yMYPrl_ZA|ops z+t8pv4V)*opZ-zdl%EGS!w!uzGP1ISpP0KFy7Ah|Z=p)g8fRTUMwE-sRwXU)x```fEu zTZEyTJiExAo}S~n@7}-fdE3Q@lq-td%FPjwlvKbh42;0y>o0yoqo0vGa zyu4iNGXm%2;8+}wdS7O)eE0Je3cdF@8`~L8O^2Z(B*Nd{|I_L!qUw4zKQz@WTjBN3 zk6op;wbn-m6B7<6kx{L64Gq)5I)#OW0D$rgqH}s&96Kijl3@&sv~@(GO5568yoLzp z3knM0@U*-<88$F)Mp;?e^q#N3zo4tDYwo4++R?GG*TSw5Qi6hlLer=V4fz^@Zz`-x z46DZQxGUb?<(KwS8A zY@piO+7CZ|Bw3Xhg(L=k8?D?q+@4=MSRbBNHS+N}mtlGa*wq7OZ~*jBK$JB@e~7RM z7{2ZW(#2p@q%8`QRJ?~~LeCHP^qg2(S>fR1d(4c ztTzATGqSS%pBz&1Cx+FO}U;ejxVNMQC;$rCE+S(HR*$87mv;oWJ;^tnP!3@um)5AX{oW1k0^TYwb zwY{Q{*->qPjrl|LoNMK=`p;i=CkTA}`0=4ZJnwTFjfQds#7cd0EPuZ@PA>@JG_ozU2*d3&z)q@<*zG{$R3rE3-8-25m( z;H-YtnEPyV$V8p5KrMxWEkI%!DNUMt_@W{hkY1L8GrlXHZ`+sHvd}TE&3GRkY&ayI zDvMcbZfyMf)G4;Zy-kCF0EM>Q1u;!6ExnQv%}ecm^`ZuGkdCnV$av?LP`yf9_}R1Z zm!+Va=57-qUC|7N0+C4c@$=KiVlRq{iJ6D;119+Gn_pu~3-cjZ@)cmnRt^q0lXU5j zea{jKWt}SQ0Bu_4nR}NXx8@NS*$em;onAi8GXv(6>^4Kt9<4Fy(-As=Qtqv8FHgsJ zcN<>Xn()A-q!@*SsPXgjTcS{j0JBe@IkSX#oQEG%bU`o67ocoyGk&v&Kp$Q!H!wHn zQE+X8K*^PXC=W6VMLB6{c434|H^6917Z={@>xqE;-NRxHs>X_GGznmm(HO*J2WCto zyWweb5k6=h}Y7YcZNeSIsc zs=AOz2eEZ^bpc2C?z2S^?psgnakwA5gRWd$T%H{qep+_YGbK#4mG;J*4O2? z`~&5vNna|o_J8lMetCVi=r36VH!|&h6lSri7(^PYp=)(}JO55TwztXxo+v1XvTYzS;4C~9AOu(3ayeX>O^z&a9 zX(0aX% literal 0 HcmV?d00001 diff --git a/doc/img/ElseNotAmbiguous.png b/doc/img/ElseNotAmbiguous.png new file mode 100755 index 0000000000000000000000000000000000000000..497f7b803a878f68c69f8641fbbd698ee27653be GIT binary patch literal 13043 zcma)@1yq&o*X9om(%o$UDoA%9LOKO$>F$tjI5a3FN_UIWDXr4oAt2(RyJ7C*f7Yz; zn>Dj$mg`kK!t>m@_qBi5exuY>|h;6n`em&!62vnb>^%qXc2cjXWW1LP%C zQtR#f?vl5zmc=#3!TvWK;V*1ejkzTZIZe5#ie!%Jrnw&qqjJ-)Y}Xltmrp4pSeN$ zD9mCx|6jkAD(hX=Fk(;tGzsdbc(w#r_7_857M-{y(_0 z5Rc>KT4Oi)Hy9cQu75+qBcS{@It*)!T3I+(ilBqwM5?cf*o;j-_5_V$J= z8amDe5em9rRJ;G5uI_bi914PHBowI{TWy{ZS;Xtw2*M&B-~26}Nax#)BX5`d$Vc0I z@|QVFaZbM>py=$1q^lccb#0s^Wks5W2IaJB@qx362EZU^fb31%`1RL#M6E>IW!GS|L~#Y z>~$R*Iyw7dknXe2o6CTMGe>*~%hUIgEF@A7xvDgV?{5DbcH?(+4i7&N^{Jhh_1sbu znXVScVP;06p>_D|{#QUiaL%USb(;?dn5o#6H5!zOG2rHqdoaC*&TDTYw*VS~NBgP9 ze(uQ&UhV2Xj-SM{HPlCHww7AVQha**jC%Q3b|MYfBjq1NaXW-q!)?$<3h%I8Vrvifn%p&ju?k=C*op-3JU824l zRTH0`&p;tCnfpSqGv`J}?|;Gu$*I+fsCS@#GhOjZUU8tWCrW(v;*jHwEn81<_8q42 zisRcqnRHYZU`1EAtMOOUj5j+wbCF(EEmqe*r^hDW>kCFX{6tyoboIR! zbHa!ibyRksSp0MS5bf>uD_apNp3kU|XNJw#EuOdWF6(}5a8{X*e9D}5sp1-%PRtA@ zk5sa5sEUf1rtZAGWpvy9@ar9KY3l1=HF`eB&JJkClS^P9UodvtY>jDb)T%HLqaWHR3J63HhM?w}|1J)?>ud7>3jj0Syz?~pLeLY!Yz%5;o%2G75oaJE! z;@IfkV!)br7Se*u`m4b1%SuXOHM`ps&Rd#4{Py{cArhpjN_p&aE^d`!3%1ue877uD zH6Gry_EF2*Lv){0S8WI1>)k8?7p5lD1&@=hUu8n30S}>F3 zVId)=?tjL_c*|KIsLEDr-YcKUVk9j+Rd1qETu2$g@d9(rvYHbzyB$f%gx$&D)^|u-QhRpSW zCOrHRBxs^|LVLmI%w1AL1O46m{SxH9j=P_0l!zJB6k8q;_KfBGu4Q^nclGtr=+`TC zwfkdX;w<726EoU7Jm(qL(@kI995QGt2%_<f<96=!A!O zOIfd~#vAY_g&9>?fhXqAsi_p-4f=Qp5d)F}1C2f+djED)DRT>phWg*Z8a%F0UK_Lz~y zMZ~+zxol(@Oe5AzYiyguSV&xxQ(l@lIB4>A@p6SEjSaZ57S_}pa>D#ari5` zr=)aEPU5Jj#J#b#eE><6e+a%u(z}Vs!h%RZNa)-67x?;}f`WpY)(OGm$Bz?#6tJ)o zcF#3EO8)7ZoD5SpGKybYV@m&kl$t8>dM@9NAu1VyDI+8Ef{RP)tEDm{k*LpNrWB)` zq$Co^a>)vh3N%;;2bHuf6bgx8y^qw`NLijg4-XAxuBdp%K$e!%*ogV~F_U~@0(|^S zA$PKZg^VEy%hRW!ZEYyvJDy&xs=o&Ro}BiS;r$OS|8I!pwPcBdjLptc?CoJErlnyB z3ky?FQ?D<#`GUz<&wVLmGXyWE6Z3;jSL$yYOnY9RIbfn9^Ek|t$jZuo|NcEFC503m zpIj|Am+k52wbo-&q*}i>HYC_m%6_)GtfSM=(3sfSm2=-y^E-Z9T%?Jk=0_)FeEJmo zK{zr9K@ngRRaEdYczsXM#>2zIzYh#Zf8=v0`xNqs>E`x)g&+!QJzjtX*3iV!F&^B< zsk_&&UxQf#(Gpa{>3m#7z?39!wE)AUq@=W-uVn>0r{({~)HI|ojyk`!)xc>fHa6C_ zBF6Iy{?qi|u}+q_wNs@Ny-rh={C7ES%aNrjDL(hv5p;KTl~w3}HtFOp-8p{tFUaq# z{LI;xH2BP*_1qfUzlhW?%Yqwmv~Q^o^UwYrPm2Fd%AGmk6X4Sdg#`scpit-m3$^t~ zmM8_kBaP?od~fC^ADwSn!zh?{)}PF z@0L1vOGn^zW{LV9tahRVSXoEK$M=D?IE0s1cg@V47nXN4H1NNB_bxFhN!{u=28g!~ z9*Lc)a&i$-Q6$KEKT37$k+uI<%b^!`)6ZZ~rq;80yMyy{{waywDub~m19C1d zuFr0NR3Jg6r8d20$fwkzK0JN#wAV`F1>0ZoYZo*Zjw&iE-`Ln(YN(i>)>PZg&CR8Y zcyl46pb%10Mv3`fP5OTD7y{=mK0e+{Y6gsv_{k!p54yJ0hfkWllh>*As!)A?E(-4@U1U}QB; zD`JZ+R@wCz)w#L&4hRDQ_l}^X>nkr?9P&&-l2A7vV9iNy$g8caLL-(@@5?I(` zg%cKidwpcppEu9Lb8CD%a^A8NmmODFq^W=81G+zFdM71Ho!H zzBtsz#-{gg01`4XGT6if5U^0u(B5ngeh^wXF5u$k{hnF#cLZjJFC01*hK8qc1i}W+h^}%OUSoi6pRXYFH_`I;?AVpYs_?wfhvCm(= zNa^Wi$X;HJZw(wzmTDfHp7t&_xp7(z)9^Sg(>OXhHhOHQvW@6BIKKIr%&Obw!`psy zq*zc;Kp`SF?{WD%&6sC1jq&%NjSUmTzkjvF_4D%^{rpBcmXaIY#l__&Ese9!$h|<; zE(r#^xxK}Lw4G5|PqHMov;knQm_%-Ft`_Z+Cr_@<7M!#P z92V*eJ3}!hLNV~=+0)(^7e7HmLn9-x2H2dCMMp4`v-$r zcZFe1ez8yl!I6n64+g`uU2NoJO;LFF!+c|BN6D%E@-ZnHnTCxG>*dweySO-9(YFT@ ze`Zy)L_Qc88kV-UeuBYV#*K?6uZ2*D5(c)nHU$R zTz6dAe5UY_$ko%c2&4vtD7L=6IxX|j8Bcl4%Ud^pw>Mo$?d|J3vDD)Ak}X98EXdaJ zi1-txJdkW{SK37j3knDblQc>T_Lf>EFzEdbpr=D4Bh_3TWlytV-)CmhUR4_@L!mm= zMvoxw2dk1GRG+Pl#Uq7Bpucn5goI+Cym_-?Cv5#va+&R*w{2^qkJ*~M#)G> z!jhQfm^e7_LEy3;%|QZjJ3i&94l?8+QB)bNs&CxuLdj6{&iQ$&>FH_RFXmXwe#go^ zeSJ)voMWr?+WhoBCtFBza&oit^Idaul#o?8Jev54%C~_5Y{+PlGW7nEZ*ZtA)_>J-{9GiT!+E^SC1QsQO&*4Fn!SHCVg?hoNql=5cZGCYDy1 z42)P-ULLdk3jQ>6Mi)dOc-z^L&9&qLh;3s9FNy8vzMzSTi5;ArK>hqg^78V4R5`f2 z-k-TFAizW|n=x#5M}m-$l1`O5)a_#I-c=Y>i8xeOaviWfeLB(9rd|H(Vk# z@@hZG!Qo+NyZ`kIvp$^fzg+>fC`Cqa6OMYJ7WA>@Wjc@_LZx!mDw&yj`unMC1GlFu zUG|qnr+Cfaosz{W5i`=p5Z(77A;|8#^Q5e-tm*ttbgAry(cizzw{>ppciiJeLG$#U zy#JAyntC>Qn}f)M!NI|^wKl|j_On5MCyJS0yZ{J=5Ec_74b;Q7M+jI`AiKcx>RvgN zZwHLNGBBth{067G7IfQO1>2p@=RmdWyD!@2ohj&s4s>oe`0$OBlX1DA)`xnr`D-3; zJ$-%V=g%vDiW`pD`aw*<_c*({O1*t6Q17@Dy|uL^B>WT9XFGxzFonV|OuFS)oh524 zS_`)~H_p5Byh@)02tR!I@O^L)>g@a(&SU>u3{Kw;9{>qW7NjC=ek3ir-xOjr2S>;x z4^|si0=hw*J(->w9K->sPmP7-`_NFhM(HF=b@T6q1}A1AAu2L5GE7|DUVu|hvhWZJ zVsE7bKQJ)x;gcuKj~<~hGBR3ESG29L_3pdGSdtRR?&nKQl8kz&HEfrlz$2%%TLv z#9%*G`2+*E&Sdplu+PHBckhtHrGj^M?30s|8CY4dG)lEd4L~4`6C2}QLC2v`D|eY8 zw=XL$b)YXxxQ7ukYw=GL5SnvQIxaPbgSbhcUiqiA>QZ~+4BWC`Ah-7bLH5G$!dXC2 z(8m7$YP*_uc^^nUBZeu%93Zb1!8S5OPKJeZ-2TulvABXequ2VD6DcS4x&C-OtuP4f zU`Y`%Tq-xQwXN-MS2%WAD-kiV4H&Pvqoaztx_WYAVoptk8q3zz>GsCjS**gad@_ zw4fktadEN4X{DWnhDPc5&q%S&M3K6SOU-bNj&UFeE?@;+>c}^jI|8#?TU)<_RBAbx zE-CD}!vIv&13bK<7;=tr5M;0*GEnF!2ty~SrPXaRStbrh_np;`P_4W0k20_$T+WocnSAZaUmz_;-OgRi9$*M9Nvc`3q5d(pi zAR7T0Sp*uk)KsdpHh<|PzoCUD9)YylyEFGy zP~gUk?l0fP{I`OFhd1C@g0fdIHZD$3zz=V_+Bl)(?h5cS-$B;LGX1Y!nc z%1+uIFyzKGHVJn(x9+DYBiCm4RM+SGagM-Xi&0Z{;0*>7DYAZ=F?R zVb+;`qeAIT(xFNPisS8J(F2vd(|H*DfDw{IL3W*s`l@*tT{w2 zSk5iGh=%yWEcSnb_#&OQPo~452sJV?>V4O)**?EeCftid>y2fbM1JzgbUKBuWY4{7 z)8>t#4X*HWgG;@8R!e{HTm_?q>kPz$D(H}VnlIudL5i=lsygC@o%-YE<>xa8@;^kt z4EPg?iWuQ^r1qFg?~?Kw#77kCcKiQ|ic>40#v{WPPvWtrW0JSt%Asj9?$3pu;CjYkZEgXh zJZ6E}eb(a(w69hj)ou%&p)p$3{0>54${)p~Bk`W+cq^|lN8*L&%3#ZFwL2#LXCZp1 zc9;F>?51zfF)*Hid|lLs3(%Xsw-C-dko+;DJj0r$w^RuNPRbd z(0V+KoSu$ZW0kPEe!U#vE5^m`^(%&h4acXa>@+5}a1gWHJ3?~uXko7hzt+E!^d|%c zKUTJ{aa?k0bp9n&Z~p;(S2!N5a9C_CCgj`gb??EsaXbpfX4mjAm5t3DDDZiQGqEus z_H(X8oSft@Ja@J)_F9Yyh`(Y2JLI`utfb|p%2snslMHsCx#b?R#M|Av4;Pnz2x=X7 zQFmL?7wSG@Dk^GXh66>W{IRHWpq!LW>=}@fWDrbjvK@)9mUx&rekc$&cstVA*dZ+H zWlsby@l#}3tY^=ao$mt(Z*Ds}?{2wGtgNC=PFlctn1{1&k*7pohSS&eBkoW0kx~Lf zmUtks|5dGAcf>RV5_nH1;QEjf;=H%$0W>t7a>gtKvK-if-_>nqJ9vEZS6p39Ef$M- zx-3M5Ny?^_1VC<}u4Y`0HZ1(k=45Gv>q(f@m-qyQd?Zse2NxRdgN*~*Ab{c?9mkBd zwJ4_C3VAt3jgHC>W_M7F`qp<-J2j#}OwBaab#+66f|Sc@6Bf+6xKk1Pb6)`=41!xz zLtxN8k3{Cq?tIdEr))ICl~9(X?+52Af}d-7WF#dy^%@*Cs&|Eb`Eb?Mtq5pE>B-0* z&(`mftgTmTznm%4mIl@gGN95SX8rFDhxj=K0{qxvm~?c{Ydp5ix9;=o!MkE>u8x)V zP50)$;<6hwVnspGAp$OIs#EnwZ3fPpNJ$v$0>2*XUi~hm(9MxZ=qEiq3p+J$53Mh*tC1i)0C)4+^=%JY-CP7yyfC4&x36%%I6%I+Sl0>* zvk!(c$#@Iq2Hp=J99YMtr(-wzoI3UN_@M!Lf4)K=bboh_VZV4mDRwuDaeFls1_*6D z&1)ko2bvc-+@3oZC_tj}f-C*`>(}uQd(|C#CcnDcUT_gfJl13om?ck5EdqPdS)@!% zNc07RC<^EIZ-tZn6{Jkzj)DJq*Lt|y5a&*Z*WXaYHo@s1o7Od4ds6xWvHG0<4;OSD z@}E%T67(JM-FF>UQ-1{!jr4b42hpqhSzh0;P+|Vx!9}P&C-aGXSRy zei9@G63n;CqD{%ay14FXD9DG3P(6BAS8F{Rm#3^u|2{{0<3eZU1Hz;r(6dvSn< z`mnl#>;@uYnC&G0uBT?-)Lc{qHC*s{i-v;irZkma#Q| z=orqnXYe(PRnQ=Q2b~yi_uJ037XCx&hJ{$&0ivN0_N?fORQL84tTJfIb88aQnxO+# zqpqG_I|+)ly*-YcT>l@V>48ZrRbgXXZw~8yGi$XX(S5u33Dwmc@7}+6Ip15d;;PO% za|*e-1Nj>;pR%u<1H;388$aF?Qc%D^d2{l2;!jk6q1YWdyey_&2$YD&43npwId{|$ z1Vbi7enkh`3W(ehy#UOzCIDb~Xq21<_8|vLtPj-HrETjOHbmZjEgjL3{xkfZ=5~x1 z@&1|`PQbOYUS^Bz`j)h>gg#Nt3e#dkgYY;mQh+K!RfPRi+jzHmtDGC*Z6oEe{}+IV zflp@wDrBmK1Uk`Zu>58_vo#mLBI!Q|-UlG+QR2r+-=ayM0!AGJ#AX*LSLg$8IM4Q$ zVgP>m1wcSRoz8$jccfbRZ+Pn82Q-CL$z zzPhoYW#-FfVQJab-;YtOk|_lk)8Tr8c-O=PF(eUaccDj~S0^@pr&Bs_w<{aUHe9ww z8SNM9ajUATB<_F5WweXhn<+KOck3s$UKyUw0a0J$vM$SGJBe9SQ)9i<%=@ZB7s<@b ztiqs)sIaimdMpo(iJ6(xX<6iCcYz!%R*&y~TO{ezSHSS36nJ~U01o2|mo?}!{dyb- zqN=WSSRk{oumD~s6x0xveH_64GHa*e@~S;At)iP68}3i^uHFOS3qcn*hcjb-bw}n~ z45UugxA2)&meZH{j!<6l%K&MXS+`1>m)_ zvlB^DQd0X$bLILCP`lcFKSw(#A)g(WgktH%=~7cuL5AIb;kYQEtFNykTz>_xc+Sg9 z3P=!ekGl~?E5M5frPjb_W_W&hc!(MVs_UGZq1SVQ?TAI!y`Y5OrC^aTqyqucd{@_&_cVua3YVw{19uM*VSfoi#!(c+@ zb(q(3T2N3_EcL%WOMdrG3JL|!Y4+Mz0ay)*P`%EByMP`3*N&~c>Z&3qCrCs@ghgCD z8wLZ|8w#LQa%!q9a9R*x5>RX?lqc}c@96MQJ!P)eM)LtazRvUWt+7xkDJd9?MN~9X z$bBn^%?(tnyk|*#hR1b9P5EsJ?LJ$1V*4H`hD)tan7|L`0=L8G;(+n?yyLzQ+>p|G z?U}v#_&QH`1=d4;KQ^51j7so39%Kmgd*xnb2Br|-Nr2+af8;k z>ifD=JbN0Y$wkT^WdSL8@M=uz{?olLz>1NU?s>;d4b;`f*MU}P~sc2`Z! zz1ISdL_qJ2-@iM@#t3n#c)o#SRRaJpBnZl+ZaASuJ~If+%Pvq;A$%wZuxYUXD~1FC zJq+VJYq^FLKTl!ja#+RFe zV?U~o4G>Re+1PIjP91Sz3)kcLm%o9La{>z>w0~Ny{8eQawNq;_z_2F0(WD4~1{U~* z)$k{_eGE`%&1eorPzbrRWboL8JlC)P27)5ss<4CvIV~*`08*9%?{9q^U{~~gV8^8& zzqhg9pRHkrOu~@^PDP%o){&Bu{sN%m;NajJNUONR1K+m}Zzblh5tXv8^K_1nL9;s+ z;7L9cR2mI%c;0QUvEgfvDJ${YllQWjwY#%5C?Eh!TU)c--5jgZhzBg@Gy{Wn?ci58 z$cxVa^oUJNBtS%CRh|Gg_w+!)D>1VDj$XFK)ipQ!jM$7!{FLjR z`IBCn(EUC>rLK-QgWoCssLYa4u$B#%l?PX0+ekPaFK_{l1;LqLiC zf}49?mA6lK>Bgbr_unnsdtrPWoE~u2LC8W^$`+#qAP@$FNf;Q=_<&ZCL8_@{54*({ zFMMEomU*O*2YSILf8?B51EU)7(5?Bpr+`ws?96hqkUWTMU0Ywr{i%3<7sS{C;PF4) z7wK~9y#Ytn=P>hI1b=z7$(3n zGAb(Z@Dq@G8whD>aj~(n!y+O~XFtD59Qa*FC%$`WyR}%lC}%8+^Wo{dg$_UeWJ3ZK z?*lOA9sr(_-oMx6Fsod~4@JiSd>VCcb89qZ-kSf1F|MCZ}h?3F!AyG0T)wy^(q25A#qNb7YK6M2O1-@ zU{`2SRwG%3hwJ^s5cotf{_W8KN14N$H*XMW1Q-(eYip)$8;O zR;njt%zynqg2k%&cHn;kqv~<4n*8$eviq+tw9H#VQc{^$uU<{&%i#-w@^|=Fzt&ok zoL%IqB02^IWQ11>^|ZpCh%olOw>KPMD|u$Q_yRCnP0(KQFQLvml>Xal6bwAI7SCOI z77`6`ZdpNsguwu}Rs}hKV|7)6+j1}mJSnlXlobsFqx{Ux*_i=^c0J%Q``;Y)laP== zfgu1mGc+I|0I=A{(J)vJh#5&rkISbn{$^D34$s!le~ThNwZIs7p<5a(@uXR*U~t#2qeAn5W^%)a6SYuq(iPym;W-H>*jg<}jR6 z<3sqr$YjlbsjhCGS^lfyiX^`q9<0r^`SN@2FAvckegfvC@gf$esz7ZuqN=M~;sb+i zZ2Ytcp2pYepkKOR9!4Ie+VlV^B=Oec@QE5TxjT3+Ii!Oh zRDrkphlKyVxpp0LNYDD@4`T$*>(|@2?bmw;nrXMY4H((h9qfi7@QT}rdg)vixdb}n zqcB7>6_~}9{j%Rt>G8$i;{1D2$nX9Z zi-HmhnARxI^mrbqsMJ&0Ojlfzx_S$W-CgLzpi=gW0%%qvMW#a;)+{8y38KQ%#REwI zA_=#f`NHV|N8gzxM8=3j2gnNp_$)6t2_@M%`Y#TjG7@1C5^^f$$8uX$fgf&593Taa zF&Aqw_@hm3c5ys~g&KpI*Th`hZg0%Z!_Ia;nvLb*BSEZ2?!tNP@}8cNo8I{aHns?F z+w=E7*wrM8yvjU#_xx;#1QqxP526_99fx=(0r zGtRB3a41lNPT-3V=H=uh6{z(jO1Z#DqPt1O<-SjRU(`!*~9Z;F!&~oMUUSoJ~xXZ!{jf86B9@#D8TsefznnicZc05Y3;6j-I4z{B%XBdPu+o;6FtY?!VoX#Dp;~Onx2ZZ#D!$sj)9v$Lo72fp$Pn-ZX>CCHAyzka*8|MwkoL(-~1XMO!k~=ZM72( z7Ngi%s;P5udmdTiwQr#9KV6-Tyfk7u{haX^dR{(<>GpK#=g%)BwI;m{nosyu5g=y= z>p+=}BT2`|CaR|gNB$ufM8e*_*%m~>N|#?<%8PB+5Xfhz6||F`(rYSVGc#rYlpzu$ zS-XkJ?!-D(iyCNe18-AG63}&`an!4D?(Di|lYaamsNK8ar%_w+T zq!&P`J-*a(4gs__6x{@A`Qel8s)Tk=ST7NeqdiE}!~}%# z^r}@vjdViEs1SMOwwTsd(^|VfJ@2CdR+7U^d0y;4y(9Rv9#TKdY5_GLI3wgNq z)tJ4Mf7ukeyC5E^#?k{LYy9vdnh{Pk$-Hhs=E$Ynre#b+_AcSB) zB%%Z@gI6ama>XiUJn+O+PmFS%ePHbb8B~3%wP^?I4eCIw_RCG;XL_~erh!uX%e134 z>n%R>H9({3nhd0>f}SXEr7RjGAZGRT72|3_b9AFOH+jBnrS!`v62-K33_yD)6KoNk zbUTCr$+OrcX8rNWpJ>YXpm6bo$lWp4H^K4lB`zyv+o(b+oHLK(axz$DN_;Xd$M*Y+ z<4=pnM0zX4l~1?nJElbpD_ack6Vwo8`*kRyGmR+Q6wxS-pmhIw_5Od!;S}>--VS+k kq#TPE@<03+bC2{Izo$T6%BVoAq)bBo2dgYNN&o-= literal 0 HcmV?d00001 diff --git a/doc/img/ElseNotAmbiguous.res.png b/doc/img/ElseNotAmbiguous.res.png new file mode 100755 index 0000000000000000000000000000000000000000..3fdb16251ff9f1a0c9781e3c61a0db82506e03b3 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0y~yU}^)hRXEsyq{zYFTY(f?lDE4H!+#K5uy^@npa^Gy zM`SSr1Gg{;GcwGYBLNg-FY)wsWxv5J&ZDN_SzA2^D0JM@#WAGf*4vwgTn7{cTrSRi z@OS;5l}ti54kz}7cRme~_bo4HWH7k5YL!+9$ z4rd027DWbzLjnv8i5v_K1}qE?5=;yVJd9M5-j`_Gu5yimVTN4W-CUq69@eNbqZsd( ZSNo3F=gz02hk#yU@O1TaS?83{1OQVDPvQUo literal 0 HcmV?d00001 diff --git a/doc/img/ElseStatements.png b/doc/img/ElseStatements.png new file mode 100755 index 0000000000000000000000000000000000000000..621f1482077d689cfd1d027056809666feaaeffb GIT binary patch literal 21689 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 literal 0 HcmV?d00001 diff --git a/doc/img/ElseStatements.res.png b/doc/img/ElseStatements.res.png new file mode 100755 index 0000000000000000000000000000000000000000..ae66ec1ab7864bbc5ec233793316b7fcb1b2304e GIT binary patch literal 2629 zcmc&$`&W`#7pBZ^j;Wv1XJ%!M*)%okl$X)+QfV1p(9zUN!JL*fqE%Wq@c5**)Q=G-N<31oZuZ6vL7x?tn_09jfQGeSy2;_wQ z1^{GGABelIK>T~grc_?OQ_>R(g@too7U2Fbb2Sj`pOvwJTbARhZXvX zyb<#D{5SXK#7V4t%!o16@8rqb;sl9qKtKSE&Griq4;NH~HQhS#na`)Dr>7fiimB}< z{uI_&F*p>vxKr2j>5pFweH;y9$65)kXO&z5H-sM9-}3R}+2-cvN2uBlAI^{+G1014Th=_<|*roY^x$eozPtG~5(vH8St=*lSh5fbht%LRcLQbFj38 zMe><96|Y{s`c3*5e$Ck~s&_AofBZS_x^f2%-cUPP9~>{neE+||?`hMR%xYHs!e9F@ zAdw|fnJoC?MdE39cj1ReCKmdeHw1C`p{f1Iwr62TB$-SeiK}JQ*NfZQ5Q%d0*7o)| z1uWmO55Qs2>8%2x5CG*}ZCH+*(If|n_?H|U9G>Rp%AQoR*--!uj9XOnzCGV55{ay< ztD9AI`jA>ATew-iQs4AopWtAU#rcZ2eXNX(t(gxVyhO{|bw|y*LOMD+el#;{!Y+>g zTzf;FU0hVutLUcl+QybNGj>%8Qj#rnIlvJQ`I2?x&%sD32%*cd9 z+sL-Iaw@eYJ3G5gsU{LG?A5Qp%#8H0!&}?h8krIh;O=U8#n8~N^s=&}pgoq$n9MkY z`#qgU+S=NO4j%N~tN(drd9f<0?FKs z@;iz>SMfX@PCf;@07Z|q8Bfi}*?gFvZZX|%a3rz8`Nml9kw>O3&SUE9%7hh-?0&RS zl%k8aMx!g9gB4$+IsFHqim|b8Fw06-Lm(DgUsF@_t)ZcrwMn&0!&j@^*5afIu8g>t z@$g|+#`eQ1anhu`i{^jG$|}gs?e3w&hw)FI6g4(Brly$P;iCa5j0-tFp!za07OrIS zyxehny5C@Cn28Txzqa4)nBeP7@%i%QOZ#i84<#@*b}dDVMoWV6I6936#WsXWKworN z+S%C+A6uE1;KGF3B&Vcm^j2^$GgDo&UMw_-^ml#NPH|zSEYAM0Z{JBkiCSrAQk__Q zx>$^;s;ZKIa#=kGhm$SgH8ukr1FhS)W)|Mw*1Gue*L&!)8^tNQf#=Vcj*K9^i8fHf z?_pgzKF+jj^_nwsx!iRRW8?bU`))_PjTzNQ8t5czfByXoT#o1|0^u0H+sHWx^fdI?1e=$27Cwmn)J=Cn2 zmiTmng}9KX6`F`A^tDARm7J2wJjZAa!_gZZgQ# z^$u1eHL|s{L-Cn#!Rwepz`t=5B6;5W?(S|mIbQq+Um4)xk-=uORn11Bzs-#B6r-b` z)3kL|6Sb3NRI0n4lj^bIb0Ud!bABppS@5oHuzmw5STcw`fAlb jUK@!_OmKMMI52PG|C@Ku=Px4*U>5>C4Rd3jx|H@0ptk!0 literal 0 HcmV?d00001 diff --git a/doc/img/ErrorExpression.png b/doc/img/ErrorExpression.png new file mode 100755 index 0000000000000000000000000000000000000000..0456c727b5b3c871c269e500593a866ff683172f GIT binary patch literal 803 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 KxZKbw;=cg4@4{LD literal 0 HcmV?d00001 diff --git a/doc/img/ErrorForParsetime.res.png b/doc/img/ErrorForParsetime.res.png new file mode 100755 index 0000000000000000000000000000000000000000..ac2542479f38830a3477c154e06c4e6384029e1f GIT binary patch literal 19823 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 literal 0 HcmV?d00001 diff --git a/doc/img/ErrorForRuntime.png b/doc/img/ErrorForRuntime.png new file mode 100755 index 0000000000000000000000000000000000000000..c6ced148d9cb3a0b83778b5baee574b9d70a458b GIT binary patch literal 5099 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 literal 0 HcmV?d00001 diff --git a/doc/img/ErrorForRuntime.res.png b/doc/img/ErrorForRuntime.res.png new file mode 100755 index 0000000000000000000000000000000000000000..c9e551939099b4169ea6f2945bf67d094b7a73eb GIT binary patch literal 5618 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

Sl<)0IDZ6SxIz-=v+ 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 literal 0 HcmV?d00001 diff --git a/doc/img/ForCellNotEnough.png b/doc/img/ForCellNotEnough.png new file mode 100755 index 0000000000000000000000000000000000000000..6b4128f4c1b4d7632a6b60d7d4932d7dad1eada1 GIT binary patch literal 3073 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 L+0%)=Hzf7H1@x*W literal 0 HcmV?d00001 diff --git a/doc/img/ForCellNotEnough.res.png b/doc/img/ForCellNotEnough.res.png new file mode 100755 index 0000000000000000000000000000000000000000..0f81a76aa021f04e28f7f522e13663a48c473003 GIT binary patch literal 2407 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

=z|^#0)A>fV6vSN9M{w@lJ87mP z!~7@p$&Y(_dO$_oyP_rD`|4F9@wyVqRGP0hsrhQnl!eW@qp6QCf7~LyOo86bqUgw59WVTRrb#;Sg zr~tyl08LDcrRMOXhyaEC8fo6v>yU28J%;gtz6Z)>Sq~Y1#_(ndidZ?D%=>Q+6NVn) zXHG#@62K9)ci4%&1{PLg@j{*Ane!4M8rCZz~mGM2SvpE1K)gl^nmS-o8CbR3GPIuRJL#OL-g60&m%CeiyD= zju%>&m#@TASt!~RUs-j|hfx1poj@Q6>Zy$$F(?c-*xcVOzkmMJ!<#!Ym|qquI%NCx zwZ~uG4I1mI)76if9(|pn>+$G|I*0LOy~Dk1urM>xpP)!7Ue2w3S*)TaD_!hS$K*xS z#XdjDN>_~HKRa+lEiQ#pu`5tmRf^+erzH8Rv%8D-#@f>1OKWGpe4dY8rTEBsd$tjA z%Y3#W>DsH!a)eI9^@*wi2H>VTtZBqC+;ZFFT zIVD zh38tqA30egVe2;z_&W2o4P*w-f@jJ~1JjxzLzR$q-lC5zylEfV5OSb_##-SCiw@1*D zqGi#1H=-13wdSZOSOd5DoKh&WhR|gaIt3zVM^Dh&jz_?p!^fEho=0N?RovW`VKeK2 zs(%UA?**rGMER`8MUdu%K2t#h7|2mIGj-Q@;3vxbV9zi@lPSIqJQF5C)URyrBUuAX zlM!P#;aNjE|1Ep0dOoLv?qgqLN=lW(ttQF9xcdA~^5XinJ^%8&SABeHYU<;nfIT-< zeQ-z9ga-OH+A(vD?h_9+81k?xH3cw^>R)29%2fpgy}}YYP>|*(;1_`XSxu5Wmy@Ob zbVm5a#zGq0q6yu1Q-vXvrle!bQlZV~{>xhGLM1j)X217@tO^Vr;QV5PLIy(5?WYax zG`QaIUSk*xaAMS~AZev%q$<$YVdcq@8KS7URck$La)^{1=>y(%y#kl>c5-w0xidx662g@ujX*s+`qklW zg2NcPbyh>}WuyAINJrkDPCx4aQq!D)11{dsJAEzpBx99=Bm?{X~`c@*dqZ=#O^*pf=r;xdgc(a3AtI^ zef0N+zoG2UvH`?>><4cX#3E`m?aH$n>$@+wC#MA~3QW`x$m|!Pu2cx0=6_-q6|0NH zCpD5SdS8g#sgO#RK|M|-vTAUaOsS${s1VTJN(#Lpf6n*xCuJlV)d%k56D7ivfmpE* zR-=EMNIu?Bkl#9-_BRL^<`(i#y^yEFol!H=T~W~2l6UTFzi>mvTlv6fW{W&8GU|qS zt;v~wp#lAZ|7i_=K&PyzoC%|VDT6G&&}chd9I?gJd<*5XI#a_wi#NM@qRHZk1w3C@ zGSaqtC=O~&$7Di@o&UYN&UFwKL*%(!jm^IZSd5cr-viX@wXh{aS}Fg^E;e%Y+LA>5 zc%VmEo=FAq=+&W1c-wsKU$RI>mtf;+Ut;ieI*_+D!DXQd;mX>ZFPwlgXeIquRKC)} zA$oGb=2(=-cfEpPHi#~HU$CrB8C5AQK^#;@t;SL>!oQlO^o%XCt!6W~W3(*m0!O_R46-j8j+uo1_|AKgtXcfl<=RP_&;PUZ?Me=NjM(ed`_9#Vg+g9 zVP#Y!XQ@jq2Yf2&pMM4Z+}^VRCpLKi`Q<_IP;Ly;Tc;Im zJ{V&3cQP+ES32o{Y5c$@Lu#Rz3)%pnRiZ=fZO++Q!%rQ`llop={E+{pxPUE^7~VEGVf=Sb%Db7kNiAgjXi{4C zqi^xQ)xJ0CkGPc7U&omVeWo9b@@8pEXz?%k7cH%|wJt{@v_t(T^ULP#&#LKj{q7bR z?Llaz_0y?^fb0JpxgT!nWHq>^Jty_}R|!h@ZthPDe;*%e#p)}798u-F*|8b1lZxMr z72>GKN%h&Ki?gx&xLj`Xm4uDxC7Z=S52~ehc3Deme=}V$RS{|%G?SZH@?67KaA((9 iRp!#_XlzTsWL?m_tKOyV;t|9U0$VG(Wr2m~@qYjh2Y_t= literal 0 HcmV?d00001 diff --git a/doc/img/ForTableMinus.png b/doc/img/ForTableMinus.png new file mode 100755 index 0000000000000000000000000000000000000000..dde05ed6a0e4e1d2308ca5acaca734456fe03e5e GIT binary patch literal 16594 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 Vd7kXv06MaX!PC{xWt~$(69DaB&vpO+ literal 0 HcmV?d00001 diff --git a/doc/img/FromWithFor.png b/doc/img/FromWithFor.png new file mode 100755 index 0000000000000000000000000000000000000000..e20fa93dd461f6487ce8a5a99354585466169f72 GIT binary patch literal 13470 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 literal 0 HcmV?d00001 diff --git a/doc/img/IfAndFors1.res.png b/doc/img/IfAndFors1.res.png new file mode 100755 index 0000000000000000000000000000000000000000..7d4001621b635147685901179aa55bf63d73d619 GIT binary patch literal 12211 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 U>2%D1sve}StfN$}VDseP0Dv^5v0m>Kut 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 literal 0 HcmV?d00001 diff --git a/doc/img/IfExpression.res.png b/doc/img/IfExpression.res.png new file mode 100755 index 0000000000000000000000000000000000000000..3476132ba62f08e4181f750b5e8d389b98278708 GIT binary patch literal 2414 zcmaJ@dpy&7AOE>~a%-lHRce(y6S2u9xs18Zu!N_SsCC@tK8_)G)6`}MF={erM<$W# zAfls#d1BJYr7d(h3e!SE$EBX1=k@&kyne6W<@No&UfDz?FZ*xt}EifEslBmIH3GVc?=l zqKB7@%7lWh1_0v{kq`h--SEI-{3xQ&lPT_glW>*AFD51eLsV_}sFByeu+9Mgnv?VC zm*E!Zk)tNPs-6fh@h<_8qfzEYHxMSi0;Ox}$cz2B_&1Kx{)a~JCC~7E!cS{%lz2VX z+IYv(&7n^QpV;If%lBwj*y6rynkwC#{~c|(c&-aZ+*7Vcq{oMZ(#Xc2RsqV4;d4ak56P;1r#jdJiW@Q1YIe?p++i$hClFJDW4h~V1?Yn@* ziP8qGPxVvNhlKC{kpPQSTts*U4d7w@huREL=GaBxn;im*L)3l+}kcW zpzB4Y?Sp8sWhGuJk*H;6W}0&nlasj}9UZ~H=$#p7VG-HY)zvSi=uaho?>*R%b_jaJ zJI@cf^&wr4_(LQ0$6s1czxV_#%49mhYB^aI=&)7Nc)(ih{FB?$OSR*JF!YiL3oQNj*4Bf^kMGLazu(##HaIvqE0wyQIRir=5QKn${L{7G2h7YCTR%0_*XP#P z8youER!>VyyHQqlE!xG!g~njGP$(a}Y>Zq+Bzvn46tH*HSZ*+HPt+}YW1L6w6+ zKtKSmt`4$sW%C=vjk(Xo$w~gN1RG5Qd%9FA#Sp{7!idAac|1;>D?U?(tFca%@hDzi zUK*=krkQzpitLjq+NGtXTYOlI!NC;}b8`zEl}c62DlRV0?|d;h$hdOlO3(5guUp|i zzHeQ!L7|Fo-n{9~6%xY3jb2Yo(4s#LRn_)h*Ik4AoC^x(^ZAEZ10FTLr<|P?UW>&e zIZA3gE;n~xB8m9=aq!j1h%*+uw6t_NB*bz0X*%4Zuw`XJEH1$ta*qW+C4_|?IU5)_ zTy)TlM&s4gQ13M~)U~x$&}cXu&K*%iNJ?rROB$-QWtm>+Fe>}k{R>{FPMyMHUrkMU zdzKxo?(fGT5c6|$)&BJXLXhSHTK;68JIEW6dAm^|9fTcZdGWK@%Du)Hf6G#%uC9*8 zWU2s(iHS5DLePwpRkTR404raB%^`n!@vOI3X$Mulx3@Q(L~=fVeh8cZRo%3@7}$e|9Jqmah)vS&Pb(&Hsp_QS3is6l9H$lhQgDK3e}DgSGmKRQr?^-fUxE7R z->dId7x3P*9NFd6Bz>1VS`FAITey zY}m>d{}xqucw%GPC-dU<-_EYWHS`%PubiEL`NqtCrAF?*++M#gTj1#hBzU| z7b|e0d1a6)NH8eSgJ5xY?%erhV1}|L-McECyx!h^;??Nr0Tjv??+^|TrL&#^q|7mEL|Khft zr>^OFPGh6#1G~eAsdzlz-N%P{8Ku{m^3_$6s?u1?;besl-gF_2-K$<+PCz1&2q+Z# zu&Igj@F5C;0NX;4$>iaY5iSF6H7st8Euj70XlrbI9aP)%o}N5yC^TZ|ww=!I-G&(v ztg7lMN{UcA`NX4|K!40ES_gUGoo%r397fDcDXcK(!&E}~un%1V z7?G}k{@?uNXaBz+{Iek$vRTNR$;kt%@|ycj@>cW_InB+WP86usxrv(`VpA-_v{3wsGrw7h)He2+B3T0$ zV`2&)KeoPiu2s`G;2vxx@7RS7$B>Zye#l+w>gv{qpTUSfzU(EZrP+$a;$9in&rc_k zL;{Bf;sRF~4#*su+gsnjvy6?6tA*i&;9#bKLxy9W->;7zK_i<3Hv!nZ0_L18k&X3lE&IN#uj4gc-puRq)K~ZTb z)#O~ucIR<%aa~Iv`W_JbG;gq2A9@O)Mo46iZyna(f7cD%Vf*xTMex`FrpJCX8fs!< z@^67a5x5*0dd)zGZoX>u?({=FV${7mC{X#^r;Z2lbD5Ia=rzZ`VfVq45#ZtCjcs%a G$@ve`cz;I# literal 0 HcmV?d00001 diff --git a/doc/img/OnlyExpressions.png b/doc/img/OnlyExpressions.png new file mode 100755 index 0000000000000000000000000000000000000000..9c3a82f97f3082e8366726192d785861b88cd57a GIT binary patch literal 12081 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 literal 0 HcmV?d00001 diff --git a/doc/img/OnlyExpressions.res.png b/doc/img/OnlyExpressions.res.png new file mode 100755 index 0000000000000000000000000000000000000000..dafc4d2b11fe93706798fc15e92325450b7b091b GIT binary patch literal 11902 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 Lw3Um{Ho^Y~CuB(M literal 0 HcmV?d00001 diff --git a/doc/img/SimpleFrom.png b/doc/img/SimpleFrom.png new file mode 100755 index 0000000000000000000000000000000000000000..ce52bc762a3db5c1a8fd3e26df71a003a232b4b9 GIT binary patch literal 7789 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≤G_tSpt=ov zq%tpP(!KWG@|VQWahDf>$MbXlmNxmwPoG>w#pGfh%vf*bYmokR33==i-}{$#rhkRt zi?lD1_o-1w-Fp#UJ3W!Jv!hj50AfQf-ovg|J^iH;JF4W#T!Vxun#CCO!tt_|j^$tU zS$lYQo2>L{6FGlU&VhWmxi*YV@qCcPJ*Po5J~f3?WS_*X*7c{g6wvd%wl?AH%F3Vh z(10Q+MAUspm*W2X2=&qFmKZ+dY$eHuf=cE?gbFUCWx8s??C77O@=NJZ*h8;}LPGZ! z7ePPA;mgx|(0|c~YlpFk$1*ysd;L5jL^~r5HH0tI2NgBZ*BjPtP$>0~VpY?#m}tG9 zXULqq8_+~O?b?}R=d)C$kiOjVhR9m33f0z$S*x~6S$E$q4(IwLGX4Eqz`n1FR$e;) zrx{WNwO|?QjvKwz(DN{Ek1i}+!+=ap)i|9x(7b&+jR_h5CK3GIOxI*>@Q23=rLNEI zbpswD9j-_Xu_Ozx>ibBI(Q^U0zeD7@gW$klJhw^B$EaNb>%c~!5cmGsFTTZH&+%4Y3YP8Tp8bXK}Ijq#C7^dSm zW!6|_)*_3#x5RaCOTCysA->k}8f~{JGm**yMaW9lIxqn2hGmh3MF$H7few{67dP}7 z2N7u+hXe~uj*0XGN}Cb9D$?mr=rw=LR~Y2Sr@Cy6EL5E7dk3dU`4^#~r+jA$|Dj&& zYuu`N=CUXCGn0jDo3;hENfrlY*%Ig)>VbEVg!sUQ={<-=xz3|>sVI(ng7X`at!OO% qW^zB?7%|ysE_}8QJ#=5X#n8)&@S*qRMS>T@kmrgo;id8>f&T-f9q?fQ literal 0 HcmV?d00001 diff --git a/doc/img/SimpleFrom.res.png b/doc/img/SimpleFrom.res.png new file mode 100755 index 0000000000000000000000000000000000000000..6d24f170a75381752fe0380419bce6937ec83069 GIT binary patch literal 897 zcmeAS@N?(olHy`uVBq!ia0y~yV4MeJD{!y@Nu|?r`+yW%lDE4H!+#K5uy^@npa^Gy zM`SSr1Gg{;GcwGYBLNg-FY)wsWxv5FAt=Ic*_gPHfq|LN)5S5Q;?~={_8!XFBF7$n z@7}nnyQ5X?pQ9tUpi6)w_v(hIjENjg5jP^Zo5jq`96QRAlr=OYSPr@gitq@!8Xi;< zbJ|kKaZu?-$AXkO(RZqw58f>;Pi)Pp^DpoiR-1Yj0_)KZE9E<7@F7_ z96m5G1bjM}+%wUzO_zz`ATt99D^xHru<(O%!vjW!2ii@~|NMzzW@a`zrXj$gG10?g z(xsPM4n5q^W4LPd>dW80eOrFr%G!EzYNV8$+`lwlpaEB|US0a}W1;7zBS%`StgKW# zO-)T_&6^iiS-JDquU{e@EOvXt%FDOQ91k>_`3I~+#WOWE^*>)V*YRG%PZc)uzwRgZ z1cruQEzf2+aR2yk(R`u)<6F0HU!G&Odh%r9v**ueXJouso|d1Nw`I?sHOrQ%#m2|K z{`oVqySsbUx^-#Q3;|gOg}GX{?AsT2p}MwKcZKoHo@dXVZP~wHKe-3!_NIdia&CvE zrat9g|NqC2761O#xh@VgH8=O3bnMu%C*OaI_8-3~$1o-8!rwwZ~Ej+3UGO}l#e^5WgQcl$T13w54&{q>o%`=n*dmR-4hdv%1)v2P3ut~5PQ zzjN>2s+f>)r|9{AG_0pwD_MVIkUFYTh%lDsue)-|Ug+)7K_C4RVPETLo ze(u`!>#rX^+saWy`y#TbA5+JU+{(U*zlb(e);+NKkuD5(Gj$A zikiB5>g{bgx2L5>e)?JSbLMyd`*rdCeSNF8Z41-Z*8X{&pO4SP!eYg@Z)Mxq8I}sz zEMLC-){PqzRMxIr_v+Cjr%5Tdw>d4G0E`SBvCG%4O;cI9d2?`fcD9wBU6`|TGccr> z8XKgfrAtdomo8qcoN6Tb_RSk$G7z~UDk|FLw%AK;@+KW`An;lm)a9a-!^hAyrSQJI zdDq)#|EoD-1nXHC9vnd=tsk=YlJ-^B-DYI)vteKm0AgrL1f@m}IR=Kh`}XZ>d`icc SymbR+76wmOKbLh*2~7Y4GmG8; literal 0 HcmV?d00001 diff --git a/doc/img/SimpleTest.png b/doc/img/SimpleTest.png new file mode 100755 index 0000000000000000000000000000000000000000..d41c9a67dda357a05ad52c0b68754844beefe297 GIT binary patch literal 11528 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 Ef3L%-1^@s6 literal 0 HcmV?d00001 diff --git a/doc/img/SimpleTest.res.png b/doc/img/SimpleTest.res.png new file mode 100755 index 0000000000000000000000000000000000000000..d675807bc1246778b3a95ceaa85b4f5f7202aade GIT binary patch literal 8115 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 literal 0 HcmV?d00001 diff --git a/doc/img/actions2.png b/doc/img/actions2.png new file mode 100755 index 0000000000000000000000000000000000000000..e3d5da31196cfbd9b281840c6f57b38ae1831aca GIT binary patch literal 13983 zcmbt*bySpZ*Y2PKA_~$CqJ(rxrxMZ#NSAbX*PwvXNH^$@?(UWnM!LH@#-W>Y&-zN?CJVUNA z1o8qRBO$KlF?+D!u8BW&)sBEy%Ed-KjOMRQv3?B-6H7gw_@Mq=&Slali9pB=74L31-V zjjTA8$JBw(SECJIslEt&{`UPc(OYogksrADKVNjc6E}B-2}S&geE#+^;)mDaVaC8z zeB+x7g=9_SN5%1YS4zYBbC4fd#d-PJ0DS&?I~(}?V~iW*!#whL4mBjbKT@4E@NY+; znwV`43pynJDMda`3G+r!q2+zwNQ`YQE!WaFpLZw?S^{o1PdgVJq7f9VFlJ2fSnOc$ z#_=}orPK>ubC8>A7bBQn0WK7ywsS(1AE_^0(s|a zrKBxUO1QhxU}%;Fsp9gnr}sJpclDD2!k$Ya`X9D$P*3{(8q(4YVhghMfQIL0>9SqD zAEgiaMQp+*xYobnw^DeRZxI`#^JKLf8tK^Jrk-c!`HmHGm+nQSR&_3kSjM(4iEFZm z-i>W>K!kKDhz0*Tl8&FnzS^bQZ?UgMDR(q8DExThVbXKkyQcRT5nOr^Tj^5I&u?V@ za7*QMeHZiZYjbH&B0*NO%_^=#(#Trvn;Rd#j04Z!(>CF1RI2dsA9}Hc5Ena~F7#Kg zh`D|g&?V`rpi^l(m!CXPthTwgJaybXN&9S@6>?E?pLXg!h&%2}8f4aeS09!TuM3_X>o?t3 z$%05Y3usj8tR0c~(x~*xYi8voQ-^v0G~2NaUSTa%@xDz?Wt3QM&)v$4^5Fgrc5iO1 zgTniWw`l&K9ET1#qURKCB4zhi4z!RZ)(}as zS>Q)aqmry#-K2)~fsP!u_ohw^o4F&4s#5AF=Zo!c={aXrG%dY%U(PD9Wm?l*ZzYU2 z)j=%a^KaUjmcYk|D8#^1sHEX<4GjM=iz>s|{!43_d^LC26th`S&Cj;u(WXZRADj-g zhD8|IqE%~|@*`Glr_Q}y_C!wL4>c!tO~|HDk|)}rQH z-PMWJfGG>&`B!nYnIZ#2u^BYNOqnQf=7)yoBlsEDaNJ5K%nPGGc;P$ue5B8OI5shC zY`E1h9n9~#=)+3BxRJ|l1|eV$Qs~cEiI$MeTyy*}>&E6)d_+_t zC{Amj@sbRc5T>KOBrUY?9V<%1c>ZMIsV|ftu{Cyamd@(Y$e*A+I4cy-vqeh* ^K zy!Y%Gntm%ur6DD{6c|4@^t-6|Id)Q0<9KFj;=63B|4#<+ zZbNS8H%yt@&vg6L4o!4r9uzK34c1xW{|=1C`J?9;XImjdqc^zfa6=IHrF&25FYF5M zb-Rtajc}5L!^g6h8wx>YZd5Jp*;H;Z>E>dY_SwV5zkd(Xo53vOzPL+Q8#zRkzue&V z|5lVm`+C0dAN_{gr?MT>pQFagj##patdq(|5|)XwZ4af>4fIef*Cu?-+X)7 zv=8#$fG4Z6{Z54^QvTz9EkMri8^nvw%f_)>I_=gtzIM@s&?~q;k>4!k>mSY|9WL-Z zol9tHfZy>cPTtZcFXBQoQD`JU71C>x{oKA7zBV`j*pAC|)p4iTQoT@W(8e zaj%Al>RmR%D&od_;xf+``1D;R{g%`WUrS`62i;%8J9EZQ`P~O#w z{+z*;^gs5N#iv~DbEpxUS1iE>JZXkKs}JiI=qE?z_KIrGU;@yb(<*LX!Ku!PzKohC zTuVajXwrCL_yr#iLCVhgqzXBOOY>|Q2COclR!B!#o8S7_rK#cu;lWlC5&V}C;?v?F z3PP6Y?9aPPp3Kp|4O&P2OkJIX7gSSsU$|z{nhJaS`Xa6Q(O6CKHEZ*>Nc$#=!{5xpfj4PTuy?B0n(1R`}RYu<{ zF1$~-YFm0@p)Kk^1D9S=8H`L6(H@W<5o~C9?U!SZcY;cH)pkqPX2bWP_!i#d`YzMn zq$`kM`#8dfx0EdE+oSn95LWgPQk{Rg(Ra>{9xSFchSWwpB$*MMx6+G_c%W6Y_Ee5H z{U7JB7mMWc|BUlD$6m6W{u3SVca`A2T0+h8zA>&_j;e&ZI00^Z9#V5MdSz8|TRCW8 zdCMH(%r6LIY^$E|v-G`Rp0nK-^ot(Sw;jsZ4b09WhM%U8VXE_p7o2ZDqpF^w^7~bHVB6dvb;%>6J|zw%C_} z_0EoX%lxhylJG0v8zqg!p6KJB`ywCwqw?rQN^5QSy`Ba1g}3EBl#Z$5cfDe+c|%XL zjp_I<^=Fl%v!mhebR_Oc&~s>*_to!3cOCN87FPm3huMq()KXoB*V2BiBzk^~r9CFv z{Q4$4*7}^VxATUx=LX4-sJlAJE>IRN-ET|8%2?f2jZ_|>1)!k2vu%buJObYUxZHhy zJ9I2h*crtj`2&(MqL}?R%=72Tx9e59-%l}+AAB(>+MtAFtM`0P1^)-j{7;ng|LMiQ z;k<#5?ylE%CyFe%Nx4a%HMt$cw9o=Vd-L(LC^PdP+`u=a&uVLHAEBXfn*AX@Iy#~( z6mL75wdS^+jZ+f6t(L!BTU#UHGw3I|7AUjC`~`QgTlc_yl1Ukq)+fuElrnC+s^u|f)uZD@Kr z#qrkAR)0LxQxeX=Cj^X!*4A>}p#&uSPBbJWBng$hQB--7VT99jb9m(Bf52EmYs$uU zhAp_64O+?l*Vj#8AA|Ae6(Qdf5_+I_$5f0OrQszdER>X#Pl?$f{$8iMTK#^f6B^(< zo12?u$%{G+e;Bm+t#54LfafK1nNL?+;(-aTgCR7ZPU@WFpCm$gzL?HwtXh;)-);8+ zj9FUB^gP~-=O4Pez4qL%=#~BBzTA#N%475To(V)2mArc$YME|>krs!bpditlh~uh+ zc8!%}nSP6dn;RV`XN+-gBo01)SFDnV3|Nn`T!ppv&kt>uS}6iL#PSr=`Ji_~AB)s; zz?U=wfK#8Fvf!r8C5w=nt+wo3>HLQH`}YU*{tlmzFy{Mrh*+E7Z4!quT1ZGp;McFX zI5;1S?or$hW+i21pFrR(=adADYUMUnRaIG*W4Z2c+~- zsqMGAQ_WKxDbe9o%n-69F}ARH4FYFvElM;OEcST*hk(oDEiTJZnmCp9t*t7PKHS~$ zg3jp*V-`;=az20kvOM4Gv##!L4vXOzi{9`SqtEw88?c+}rF%MR>d$FuEr85@FT)`eq?VjtDhB`jvEoz-A`&ZboIQBLIEkw)~U~-Bf)oZkDK& zQ1Qvf2yG$fInJPkVq;^Y00d`#aWOL( znODnV%)J>U7*Tk*TIV-x4e)VB78V6hFRwxnk>Cy-92~2m4B>tg&H^6W*?eK|Gw@tl zIXP7k5fN~a0c2#-pA6yaNNA%wTz|8%gu$BP{@UkC@3xi5y?GV;@#7cF%umx5rNzV` z;KMYWoRylbX9sgScOuZc=8b-_c*c*+iSzag8S(L`{#jYC-dK%8N=21D1ff2D%kvG+ zkotxO99&$Lb;6GHqvPYM8{eyw9nRA&H>O*{fWLhC2`j}gkdb9MF=)o-i* zY0v)6%Xosubx9|w_&NDB?}>kvws@WiWy_WtL)Z=p7A zo<`Bh$$cOQ@(tQrHy*8+{jIBLxU&eDv0-(6s*uXl4RRZkh?U*%#zVW>;uAj!J88uJ zQd`@f#OpfWz4yn|#w_BZ_8oq|%=0;iyj#3Z`P}x20b-f|{!SgoW{?41E$I^UUO0@9Wp%tjH9-gi1H;41YxVFDOH5y%l7WE%nOt1vgUfJuR7;ES zH!KPxa3!2VP+gw`S#e~=f0Bd;?OsKZ`1G9hFzqlmS6oK2B6OP4mWnjk*@l`wAHv)+BfdW4RS2hbR7pT$zEFb4+*gxhXDX>%aen4LIZ ztpHa>M&@K^>>B|882i@CTur@|l@*)0+KBT-@2FSOk$*d}Me(hfXlMdKRO12kj-nK1 zPaUA4qpP$Wql3U&t_=JxQA^b2z(Np<_;`fSlZ=dvxWE_F0m6M~@p2{QwF{TZqUPaA zFdInG>T#rJx)pqO1v%ZDG6#VK5HEdtdQStx$k>=ggIY0DL_t~kxvCRGrq$cG8Sn>zuLNx8Uiv$C>+Ewh^%FY}Xi^52H)>l$rS^-IlFgrW$)%5VKDdSD)9wgTlk z>k9+{wPbko_0P4s2H3HX(9nPMn%sP@4#)Nd3aM#m9>w+rb{MuBvX>inJkX~c4bWM3GkD;J8hFY8lGQ+s`csNQwLsL+ur?i?^|NOGnylx%!vvnD)yviZ(Ndr z%PfaIl>n2FxxONT6B;~J!gPB>M*n~|nxG9RmX4_eUY7QGO+h1X!~>M;@K+kYv+QlcWM%PL+r?_wXxXFX_UR9u zEKI(hg-9a%+`UUGSL}b+O#z8L46Cko$sM|>o#w>?bn*GQTr%Y$Y+zt*k7ViZEK}B9 zb!72kO;i;TE7wf{t7(538$0{@ZQq~Uqj}TYI`EB?6x_#eUqUKU$sJF zF}3s3?j99&y4Vm3LHChDQ_P}cr#eCw{kQXdvHoA{?sabF(Aut7q(?_b!^r12nACC9 zS{Sj;u$Z+PpT_n{C@Z^qxxhoEvOeurlbD#B8#8i)8w8X@CpwR8{^P3y8O#vYFiM{st+QL|7));h6B#ekNK~YlT}tFwJh}T8J3M>icPF|z zkyuev!=l>sHu&4vyK50YbU~d(ip6_2%RMtl|G)J~H6r$$z>>d2|*{|)T zbADYtz1Pgl>%IKP)6nG?3aQ++akjJBI3gm8YR`(l=$D!APH|y8Eq)vEWA~=o@I!?F zSzu5?lK#&xR62FG<|p|?6?Ii>;M075LXiTlU*MkMP@z_P;apbzMzvhGpy&60+wIlO z2wC-i1%(k+0D`&XJXG#HMd>0yVf#`WrQG!z%gNb!=R#s+qGM0hEIK(>PG1~FiTl~s zWn?sjS+_1Isieul-SuZ^CbnWEmdWP&(J1}cEEwZ2=Yv5`NlBwU+XN9QYT1)JR99o;h|R8;ol`xJmz zB;2v;5x$d>q7%L0`-b-E6Zd0G2F`?c-=fO>)^hijnl0>yf{!xYM_~=AF`OLL~-_?n+ai~cB8I7P|-UY#{ zmJGe7^XC&KOwL>PHZn?bO1<4PK}8y6E6dAb{`aT$Csxxh!odQKmWvaYma!UZJ;=~xMZtzL%*+Qq9_8{ZRi!~$+(>RQqF}0nZzN;kocsPFr=UPM zxYM8Rz5!F4ZnQ;zCH=G$q#=NmD#tZ5?K&$NunlY{_7P=e*kG+q%*=3R=)N3n2y4}S zdgXn7kT@~U`vrA^sua&JHtDdS2%OOBh6E^!f1l@>r>KT{mdbA1H~N2 ztls*Vl>XcS9nZ_0Xwa%2FJOyS!rR3eH41+NJRuR@72S3bXw5*deE!HtR3KWYqY+6F zX8ildXK?u`+Pmo5#4^q9uvhm%VPRZXIwFy~4dz~J+uQFyeWD&SAAHH3En+)YyW%mA z@fDlmsd9EHOrtbzx>umaI*~6Ar$i^-QnXaFCZ#soc6g^+a#SfpNU}ux&F|lTx&{UY zVh%SqrKEb`ndi4NiK-1=r=&I36WRI;0+RiUj9g4%08(6bFCH;45XlygY3um;wbHOC z(J?WlI&F}L2s$1`Mt-z5zVX_ubAgX0TTK)`_`73nV8oM(VL$C(8;x^5UkX}a+zUNj z-F#9_RR7`O=b(@fy1VlV2@Aa!^2SP6l;f9{?oT{tcJsWNQka`@-lwV6W=R|ym1%Sd zvQE|#qQni)YN3GOtWfI?{C?0rHI|+d{}7V@p^pl6yIOl*FRh}k=AD7Ezm%#=&FbEc zqW}5nM|D#JDxSNCeton#>C(rZBkQ1&;r(UvHaRTI`!WnpXGrj2YGr56zOv zsO;?rX=n&rnss{`Wnu12V0aH6l$O1?y=C%$P@*1IRfXqPTZ>QpG)>q$12pfe4#uWa zAVCm_JPx8146M?K^o3JjJY1Ei;y=ZlLqo}2A>*ZbctnYNOe?8O(mD8Z?uV=EeIC^U zEITA5x-ts1!v&!ejm4)GiU+fG>8jQMJ30;7RbJ%_6ciLl)~553D4pA-H~3u27PyA{ z?TCVOXNTvZ?$6hx_NMYw#I^Jpva@>+`ZT)i2B#J=f!#UW<~u$`tc187AQ3_!Ju;Nw zVLhNX!cmBwJTK+D9)b{}d*KIQW|ftdAsJjm*h<*H$O0E!LAin|FW2SDto2UU*^6qY zM@mHn5zV!-9pZmer2RX?^lI3$#^>VJ=gGk49yZJpY7k;!>vunQmVmxx!_6~o0mVMz z;UWDa`*Y&v(~G+CoQe_r>n~|qOVWv!LP}Duy<=mYyJtcz8K40K8Vi68+&5N_5GSg_ zq3eAE1D)#TIy4892utqn>%2HdRlUh0g1L%Woh@Zm6RfaWgPR$}h_5fPeHLcVy&W0v zxG^w7!ijl^OVnXEnM5GYU>=1Z=MOf=Q$Xhz{XOaTy~tJETW4y1{s#F=D}j4bkwDOu z_j`M(d^Zp?+k`XS{P`n4zpxNGZftL_q-pV(Ua5O*yTUJNi{V@pI+%M>y>h6G3R7erD6;JzspW zUphzd_9ox~)Xj}2B*eTx`^|UIbg7o?p27k=o;hy(s-4MP_-RVg77^$ z!sPQf;w~Zks$8c{kYKkMqVfcgxYl}AwWHI!F*JdTAe3|6-hpq|zuvxcaB+B%@8zmq zrYEhfEs&8xNgN@?$;rjArFj^+$7&6h&ePj-!7=so=lGd&N4zVn%jvlp$7MriYUGzCfM@5ZqmB3AR}1canSY=1u(e%&~{#`eVh6&^+x4F$nO0N4EB4 zWE%Y2pr~h5!L-?adZ6ZWBtLOJ1GZ45Kt)oU$KK3x zN*hot6i&|4%tzTdc~#y+`eTW(vLcJt^2Y@S#548`P82eG^LjcQBtsMdP!>+VG1 zf+Lw}2~4}S3FD?!L`0(6u6w*JH%oc^@srhxug`$y2rBlc&AO!zrMeA*enjG)N=l7x zhh5?Jt({WV?*Pb2JtceVaG(1H$m?h{&fubt#ZrSOg%+zFLtL%6 zQ*g&n2-z;<Ecd#J46?1KN`WTq1XL9MLf|6^)sGu=EiUTky`yS@I?o9$AcDBww6D)IriY!CcNdEl%eCP?>tl{Fq z14yPhtoqIQaVon&+EE9BQr&o+aW587N5hEN)Pd@wjEs%|S@VOy<+1L)!wZ_#iHw88 z-F0KIXxX{Bqgm3}a@uBQbdYCcJnN@Z23r#v2DC3Od65F!NIt5P7V$~09%3te)|@io<5Kxm-zSSsB*TgM5k`FR8R2c<_1D6H8chG+zu!-m836WS4*3m(0i0Z_wGHTK|ALAM(X6o|0O5OadHHi}2Z(k_ z^0`K)+O;-)jjns3B)^1InGIBWNs5E{d3@iw>+b>nMX+LCXHU;p@Kms|!N7|F@~;sH zgQw(t&$C8?XKXevw=(I095_9#*#j7>dXXeUcN~K%Bwx3IlgsSS3r5EN%A?4TkdCpj zs&NsdAPS@s#E3N22W92<{h2D3Iem{6RAeGd6n@ld@v5N}e*HRFN#wE%ci(!VP}0Sv znp_yUDgr=Ds&pe+$#k<65Eab?iks8v?#G#9H>p9M z`+9&BN~mf6BH`t~ezBVQ{G#*MF96?2IS*K5YdsOkLY_y$P&%L@f#(ks+!t$Au>v1Hf{1b_THOHI{pwTB(=m59BJOLf*^B zP%|<<;pOG^@$n%R^=r=A2Sy3v?5t;CAOi5^3fDb#NK8x&vngODKthko3D3-=0{S4& z&!0bmU<=bH0HY|rkZaA(lZ|KOwi*vchH9g$HSh)$O-yKjK20MmoDQfSFp+@5@f_)x zfv>o@xcD9uV{}Qn07f*Nt3U>R1Oo31_$LgbJwRccZgOV>C{?Ke05`bJsoMb8-rgPv zCwvaekUXVKv(>H;q-(gh2Lo=0X0-(lk|VIOA(dbNfsY?Q{-Kg1yFXVK1uPbk%XK`^ zR*meqa9d9nzrST`y?6=G6xeDrMPT?{OAV{&?-dkig@n=oJe+t5i;IgV*a8_xz;*XI zF77V?xE=>JQ^8SDd4Mv>rwhab6i}%!>Q>P>UR+$Pf4x#o_A2@@#*m6S3Ai1J(*;uerH7 zXc}C8|*o72(mpcNqnmrJw zXtp+*tv>wpN*OdSUO+T7G`!9a2Y@xvH#lep41@ZnCg9h;^YRjaw_daI@bGkXbvf*g zGXRtY;bPVw$M7FtAn39LNA&jeEb>IPwTXi5XLg(e+bJs#Oh!&1>eJdax$MO3%OI;N zT>D?u^}i1PfA`M+t@dJnQE5wu15h^kikvX?d4!5=A2&db=TT@4tTtuyeZx2P1*|2p-q{`5}6}&m|`)jHo|AwgPFM${$!QxPb1XQ~5yJLGtg6WTD&H z*#V7UEdRqRBO@c`(@cOmBEDD48yi6&c|qC$8=yr~R7F)4RCuYZ5#UW-aAFsK$dbCa zzE&;OJj*Kzp{m(8P<5MGmk$^kA+oHa7Mh$UV(+Llk{| zec-;twYQ6bnTDNEb8*FDQ3wDH7Xz65?$V#BmO){cDw1{^A`Rn|u&}V4G{rn7 zl_6lq0GmD+FduiQOlQy61Qs1mU~6vVZKBA~iM z@5z4r4)EdOnJNO+Hlf`#`@ed$ZgZV2J$ z=NCeB;pw*eTxOtIu@f`%pD6rZb+}-K9x$!}`0Ez?N`;Zw+PUfnbr4l5zs@226N) zKp|ONqo_nF!Huo=cisYS`@g|F9Gsn-4t`WtRRKDI1rC4oPE5oD#)(*PUqalTFTp6m z5p9G;l^ZtjI`XFspn6~x-#66Pzb;WPLT;W^6lDom7?#UgyM@9+jj~d1QiW*mTY!FQ z3yrR-fLrws4l2H}nO45N+AB+N0tXff-QkPs|27ka_06iZtn!le@0`JyDUa}%?9ySED-rK$zBV>(z^${S8@6RT^uYf3WdLEfz zQ3?f*SkM5P0uqPa>%;<=K5v=`k~D0#cfk{Z&~ve#T36?Pt?

@b?_q3hCcxE&04~0|xe1t)ATgKOzs|vIWkOji()vso&k#-Lu$J-L zqbjA5TE~a5Hi~^46bpB`*^(y%X4N@9vr9YKnA@074q^3nQ-(19M0BQd#;AiBhwYo$1Jd(Kv8^xiFpZnmP>Gs0qF;TW&<#i0P1&NkzEcz zOxYXl`M|(O`rZd`fL$pjE{+1WeWPkfluIUm#Q3;Coy2>871ejjC@P;59c z=u4~+R4)*3yzjqgGfgCCB}HeiaF3!>66u#dH(H^UW#pRK@oVeQY9JzV&8D!$^tNuxJc-;>z*L-O|2B z1jNBV@}Hp~NkCcuIbs2pJDj!!oKXo33c?{Hg8?|Sn5!)@otv|7Q#e0d05rzL)O4i9 z+r3n;N$PlW09=qyd_ls7&% zh~DuMokV110iqX={i3{?nOVW-wqo2EHg?xuQQUkkAlL^xBh~h!-<1p~rQY__>RX-2v<#hZILBjo9dVNzKgi-QRuCb}>a*^{3joZLI-I$Pvpy;p5;XBs?(mN;+$ zD1BkP99uy+@azj~8tKpv(S0!F9_Fe<1#sIq@z7IDwLXoTc?sy1D)Jm%fMo_y=`AM`Yj8MTr7Ik#N@;SU} zD-U09%k#Dcy) zY^)3+JtLi+8U728dLoS3)(v5H;!>#f3W(yTQm<~8E`L|H4BO<&qGsamA(?AG`2`>_ zA>cfZS4&1;EdB9e6Z~JTE*52TtI+{a1)@0tp-*UIQp;DSsehOz3T^FTLI-nOFDh$g ztUQ>6-9U@yIyyds4T?!g=?BC%S-_PMc^ah&-ns^y<2nJ&EvHD2rlti1jVmzNN?B6B zr>FMPI};)nDkqvJ&n@lh^3NO`H?^hc%&KN^Z_2VwmseJ8-aw_??4ql~_jUVc<{mEZ z?0!kD!gF4vVq)?F$>-j^TRAm07K?#L2l)#QgpK?VfB5p{OXiMN^PvpML-_p%z@8B& zCo~)!(SXTvg5x&GZkk3(O%4Cp3SE>0y) zruBD<-gU4IzS)~LsfSHb8ITumUd0|%NJE$Ob6y^@4&Id8JVQl$1p$G@=g1=yX#!?) zUb~7;EbPS%PE^Wg2qlBYH(cr!SYVTOe-z~5yd3p?faqmycl|(u2#$=*{nYvOWOpL0 z!FfyjsJ_0w-1FEB06q)=GiV7oKzec8FQ$Q4Iwf;UOH^4SzcmbeC4qhndUa5gzK>){ zFP&rbGreA}YG`xV(Iy2!?*)SX^pX{FVmFmifC;M7qS03g*MD@1awYq%Y;7)<4IWMi*t0(mQzC*l(ba{{woh~+#YxIU4ALJdWTTln-sa}>{^*_k&2eUQoM!rXUuMAu&z$ExYwu_F zS!?Y*TOzyJ)Hou7T?X5kh=>TVYiyI*%W=O1)?L`mdZwGS0)r_n5>bABJ^|phLx&Do z@3j$$4EU}67TL;&KCejhYkpQ%RgwvCv-0wC6crVrsi_Ig&CLw+ zyGY6RHxh;HXwOX2(n4rkW$hi`pVTkbd_J%|vK}<{x z`uqC<04^>r_7I`Ro0gWw{$9U+z0nY1kmT;&yT=}?sHni{)2A^yI%+e4|LsX`@7}%8 zYPA4>b?es6EwD%=!if_nFw=^PiXapUt=>s}vy~9m^kMAHNJ~p&BClP$mM1Xx&xL)V zVS|MR$8obKIlEbDFJk8M&TiH-`waen3S3)T%c~(fIyww6v9Yo2zECJ6S65eBzI-{Q zr>E1~w{ID4#6cG_YWo2bFHa2E*47zc6dwWxS zd_1+awUJhQA3tzV!6VEp0X;YN9N=IZJSBEo?K2cT3c0RTUK{6IrP1KzxO z!*J2j(ad*sbv4v#HKwMfP*zsP#7Ip|HR(&ORwFevm0>@A{0IQJaNz>`tfr<0&CSi= zI1WUF%*;$vC82SF&z(C5BEo_N3((co#fTak8%+wVZyg;StTV~U$pC=;`}c#0AeBln zHZ}$T=3n6b6Ip>+55DNl8ft_oJesKtzy8B$$|( zFzHJ-GbIuUhK7a!02+-3Yu2m*5y8X51Iv~z0})~A(xq%MX12h=!NDLRWM^mdRw;>z ziDn5500993AR>f>ga80qT3XoPZ{NNR04OXh1QEf(!2xo)d{*9)k`i7B;y4Z~SFS{9 zX(`6X#{mG(o;_ptFJ8Q8(5ItEkFxunot->i0)YTQK|yRM(Zj<7wY9ap=Rbe`3@0Zi zULT%6e?Hry#!z5=Azr_J4FI@tX7Z(!~gX!sMELpN-USHh9hYyjG zlES_`U5k&8H%s6nM~;{jcxDR=3qwy&j{(P}OP3fXD=Q18%%s4&SDA?5=H>=BH#gos z#9Xg30JOKaGyJYyy9`2)Kp;R(O%21C8+vAjgH4+@v6(bAHTByeLaWuHrKN?%`>3cW zOixeqI9|MXVKlj#C9r-nGSy5aqshrh3=9mQzP_H#FkO<<+1IaMS@P5kVy@(=v-I?I z)YjJG`}gkv0EI$W@$7UgCuwT`gN#ODojpJqO`QstRx2jXU?2q*!%bITTfv9 za!MwX@gBHy=Z?v8YOXTP((+G#(7wLDywXdTc!>zRckgDn?(S}0nI;qpc^g%sp`jQU z7?{=9&!0bev)F0^Z`iN_M1+8V0D}jHhle2+i$O%l&CN9snBzD&J3AvNC|ybH zrro`JmnZP2PoK;ZxTdBCNl8fv2nc{!EQVMtMsRR23JMBXlGB-7F30iX#}N_|0!K$j zI668aEG&$-{W@1TDkvymeSG@#sYL?wcGK*85jH#*VLu!3ht5UV&4!yjetv!gfMhb6 z)g9TAd%jj&Tuf)rp8aE7EFinMxS*n<0=c=lCMyF=e>O6Q`%ksO!9h$-P1%&oXcgh- z=LZ0g$z;6ij*bpAG&De|R3bJu7Kw?8Xm4+aN~MBaF2}WN*Wl#j#PD5RU3l=|0j8#= z(B0jQRjXDRa1#->Z{LpA)>bH$N{o(<;{5sZ1|6LZV@W^0eEGu5^!@$)jO)XP4~*;b z<;!qzaIlDL-U0(aU0oe=a&nN6kN}NFgKyuyAtNIL_4W1al#4#TxVRW4B_(WmJCi#s zEDUP38Y3ek$j{HmzJ2?UmzQU-R5gW(h={PLA8~PU7#$sjN~JRYxHeP&ueAo(2hwtg>VaKg>%jTKfCr_T_EuD?E z*)W#&!`N%B? zMRV#&OU&GU=t`=psw%p1;|A{+6ideRTffOQH8qh|tEGbn4^nn^HdR+w6A@8kW1~ep zd3kwMSXf9I85wl=@L{ttztazeLO~LVgtD@-C^|Zt9zA+QTCJ9L?%YY?;o%e*7)Y6! znUtKIJa4X9s|ZseLO(I-cB$Ii+o4vgF*rDgs;Vkpa?#=4-Q8J|G{&`K#}3G3GANZw zC=?2#Np3cbCH){GleIxa{_y*;=!k^)000^Y1^@s6FrHUF00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru*bEj51S3hO-~a#s1;$B4 zK~#9!?VDdnlWQEuzt1-JC$yQMs1qyFfk77yg1S&Cp{qh2iIG}aFbIpFi=%Ql98bp) zU360jfe^tKQc!wfC{bP2RnQ-(w6=V^m_`V>IdN`te$UO>i(Auep62Orp3l|Z=l8zv z@BRIr@B2Kz=Y8J^l7vL^FQJhskVpYaqyQxnDL{!7phO}CD3Jn`NHzoAMhcfzD2jp|J9gwIDVyLU=NU}$Ivu~;naagQHA zhSh3?$z;N@W5+N*Kd;)nUN4%OnqW4YVK5l5Z{I$Qj*ez*PiAUr3U<34g@uJMnM^o% z@E~5ley!T=c00<-%AnKfP*6~SLx&FG&6_s~)1eRoPNx% z3PK26y?Rw`J9q9Jgb?WK>&wXJYW#k`I>Q740RTWxPY;9;IDh_p#&PBZZh-#FeeA#7 zm(jkFaEOs`D5WhN4zsAJh(ZW{{`{Hy_wOeFj*X42c|NUHO8_h_E#=v>XIWZWN&xKa z>?BFf&(G6hu@C_3>+9Lx-cF51LybnmXV0FcwXgP}C<=qYAS)^=2!O4vt-N&U5_LKq zi;9Z)_3KxXPis%^Jh$6T0IaF0;q2@zXJ=>G)YL=(ymsxHdLxl!C=}w{+#L0KJps_` z^`^Y$-rnAXn~a=8EiGcz+da^wht!5{!&WMl*j3k%54&tLP{-Me=K0BUM#005y-2!TKV)6>%c zfa>aMXtmmeeW$0V)7q2q`FsF?iHQjm7Z-mwH7_kKp{uJ44<0;#-|tVbFDxu1Z135# z2LP~j>sA0jBobLOe;pkia5|m1d-pCBMNy|_09pB5i{vsVU7SDVB4l;K;$L;e#h30Y zFTdZ9hYugBHJR7zRc(uli@1OPzMAkT=32>^P%Ui}>i1dyMfkGF5%W)dCAiu0#m zgv4u%Ocx=wwY3Dm{{H@ic8|wH0MuwS^!a>i)_{Y9gRHKuromufb8|EOe!sfUhYufk z^ypC*6ckXe*VAURab#p9WBcm*DSl0MyPey%ZKGDJWqElyTUuJEC<+%B7kT{naT<+A z78Vw=r>BQzvzY++>eZ{1=eu&{3IVXKt!>>r-@JKK&FlF1xZ1uEpHH7Y<<6ZunU|Nx z`ucjdwY4SGfa&7Q6=EY_M91HRWb+&_Pj8eDy(B-j22A&mSt7|<4VdornnaS(+Cly) rN%Fsb6(^Ablt`oiB~pMA$)@uc5@#pA$WIw400000NkvXXu0mjfvqRv{ literal 0 HcmV?d00001 diff --git a/doc/img/builtinFunctionInPodExpression.png b/doc/img/builtinFunctionInPodExpression.png new file mode 100755 index 0000000000000000000000000000000000000000..90f71e1cb0b1fb1b1353e2ec0bdd991eab4726c4 GIT binary patch literal 15271 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 UQUoDzOD*ED#8YJ6BZJrf501;&N&o-= literal 0 HcmV?d00001 diff --git a/doc/img/builtinFunctionInPodExpression.res.png b/doc/img/builtinFunctionInPodExpression.res.png new file mode 100755 index 0000000000000000000000000000000000000000..2e4b805e0251c9aaec17295f888b1f3bb18138af GIT binary patch literal 23120 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 XAoRTx4rva&pXu~;jI_%%pM?Dnzx|e^ literal 0 HcmV?d00001 diff --git a/doc/img/computed1.png b/doc/img/computed1.png new file mode 100755 index 0000000000000000000000000000000000000000..ef1a15934a0cec484b562daa3c8507dd618f3412 GIT binary patch literal 9355 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

7{2M8j64B;%G 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 literal 0 HcmV?d00001 diff --git a/doc/img/dates1.png b/doc/img/dates1.png new file mode 100755 index 0000000000000000000000000000000000000000..cb9007f3d105dbb1a4da5cfc83c5fef0d1686cde GIT binary patch literal 3978 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 literal 0 HcmV?d00001 diff --git a/doc/img/dates2.png b/doc/img/dates2.png new file mode 100755 index 0000000000000000000000000000000000000000..96d186dbc967218dfdce4b4e85803f8700662a98 GIT binary patch literal 2698 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 w@4ZklC;co>k%WS!m%2F#>LDNr`QNX` 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 literal 0 HcmV?d00001 diff --git a/doc/img/documentFunction1.png b/doc/img/documentFunction1.png new file mode 100755 index 0000000000000000000000000000000000000000..50c1e989ab38982ed4f234c91bf427cedec4cdec GIT binary patch literal 16457 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 A;Q#;t literal 0 HcmV?d00001 diff --git a/doc/img/documentFunction2.png b/doc/img/documentFunction2.png new file mode 100755 index 0000000000000000000000000000000000000000..570588c4ad8709c9e556862c47d6379254b101bd GIT binary patch literal 9302 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 literal 0 HcmV?d00001 diff --git a/doc/img/download.gif b/doc/img/download.gif new file mode 100755 index 0000000000000000000000000000000000000000..908efa9fb8563f0cda8cf240213524067cfa5555 GIT binary patch literal 150 zcmZ?wbhEHb6krfw*!-V?fdPmcV8s6)KYkoIaG<`v9w>noDE?$&WME)n&;iMU%y3|F zo^Zm`$)QB<@b2gAZjp=)bFP%F$;n=m6n1Q8&b8amd719~v%mEsZ1veLGX_Iu7Y5Gu ZrV_8Ize;vxZ~et3==Y!?LWq&U8UVBgFnIs~ literal 0 HcmV?d00001 diff --git a/doc/img/emptyQuery.png b/doc/img/emptyQuery.png new file mode 100755 index 0000000000000000000000000000000000000000..d70f5abd45e0f218fc6b1aa8acc616b2c2fa224e GIT binary patch literal 3355 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 literal 0 HcmV?d00001 diff --git a/doc/img/files2.png b/doc/img/files2.png new file mode 100755 index 0000000000000000000000000000000000000000..fd2d09eabb67316e244071dc969418d9a1791910 GIT binary patch literal 5115 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 literal 0 HcmV?d00001 diff --git a/doc/img/files3.png b/doc/img/files3.png new file mode 100755 index 0000000000000000000000000000000000000000..c0b26b0fd2bbc290754371a563fb8a7d516e269e GIT binary patch literal 9725 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 VaW^Gg3eVq#P+F&1jGs-5}i^ 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 literal 0 HcmV?d00001 diff --git a/doc/img/filledQuery.png b/doc/img/filledQuery.png new file mode 100755 index 0000000000000000000000000000000000000000..a700bc6b5698fc272b15c23210aeb1ebb849d59d GIT binary patch literal 6249 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 literal 0 HcmV?d00001 diff --git a/doc/img/genpod1.png b/doc/img/genpod1.png new file mode 100755 index 0000000000000000000000000000000000000000..b422d7904b1a9e2296dc10ef34f5d358f6f67a4c GIT binary patch literal 7007 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 literal 0 HcmV?d00001 diff --git a/doc/img/genpod11.png b/doc/img/genpod11.png new file mode 100755 index 0000000000000000000000000000000000000000..dd893bf180a4366a7e571988712b361ebd73549e GIT binary patch literal 7996 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 literal 0 HcmV?d00001 diff --git a/doc/img/genpod12.png b/doc/img/genpod12.png new file mode 100755 index 0000000000000000000000000000000000000000..ff392dbbc812387d9928a3dbb7f2bb942e48ec81 GIT binary patch literal 7525 zcma)h2{@H&+x8a%kMI5epaivslM(FDhhTA1VN}YZ>kw02+=Y8 zoj^_sKb_tDnBW(w^{pFf$O+*)y)GvKuAFhXY2uC`lnjIy5%M;b6)uu_XzHkw4H2EC zmZsR|VRA+g&P`1SAzLdlv&MmX4GNV9Ilwa#@W@jN9G5)o;-wq7exv@k!pq{1295r3||rzi5&t3MKUo;`a;CS?u_N$%PAl;fJ7o-X#?vD;q8 zuCEa>QK;RxA;8OvsH>}c|ISXLWo0E-R8(9Ut6@QKOZi3oa&qhm=XF%l6asMLe(N2Q zI%Th3zqTH&bS0;zj);q+Io^m1YIl@&8vQ!kkw8aFi&$7#_~SR)+P{5kv@fcQ=*!VV z|43IJEJ2e!?0Fv}a3dB`%0IYMR5jeXB>AU9N^`TCcA5fLQv_A0MpgrdbFI}cpOn5k z=(alFoeL_ess{J($IuCA@QR9dSst~&6d;`$7-g;KSLElnvmg!nOYlM8dt;_Il1{dz zMMV}EZed|z8Q*Q&gz}{&yRfh@OV|fiSvOQH_w{F*3FoI8!zszBs9JcAab(}q6nW&{ zQHzO*Z8DugJ9>J0vPwCyzP@PkHL-@n*xPHWLa&fCv# z=0}FA_wJBQ%=-$%ysP;|A7T%OY|^HZECL&*Tb>i8claK8@2m`!4oMj251c>5-nGY& zJ&kJjIFGgOyLFVK`|h&uiPu8+yB~ICgw-ItGBT{$+1U^#aL7qE)fLVY5m{LRNV3D> z@!|T*q$C>`y}H{ux^5|1Sy`Mnk;#>ni+dXhdI}P`>&wf}S4S!)+)v(KJ2@C`CCryj zWfC4fSnVm2sC8~-Wd*lV+LQVD^UqnIl#x5P13KX-a}Bc2e)_Y&NSad|jjjzie4KS8 zz@NFBW7m~)y7YOzQEpz|qjJ$}*EooXh&B&?_vJt+1aB?$G<9}TmY0{i{UAAgnkcxV z945slAwgGa)8ph;P*8Aj8|Kon4Clba#N^`cekHfaFwb;A@pf6vz!fj;)YQ~;M>RKV!kljB2Dv z4-fgKVQR|0xw$#ZX6@@M=jP^?-fQc!IjiY&{$O{+d8V*p+>Tz?#KZ)G*-5IBysE9c&v|e9Ubhb8W}P23kaly4dmU< znf1Kwc>9BP$n)ov)n4nd!NEvaWMo!#wW(9-moH&SNi6UE)@1Q>;z2}+{NYMzad~+J z2BTPiup|QU4_$b~D-=u{8yjDwrjD*;d+_sT`gOP*&)2sp&G_K} z0}HdKY2^<-Szx-AdHFNRp8Nx!{}CwvC#D9$qM1;djoG)7*6cZME8uaeH{<`r**Ni( zxuXbh8(b5#suPdGZ>60iTKLVxNb_paw??xy83ctjx3=?C)SLWLeeJQa36#a$+aM1qIKYYv}7^Fg7*@=nmG+NvIGO68f4ffu5Y4 zL_|bH2pG~9%cWs&Uh54IPv_#{5f&3eMM}dR4dLr2_fSoZ#O(h448uH2XXiLR)riUd zyxTglWi~zBwq>S+gM*g%{f*p$0tZhFHIG8{`|Eys`_yvAaG&0|jx*^jtE^nlZz~6crWSt@g;n?d?e~ zwtc!^0|V*l`NL>4KYh}bk(E888Q=U$pss)f_*D#KRcOQSjeP8PRGI`h(s+e zE}n0@U-P&S;l<S(Tcha^H7%`YCT)x=QP;fI$oay4{PxJKtu?!AYD$4* zrl+S5vH$-4`&4joNeP{#q@>OhOm<-5y$W4~7Vh?Hk4Mrjaj3z9=NB0@=cUC+^CA{= zbMsTd?VX(rWHj82NOLd|@hp45!M21CxVuAEW~&z7U-7w>mEkm2&4#bAQk|goGLwj(;q`l@+v5BLq!GDOjeeWG~(fmsj8_VMmD#$ z4DQ?^%Qk$Pn#vhkK3|Rnq{DCZPz_gm{I>ojfh{lz702M|$7;OV;K(2cgNutV_4oHH zky{lzIys4bF%<X zLPF$Fm5$qTPZ(t=FH&d2b7mDUq%oHLES`~ zmA#)uF9mL>6dGq07t;b^ima)*Cgn70yDQU`EI|z6Hdy6ulMq;0RW%hCgcm4xo}flp zCG8md?aFGMArFXe$e2izse3)+OiYbhj6*H^+asIy-gzB|?mh$-#4PyDLGK2F?+mu_3R(N%_9Pr=iH#YAjs_#Q? ztgNnD!C5b3i?UQBsX68OGX0nym^1ogGIMGAtq^UtFBC{j-Kmh~5$Bm@nRn+U6vj77-g(lVk+%Xz+S>NTpQPh!bZj_e+oqdVij0MZn> zuAj#qE@s6^*#6+%KRgt;aDigL%Wl?@1G~Gq*%-N{*qp8$`r}$S5co!@nbBnu{SN&vi(OxZqU4T#=!)?@R}F} zlgrA!fy2HN@n_w4%{vxaCC(@2-acLldz}giF-?lxjc-baH0*O6N1pIp4*J@1i$&kq zI3oPHLSo!$gktWbUcpO@MUitb?ut#R>kO9TZt3H)T1WRXcQFkIy{c^)-~l!KDCHskT;$?K-EF|HIT=f=PB?olx*7qBDMjv~7&V=&@t8^=(l-OUlZ^d}^ zC~OC1C^{5eYfnQ_DVk^@sGIufs$};-qoiI>2z|R`T3PdGGGilgFGT`PT5z#2<3*x| zeUHEW`TlqPi?-{*RqhMZHS1DR2aF;e7MRU%`TD}5=|;Ji{>0IyD!dbQ9x+?JWA1bM zLiTCKc={rYg6gN$p94&Qs)^XW)iIiT_wH>k@2P~kzkchV8F;u_F*Q4TR#4EUcKhe8 z&5gJt56-!{x#X<{S-34NCu4MSvhZDulj`$;h3GU&7O~WgKGmAGB7LD^bQ?8rU5-(~ zBvf9IB@+|2(a}*TFnrD@->>voPSgj8?!KehqoeCpP1&I2 z!xaS`QHs~^XL90RzkUrQ zr}wFYDi5SWabFOpq0G38&7a18jGg{@|-re0=?l?lr#Wl9#+9g{L zYCua%D;>K$x0@DpY@%R(D?r-Q3_#T7(IY<6p!}o#nK<0WMo4LCDV~anl{E^)t!g|f zF)!x+m8WT^E#u|o|KxJnxtigg@qDUjU>&@&AgW`(Ei8i@X)BduK#S3t>&&(# zjw4bq`I!)}${TUqtEM9@EvMPo*r2vvuC{P>m8h+&bKP0`!(*xc_f+jmOr#=R?-Bka zCFtGy#sjB_ijJlLU}g5D41SFEL0}rN0*zOt41h}PzG2}s9tryo9Ipvb7mS_-s8w{K zC$3(r!;)E!ptSc_D<-&~25w#kN9ua*q~4q=Ka?-M8@R0oT99Zrn1cp5fPDY246OgD z%b+s-$BR&}&_IrnjEs!p;^JV?Dm9NCON;W1F5HX{g9LQ_5f!!goB9}b)Ozx3$l_p$ zfP;g>-8iUJc}b0;tEIGx8+apTV3_c?Cj6#0}dO%eOoH= z?L(u{ba3JOckN>mTDt2Gj2sO-TAnf8)Yc|Jz&dMeXdsHD;b{eDEi^6g;0%y}pufnn zb92d&OCUACXBu0y2dUs&FupQ8Yzi9l&;Kh6|7K89Yi2t+5*8P4OO*w;5>&ssu`x3> zr%doV=7bw5wrU~;Uu9>*w`F@5J@okj z4u=bd821kdaK-PtB46RQe46yk;^yDeNI(sT+gc8_j#Af4I^O1Xwev* zTMNC#5oKj%Ae)~g%lmx3sjK_C&9*<+fL}twU}d=M7A;-xOxNhypveY|-M|GRCBj}l z^4n-(p=!)mNL~tE_!>g|FBxaOI$U-t7`L^>@ZiCN%z^^#XtpaF2rYmQsbsms5J*w$ z?o?UQHd_aR3L*=K=mFj4>gswbI4U-lS%qA}x|y6vslcqtaJ;Ar%T9VCJ>f5akP8Y5 z8km>}JEPZpSSbS`e7k-6vHK$v#}D;u^wJba(HfAOdN@U#A6{2i7YT;k24DAULxZxD zh_JB4;0N;xr?Iog`F+3j4Gj1u?(}qZg#&aqC_t=Ty}P%!M}~N;4ALR`_wSE6oIHE} zoCr}+P|&~d3JC_Qf&EKaYmef|MeOH_3hBzxK=Fm%4dKB>{>NUO_=Jf=Bu89anG-P5)S@ z&(&W)2b0~onVFd*XdVl#DGX;|m;cGYNsOXh89Nk`WLfv~%wlFyjw9s_upfc#js(-0 zlJd%+4TxHT9p3%!8WBN3g=uB0czer05q3Go`@k8{D=RAtiHf!W(S8{p|0Fm#*l*1O zJ^@CJfss)dNJ?*SZ(d1BCW`P=pvDRn)^Ru&2)5~OuSCetoN0K$r>d{7AH2W6e<(+D z8{Id&wK!ZRg7C`9vVp4vdMBwU8N!QUO?hIbsKRIKVJ{{q$jZh>5QL^$&-?2w@#k)- z>FDSr91emmWrPy}{L+f%y7p@_<16eB!Tf-dh=Mc&&yxW(NhY9XN5EsguzeuI;C?VM zJ^11bRe%93Oy=F)-Nv6k4Y$|E?m^1FsZE>sc|DLXOz7f8Muzj+w032tLa(%@R#!z8 zZLvRnSZmsx?Ho+y;#!aLy>OGtgf~!{({+K6{VUuUR2c0J&nZKxRU+g&yY!a;G3i_* zFd9^WzP$IDXA7j58Kk8%5P6d_g@08?s2p?z%dYpf+Rh~!^LzI?y@JuIYHD%rIP3)4 z`{x&|I}Lm&ZY)~SNgu}`dDG(9C4NF!O|5xST0`hu>_r&bM~|lneTEt%&aMC5zQM(*AOx^t({)u=Ad>UnNma1U0nqEkngD?L49ZvFrofW|v$ zO@461Q%w(JPVoANCGETHob!%D&Hrire0cWpY!b)Z19-}*Q=!Be`b2l0iDi8JNDXDUn~7eL&+2nD1-&MYBLM^&GappZBpTC$I{-O@DGEeQDPj8VpZbme!Et@}9cU%xa)n}!Ln=Yx5}1mVl+^yR#mNQCIM_hsd@c*!TwpJb9$nJ^ z-3 z@7{@G9?ySg+g=*zEZBX$q_`MPXkR%$p*>YnQX(WQtZZlZQQi-`yaQ8&Ly<>kqE<9LC6odv!>I6Q0(MaeDs!(V@W z?d_$5E)}bshmgYlB=K1;x&DI3?n_q)U9-1#34VB>=d>!xqpe^|OavY}<_~w}5mvK$ zb>`n&Y`Jw`I<6lB>yr6Q2vAjA54&_?mKMZU)O0qX@%Fzong9K+|1|FYKi$0l2k-e; z6XM8&b6F3Tw923%ifF3qs(n(i GeDYs{S6Ze3 literal 0 HcmV?d00001 diff --git a/doc/img/genpod13.png b/doc/img/genpod13.png new file mode 100755 index 0000000000000000000000000000000000000000..12379b21d89cc079c6fa96580e1f921092bb7a9d GIT binary patch literal 15642 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 OfyhZIOBRb8fBaucO^8YW literal 0 HcmV?d00001 diff --git a/doc/img/genpod14.png b/doc/img/genpod14.png new file mode 100755 index 0000000000000000000000000000000000000000..e3943e64caa665946d267cf3960ee18553d86e0f GIT binary patch literal 9560 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 literal 0 HcmV?d00001 diff --git a/doc/img/genpod3.png b/doc/img/genpod3.png new file mode 100755 index 0000000000000000000000000000000000000000..613cf79eea75d145867d0973d1fe46ba217204ba GIT binary patch literal 15367 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 literal 0 HcmV?d00001 diff --git a/doc/img/genpod4.png b/doc/img/genpod4.png new file mode 100755 index 0000000000000000000000000000000000000000..76e52520248c9c974f80ba241f766deefb1bc409 GIT binary patch literal 14067 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 literal 0 HcmV?d00001 diff --git a/doc/img/genpod5.png b/doc/img/genpod5.png new file mode 100755 index 0000000000000000000000000000000000000000..366690e4a640f59fe6e0e73215e4dc04f8dc58dd GIT binary patch literal 4406 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 PaECz6VdrpW*Y5oXqlAQ( literal 0 HcmV?d00001 diff --git a/doc/img/genpod6.png b/doc/img/genpod6.png new file mode 100755 index 0000000000000000000000000000000000000000..a7cf6843e5eddc115fbc2218c4583978ccdb03ee GIT binary patch literal 18900 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 z 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 literal 0 HcmV?d00001 diff --git a/doc/img/genpod8.png b/doc/img/genpod8.png new file mode 100755 index 0000000000000000000000000000000000000000..f3a5d6480e98f8d956c505a2815899257b4fcc5b GIT binary patch literal 11547 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 literal 0 HcmV?d00001 diff --git a/doc/img/gnu.png b/doc/img/gnu.png new file mode 100755 index 0000000000000000000000000000000000000000..a6c61ca9010bded15c9bb3350aafe74ea6b425e0 GIT binary patch literal 3134 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 M=o4=C6(}6}|2!!9+W-In literal 0 HcmV?d00001 diff --git a/doc/img/home.png b/doc/img/home.png new file mode 100755 index 0000000000000000000000000000000000000000..51794212987e045ddc3d644c302d2ad6c9dc0b47 GIT binary patch literal 751 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 literal 0 HcmV?d00001 diff --git a/doc/img/inherit5.png b/doc/img/inherit5.png new file mode 100755 index 0000000000000000000000000000000000000000..f48abae3b598f825a4f506131e39715115ed8d94 GIT binary patch literal 4676 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 literal 0 HcmV?d00001 diff --git a/doc/img/integersFloats1.png b/doc/img/integersFloats1.png new file mode 100755 index 0000000000000000000000000000000000000000..8f7859041a5d43280eda731fc13d9ca702416c13 GIT binary patch literal 3499 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 literal 0 HcmV?d00001 diff --git a/doc/img/integersFloats3.png b/doc/img/integersFloats3.png new file mode 100755 index 0000000000000000000000000000000000000000..fe2271ff51967ed58cba2cc10ddd427dc873d6f9 GIT binary patch literal 8332 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 literal 0 HcmV?d00001 diff --git a/doc/img/integersFloats4.png b/doc/img/integersFloats4.png new file mode 100755 index 0000000000000000000000000000000000000000..1d4d1837625bb942df9951c4dd340f18eb87a7f2 GIT binary patch literal 5962 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 literal 0 HcmV?d00001 diff --git a/doc/img/mastersSlaves1.png b/doc/img/mastersSlaves1.png new file mode 100755 index 0000000000000000000000000000000000000000..a69eb1229fcaaaf82db1f7345068eccd3ee3062d GIT binary patch literal 10029 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 Cm7s$F literal 0 HcmV?d00001 diff --git a/doc/img/mastersSlaves3.png b/doc/img/mastersSlaves3.png new file mode 100755 index 0000000000000000000000000000000000000000..7963996fc2e579f2ce22398fe35e54766f315349 GIT binary patch literal 3484 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 R5S*hRgua* literal 0 HcmV?d00001 diff --git a/doc/img/mastersSlaves4.png b/doc/img/mastersSlaves4.png new file mode 100755 index 0000000000000000000000000000000000000000..66685f2ad7093abeea3fa55556b3b4fb39f7262f GIT binary patch literal 1940 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

+^F~htznUsM8LHl`7iW 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⁢xzTj%&OBR%lo+I(+^pn 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 Y!UPO5p1&O-!GFX>WNxHg)BNjy00C(|NB{r; literal 0 HcmV?d00001 diff --git a/doc/img/objectStorage2.png b/doc/img/objectStorage2.png new file mode 100755 index 0000000000000000000000000000000000000000..068fae346db6ad770e0f9aa106e272bc5efe02c1 GIT binary patch literal 29806 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 literal 0 HcmV?d00001 diff --git a/doc/img/pagesAndGroups1.png b/doc/img/pagesAndGroups1.png new file mode 100755 index 0000000000000000000000000000000000000000..b12c7bdbf85d65c5231750029f7053ca3687a2e5 GIT binary patch literal 16441 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 literal 0 HcmV?d00001 diff --git a/doc/img/pagesAndGroups3.png b/doc/img/pagesAndGroups3.png new file mode 100755 index 0000000000000000000000000000000000000000..9ec0e996ddc7b464fafe7d22aa13e1e53209c0a6 GIT binary patch literal 22045 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 EJIU$tZvX%Q literal 0 HcmV?d00001 diff --git a/doc/img/pagesAndGroups4.png b/doc/img/pagesAndGroups4.png new file mode 100755 index 0000000000000000000000000000000000000000..dfac3c4cde6f27cd8df82daf460ab728cb8865b0 GIT binary patch literal 17313 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

A( z^c!Vn1MlCkS#)`2Wg*C|C@mFy{D1Jh1YwSfr)AxI*@P{Ou=v9Q{ls#h!JnK7-7 z!$>d)Qz~CV@9BFI4aG1__D>zYRSl?tRw*|CEREDMaY;H&e!MVG-JSawiv6f3md~CM zHk68n#uu;+jW{HKm@a@<43JQ#A=1(yOd&gDXVT!3|B4v*ssANSGdwlJ=(o$_+8kO(mH>2Mml$V-san^otGE z7v&b2^$LeKx3}9kU5E0urQ&%N#a{e5;r8_EDyk|Py2powiNMWS94@4eaLR$d6w#(N zC%{&)JIJrqfSm;ZFg8+tEutn1)r4-PZ%5dk9(^57WO?&bI8N=)fCB#00@i)Orsn1X zcz|L8W|Tcil%CU|;6`9&aY)VH8O`R6nt5Pq`=jf?Q;yw_i7}(y;TaA7t?zgw4veU) z{mHxs)*I4ZGP`U+TM!~x zdgkbsM^h=5TD6MFY$@{|d35+zpnnAJxZk7b)o4lZYISl={u-uhWYj3D>&)@ArGy>O zUN-uW87z1#Zh&&Un%W z%1up8eGXL;T(eIV6mEgH>NR9hSy|ana7&|_Y0c66ZBSq(Gi2gX4q!05Cf`3mfwAjE z%qSc$Cok^^J`7^Wew0>9Et@b403Eu`d(Z+|>2{uezlreL-Dq5rcegxiaCACY>%Nzg zIJKKudl{=d(2mS(IIH(?J%rogmR*xw^d54NBTm=oS3VG(u&BMF2 z3`+)w5VzIrWndID+>pm8!z^mhgxJzJ=M7wZ{O}dQ$kfK3o~q;N9hbdE*~8-_%l%d2ld4P#_jef?gfu^X z?5@~yjXUo)H1>H8>54hN-o^WsEAO3YUR!_KZP2&2{*$zw$LjC~TZZfR1}dSc`T1r8 zwv3(n%8kuD>V$!QAStfOe|P~RG8ASUVQ_=Ncn1XupH#ppjBld~&jV`JyLaypL|kU1 zFeom-++#9akfuOd1S`WOCl88^y^VU12%J3N1p!NG3pA%-{}g3+Sp))|0QLU`@V^Fq zLeO$Zdq>n@JNS{bn7=Zr``*uR8wGFR;7 z4Tk?&*YNC4-V_)-f$Jb8%^x-yGT}6G(+bqdJJfDwNdPb%eRn-@xttmw9Qi#>qBlDxsQI`*= zHxna-LYyM&3rxuc%4Cr(GUV+e$m^Z^c72W|f!edn92)oS%$r`);pYhA;u>CSnMNEh zEQQ_eDKCS6eO-|l9twt^S^NF$9 z)p9}l(e#4irfu(r7|_jZheyVj+lHmGN0bQR^A_Fq~u^z!zO zj*q7zx~>yYzp%s6jDwBc+uvVoOqZuT505V1>+D_F+MHctYvA&XE1`FCauQFQv=*@N zEH&4#-soZoV2L}>;Qqz$ibV3eM^CM|$NVa1|bqre61DGNTe;%Iw@`ueiN<1Aft@(bcqx#-7 zk~H61Topc`vQhWfsNNe_f?}xtbwp9K?De)rnXjIwAD literal 0 HcmV?d00001 diff --git a/doc/img/pagesAndGroups5.png b/doc/img/pagesAndGroups5.png new file mode 100755 index 0000000000000000000000000000000000000000..22791530884384eb1c5c9a1fa2bbba6292e46cda GIT binary patch literal 24326 zcmbrm1z1(>+Aca#0VPCKN(2-IlrAYLl@KXGQd%16ZcwD8L+m7E?r_&hVg6SfS@} z;E^{iQhD$X&I@TtG1MvYzfaX^5%9&NPLC=~t`TG8&3`o;@V5eisKGp5fY;4 z9JmyOQK%azDX|Ai&c9bi-Q2?*rdu`#c1HIF3pu#b+V%WyHYU8~AAP8IF@j(9@b20> zyvVYMZaosJ5k?0mhLMZOO89iY!dZ-8d|^)>oXgu5t`#X-w{T=1;;u>xYiY_^w$n;l zt`HtycJmk;U#=+0H4Nqmfd4elnwy;=CMH(MgKz)gJ2oZqICk7}eW4G{w8*p5uYQ-P zUeeOy@u-%rO`kNS-(O41k<_BT#xFrgE6^_{cGWy*EOhQOndH`_YSKiMq5e9CrteOQ zzO2}n*Li=U{iUrM<1A4l@1r|E{oa@^GO5uy)wvhEpmqg5y!=2Qw!}%k?ulC4`z~8& zOykoUomx@CTgdw|UTQ(B?9NPJzMU=KdU0ypR4nNW2fTukGTx>xK$Wi=`8M%$HR=JeZ5_?1N-Zb?4$jkRIgQ4 zjc|_teSO)6S|N3hl}KQK=EWAK@`A8hFW+azUbiZamHMqT>f$4B#T-r$YsQaI96r}i zB*$Qnt(|-u76>EJ5ehR@KX>43Jx*mcv9j=^HG1i%KoKuP_xr`cDOR`YMfJ1*jq9@L z1EGa$HZ*~5B1W4PrZY1}({oczt;46{PiJx9wy&m7m#FL#YnMtVubO-IIFH3dbaqbv zYX4ZcnCYevaq*$os^W+Lm;%NXEb{Cux4sFn+6_=tjg+MovXC5wVvt|*Edz# zrC00@wOd-bP%-LGrhIIc&uVi)ou7jF$R5X%Rr`;*$Xmmg#^H_!=itHK^xxjKrxtgj z44G^bD4jf?o9u719Q~naZaNAY8CiKzI$5|*w&Avr5I@s5EBkP-O4IOYl8*d}{#b0F zAX%JuuCek-;nGb~cj1_1t;A^=2|Qk2YSGWnOW!9%V2S=78h2i+^(f2kGqJ>5ZV4=E zWY)YNdH0dZ^yE?_yfv5cZ1s`d!aNFl>CQ>dL7$s1{pz3f?_S4NI8JT^G`T2SyFx6! z7{?FAaipA6p$wbW+mqYt^V^0EF9b@iJ(lQKfB3RA*)_6aWuO05Zt1sAPBX_vFMma6 zyVV%fjWhgSuFYN@Efc8JXLqkUk@Y;{e|6)O@~x(^0-7wX%wl11NzU`hm_(Q3=Z&p& z`(MZBv$lE7&hgyl<&FE(&UH>TTe6b!F#p7VSAA;;pI{BcM{Oz0yl0Pt``$@0&2^e~ zH{*-NDVK$M{2QH4tz^@0cHsf7ePrflDi#gDA`aWyg&S*T#12L{1F3NPZMJ%eAHEzt zQ@7@$^XrQouDejynM*_Ng>++K;kkBn&RbrRqxLfgF=SS6?{Ir~!TzFT}* z)A7o7LdWC6Q+GY8fmj{SQSt0g5_`_rsELV*b9Kr3Zs}Sq1Vp?vsM!A6$XT5#9Ph#i z%D${#?7CV-2Sxc)ZS!Ld%s2gYwhMfN*ZC6?U*|fZ`1xbRbG8*NaU&fmpZq3bkR*fq zF6vsIS$H@)VT3w&Ffdmd;lF9WE5y5|8dStpOHwKSGiA_%C9C8rad?*Cpqg55)>tgz zFzM7hiP*G2xckvDI$qG@4e8BNt*UK1dzP}zi*j$2tfXFaGhlRmIJnPSHkQ@kKT-Dg z_UTZWxW_2WecT#`TcbZ=5jL?f(Ox>N0xQNryfpc{&rp5-piP`%<7AZ$+UQo-N6zuI zfML4~;T_Q&f z@y9>`AlCdUj2pT#A>+!3(%5yE>c}K~BFtxgkv#bLhqMufqDt_{+TObPqafzwz1oxj zn`RC3QOxljDVsy3?vm&oo`8T>W!ENpk-?+Gp3OIXmbjum*Ld>{Pp?&t9%G&VlZE~y z$F(=_)hX0VsZ=h!yTg3Kw*K7fP23Po^OnkynxB(L_@P^E<4c;6N0!<=%`-N3(^$RV zx@Rh!A5;r5ZSThUZJo>)u29*Jhfb%@XhpV0omIOeauy}BE?O~a+a%V4FUiT* zeWtY6+QDToN6uM5xTx-8Fhee9JhwTNDAV6@T`^Oa%W6!}6|W{>{f@xUuyzjIi=Ru2s4$O~)<@1N}4qZq<@Z}&ubJlw}Eh(*Kt6ZRtiqX1XF zS3g6>qtxUR?vK|eK4<;OPM4U0ChPu9UUFnJE1_zRjQUTKxL8lQ??o7XGRuN4--Pz~ zZXqMLnF;OAFI0>rM;B`!iR$b*jbA={NfhU2mIs%jr_j?f^FpTVQ|CXtM`5Q9O%m`n z&K}m6hRWv~q+K1UjSEkln&`P&29rwfhH#ns?-_XDz3l&X*QQ1;LBM91g>K+pzAWA? zT<&w%-eVaU=$?A5wEFta4IqOWzC41Tloq9~<%2_*0=I9!)Eijlg_#{*C6$fip<`h1 z|Mrc!prAml$b?vb-LhlvuC!XApW?A&?|w2p-SkM8_}{sKx2cGE^rNT-W`AP~%{Dzr zMQ}Y;?=yRF+pRA0tu2BeQkH|y!HTCpcK21yI8V+C{IAyyetO{ZESJSXC@o9}EYV0K&?R9F$D@jBu-KG><8 z;Y9Wd6RCM;Jb$BImyo1^!EKFFOBTnP5K7+e6!9QwMs!Cthdrhaas-p78i+n1E(IlFEhs%C$V(#`p9hWSiu_@DLhB+JnX4)a0wP->wkNx~i` zV^#b+OMUulBjp$eX0<$TqmEc&YHB%{i@|a`!+rZY>*6HFviQ91k1B7@g^G6oA~ zW(+K=cT`HuhaS4S3tCn0kkWYkAuca3FR~nsHBRz~x=1CkadNoclO|6SN_F2aDM=^a z5DN>d$h5~VAmF^V=f0t>o!#O{Iain9HUZpfyr9c_KSIj)@$oV$Dx?m}{j)7JUf8qkWuqQ9hS!R^_Gk+q z_u}=5`6RDYsR(-W(FziHQyz=o=jyC#kDEW-eYP_B^-DoV9B?yjtrJ>mPR-c(J}^h#N(#Vo(EGvZ;+z@kLCZ*pZ~kv z@~_8{7kxQnXK(+#fcfHezE90h^UB>}F6T;yEgOf2DJ3N(U%!66cQ}69d2)QXx=lbM z91nxEF&nL;9Zpr&YKQ)x+_4MRgQT9uB(G&J%rUeHR0QPVLq6L=#_{M|d0==xZ7K64O5 zlKbVo@!3Y0+Qe)3%$^n+$)Ygpqh%R4Ft5!;q0UA{Z!hQC9% zKYt`Iy#F25+|kitU~C+nIesToP*6~~ zA1tQXua70bZuyxiOS!eR<-9lPk1tsEvM`|%KPoy}btUem4)h4Dbe&qyWOR&jrji~M z3c9FhBM(|yMd24OUch?5!6##7W*;3I8alBvGh<9lOf(;_souM|{CYf=X) zEW1LtT}zavme%IxX1PhNqNdkv5}g6oVs{E{PcJN} zWqLlkYL432*wBTY-kYTw_WipU2ods7>&SU6uSYP*mvr&!HJn@O&z6Q=&1Kwa09&Z3 ze{puUsls77;O*NNFitXwf-y}&WLHQ@B^vz**`9l5K=BDLAR!?U2MB^E>vg;{knt?- zVwP&I5zIUE?GKBtuzNZObi8DrJi)7W16THPh;Gbj1$m%+#SAw`=Ge zee#^ZD+E+@d zLmMJz*A_<|Ekv`PVqiLE`-JVq0 zvWklCQY)QAmpKaPKPY6LXxuljYL79LkxZ)ejEryLDu>bHj52vpa!bctgCwb4-jtQ` z!G!tw_?(56tiRa()qde;vS^Er!iTvy<5TmpawXNwV_REWYkT{m0f)Ogvuqmgk#e-o z8NU3^P<_N>ca+=W_XmKQ)+>V?mbJ%@FqIu;Hq$6_L1%U-3w6*NVInUBlmI9d5E7z% z_D2#?->ibEge!fR5Qf~whK>D>5xZw3it+}03w zR_l-U<_16Ckc?-kinX2|P~l8|RbgidYZNWmUUV;&DPR z8=JRzDBDyL0~Cv~^J!{54yBZo)Cj-s4a=Oh-c0p4=%j^KwE_0ij zT?{EK z7pJlNnElxC!T69ko~^^cap#rI7IIGe^J!hFL(xLDa%e}(JpP8%H|y#}&ct!0M|Jt* zp&b3mYwbFF)Qd63d;1ge-_#3ZEk`R! z)#e+oP&f3TeT+I90|O}@mr|E%ZCl(@)yw0znYz8Uw&v{W9Qn}`*71X*>VaY$_#5cr`FaUxVj45FIm5RpUHpe zL4EJ}9QBny9U|s><2A>E`!n{M@md+r>E8YNEV+Ghh(>PT>oO0WEil~X5fPlY**aO? z;;(MIYZ!~_56I1jT)T%yW~^!+)##EW@h!-5-WP58`(qvSwWw; z#(jhEdb8vkuW@U7shTHxE}7QsA5bzL?qB(xM;sm=K4Rn6b!Is@DCm}uP{O^J{p`k_ z%kEn?RXKx?o7|e40dy4_cfC(c4E6Vy%-_{Hd*;jvQKYM@tL@%~-r?Rzxm}Eq8xOLn zLqkKa^V`0GXa7cbdHviu^0#knY>eTtxCXoK#@)MttXdW9c6047(ij*RA`%njK1+n) z3Esba?b`DfL%u|f)FPhout%mQCUlcjDjhAldwTMR%%hc5T}qP-)s-?7zy5TUE=(X} zbvxR#0VrW@Ys;87p5%2>?veNw^R6u5L+!|jCTxWUZ>+QABA$W_a`C#Y?{3P(@r2xc zmU>lScf@r$n}Cuh7^*#tGts?IO5b$trbBqAR#!U;4AD>^tY2~J2OnegrBJIBGY2Ky zcjAPm0*%IMT{rIDOCvU5I`j+-Ej8uRroF`I*fYA^KlVR4)TqDS;BRR-yMcWhmu zodK)5O-D!aI|_&)sfJ^6U7ctsjfl2x&2&rH^z5uJh}+oMkrg>xmbEES9W-nmj)}GA zy1F;o+S+DjXNMk**8AXQJTEqTh5Mf6cqy&b!SM9t_-JoBY{cvI7~1Ca+L{~`eHd?} zrQQs2)`)}zi>cmT@Gy#l*?UDbe%5v^kUteYC$VB`ZtE!V&_g#T%Fh=}>aw_++Ah z1D>j?s%6Hhi0K(>Btgg7#<(rzBP+pMXv!q0J^UiT#rWM%gf7O zzkdB~!dQW!bf!{91F)RO^71VO%$U{TmgW#jY39njp3s1Rx&mfkQc%|${fWp1bEGq} zs)lpR3}5|SsK6K|05leM2?ufbWowjfb>3gMo={$YAb|pj-Toy>vxynDx8QmD|m4 zEoJ3izJ6T>_KNdtq-sEDD64(nM8hTmsB(2g;8p{JgJ%+)#%>A0ouhH5CNiU<=bmRb)1E-sx^rtau z4yO3CHmXrC!OG@Ct}k=)_=LAWyOZ~0GmF+|D^UOsc#(bkhtF4V8Gi^zii>13{hLzf z^`!i$!s$dvl$f|&7(p8JgA1?d0ffXIVC^$4s(kn_pyr@i^05C!&bEkFyzxSGhzT(_gh3x9;m4F zlZ@6+Hu?kDpsYFClCJ&@^ttXmopc^^*5FM#I&5!brYjs?0{-YVQFMG&F36Yw%pHIw z9UEI16q@HH=50Wqkk#>#(-03Bg{nDjsl~9w!-r>}eB80A0dxgd<{$=+V=8=p4}g<1 zJtdZ-PoSJXc<=zY;E)I^=tD7Q?Td)0sOE)VpWD!AeZVY7z`YR!539ll(5j%IAj0@l zRCBfW_Vy;GrXGrkonunXId_AOt|@Wl*|TR@ANg!(;jV$koqjD4VbzyQ5>7x0B0Lv} z=i=fbirakf-J3V(P_DacA%^PEHX^X2JWlrKk#+;6`-|7G_#dua$$GAD8tQ_ z!mcF~P)B`RTOZdPV>AvoHX4Zl)4vJ|!beB36zU|GZ>T7p>|K!;d;lyeCnx96>Tq;X zQPGQmo$W4>D^ye=wY4HZW!}7bv(cxjqg9lIwRf=&nKQl zh3xPV6>|N9kdA1Da;ynGbN9?Numcvz2}S6m9rmVg^{W6 z0x^*3h`mRsdyU&fcddF?yC+{?ve0_6Aqc~jk&%&VJNpBN9rpV@1qB7n4)DTWZ7;Z9 zEExc*E)%bCgF(^Q+}>s?@nW(v{3Wlm{6lcCYJV;chaDP8Q|C6w0l&{m$;pMnl@i~Q zAg?31#+@#j#}A^2xDV2v;AUlFxifyoO*B(lF|&91qB~=_T7+5H*t&W%p0%KicGpIY z0Q}&vmyXy5g@Vr`{RehU3`h=?b-|RpIZs_|>gi9dv-*C;75A;II9r_p4CFAh7Py zD8-Dw%~bpva%Q9De`NviP#_o2!t=yC?EojBmin^%0n($O5;Hz^Oh%aSzz_^Bs;asg zi**re7MAB>SCpa6fR+>11`NekJuVIE(v>TprQK+0qi=xJ3>v=8L>-oZ(^@;ouBuCh zFF^;GIQ{d-{!stI{C($*Pt~UzTU(499~+tuVs1%>qMiaQKirOl_RIS86m~gku=phz zbmepB&gHr9+a9tomdhpPn-1hqjg5_w>%;bY@k+G7W!ngl2dqv36u_|HI`pTyV?cfLm)k{5f<_(;mut17(M$y+ZEYEKdmEFDphW1xP<>O&KLa2KSasSh zaj}`p!BqF7ieC;~zI?gC>-2E^a#s)8?-C1*SKBpNSxmyh!oG9(7cZ9V(g4?Fy_Ct? z-=zc#S=1S84@5G&-XtAKm{#>_SBFpe4O~cj^86_wawdy6!9i?>@~~ z1+>A4k{8;!s^hs&=QQdNeT*ls07z@0Kbw-qbMGb!wpm?Qm%QZLfX8=PKu%KC@gVVr zaj~piEjcrLda_$pb&Rnju%x;g2%Z~89wXUAnIWxPj(AmCD*fGjysBXNlw>Y4-A?g@CJ$>q+vH8||m+Ic*%@r-1yev zizeMg{Q)@T(5MKLib(qyI}?RQ1opT$&jIjbhb!k|Wo1ouS|6jQqx(AO0PiKA3T3&u ztE-C-1aH`Tv4oU7A2O5n!3mKC86qSiBEodEqPRM#&8r!%7_&C|G9@Kt#Y6q+(|3yl zxjNw<{)zb+NWa-5*8&@u9=oxp?T57eEy`Ee`01KI9Hy|kBG7pI!0T2YePeG_>9it zxJazotG;yQEK+${FFgEV8uW`(mu(^qlfKM*fFS;?Q8f+bPlL2~0kic#dAr)+#=j&4 zx1s+nAuRW1G%nj|r@0i)K>=g;Jn}hmow+kw>450soeB3NY&rXcYk}@_Ysx=z`Exdh zHOJY-bs9K*nt!y1Ryn^5vu4@57V3oH=rrDthmD9FvOSidNPQzdh9|Fg%Ql-y%iJnn1Sjj93Kv<8Ct~A|-=d@Q9j zmw7nncle=q`6G3D=_T9t-iHp6)e4;5^uQ@zVK=8e%Cjypcz$>Tb zJhMK=6HIBX&DbscwHhY^j) zY4Y^ZVflQRYL-fe@Y>v*iisc-lQa=+5Hf;4i(jf9?t%Wh2X>zeA{P#qu>5Uw@R{E` zItclk9L9ms#dZAe%c}Bkgi8ib>i$}p&yz^Te8<)2*LW>uL`6{`9*GOzh^Kj+sgnHz zI3!*>($^VPbIg+*Pkfp?J3D7)W(LvS-Q6J4-YF6y%h^7vU>)%UK2ha)BMFKWIE89a z;t2u{h>AO0VgVA@HSg8oQcz=6=x1%I{Fk-_KCz%1$RAl+vcf1Z>(s>i;1Vh3Y6}5M zmjd#GAawWzAY5=$2g_{qU!5%gi~?nq-3?<7Bo@qo`9>lUX3kIWNzTrEF9&kKzkMGO zp^+ld{3;A5g=EQ0HN@1WxkHMZ<;mzedvg?dI>*{S1oTwJ#Y4h&u} z5%`QCJuIhRA}*H!$qPVv@^_c2sw%ZS-3R57=$(uP5xt$A0UbLKSW*2sT4;Y7Pm|M* zJBTs9t-Lpm8PC_p1+!rG&teahs*PN);~?L_|1V!O$WMBY z!*cOjaWGt^ri1<807ec)6i0J91#)}OKmBFf|F_YZztNKa-!HOtz>S+lM}xI`dc5wn z+LP$MB?WrEn$hxLr4w8B^WyHTyGX3(Sq+cXm<;eiWTU(?1+2wX=y3b??Vmt9(3!V* zc~vESkV)uh@hgQO+{BEi2!CZJaO zVivnfB49+1To{gyDr>3qrf_GJwpyT?Oth@VBxu5mFr!0Od+y-n$Vslg&n9hwX5fGj7n1i4o zZbJ{eOiF50OIQpX8uAF1NvCmEHTlu2Lxuj7mStEVK)PuGh|KS*geSnBz(&ECLfxe2;0R9?a^tid;e%3+cP?%_TF9#$k;@^v0aOIaKcXbU za9z1}?Fmr(|gD-)U2ssVVRKEfoH83{7WBA@kO%gn zT9hG;ppekwVE!$*Y%`ni@*^1ZrcWM#1tuNc4ru*TJ$nJzBC2xbF0A@B+=qxOl) z^_p7{{NUx~P5Jz}?Z*$sB0`A8C4tp8iaXHCWr z;IM43mX81S2hw`x5?IGTI00QEktoPk<-uY{je(@Xj83tcZidN4LLKfcap+ zTTlO)j>uHawM1>h8jk~cY8%wtYjvnOP{z5M$)`b}L`_dm>x0~9F)}(zs0$G=IQ~G- z!qTBF|8L4!vM3eIqfz%4sZ_vj*h_p4OCK&=yvXAn7#hk$B)H*iV{gyx>FGHK10rsD z*t8_*vh~G72ZBc-pe%i4uSXeyNPuzOn!j-VJUgPOMHy1m0VIh56=~Gj)%99k)ycuK zZ$A||xyf3^GV2xi7schix1qQ$?@0w}AVPGFChA^Ee4%ai5*fE{Bus_shq(Tg$(Wd=^LrkZAzzDqS7PYs*_p9Linko~8KNRZYpB!OO_ zAdzEKP*^BkEVAza*C)AtF5_MOT*FNrBcoJM>p+4+vL}eVfQtC=!62Ap?t9>sR9M9r z-CuCGZVSKM)Wz!Qb;`%`EJn&WV3xqX>B&@PLS#gwaEU@X$4<%E!I`Q=L^E>knEH*Q< zCAw941A{NDl23g9z$)VcGGe(fw)GuwLH9nj_SJlcE6kcU5un}9F>v@c5)R~MZAnYlT{t*ebr)QMsf+0(q^ zRRfaOHn=XNcd{Uo6gaG`nE+K5lLYei=AS?Hv zX7`CE`3-T#0;h40Xe12)0@awuu9myI`vMdtz#H+ECTB!WkGKFZmz9;hi-~CifpMtJ z<`xtR*jE8szQ<=hpgw=?d%gU zPafIYZYBL@g_Z@~9R-7c;BB}h&e2`)_W;N=|4e>_1@=+%uV49^7)e;(L~Q%2!pJ^{ zb+Ot5(HwG4gY%}QrtR_k5kMUZK!c<9`14DoTCO@;9F7*<0sX0FZwem?BwW67MID$2 zqG*9;F(0L2dDnpo(hj#E5&=WY<+5b}i6t2|HF8jjj(UbMptnB*?_VWXy93%yKw#kA z9uMH50sz|Y!Tf>u69);ZsO6J@qdpuW>UQuy`Ro@ifw)EnEwZ7drA7M$0QV-SiI*uT zq`;eGt3Bcb2vfB;7399zM23uBf??-j`qff6z)?#Aw>&zaUSBMkH#Aev`E-4EqwVOj0$_`{; zh3x0|mIiXWmUC-EJB%8Q3d18J8ezQTVO*e!6`A~c4OyOHbkMai=V?OA@>$ZOqoXn; z*!3YYwFcs2&wx2HDrbs8t0fXSVuu9;*?FTvo0(Q(KzR}nD#VjnAFmYwxP-ZR&dkl^TTecucC+WyP8{RLBh=rRsBd?3q9*0360CMP$e`dh9l5HL^n`$# z`_0dv5=Za$&XShU`fCfh^?W{DRmz<4_f`J%jeDoKisSVsv%XF1-S6lgN@HVVv%YW2 zD+kQx?$=K58h54kY=>&k%PG!BzVgiqVuH^?M6bn3WpklQ$F(`ww}1j^- z)`XmQ!!WJm{zrPFWI9uei&Flrp>&o>e%m@k84LE>cLW8GdwXP(POh#Fi$fen)}&FQ zH%GZeJMqJZ?+IsdrskI9vSW)Edo#FTst4S(=dsJX>*t~$;qrl?IN1@WYj-a0)*Dc! z2G$ZVo7?{5^3=wsCmwHjiP#E`j_M0KEgYn_ud0s!Tgrq)LlRCy(aXiQN^|Md*`mHR z3~z!2mSOkEg7$vN{PbQVo#mCQ*LkD#4nr-(I}g{YPT5VK5`=b^1eN&vofhXRnG3L8 zy{@PzzcHOiv%epG_Dye=^wS;Dll3vRZmzDu`Ngr%_qWMvBwgnyJcakJK*LDY*v)b6 zTCTdGDliz&??H+#uy)$cV=$JNX9F!k>yE;_!91t?;CZO&l49rpMY;`qk(kJm8c-g9 za;O&?5!%gFbu!SjkZE*1>q$aH?_T_j)0P9gob8&!HT|ZyBuH`jvpgII!q~LFN zs@msfh&^yjFB-SDb(!EA2OCRDCGb)o9%yXfd>j~b{;C~J5ZWN*QS6^D?6 zR)xJ@oi`RF<`b_l$gvx=UP6L=kgu>84b*JYMH&Ej$Vf^L)Os9USbuMPeTU?6KvyH6 z68HeW&o>|9j890AR(3ksA`^b+l(92=YV<&X2$QW-n+OL3+{zGk2*J{GxVWI+P0}s{ z)1u|&Egi(gj^njLQjQih>!X#tkejwk-ap+=I^BR0wven>J_lD0|6Kxu9J}A?hj5;zd&oC25&Y%pK9{!A3JdIOcyh{6hn;r4AL z7Kq6C(rne=;YJ%FFsQ1VXjQZC2Wn$?t=H*`4kAvobd<+=FpLVM{@f9!s)A!z%R*3_oi@2*e1mwCf zhcddlpWs|dDg*_%TwGk{qIEnuM3W~WNL$clH^~kN?BRA81y`!l4ydI+KxP;MEJ6;% z4T=5(jahjy;4le-BilznQ9~_V@%;MWCcXsr76Kmg1wz7mUD{b zD_Fm5|H;Hj*zdkVl`oK*a01 zkZVz0(a}DeGAIVu4jI!1o-*3!T_7MZ*qmxQ0xXDpF+VR#Z=DGL@Ieg1*&Cai^-WEP zt%@9`F{yzl2;zN1p<5U(Wdl@-DG1WKJX-4|0@(y`N2cI}0h|kfJG5^zT%$(+u2%`Q6Mov5*#)fEtn0xhf%eOu>YRHDF`4=czre*!>o$GM(lfJfn9fr zoVJ7AB_%IE4>Is4sDjvMWKSs1t45+w)NaV%1vup$weO*;_Db|RaY2s%K#|AKJ_P6v z#2-#aK*gw@8(SyK;({QI=U2i19RVIEr(VHzx?b+V2r23mAmQbOVwTz>(vzR&;;kH0<(Us zFWjI#W3e?sCxc*Ofu4X z@ElwoHEGaN+Y8;~RnXfzI!PaDc}4N@fx@TVm)Ywtj4+AoyOq1`^M%50T}E?W*xv0) zB06(jNo=SYz)qJ?m&wWDR9IwWC{Znko~M5@M=74;f3@HC1J0NY=kYy#swD=HAPw1$zNV>W3E;aApnbdU^sKK!R-H zum#E{Sl5`NC*l!5`Mqls#T4rc&``HUzy zX}2;npGZjfDJdxhWM-ZbWz{U3czOi2j zGaDNj>WnBOBcqs@0cK?gE*o6r9ewRI0K%8a$Qa(HoJS#73W>`g?OZYxVBJvzbB*$$ z#MS(rYnO{lgiU)Ikn9R1vRPn`;W!D?Ssa3&mt)KGhVt}$NI&fC?9kF~0fD)Iis7?K zX`&PXL0U`YQ1WkwjkPys)G`t#~Cv*GxG-Y84YHx`_M6iC2qZa`xb>ze8}dQ*<76SgolK| zm<=+7x$Y3&g(FAo*FyMQ|D<94)%~K!3r2pppnCPbN`HxHo38vp6-CGMbZ~?ya3WP}0?Z?|#Q< zX|sx@qk)@wwV&8(P9B^oz(+KJVNGGj6}7#?!_Qy7oCBHj5h%8x8WSihheNNFfIx)1smDDP*7ORbzt zWF$+oSzuu$f~bAt#tqchuV2%@ee1;|-yYxEvJEVcT zCU9tW1~?@NW&Nq9W^hpv_cpDM;*~tNndBcwSoR@bA_L(?{ zr^1ITTmYWGzZeD1rVo9j%yIP^lEH>G~EQA317ba`IJcYilK`2&%RT)?KB7_)g%SAD?R zJ#ETyU4^YC z8j{W_RaMu)OK5_r=Kx?0#w#wMx%8|opXg|^5{qF!km=m_XQLlWOFvRm`-pK^3fVtA zM9$^!fxKPJ(Y~^11%fGp;0bWff*cqEZ3g;t$sQ#uf_h=Cf4cJ|f~H!d#=RWVH`5xxTPJ@H+V%lWLneJz7Ly@a}YOvwpw8YGg9#1w}#AARTIv8YoT_lAtw1lzW@|AY0w z8okMn+@_a#EC3P`XZQQt;t}%3W3M z@kuma%}CzsER8EU*2$|4>w(5kyKlfrbG2XBvlGN-tQp(Cm!p&0G{`aSDHU7Fa`tMO zqmA!_^$R{@S6qo66?(8}6Q@`zJ%zEiNve=;Q=8nWN-gz>3FE>2Q!`y-Cz(KuWmpSZ;0pAXJ zx_O0X&wN@J&Zi5A_F;vGAKRoXlsTSaFkZ8&HkcI(F$u}%TApstKIj;YjtG<-xH({$ zeo_ivBB2VraHUyaX~b)2Wx6?g+1aA=rL$L)?HxJPhtzE~IAZhgL`VMn#ly2F`P)o! z9$Hy@6b$kS-+hxhKdY{f-@5UWh)qWN(Q3yv3#z&;{*?2f)c3omPIM2uPCjF@3+J)j zrbd1r_K%f~=h+B>Rg6jq`ti|N`;(j2V6T#nf65(@2!1jeSC4sTW-if_ICvync&3=t zh(!7QafQuQvB&mW+s96Td@E>Z1RWi@e|sJoLUlT5T9`x^6io}~yQ|$Oyr{Zt+u^h_ zF=Y3!@$m3AR=B!e9G%M4i4eJ473Xeky+nCeX}N$5Mq~YFf#bS}<8`l?U4g6V=hugc zAi(MTa&b64mupgY@}~RFtZI5mLG7TkLBE0nrs}6+Jg;Tw_v2c&=$j%UG!YDG>|-%x z>DU&EJ#c2_p_ujdoGchT$M1X1%yikwnOPS&V`QKu`@+(NzhtmdF^E2jDJgbXU6fZ= zMhF!At_j*MF&Wu_K>`r-8@#+^zP`Rsm6Z<#4>2dOvNJ~I-~>eN$qt)4X2{riCBG&1 z4^-%)9f<8?q2MUucL?5ri}eIp1M+G(wSa`7y+I+M1xp;b@g%l&uc`gNE`ILuh}G|+ z3t@s==b=-MKNj2loCk*7D{zB>cfAIo4+{m3`CBmDStvfr(1VrsDKirfQ~+xmoBS-R z?QKdO!Fdy}xl{K%N8&Lc8bOe^VhPl&^`zpp91#T)59e?UibbGe!^^Xdv7w_m)gC4^ zIftA|NJ=7|> zB&~L7$?V(nVmzcT=HxVkm54M#NFAtAF+p~}sj2A>GqaeU-c96>51GR!&Fl{nXmN<- z-U13eawhlpN?1pM!r{Qs_G=-Vv9h5nyKtVr4r*xl$B(UQ#@aXBS}me1&=H2iTQhRZ z!%+-`goKLf>URO`O@WgOAiV&ZtEq{}J3l|1ePGJxL?cSTsID4aQs@{N$FWcFsv}FJfp+( z?CeMY0GnG|m%%=OLlK!us;V#1^FS%!6fc;jj8No}b6A!0E&bLl>l$VnwZ2ul@~{Ok z-;W{S$_6K|bmO_$j^^wFs&mt5X2drWzv%Z&^6>1-oSR*kbP)h`gXT+ zbW%S|2nRJ-YL$ffxQ~JJKgcqK&HU7@y{hIj0Egrre&J(i4Jc7KEOfHhBCw!W^eWuqQ@hr zu0R{ChhST9Zq31x2+3e>ntU{i2GY~vczAW&Ag~>AU=3Hr>l=LWMW}fjaP)ctvg#;rNFY2=xcX;#fC$Wx21tkNv6D~C&G{ktJ(tug zVR@=4=vTFy6a38*Y^XtSk=Q8BN=L%CDWVEjfhVF++HR}&;4Vat7v-Oe%sD^>{R!z6 z`_)Pz%6D_2vN?35^>IkxP3vSd5NL1>%LYwF&)&pdPQANRTc;dr0(ZolvE``Nx{ zh1Y(KB2O_k)-g7o1N*~dKCZ0XLj)mG0^7q=uom(X8t#J;OkG`I>vU`XMxQ%o8CuBf zNE3a?Z(V{I3``PNE6BM89uA6#c(FviN%^EE3kjZL;w+ipmIyc zY5rB%>}_E-B+)Nn+yC@30_7~00<8~e#DKFZGr?pN&VIM_Dgg~K| zAtN>SSqx$wW};NKpeiXLkqxWONc#kYsYO!wY9+9lbwlptVepSvjo~Io zQ_WX8hI6Y-Hg!Fy#zp_wh#{C4l&8^A-P_}ZH9c1x5(rz25QI|l1dXix>5 ze;Wu}cr!%(v!F)Z_IFYiv(RJF=|~=2A|jxGI$r23@-bvGk2yNtC@KQyWVytTLZ#wZ zuuYrrpv*IAn-2$=OetTn1Vqzel6OwDvVW%ZW@>6`St%l#x=bcrMn=8~ycCsCf{~MB zGv1P+O$2c`oQB56O6Um!ejv~*@pb)ByhsnvA}Mgs3%4YeDjv2)cff9=sKwV#qrt`& z`S$2!>GVwd8VQcgU8`ailL-xd)1;we&K=iq$EuFtF_S~}vL9A?ym>hUYF-9ARLqBNSL2Nx9BuC!*G$-YYAs%e~AG$?Zf zV|oS#mO48-^W5D$Jhl)IF-rvtdUpMXMWlL5(K(ti4z`Ez0}oA@y{o9;+A6hLf;A8z z2HUc4H@<0_-!fhdri{>Jv*p3hWI3MScXgXT3{we!j0=6gVfoA`-hf!@=%>ql@wcB< znto3&fPs*3n9gZ^>guKBm8jMzYuZ}&XQ+JBii60n63+oY6l3&|&wX~+YBS>-H&4$T zRXfx}Y}@A$J+S^rO7LPwpsl~c-kgLAMw$vCwkkq|!2>!P$c4ZPjh{>nKgXyQpwEYp zacf`rDn&g0~>~($<?bEpRjApzNZq^DOP|mR!GnJzT-7NxB&R!Iabx?AC=(Ec0BXjf~4+NF)dQP$-m^%R9Jbp>qy4 zuz3KJ)k~lsdWhjf1_urV7r)~I)tGpciJ>yyG8b&8WI``F5)cc6<*>% zA$-bTqR%rg#yYMYa$k*sE0{Xq0`>-}7%@=0avL{lV~`S>@48}N-`xT|x!0-YFDg2m z$`aLWvQ$hEFM=n+lhlrc!+dgQ)c9X??q|;koXY)BcyrDZ9Gr-__!s1u4NcI)#6xSv z`1p7NKnRgNF1!vwoi=v%_Px+7N}&lW+HqHRiqFDj{e1z?i(9qB*f>bXjC+9Hz9wSqBW4*vcL0(Jf`0G3x{14|r zzV+fBl9PWzR&C5Wbsvil-JukNu{^E#y((rv{8d6C992q@p7Nc?rJ~vu3oDklCMi3k zz@d&#er11u|G%y@q{H(monL>F(0t;nQK_!YY$ySXiYEA~nwKzqBYnaN`yNHk2NbU& zhar9Jfrgc5)#vaV6R6f}aYlN6``TEIWikcL-fXisWks4?p@u_3G{Spqd0odn_x-0V zT_V&HuGz4p1_XxF1H-m`)p3vcxJZ+EEh*i=m{p+7O9GDOUjf?|RQ&ZB?%3(Re;4fj&4gk;?{kXmDxFZ`$BhqpLcZ?#c zTj-IQsVhiz!VW;rT!OW-6pBJfK|z6CxsmazD-5f%h;hPOa6`SRwiYyDjVzCh61VRE z1MlF~AjvtB6z=lmrrS#aV`J9=?iwU81;N%0cHLJ)|KI53%N4?9@2dWv$%i(^r-@S^{uUIuxGWYV*AsArC1Rq z`*!jCK`W~Z#xz@0Kp^`!Yca`5?BwN;oI-T=KK!Ug{t!fcoNfUrVTz z8^*sFxn|WnKW%<~?Kfjrl3N}0+}aJ(sXyG80ARn@RukN-L#~@qQ>!!gss#)p>w-?G z3e!$^N`}vrH)R>Td2LZ41XMH|*Eiwf=AjEW!$e=yBRrr30|I#42LC^_0;Ro|-I6DP zuE?)iCp%x*+Q*7gQfH%U-YIEO|86g@-C3HkW9@6$gIfdII9u{uCd4QCe8u6R$c4A0 zPKXmbJc2fK?0X6G{-2v^K+c`XiFeb!IrQzYn>VV-#H)wrc&QI*k}<9AaMa0S*N=>g zyI_1fGox2hjXiVEcH-~w0w;MfdeeFjNb$6ON}>k7YI>GyU}axg zQmQ>W{7afX`-pE#y(H}dS2eL)i)B_|`<3vhhTpQ2r_ZJDJS9S-g>FtNS7InK^mQ3d zkWHoOc|QD`o+74zv0p4bQxaT_d?@(K-w z_pj~nS%HEat>$%CMV7cd^8G)7ds5Z*!r#z7CZU~$&Xea>tKJ~HVFaB!$-N?4WsR&F;fG>OhjO!bsch8e z=rdDNQ?;O(qeB`UZh!ms3AJW>Til$+s-F)AyoO0NF)NF*J4u9ac{lHY`urET-}2mt zE|wLHG^dp#JZfGP%}`YpgPPww2IW@+5;LY0%C<-zs1v8;RhRm5uOi zPT`Gt@>UNl0V>-1CNN8mC94;0Z7RusSwjUg;OgOV8TP{MFwm}@F1KqPn>w|ZJ(7Eo z`r!S%Bed6x=zM}otRv8N=bxNYS~%H2@x$XI{|E|-4i)D!UUgNbCD@>+6t^aUy(N z?ZHmw$!?Fa=4V~=0j8#C+YN4&lp>z+5shbWWlxTG4b+t4aB5JBHdUoaKa~7&@N|zZ zNxeT__~)R&FLCJavHPF>{Ug@@!~g%6zyD`$;Lo^(qwY--+_%bcC&&v@6~CVGn@Auc s((^q)RbsWD{Q~i@a54rb_#YOf7IYtz)Ctqa#Cl?n&OYW{E$bhD1p;`bFaQ7m literal 0 HcmV?d00001 diff --git a/doc/img/pagesAndGroups6.png b/doc/img/pagesAndGroups6.png new file mode 100755 index 0000000000000000000000000000000000000000..46df16c0b98c8fd13f946e6a10702fceca01ba37 GIT binary patch literal 19024 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�J4?mP|s5v`)FUUm|m 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 ZAUuy#ohn;y#K0R6X^CgzIij!M{V!>j!B7AI literal 0 HcmV?d00001 diff --git a/doc/img/pagesAndGroups7.png b/doc/img/pagesAndGroups7.png new file mode 100755 index 0000000000000000000000000000000000000000..ed70824a70e22a7e6d46625d293c07eac673f0f2 GIT binary patch literal 11440 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 au$VfU;%uZb0>Hh+kQZ{VWDBK@KmHrh-ENKm literal 0 HcmV?d00001 diff --git a/doc/img/pagesAndGroups8.png b/doc/img/pagesAndGroups8.png new file mode 100755 index 0000000000000000000000000000000000000000..a3d9d609ca9c892304e518edd019ae42b7ac4e03 GIT binary patch literal 22672 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 literal 0 HcmV?d00001 diff --git a/doc/img/portlet.png b/doc/img/portlet.png new file mode 100755 index 0000000000000000000000000000000000000000..26acaea7ae2299d4c90db22de94618ccc8904f72 GIT binary patch literal 2573 zcmV+o3i9=dP)DneR3ecAmE0w$8>?8l`5QSqlH1N(<3~16 zpaA21z2po^ZX2KPPn98FBKM#Y$#1_0mE7GVZrO}puV==*(0Z@Ey}hq{9OXA&3RLpj ziZd`U5P+DN81#BQ(b3V3wpS<=?rf zfN%HiCj7lc7z_rqS}pV6dmm4)2e0$J=bJ>r7cZpl;^5NA74+%XuSvh29xhCs7R2tv zofv9rh*%NLn%EeQq#mYS`}V9_yAB73j#m3`m75b9p(F{Kv6AehVEtcH+eGOr}kp#NGob^?Vf;7Vzw-$Jmgt6&KfD7!3xhtE(w3 zy=c|%@|CN3YK$LiR;^^&k}x)I`3g684`#moCa%5Q`1{M#o9tuJh4WT@#BEAoi0?2` z^(oAoJ(GlOi4S? zdUFT$&0*^o@$A`^$olv%Q79A~I+)DELw(WdoB){cm%kDf5pHR(QmJ@!#Nz;T>)wMd zUAmH$d5oNs*_2)^Vfsr`uih+CSy_p_y}hLp`4*_QcKI1AqaZgE(UeL!;3$c&IM`ZtfnO%{v3Y_etM2 zIyO74wo$tq;aaif6cpDB;SJUQ?vtdWX{m%SUc`p@t+Z|1)+QUX*^J3#LZwmxU@#gj z8}|X8gIM+Hy4x~vtww`Vsk8{t&aTZBK`ND)&1S28w1!5bMxjvDZuXT*gjrY}o5^Tw z)UGvh%aWwRf_z?oWg1b@t8momEaeXk9zyc|BntA+0k9!%EklM4ua`l_|8D~T8R$-I#JaW0E zjlI1+xu;Lz_r&8|s;FSu@@TYLEsi=JD`G!p&WwLjRaJ$_WMcRqAEW<(f%W`4>U1pm zFp7T!zJ%FiLa9;_5%q6+_wCoD-y5N^K6dZn+$sUKqajXwY5#GMABjfYAwT( zNNxsOe(z0&c!}JDN+eRC5-HGYDJm^v)T=Xy+rGPA`BSg|tHI~3m5;yNDV2671iCX> z&(MK=*_o`DGuZ?i6ZgqUxE)!%EdrhQ@{7E`W&=OwVKlWS-9B zp0;fWogP5Dd+afp&G-e+Vf0{cDk^`au%wiLXGim3Z#RG@efR~>;ThkDIe)Q~g5rz3 z^5-#ldDPxDP5CK{)mye>Fq+V4)Vx07IeOpk+@xLX7uztJOaw zzKBwxz_o`HZ%=++DzPy{BZO~C6itzyeM$r_S|)@LV$-hg#L~5!EOk%5HmkwsbrhAB ziSZ%x#hJnjLI@!YMx(g&Yn3P{z9|0m_FPd^S|)@LV%?5CV)lxUg%Cm*O(ya9D#KWiRa#WSDel-6ha8GbnPawF>znLwg-;>B!m#+d`YSBpRrI>*BET_k$OB^ z2qDBzIk{r`;z%Kc5GCb5iW_#8v2m8yl~vWE zwPHhY6TmV1?o;e+}E;Bmh*PMtf^)5#G4_xpNq{$kmcy^B)GL;Y%R z$an4JK&STYIGtZ;-G^F*r<)4^J)OEzSW*f=YGyX&mo70k=2L+618y)`wkyPsZ_{S@>YlV>KX&zrl!-@&W?n=-&@L(j$|;xXVC5ItV(6M zX|7Tz(P%VR2~vR&=BpzECbQXcYu;!w+2%ue#fL(nr0zDNxcntpG(F%t8vAu#v)?53cs9xD$B5guo9J0@SZpP?AW8ZzErUMy-^cpUS;Q@zLEOR_giP_bIa%`Z zaOFr=4ta$|wc;_FsI01HpxXnaWu2s`w00%jw*L@b95C(&tg2>Kz(h1^HIAJ+Hp|Do9oqA5;3Oi~B~WcJU^bia z>FbW0b9bw@evb}e+QJWLcaJ@jpB~A|gl#Al3JfMA0e+)tYp0b;ywyokOU7t2iD%xJ zEhMctNs>rf{6T$7MWs}-b=d;>=}Li0BzG`Ll7FXOa;H(q|J5mxAzmVp0+mRCN+eRC j5{VS3L<&?Qxq1E%rGQJ$I-7f=00000NkvXXu0mjf>?ZHN literal 0 HcmV?d00001 diff --git a/doc/img/python.gif b/doc/img/python.gif new file mode 100755 index 0000000000000000000000000000000000000000..7d6a72274d92cf6d4297a8c2a5563eac2f6e670f GIT binary patch literal 1154 zcmW-gTd0<05QUdup@gDonXqePP8QoVLK7uAkfx4Q6gFn1p}E^PGJ%?uisca#D{a!m zG$^wJBZ#O>m>q~TB`Gi{&C!dp(9%Fdq60O3fA7_MwPwwF)=c2>qsPn~jKMfv`2Pvu zK!E@fkb?>guz($0P(TIh(1HObFozWa2thcakU$F3k<}=n1m&n|NkRxtC?XIEkrNd$ zh=tgRixi|n>ZC;mG9h!aq5y?ZI7Lx{QYf9W8h2De^Ct!l*yF}R_OU?fIvRK_qCV>d2Sn2M>JmKn^% z%+1OI7GmKRWeH2MbjxbUSc#QeRSOX$;DHK4kOX;91tVC3J-9*P@mupk-3#O$yEO6;k1i zzH=vd^^y)ebkmS z>v|Ec{O-?!k?LTYc>ItuOb#`CXck}kPExVS^+H>6lYbI^j^*vTEe|W>d zeP4h0$NC#4@9H|`o!wWze0&Cor_0ayqCywttyQA|=-?q_fR}C89HEF!_|7S1@gcGH(bzB$?F#2sg!+5TFup6~9P{noMBGbVi8 z@%!Ji_AHt=VDU#6hVbF1h81Hs_8yr2 z+&`~hzvLjfHWn8X zejkK6-ks0quMU8s?QH@8VGV$=1`yT&2x|a@HGr@NKv)AHtO0~I0KytTSVx>rr|xt* zO};bZjW^zS<5kuG&D!a@2T(qhHGr@NKv)9^YXF2b0LdQbys_i)Xp1iB?d`35czEdc zd;44v)|tM(90|CD-EP-?et!P{@km%h^SsL|_Wu6S{r&sbh5%tr>D4tLtN{?#00?UU zVO_S}ZukA)^|GPM05!-ubnnuO^~aANMF(~4@WH8v7pB~H$!>l9j5pr+^~N_Km~*~fUu@CjtHpZHS#*q zH~Y~benGgL+;8>;KpjDSKA-=&oHMRA*NxM1#%%4#mf8DRJ2Yt7KkyvCfB)`YUS1~O zr+&ocjqitaZJ}LiSIZKa27!v5&*$$?Of?7frO-?1D?e1I3@vZ12Yps$UGf=XRM+=^ z{fsYn{B>xz_BS5tJ)csYw^XhB1tT<2U0?sdC8-)=7tI*5X(0vSD4t)a1t%PHbJLkICbAr~U zFk(IE`|A$%neQ)eEwuOdei33DZRnfa{bJ%Hb;kDIvF9-MxMS6J|IF$` zw+n37>c?59260X`-@lF2z3tQrHuZ6rHZ1}O>zl$m7JQ*~ZmmQ^AF<{PY=9=h8i0Ql zb)5Ckx5A+_iVsz?p`WWxsf=^yn^PaRY8@yttmim$c<2ke)Nhbe?mK5}>UF8lHDx`a z4Z@m2ZQv-h)RIlq4Wv=LAMY-ES2vaZ!0p$cT1I&s4JHHY>fN>)-GA$XK zN{p>P6q>i3!MufOQC~2U?Upl@2>SAZdZ_3LO*Ia!AG?jQVyoX*CuRCFG;KN-iY-iw zt`^ppCpYEXjMrmx&+Kv;Gj|{D{_|;}Dhvf{e|dl1(77IKKL_N{HW_+Ov27RIR%7GW zuDEmFD@#omEYU2jglW-58#(1RVw%$QDR#Z4OKG8$T0LK{J9PPaS^wX)Zj+&t*@m`3 z&bG?k_G^XU933S~Qp@x43&t6%kfryuB?Z}>Qzb1=3&plo%{w%Nbv1kEtr9HrZmT5& zJNJy?W4+sR-Uqoo;HTV2|NcVfUd?$Nb5E}bYhae?j;ZVB{(EToEz_pAJja~JvE;O< zuqIg9rBs5~>*lOqTQ#1#P5Rp-cUz@ycgl8;X;F=wD*j{8$O-Sy?Ywuh4&6JQPTy@B zsn4yipYe5%r*5-PgZO3Oa#TsMp^ALYX^@YPkM8sHvwMI45ZVg__4D&n_xSkOJv}|y zAVir4DI|0!PJ_%^SwB2HbY0hV`@LVWFJZsme{XZ3ZL@~;e!mygPt_=H2x|a@HGr@NKv)AHtO0~I z0Kyu8>0zy(u<^zlZ~QvrRn`C%n6;lZ0QaG?1`yT&2y1|i_zxI;)E7#(JFx%&002ov JPDHLkV1fyNL9hS- literal 0 HcmV?d00001 diff --git a/doc/img/refs10.png b/doc/img/refs10.png new file mode 100755 index 0000000000000000000000000000000000000000..a73e14d1d2f126d36cfcdbe850d9a14d3c309bb2 GIT binary patch literal 18449 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 ACIA2c literal 0 HcmV?d00001 diff --git a/doc/img/refs10c.png b/doc/img/refs10c.png new file mode 100755 index 0000000000000000000000000000000000000000..b39f955bf9db31f646910bfbfbca740493b103d2 GIT binary patch literal 2705 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 LNkvXXu0mjfp)_D& literal 0 HcmV?d00001 diff --git a/doc/img/refs11.png b/doc/img/refs11.png new file mode 100755 index 0000000000000000000000000000000000000000..dfe4801d8624c0691431127787aa8af17e3beced GIT binary patch literal 18544 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 literal 0 HcmV?d00001 diff --git a/doc/img/refs12.png b/doc/img/refs12.png new file mode 100755 index 0000000000000000000000000000000000000000..0885aaa6ee2e83020e37659a3f0c4779ca68b756 GIT binary patch literal 32710 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 MB`5y=hVJA41%Y37K>z>% literal 0 HcmV?d00001 diff --git a/doc/img/refs13.png b/doc/img/refs13.png new file mode 100755 index 0000000000000000000000000000000000000000..b6aa56a109c1473300af2f2db82ce1169ac3aab5 GIT binary patch literal 22715 zcmcG$1yq&W`!2cw1(8yb77!(+y95*jq>=9K?k+__I;9pR-Q8Ux-JR0i9g8#9-oG>M z`QLl)x#x~M?%3`j-*T;w`OW#x_kG^ydFJ{dD=mugl<+A80>Kdb{7DW1L8O8}5X_z+ zgIC(TZce~o$a)f@pCAwL|I(UrqQNVuHlJ1PArLfd`2PryL?}LZ5ye4FN*HAZ0r@E* zTAx2>F$D4&BKGN{g3IjQf~$tY#6$P-RBP#v!l$`uK5z8i{mQM4z5R)1R+nj%_%nu} zI4`zN!OYWMY{0X}bLqvDr2Uf3ZQWsRt>2s1fA}{q1Gu@{ThnA!Qa4xIkZLdI?T4W5 z@vim<$#sNTF@jIXzCU}D$`sA;4F2PHY;Y;~1eFSY5n=NNenIy46Z}mtr2n}fhr%xe z+kgBI@Bhs89RB{RlJC)}-Y|kt5us0?9`W<@JM2#GYft3~2fh55F;Z$W^6Oz-=LWXG zsLG^Qf2W8__WjSCjoo@Lj-a66(eZKH>@1MwSEM|xCZ5&bp|^89WUpUCLPdNH;?Ih)q(S!kE*<~|`6tPy+U_4JA#f1gQ?r6CU z?A_Tip>&~uTBrTlr9}ciG`wuNEb*7rvOXE2;Vd3kHi$?_b?%qNAu$%; zdVZslSxnauB)w#1NNzq7Jcsf+hvh34Bx-DoW=SX%DDC_0z7TwJ9OM@r6Z3M>^HP&U zz$+v*l{Ah)Q||$GZ?RAx8;r+jcYR{`?c2Arb@%ff;U6z3O3TaJM@L_fl9Gyq68cH! zjK$S?Kk$=!U6FMK;dFrKWn^S*zTO}j9UDWS)^2`J#A)?tIVaUiFk?iv)VSHp*SwmUVn)*X>BZ`MF# zSU#sbRjfH;!q#}X=ze1vM$GFErg(NXacgVq6-HW9g(bdPF==8#>G8njlNpw1NB5e> zVI4Z9LVSszbj)@ABN?K3V7ju`!6!x5dt=ubHJ*@3R+@~w$F~P|a#|Ha z49(38Nch|gD)(_{l@xq-=IbijPGtD6KOywa&Z=c)X2zf4r&xBk`=Qxa?PtgISZN1f z63h9#lTGsp3Jp~hr(rkv^Xzf%#r|9YbegqKZF}4%s~u^g_wZeQeig4#!vF}8n39qb z*dXj?C%C=W^*Y{T>LR5A2F?1+U%!5x_0iGMoiP>?}0Yd~`1_c$mRE93Ga< zijk|aS{SW4KlCeYnUMP1o%sa*W z7{u|7fh7Bvk_tDR;(jRk6>~_6R{`;rnr?3O&tiGhp6#8F9*IFA(qG~pJ}XgKQRdsWbgfZC zJG;6JZw$?d>x9iMM6y0dzPU*)(Wn#r@Bva?U43@2kd(~pY+zWO{ zo&9FmM?M)w>L%M&WQeJ$X$*trY?`E**}JI{?Hr9dyM*eln48p=;>WFvi&`yo+}zyV z720xYyN)>N8%i!Hr}BGl%~sLcZ}gK0lhy}i9TEN45fPd5qJ zOd^^wq@|@8@GH&F&hY$m@`87zKfZm!7s!*bptk)G}dwXFi5`zD6Ad#I$t&&-?tw5^}e`G@JTw&`j`|xcez|yGLYTFYiep>Wyw5_ zLGXYf~<8p{?*(McCM|H)9;ay=RV!xr1ra$^x|<01F^Kq)F84vN=pBlMJD>f%;xXqh`SZTtm5y(@r6S{h2|2SOE@Y@ge-n$tbhNKL zTwd16AfqhMLDb258NfzZSV3cb7CQ_c9IVF}*wNCd{8Bwp6nRQTgy4644+tQN@gyW? z^QQbIpCerc>Xt8yR3h8oswu72y_t#-LiQkBdbNm@l);{8sye5ALMmw}Bn=c=NTF&4 zvc0{1ZyaMuD%qcW*nFwut`aCNwVt;ek&%%Q5W0y!u&Fk-nAa+;?Sk`e%gf7Ge6jd- z&bCHw&>|X~4^whjDTnf9(-B)>H?+4G`(u|g-~(r@f}k@0?(PnNFM^fTV5V3!OANQu z9zMA1dzT{!sKL!wD`@;z%Sd$e^cW2Oj<&YCGv$V7`*V1p2puf7$e5YsdqGjjItxsc zrt~10yDxi8gEGgd(#gS;MHO?gdJ2f;J+;b7P*_S%iVG=LC;XDoSy^0pzejBtZg9__ zdFZ^6Awx2B96Zw==-Br}E-2c&S$f@N<58M!hyN=9FX&^A`+(3J zL({=~*qFgM)#B~l-qCU0@^CAVEtwz)vfmRlw7zQCyv+m56J#D+8=KcmOc7vlZ!Y$O zlan>WNIFjCb-hLB?CVP+BAzwh9`J%9?RtMcb$oo>Q+`k})t)zD&y<*<%ZMYH;vfAL z35CTQ<^if6>!WaH{okd|hgyY&h143gOsq!ze`GhdMlu>7V7F}6i_rLZd_s1!PGxP+ zEG!0@4lz)tukSCHz>V8_dQf?J8!VQdlYf6!GTSePYK+E%!u=kVI!^{s!YkS#h=+=$WU}Wpu(dnG3KfVunn&SdQ??A*r!?`^%O~Ck=7IwWb-Tynu5v>N#(?65uhI4ea%KMI=tS#si-YrUsm z%%l9EhfaJa`Y?`kYx-PYIU`3G%>1YGlb`{2z3FC8-We$sHur@{gbrnbqC-#%$jQk+ zkt#$*!EP2gGl`O>2w@d>f~-_4OWSeUUVj1Xd&Td8&&kQj4@+oOJ9EeJU*{?tZV+aFaTgQPb)I{H~mjEsW950wAm8sle3 z{v~?1POEqWg#A(Pu_g7QQtqG$ue9yoz?zH(p*X3}d8tM;XB zKbTvDUac|^)yhiZ~<8S`VDy@!K+yb0ewA-jZgog@Dm)?ZA3UI{|^rT4{rY# z#6ROUI4kNzMGa5j(8oo(4cM3&tRX?CTDjnJtFp9`yY5_j>E^|k(zS%%Q^5gH5R=!6 zfxidGYtgx^tgNz!){l!WO-?DKl}GyBbS@VtKG+y ziyPJ)6O6&3!TRg@?DMy)STWzs6cJ75a}glVpHHbacp-s$d36=@%dr60gpDwx?{aT$ z=qpmdun8L%*YsGKC-2_=K1-$k#7-5o!3JTNY45acrg~NNcW*+yr_n9)mD`zfynwxa z=SQR)Jzd>M^IIIjC%S@MJ>iA)^!PIc=FJxBW@>~eSj5-r?LG3ixVR4cqhb%YFeH@g z%1codb@hxG7M08Pmu$J(Sk{a(FR-x_SS%^Ev{GU&Xu8UA3S4UXcwf@0#ayG|+23`F zy?d!b$Yl=(S@6XyhZGOq~C>3kIqS@T9TSh@#UJG`>WcCqfTV5w~Bpr z7Lcbvrx_)$T>N)qt@E}hk;!vFb;S=+devvKSFOkQSl0w4GmVO0UIt-J|bUq?9sru+OPa^X9&I^U2cMz}w zMu*Kv5U|$dwd>KU0SoSzwnxLddrxsYCng@7)0)f4%d3`}pbGI5wccRpc6N52oPHBl zc={ww&ZotTxb-2KXCQ3JIel!~#>wuN&}~gwS@mG$qA@qu^y>1_TJbOk2gl1x8!8Tl zFp#tLEGJn%XuzOk}OU?`Doel^K4NlulcqpvSyXZJ!l*ucwJ$J&~a zgfECQk9dexX|Sd;Tx`y``mm6kiVC2Kz?cB`Csz8E#`Ws!7I`mJU$*>Z(C9t8r7}Ed z7$H`oe9OU?ydy2A>LJjoK-FE2z(xJan0R`y3S{QEr3SI0i$Q(vs zm6ew2JbV?}o39IQZ55xHye*urFPhN9ce3s72{htpyisF*HubM!JM(@Ds?X~cBX_gMwl!&EY#S& zqoXLAPAyvC*)M@H<3Rw)5R9p)iiI^q3)pjfLNWZFauZqP#ON&? z-g0?tAmVOp%m;h@8EEi6dd(3=2s11zD}R(`l_qehpK^z{y|EW)jp_^mu-qT9a$|#Q z7N@hfJ*soffQ_(&#*x!lbYAl*f^7RhEOuP+n%O3G*0l5TYdi*xb`A5vj(B`nU{HHU z6aHMy;fI0=x%x^h{w(pR6e!eCGb{|Vwm~343gAO(Y9>z39G#Eqbo6werNzkJtRNfq zUV%_8N_DJt*k-ABAU5o~(KWr!T)MmO!^She@m^9c)}UZu2&)rdguLeCBgVtSd-KLB zUc*{k{3#k9eU@uQHrMnVfT8=Z&J8_05O=*%GY)f_Y@O`%_HQsO9xRQ+N?Kf+iMi>G zcP@r@Pi>!o@pN|a>A`+=adGoLSE2E#nXAs0O&4^n)`n9%dcV@l6rW%T1l1`?OuYL_ zFd2~A@TVtOIbm4fQBfUt#wI<5W{yzCNE$omR2(bk?XEG}zP1$eSiG(gO!*lz>sXrn zQ~Lq?Q15Jp&;-hkf$fd{BP45eT-W507Fkbxh_T7*w~=cY<`g}9gtK& z>&br|2)K?i_aQ9?jmA&DH>yL^CIhLS9)!N#IV11qE<#AB3r2Kom^Ui!jm-YM)0_DWdb;Hxgn)=BI3vS%WWB~}=~tFIpjzUy zXfhi(X!8ncZe)l0%_T z5Fb?B+zEZk#VgwB@5^j$UshI8r2P^A-I&E}ISyLU&zSM?xY^V=WmKoVyW~zvF%?xc zyS*#ayL;OA+(q_BrOitWTJ_&0{eIP?q+dm56LuI(v1Ldp&A!RVM>c-Q48Xk!ffU^dN( z{G?egwSYHGTR;SE|xZZ#3c9S z@=*VbJq_S;j-5mB|L*O5N?KOBYt)JKQtd!KKPr*spK~kGZfVHu zlRaNKL%*R$wb~BHG!L}<`$FsD2>-yB-KnCE7*o~{U+u|^d8*xc$1WIDtG^XYz4`q4 zv(DM{!}FI4u~AxDB6GUp?!mQniIo7vT$ISBT%+MeL!(0Ef`V|~Z5g9;S}h6|Y*_yq zG0`%EXFJ$QJ0~m&)Yvw9^{tYOe>m1ZrwP&hpB7q%hR|^3N9V>&m`tyZm%aB8EK_fi zUnv6Mw}Nxg4v;3Cn05VlQ1li~)cyzk{fD*vm%{xIYx^Gx_djUye?j@K2)F-GDgase z+4JXQO>qHF@fiAlf`QFcP^EgD{BQ_-CK&i&#dUmi^dV!!;A*zPnGpi|W-4mxC$zK$ zc#Ec&2Mchj7Ic%aDW|=9$K71b29C#QxShX$`vZoENw@tGKm$^W66B&_biDd@PN;2m-RUw)ef`&)b`gBx{A^m9AI-pv}gzL*4GK%9|TxFQEZ6IGoXlg+dFLHUL4I zFO|g6+t&6`Rb9OR%wqm(cQ~#5d#^hcZXTX|;b2@tRjaMx^xlpRAslMi57*b%d7(s{ zpq`3|YUE8g=D_TsCRq($Y%Khl`4UAyP)eV^9Fh@%DCJ*eh;5IZe=90}5CHaE$P! z2OQ-WK*GdEGJ*{^fkrjtZHOmr)E}SDSmAbV_Ba=Clm%cZ^029-b1N&^?r&OKKRnK@ zGM_SKYu=z1&j*E6DmLgf?uy#rYHP3 zcd^NxHY?^S28N=~%~nQujGQ>=1V1C>Tg;Tdd-qOUSXej@@GrC%U}(;Mgxf>m8SC57BlT&N)c?Fos9t@ zcXfNac{MKY_Y?=c*j-Fa4B<5m%?~jA3Znr+fCAC0U19YhK0Xj%bFP$!d(&h%`2^&V z!R16EAHY!>%}oM2`xJ1$KoXJsium}*K;i+;@{tZ0DcB>ixw+JpYV?4BAmisx z0R#x>-T>dhTpP9tm@w9Q8GT1S@1|!y0BrX3^w{ysKOy_noHbAs1Shlw)Ya81K&*mp zhRgke4iJ*MfQsx-=8XecLeJ=8O-hg_c`&nnU|@h%v)Sga;KpEbaCkTth=$I#wy($- zgb|5}z0qRP#w1(zc-w>xCQ}Ow#1O#ad);hP`8pOC7td6)Gci2_y9}&}C`d>U8z(1@ z>CKr6W5BUKyS+S|3cv&uM2y@^dbO7zx{Ea%fSl4J`*7M?+G2yX3`e*gX!5gHZMzS0#ej1G`@01d7S zIw-)#LVz5za<)ANQOJ{f40bONBYuN4gHY>n%@Tk`irfljRtK4?pdJ*Lz=yN`o{AtG zS`ol~3*4V!hm-KN&&(uPE!2;cXbV69DcTRnaxTCMiiVS9ftPROIk}Gy8V=#o8+?+$ z2cDp!f}sQWHjQW1keo~me!m{j-|oO96lygQf+#kd$oET4O%-!I+nGQE*Rac$hvN}Z zQqUR#+B-wL#jElDVopU(Z4{8x?-X)<8X9;P7Z()(3nQk+#;OmB%6EVNm4gFmH#Z(2 zM~1xOe&GYCwv+9g)RVsfq%0ui0_ibik^($aV-TD8#)BWIoRQ&wnjGOJ^gqJq|G8?q zqJn$fV1;6XcYNYUr6M6A0gwQwQ0J+MZlGwf5lU4%6TxyGKYEllV#37A+OfEp0-lB0 z>+UKJw)c<1dguFhEiW+eiP2EXeJ@`cxBW&0Skm*|DFUE&vKkL&f|O~O2}TpB%m)Q` zhs%8TO*$!4)t2gj@(ofd=o%ah12mNV$(oq&K06@>*oqx}eQ2VhqCgYt1HvV>a`7tw z$sD$ZKML?7$sA~ofzQ4oCI(Gqx>l1Ll*{&wG1i}c^dhC;=xA&p`WWv{7QvOsCGQ7f zAF%PCzj_to>x%^9I|QHk&6pei!<{|Q5W|X!=s_+u1i$dc5!6CmATNU2O$=npMXy^+ z-`fd;nnjfbIJ;k@R>fi>3Ixt=px=ZjfI|C1n#WoFI9MN)wZ`j>B%mifEmGVstF zC?rl6oR^NlW<}q{B6Jr0LtMj7rXE`AXkD&rTF)$u+h-a zfRxh)Qbhuj?zgsj(7W*8Y`q2jOKDjdV4KCf-GHdLm}UWFGdQS9fWaIZz!N|Kof!}u zj0VP8s9uBlT4=c^52SEV%YTG~kTWws2eH!F*m!huq6hTc8=^fvbCBo(B0$B$!UF#Q zdgQ1!{R)tkwhD}8<_v213+k8L5BWUt)oX3Y0F4^?%{j@ChN|BLvcvhK2?Z{0Rv|e{XRB*~)M@?c?53OX`%CI|c+~aJyBGPcsw5uU<)h z{``bWCdJ_X<{WwI7!JH2wiB>j>}>}+tYiFa zx;gT^%ZP-K-Mr$JOiKzcpQZ1sx7b2r?d$;Ebsvm$pmud)%A6Ph73s6 zrKP25F2^e#=M&069`Xecf45`ucPLSv&0j*ZRB?jCX0xS2ceN@x*)IJQJE@OK?|PM0p(vE?Cv12`oP53Pi{)}Uz&QiTHqd<10N@73kx(G< z5{~2H;)>|#yvBK_kOuZQRKT0$wGf~ARB;x_!;KfS<_fv8UqAXH_k6(xzf6nF)oGvy z=z)0v;_}D8SIiK>xcAg2;rI9qj}G-32H-mR<$iep15@By_vj>j5~9bsV1RzyQy0K|b!Q^c>RGk6Li6Lly>;eTCBAQ#&zduhHgHLugb# zAESN&95NrgHQ}E$ov&pEk~Q*j)8(Q*C=!sni#h90!onlX!~wtf$xrJJwwzlU zO#svM{ZHNI!^lv@7!S~c;2t2bA$Ll6QPI%!0r&(e;(MX%DQ)j$pvHmH{0*#G5~uZK zi8)9pARlgmd=2u|4`2=$gmU|~w0QfwSuHh7r3?C*OcfJ@;?&mN-EBgYn)=+8M?Y#p z@*lg@iBgK!U=Qf$2)JxsH#awf!v3C*Z>HXn7GMZ+3JQXl^W)=m(9y7&4Eq2rouJ?U zC8HLULgMEzu!(?98RQC(@3_Zo>_A`wloe7}$1P3+d@@kexs(?FPsPmea63T>b=z2p zuq~*0FqVGDLcEeE!e#E3d8Yrjku1!Z*ze=@Sg@P&je07CmL~ zzfhC@U-Ak6-8J?v|Il6=S5JEk0wxOu4zzT2TGcTg>TD2)tCc9YpRQQf7%kZnxQ}uQ z{#jDs-!F-y$oU6{MV9+$IW_%;KTY{z6lMbrT}8 zRptg;au^ZJe25hOZZUBhAW$dpTYuz`VGyI!Vv>1is0x*;o(ojArUMmz^Ef!>FV~BQ zSeuh2H`s75nYSxe2I;f;%I6d2lPhh$w}8Z8v0oH~qT#GGh3&iG-}_vBcUd%Bid;;; zcLi59Y8-EKMd;hHh%@6GP>=$=+O{IKZTa4Olexi28*4a3C_RpIluTy(T3P836i3~5 zMKe}f;~XK)IkLAcuiB_X;)m9-vbqcOdX{L_ydhvBZju`+iv%`?Vtf8SSAyhWE1&Q@Xl;{8lMuz z=DRIVX?r+Gyl6TXG}WuD)4Du_y1f|7Cz|4+GqQ4h8qaBt3}M&y_IK2k;j zgSDLYhZWS-CA6vFU!2#xnr&h1C}U$~?Q?jq)dG@V>i1HkRVBzzMy)^Rf#x0;UCIez zO=7EFO!%UynD{ZMkQE2V%_(KDFXdf8`oa_pSgM{oB?C&Y~uaCsVRXC=3S^# z9vH!&E}6)ThJqqGDkr}^oJ~QmR@JuHmO}LWxnv?oFtdQ<@@mQg!R^3jTn23^3k$k| zot8mf&H5Lvr^xok(#DR{NrbDUjMkJ3mu`p{ii<&mw6oiS;~LG47AIRD zLK=?!0{z1CR*9S})kA!n#j8-Q`ukxEaaUYMv+iy60G;M(a5Kz!j>of?oa4S4ZSLD+ z*A{zGB}Q%W4oa!eF#6-mzP(z^d$aFtDojpvNQeanJS3sa92fk=Ov5^_id5^~chusP z`1fm(vJr;(`g|muZdO!jN9&BhmC>H5J)h8(j;FrxDLchrTws*Sc?FF7Q^Nyk=*QjpEPB zs*rl=b@dE`kTczH06XFXE|hVv42G)3+>WoF?zvN?&%vZX zkSmmggX`q$L$tGRooMA0T8gFb{UsB)80M-cEr*}+y1PSWE6s;emYhdR#l|GNe_k2m z^A-<U5Po3V&8;z()X~GImEt z--49gqthWeT04hV&> ztk^JWAr|>PMm;{>TdLp{otrAWM{cp4YY*L>Lij8$zOobBH(Eydv`{Vd-rXtV_O#36 z@{qTDZwj!YI_BmQ1=ZHid5&16Nd!bf)k-S#Z#iJK&R9MHSQ%2Ym-o5U_vqa>>;-vB z8MsPHljIbXMrzICRj-{a9%5^2Re-BRwZZQ3M|QK`kNw6hyv5lh68ftnT@$hH&Ib_} z#?&*Ho2TE)$}aD?dM)OIlrPWQ##do1L!>3`@sSD9?-g3UU@I|bwg)WKr^U2Sl~{yT zGydJ~;amz|^({_5>k~xr66ulSAFZQ=i4xo?@$$4R5Qvwp|_m1_DvH zMuFj$@>`m}>s^~2E!ku0ZSm$+a2VmCsZxD=adu%e(7PT&c)<;Xg9MIEV_MFRs(b=)}PS^~8;I)0f6iyK8X2fqh zzq60-Qjp$56t3Q+Y4w&K_Wb%9cLQYe;bKMm>O($i&r`+|8B%4kA1!-hn}R1xRj-u)yF>ba>a_T`HXduAkCL`mgHpCFd>kH8M&u|A7TEsk$4mV{Z z^j(UhR~P9HBd(YS-5LoaV+pzd8rdhW%liiHa-GgI$*H0po}e)+LM2CHLpjZy1vb@U z($PzC{}SbQP!*G^_kp2rIrtHL^fwvh|FrRUpBFxO3PdA&^`{l@msVHm7?czf^ipRH zZ#xilh^f8Pb=SH>*8IJ5-%yPQCa`?8amm50<|an2It%~hi$vX~rOCgwUfQuWc$mhG zBGHD_1SKP~u#{fqaG4~$SdLt^AH<^4!`WK&)gB_4T#|bdmW44R4=*-{%g@Xd+G#)+nngL)MuZdC>2fB+ks)rIwpcAY0&xNGa|s_5AUs z_yjK|yild=8{nv;fBy6bEiC9sKNYaUsF*Bg*}OmxPNiS}5eY!Hkc0#%DvsdYX`8|7 z_h&!Plfz4bQR1Yv|Hx+F@pYMUVibSy)@c+G^3Gy;6m97pq3h}uK{Zr)UVvP>`UmyJ zi|ATc&Y<$euJhf*iNfA$A<^>|>lsq%u|!3T>W55Erm)9oCz`1#Y$e1o=`i;ZW(PC1 z)G|*u8{Qp$l41r)q8l1k{zHlT{8*P7SEQ%BJWS2nCFpHyH_7gFa~Hhw{I}ohv@w=1 z?ollGo~5K~Wxd>WCf2#x^dwj+!JD#Ldc1t#YofG2-I4jRDS@w0K(Y6x+@Nm|eNKYu z+StX_b-M-byw>*GpJk_%j0Z>^h0F7X4VV{oK?^Ce%MGa5CC^J@K(Ma>CnM-K{lL)y zRUVZm$KkWQbN=b;H|YteL`xpw5%jF8HO>;*hJ8!&X)kj$AD&W|2r~6lBwz=8tA1%$ zX}suPG>&@4sj|7V_jyEc5L)knfmVdeJBL`?@Ur*IJ%co+3yvdFYt46*(~fF=({zgA z61LcTkI$dQIr;q@DZZJl_iY(}Bm~a*t2&ACBkzH<#WCeKxqr2BiD)GtJIFWo0+eB^ zc*Qp0uXOnh#E73M(x{wq==(1oLI8txKLqp%{e^l*$li3BFW}8a3RPJla&mHjqhy6W zDs^VGZoZ}jtu~|)G~gC<)uDha(&phtakwldf^n{G&?LXKIo$X&gXZ8`@o^F-cW-wB6vlyp^OmF}zH87e z#g=Cg46j@ITI#Q2qgUfy?+MH0WB@g$KZS2j#}&w9$GTDB4>sBqMq>?p+{k1C62?!C zU$kXj+-kRvR6&Cg4r!^l8#llA%n?0$iR~-qgxAF1;I-E&S9jYOsZ6ZeB&b>~MG(E+ zRSE>(^|Og5n5lKGM6tAu<6Z~doqGC)!uRNXqN1)5-mQ1Fjcxvr zk^Gc1cD(ynUx98vIb8#Y>aTdcRUZ&>ybj(Rtr5l|Q`l{k7l7qOR|Y}*s;go#X{H;7>7O?A#|xQxkkd=ypmcxH`X?q zsQsmG2_8l%DB_<)4yE|mw@*h8jWI#+>v!E9Y%M zHika0Sty|V9(>}R&ZE&l%)DPIg}In;<@^X6)b&7(^E-C(6K*QO#`w5kqs=#{SgIvRvdpiVBAm4~CZJic!*_HAnrI>iVx3;s2^qbha$y zuS*c{ofN#!yR{WWEKwe~S&#wxO@HErd|35$PNTRb&Ocz~y(oHlmz7WmPH zwz2J9Q(e~Ml;q6-ZRD}UxsLW2{PFC~5MPMb2b(bwg%Z_Z6s!YmBBH*2S2SA&g}_Um z>Q&t{q!sKH*8)#bw}6XHaJ6VQ6Ou+)^+doSLhpbC{ngFm3{kJH^S~$k+nheqhs`Lh zzqKcs9Y-GlQ!b6xuScsnl0YLNQ=a8>zfr(tj2HdeUVL?RqX#H#hg5MIK_Pzfn>No; z$8Cr0NnhuB2g8o~D$s3U7EMCGJ>FMoW{_MWjV(}G|LbdljD8JWByAi@dD{)|!Ih*4 z<%--eqN1V#Lql~}WLV?*4PRUy%>PZUE^;aIc#Mn=gGL-^&e*SUL4r4j^cM>WAmbkQ z7$P3LKd0jZL~i+VSa_vBWQSXi){@#46>X@UO5Q5M(O+Pk)8+*|c;N1_xg@dGhwdPX z;3wPIy_p0RHa0fo^z5;imTIHF6p8kT_v)TMZ_6~Tz(4JH#D6f8T(%Tq@b_c_@CT!X zuw8g3AIWLWwM{wMhC{2BsKQWh5>F()(wKrN6JXZ9YX zbK1Yc00M%Q@ZwtUx`e`0bT|vLeou=i+x$)7sUK+M1pUzT_2qrOU%6oJEp#mKI&UrJ z@j(DxA9F^NOuLUE;1P%%nk3sgiR-gb^sUZ)Gi=0DDHp#rT)-n7xEQOJawUp5cWiW) zNOssQz6Tf3`m}{ekLVr5Fs#OHH!lReoG2*(ZH7E$SYLIKBN1EY;3A0+$Np@^=4CRQ z#VFgD*AR_dG3IVz!VGQRK?A#%X8JOXK1N_)+!7YTClX+^cV8mpYzhWq7f5|Q{mu`~Z~Hs}35x<09knXY;Nh>SwkKE2X5((j z#B(*r-A(S0_a69`qs@n+!rR7NlO?KBRfJXG#33aOGxOMqV*cYY{o4}2enf%8C9|=# zPx8O84uwaTb;l)H4iswp^@C%epHlLca#3mH82)xxY08TK-Bsogor^mc1lNx8GZo0(ssAVE-(7NXLNDo0#9Y>$189g2T!va3A&Vgi|@F@nW?+Kqkx(}sGQNv zZn7)tDQLP-_*|UEtmR8w4Ns$xMSsV8KIz{i+E&%)57MuOhD%nKWHQFJPt8}AtcOPE zbL`c$0_Wf8GhW_O=FDj}+G)CW8LnlS zv}w{1GtM@-KPz+VZ*4Fmk}L-R-c{*9QlnO$puZhqD6))N@(G<}xu?m}aXGg#ViFV*QuerRt-nC`>%<7yb%R+*gnw+h}t)-~L_P+U@HRG#6mr%++Sr)B~^gBKZ?+@)h zaO}{?2F~s^M;lZB-9T(@+QM(XuI1GdUa0ljBlUYT zUyRg$Q%?F5SM4S&Nd&-4kxN_N9R$$g8|*~zbIr{?PmO=l+Au(5vplZ)`*PRNVea6q z_iJ|g1cx*Wd&g1%%t6KKdVfpF3RSDN|U*nt13duj?01=Wye zq@+XO%n3fwDE|Ka`;tcPJ8;~1CWAAMRCIJ9Kq+Y&{oid_>;B>Y8H-Ni^nr8{^G+)S zmb~P~a=N_cqx_|Yict{sSxU|5)f|%$wtS_8Bm20|Q``Tw^BUaplGbPxlywz=?(ajW zP4xBch&C}upM2=tZ}8wSq)e9^q5)NpT`fln6H(C%owCXeQ^cMvBvy1k4hsUoXM%q(K+EH!`zb^2Mq}6N zIlg3JS3+6B1~4`QiDGW}=uWa4xm<4EAOHBV<-p^`=MfT=)kLE_8Vv}X-4X#*fy*^Q zbYpj3(12|V^^~2)Av`&v?`o6Z3=H#p^g*LtA3|4!OP-Y(KmK#>3s&vrGMQiUt8zL# z92{Yw1#gY#VFRfju25kRaoC*iC_;c63$6si=Uu1mo5Rld574T>510c>oG36O0pAwF zGVo25+%eCC)_(TT`^Sa}{-$2*ZLb*Sp{m&per*od{>|FU@VqwihG6aW6_o_=Ac1%r zz!U78IG%OsEdPP#T^zksG@&A3cG+^3ejs2Q>shP&JXjyXR`c_*1j1Udv|cK_6hpX8 zSN@DxCogBG-KVfo(ytpSHBw%wK{LqWu(ZsqX)<_+V3tJdFsNAUpj7af!6I9X1B1B= zKM1*p@cFkO&o5Ba&07@Lb2r96j5ufK9`D`O_@MR&>-LP7%~#NlCi?k&FJ-fdQBAB* z^I19A+H#_Y7v(DXMhaGY4!+qTuskCM?L1s7s}r*^wLZO^+^hy+Pa$7+Q>$MVUzG+t zu0H0>9S!gK0b!CYi;ASSW>&ztTCM0pfP#e8CKYo% zfx=j>LI?h+l^gs3Upo*R6O##u2UR-U>#HkjKE9@zp?H%^-dXK;$+M;Eo=TIJlW+Tm zBK89-6(&-B?aKW6kj!yN(Be=|ghZf_R@WqLwYADZ&pD0@`}czc>}jbY7+af_2k~S` z8qESd@##qHMq3|p)}Q}vdii{@&-9uO@1xw9r9)R^XRx7yLJTm{L4N|1(7kjYIQxi0 zOuS!OsNWsNW3&9B0?KS!$#kt7qK}dB1<{YG&dF8<1+vT{d60NlSeawnu@>;6awtth z+z~-A{uvd-XZQ1ka>7Nl_AU`+>LqDzafhN~@s9$6C{n~M4hGEU?ccc&AR5Ml9!U&B zs2ESNA5!D`%q=HSOD9;Q@^CAt@Q_h;?L3#E*bpDzxkG54vhq*b2A4wI;{L)Zeh;bx zJASCVX4?1*T|p=WQY>$TwB(z)d0|<_^LJv9Y3C(P?FD>%!&^INl;+=21HqSa499?1 zJ~WX7HR|JsXcqgkXUJc<5L(d?AZ+}YyWqPzRvtkhK44UkPE-iwgQl$@osS#Qi_^k8 z51y^tpo;oDdC@MZSF{4DnCG)o*~tk!cT$l+RWnGg<~_YvZEDz0We`|UiIV=As&q1! zH|x0^flhF8emuE$d+^01Z9ueT1n2jA`}%+tY_1ZVF_lW@IWM0#8e>!Z@@1s(@UjcrXt(OSL7cYxZlr7P z3G3P9+f%cu5;_52QgX0dgxaYQ2RGSk@zOEL;~n<6W^JjHG+teV_nV)8$c;Lijn03P zN=(XKD)yd&U2IufNl#@A(NB(vG45*DT}NepTggalzPh})huue`7kOQJij7Y8dnVr9 z$??_c)TOAZowwIItp>cK;Y*)3q&*)^qQR`$)`59DthwZo5V33EN}!3!O$~b8h`FeQ zE=d44WF;_}HXZ*a;_m$b3Slm@;#r3x6K_NU8)fCWyiOwSLTwSS#7kPW_L0mx-yQN6vrF-b`U zpghvBvdY6?uy^!)0us@wsU_p%3V#0n9J@?2wH85>LoSLRldUGx3t#0pS_o&C-=SZN z2gPc54T88$#|j&VSso1eiGc^_heU88_$2bNxu=5|#Bu2h4e~T`nCKS@xF~nJC~$k; z%U9T3JvaV)Oel)2(%RbaKp-=ySNwdJ;LVT{J%yO>&6$GOw)2G6(4ueMO&Prk|9&I6 zm?a+{lY9}OGfq)m?q$ca$q3&1$;tgYkwk7 zE-&NAUESU1E}i@6YuLcUG|$Q(r$?2U1(7sgexdjDDrBk7snfWexA+VmWcqE`SGgso zx+9jaAVGYn(n=-Ww7LE?BUWYS+_I&(=*ru{WMDed?p5cfKGCv(F0}EO2x{3{M}WZT zI9V^Hz90Do59liLUS7@MXnm#i5xJZ4?5saFcJNS$MD7yrF)H^lcxzHHKDjVqCB;3%4CFWPa=Qleit|In%F#&b;JcxGiS z5PAMvn$x6rE7fe{B-ZTj24x9HQ5Bt2kXpU^I47G*^af=wuE|7y0I5SQ%vGM`%ZYkk z;?cZb9f3cOlSv8HuLDO{b?|*B_cA}aLkKc}OE8}x-UmWKMMcZPGTLkf_~7}41$N`X zSD>_lKk%<@`TF%MND*?MK7FUd4fgQxh)GFV1dM3qE%82MthD8H5&wT{AnnR$NCGxPg>zxVyzpL<8U-o#(z_UO?2QzBPE zAXfh&v!9v1Wj`jy$Ue8aEi&zkz1Vhhnd(sH>9*%#vYHpNn8IuC9izV!aLO-ro9y+; zuFS}w>>hSY`r_DT{^*3MiOF_lgi#j2a04XAn^HM;I&$1$fn|C`KNoj z)m3GbHi$%0tv4T}dBRqNdLTi5xDB&of-s;ym%VaAQweo`IqJckcO@DVign#Ohm8an zYllcG54YA%6OCCZW(*Rk%5AISY9u_*Qva|NK!4P2n~t(qVJ0LShKZ;7E=PHL&!=n7 z@LGIaHpHSyg#F-6M_Pn~K1+^6` zvYJmAI8{2DAM~56sM?fr7X-@7P@}|l9%P*Maw0Z0o!T;zU76 zTH1nRfxO^sLcjBG9%5cQhHl6k`x}>liz849^Yc&DFJtvRb0h8cWE~SbyEY$h8PLb& zH>75e1ta>?ulvTzS?V4)NVyT4?c-1KOWn`yjHzJ=Iy2a`cj1BDUM{6_{9^Q6uTq7# zFEi>s8F|ZN8(QbOxG3w}&|uNp%vX9QkZO;G3|2dkF3fvYd3=63U;d{pAoAOFc-cQ- zj^q+}jYNU_P_{upxktfO+wpvL?Ieus@ck!vyQx1oNX?y@~k+|2GX4^O;+w-u4Rtr!8SQDq{CmZ@+-i1 zeqX%wdQ0(VwnW9Od+w*9k{5Y$DHL^|Qol>_#krjZ+Y5N59XgE%q%pg&R&m$6TD@|| z;e!Ngf2*1bj`PB75|h<3=peW}ZB-LrY2zFzdHlt_qwR4i=reAZ$o^#fiBX~6{LH)I zQj5z@@r#w7k&Ei{G8Gr9+)cY$@2|qnOuTR=)>`5MpcWnex@?da4xdkjD3<`@DV&~W zL0NzKsfOjfXSD$#+peNwK{{@0n>R3kgJMqel#~>ZbvpuqJJ)1+xfZG*rDbJXP%H9p zO;8P`<&|ZqdE>)D^6aj$CS~U!N-MFmJ>vA7Otj(1Mx~iGWN|f}BxAz#p5C;32lj^y z*psxB9wiwKR5Wc;ylnKUx`4TcbVv1aZC{X*-AQ^RyT>mz*z_0op;s*fAqN+{s&ps% ztHP_U6jvPt;GX!Rc7H%0nM@^h3D(v95`*TRHMv^-iCFk~g1$c}Dc*XJILq&4IHeX1 zFnB$hKW7wUZG$nvfrWRb9|k%o(j=K$AaejvCq8%bwi>5-DRMbU)|f#K|!)T54+QVP*n>A|}P9rAT4MODAEWdT=Hk z8Pr66Sq95*HB*iLlZsg*@F(tn?8n4|Gg zzUU)yq(xa(wfjvRhW6o2Q)_>}efVlA+e3$bnYv^VKQO8y@V47Tvm$A+~{W+-c@hB@|kXP1K#54ly+#7q)oVfU7LWGEkLpRma z8yB0BY?`h+r|ukQDplL>)LZ`w(>1>|ko$hqUezjYU$51h2&t}elO1U0aly?=*;i_~ z2&a56_tI_c76~fP3!6X2dDDZ(VvQ)fR1cNmjh5_tw`_@2+L`~kp>R^KPCuZ9P}30X z)zikIvS=1(V5_Af*H?-y_VM*41BMBdEVv(kv!kFQBr;iAMuvdbfh&Sqeu}1BEI1u_ zCGI?#0|+BDfY`2}uy6f!6QG`egLLyouJKNTlaQhI>|VsM5Z%k$*I*OM+KpbXDpj=W zv}(_01%_5J#_N5b%zSiEw3x^&2W6hi+n&<3188bp` zM=VQc8}EL}XM@!ak7BMy%7yw`NfM6?k~`@e=`10oWAE@A?s>XHY-s1Aav7XDU@45J zjce&cH&zGAuVo%Da>9N1Q0*_m@yR@Ho`!l*Wc9Lr&M)-)lIxm7d9CA#Sqr%ZGm^ih z4|1l%(DuX~l)Td$ZIynBB0|)r!K@f2?Pi^xk_p zDvNNf*!(pvw|6a)GQeHjQ?%ms{Sn++NF0Q23->*YV)5zWo55K8v+;PnJi=)_N-?7p zzc`h-R0M3GwtpS`C}NV5epp9a+ig@fwj?;iC>R?R6*WKr2lE>H7Mck{Ej^cCQdg_c z(*yPPHK05*vEQSHi=0Lz$8dR2l}R zM@Nep&c1X;Iss1B&YzQ(mgWM|5gi?U-|L|hLjRd7Y%g6@gqzobK>wF*|Y+%bmXj##< z+uVVGsc^gtsr_mw)Y)nV_~0>URmiBcuRMz^eL$hIfwJJn=)AHvGmEM`H&_Ur!dixg z@TAd+iT3oBTAG*M%ZG|wkBT}1iBeXs`G!bN9>LM4zpv=cAs3fiq`xDuGx|I0K52x$ zjZ9gKTGI_oo<)j=iCXQaoZyo{%2k|yV+y-wVNT9I06f@GHzij|C8PuHFn_igOh;O! zoPmESR2L;AB`KOItEt&pTE;3UC?rrQg>aBr7ZjdtHG{|)id+&HMxd5NARs15D$jQ!9BfO8$1sb@CisbT86mdn0i&O0;!Gx9O)Sz+Z=8?&C!2&m6=UQ?asgC zB%#Ho^rlU;PRtVS&&cSkcIv`PETCJ6qyf`OF$lPiCP16Q*=x(5U+_lqY3WA6eT!ad zYHIU48+GAHOLSCJ!FhRFH}~be+mdp6qvey}V!a^Z>{UBpVxs$Hrb8FvoaoqCKkQ-? zX7R1hxE literal 0 HcmV?d00001 diff --git a/doc/img/refs14.png b/doc/img/refs14.png new file mode 100755 index 0000000000000000000000000000000000000000..e3d41d855ac4a2de98810f0dcb241b7bf3bbb2d7 GIT binary patch literal 3390 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 QymUZNBU8glh;#J+00Tm@nE(I) literal 0 HcmV?d00001 diff --git a/doc/img/refs15.png b/doc/img/refs15.png new file mode 100755 index 0000000000000000000000000000000000000000..63365c266e72b204b55ca4496a28020846a448be GIT binary patch literal 2355 zcmV-33C#A1P){Y8)QCL{W@#DtPlo}ByYa?rrPHF@4ru2SQu_@Zlt87 z^dY37p+TKdjg5@}tXZ=LMNxS8;fK|FXU?4A?z`{CWHMni8VLyrp|rG=(9lqI1}e3_&SxHPABE%t=efvmBNx^EhGI{c37A{=KxpU{3F=GY>gMsIt zf4<+?ilSWh`{w3mX3w5Yb#*o4$B!p9HIwkfrc9Y4?d|O% zBBIyp1(5CAx2wC>mPV#NxKMq{r! zbLPxZ?`vvm02nuJ9D2PTfUvMIwXC+b7J%DsyA6ZEpvJgVW-f=WuC896&z?Q2w(aTZ zd2z}b`tMp&QWEp#&Ew#~gOrt(0bn+pDJ(1`JUsmRYj$>aHbq566ciMYlas^9kt6%m zxs-gf*$hBcRh3H6sZ*!aGJk)6fL=OTU0vO)Jr@@j^}a{5Po6y4XSLMRc5`!cpO>^w zr&A@c2X1a|6crUwS69d3!-rY2WC=AjHSE~2RxVyU(5)y*VW+N*r3$xkG!Gj0;#0d-xq`JDA z$jC_M&Yg?RW+O8*lho8y{QUd?$ji&aYPFJ?nMrMJEgLp$VCKx3czSwbx7z{m_4OUv z<;Y+)d*{xb{nqKxY`fjw>-*EEPs@S@3&hjYQ(RnJBqAb04jee3mRqe>2@MSuqtPf) zQBksV>C#@BEh17}Tr5FBL1Hu-B`z*bt<$5~A|iIXT~bq1#n;zY^m@Gn2M0?@Nr{Mv z96fqef`fxaQ503XD=I1^CMHI_yu3uG(}~GslJxZSUYb7?P_)x^%^T6k)}WC+Y;eWZ z$mW7~G={zgvVWBL&6a)xHK1Ye19RYYcIBTmCI^MFnr06h&AuEwB39z#<&KEp<#7|g zd*UAEMu%Q?0+pY9&a%}zIG&$-RnI$}!iMdItX(nxiuvjkh0ZP~>5F67uxiopS&jVT z^;{f>pXRa5JGeJzXP@%UF6Xz_0jCI0zwq{e`JO3$it_zWuVlF?PKb`8@dLBrfO;bxN8@3msQxwLSNAc3e3`{;A0KAxALf-ZwM*Dhj zdu*86-sfLjVCK?iu)V#$+jOe>jGsQSi?UbO0Pxn43Uap`=pH4CLjG?a;E%6b`Kqm* z`1>~F<#`it{NcfV^KI|wLa*21>*YTD$SyeaPsW%>;qK*);ajxWgFa)64zK8fF`kz_r&XHcFuilP;%|ryg0%wwI4^cvp76&(2!92}OZVYtE7TKoYm!>^*$Qp0#unf^h3-Z(iGy z1%RuIfrS5QcgY7f5~4#f`*n9JbIAXl?7j&DGfJ=&HYCEC8cH zf7yGTqTqDOCDZ=e9vqMI9zp!{@f4R;UKg^5Wa&3++Bn`VtEBcn-G=|4^Glf<)jjHG zMucEJUPWtL2LMG!FCGT?dXJ!~rIqs+z69V<=_$2rPSkkb{d*-gC%)a?~OQxUvGP>-}0|o zJ9uQ{>jWj{GA1FHu;g|8e(!sl5j7M>)IHfRP~X_Xhi^Q|r|;%r-TkP##@CFfYiLA$ zc-le92^*hTpHa8>CLa$TU4DmVL|tnms=U&{)CmD9(bpT_3nS`A!FSq-ni^{17ymj- zTYKjXF}lCgMpXEC3o%p2vf@{JY5uYefcnN3Ht+nKW<(8z5%t>EEONITVA6tLbuV4r zU3u^)ahegO8BrRv?fP)Uz?vPJrLi;^d~^-|ey07o@>_aAYS1)WBU^(;wnnx_wuT|c Ze*ru7c#tuqMN+}AcG)NC%pmZzUBOu)%5`!WjQqm17EeO&bigby@P(ycj z4RQ9o?>T>bXRYsBzqQU;?|L7{hvA9)-uv3uzOJpGqPzs@g&P+T2n4B=q_{Eyaf%5( zcb+4HI!MVqJ=;%0 zagp*)9%KA60&x=|CI0C7>%nELi+03|iN^I#@79@LX`ZYX?%psvm6Oq%VQOY-HK}Zx zW@@Anl9nuwic!(5Y0hVrV{6rxX=jXLZI!jxYt*ql%P&h1GJR_I@YtsE_NjMT$vf^f zy4CMz1!s}7g2*>D@w3A?^#CrS%a<>Q40(q6JQNofzbXrd|9$+4|0w>?@qavR#clpp zD_!dWHv7^||)OZxT0hY!Q0SZm6P46AAQ++_LW|GwN*u~F6aKnqTt zrqWN(o;gw6yJzZfQ7bFt8a$L3Uvzf!ytrX3&+IaL%FBZ=)7FW{-y(WjQESBs`s)5F zHw@s}?-egrM-)6r=D~4<|I++M^2I~6$A2xwYMNVI^+KwH4QcUURyRs@%+Z-ugeUH8 zGMZs4gsZfNR%-4x>b3o$^h9t%o${h(`4Otx<4rxMhW`8)&jEI(jM8dTUXip{P&w96I#2%G7<4I?Nj5FCL5bRbr1YW zXNPu$LL(CDjznrE9{v)v7$_6>i5mA(qyMU5A+X-qp;Wf4PM4vPD67S;wVOEg<>1=> zPE}B8nb2mRN!DIXv-!C-HmOabYu9n@Orlh4mvWIx!Of#baV4T!^&#Z<-V?o9-|?55 zJ5+oT+L5~XdvrF>td)zz=fg&In`;gE>b&S4oHwnwn506^u~FQ*rUBoCGe7r0$RhlRi-uJhOlE^FH|( za0TcT29NVNe?qn1YP6dD6GQy`?qtJtmBMPJnz1Yk;GjB8%J9ww*S2Saq*;zPpCA$ycB2WsfaO7TVaZSQd$x6sF~Z--gNrg$$M&zPu9zLU=R1-HywzxRBII0b#P02fkB#H*>l7)l@X;Fe@9CXi z-%ZiO^do2SX@O~v)|OPb-8&QPTfwu=+=&XHt>D_Symr2}V3JS2wb-7CH_X-SO{ig| zl&CvNhJ%XmNQxDe^{!=GVZE?=(Kc11d}?Tzxd}FCvJy9aqa%H&si}<#V*&12bda_H1@K>uxk+kibl8qi0o+a#G z_KDC6Qo1)a(bm+cXPu(@Qt(D^&O`N2YSq;gs_bl7)mLaOzU=o&3g@f$4Ja+CUl??+ zkXLT0>tuJxt1YWc%x@w{7P>ss=>i#qnWNN3a7t?BknIUSPy62*x)>v9^V7Jg*eERG zXcRlkvy?Jqmp46_XGEP}usk)GYndRGU`9#V?yfMWR~q(s)c1m*ppM(?FZad- zpR86N-ejXb=GTs3(F)BUVN~BzqV!OA{opu69s}3OwA-esh&X=O0Kr z^l1uWS=~MBi%f|q*F#exw;usK&DUAAoIg}ac+7_2?sv_LEegvgRDH@l`qgr+ca&L6 zr!rx)nV;H^gyji#;nCBbOxtBeL__=F?+sFkJ&Tn-q-CTj_eV_yw;UEdaq*R)>tRG4 zqxliOf_7-+If$8N*(#8H2RXDYUw*$t4rf33aABsEe`sxIHfwHe!J<;SqWk9k==>47JBgy5?*+94qN4-C z>K}K%G1ywxuJGKS4a@A1>i?mM_NSpN0Y7`1*5?ItZ`D}$Ee{XLEe6&ftnw5e#6miF$Re2e zDMw<9qHgLr%QKm*5A_{AaL}y(`pBc?=wU!ykssh(iiz=Na9+(1+}L%e_W36fih4SX zkkb5yyF+X5%XoR15VS1WhPbX*eap?iMlqCV1xgR>x^OX#@T2M#3k8AB>b*K~&7I-P zUrvvuZ~MAz9~n(e4QA>#2Mew`KEDeUY~M=<6VS|97j-6ozmWR8Mq+%&{YS=WwC2WF z5(mx?PujlQCu}i$51@IxWVH?7%;m2rbsFy#WE8Yry2%$u>b#mSyF5v7HymGMi^}dP zP||HhyUBZ$Gg$^ zkN+P3A5I^3RUdB1uu>5FlF>6UFubD^c{A+jrIn*C2|O)l>BWFUWrP6Z#cLSoM~mG`PgqN&z#QJK&4uMpyX>!?vzIIpHzVaw~; z3(zMX3%yy+SW7>M&8xB&eAEh}`*-H&=f$5r%ZDGT=IXZpO_doav8IQ2{oT+Y)FQS! zZ2vq%k$|6{Ut329_C$YgZM=WkNg{^Fq+@NVp!3SrtMC2&i46=4D!2Qzre~=)s*S7N{tI6Rl*eh-sy>NT9iySXWG?SDTc9FL0A+= z@6f08TjLd@kz)q-h9^N)7)K?dGiSKm54H@W1`18d9T$4;{TQBUkIQ_K6?qIvIebs{ zvTC-v0fI1Eqrmvui{S@W!~I)J1Kj~sT)!%}{>n69u~>w0TQpY#70QAyE>kJlhd{RK z&2}5?ge*h?iN3DO^fgof*J|Zv(0MX4eow!kAU<1L+nFMaE{iIzfr|XnC4I!?#Dt;l zn|a3WN*8;==uk$P*v;8a%E8^axmSeIIXV?H1IH8o95-qq#Hi!iRkQ6&E9q6zWXm$$ zIpkx$1{GOhg$SdsFiJ;y&_l;*e5*nz&(%Wj^63PYB ziO3chx69ht{J1XUkdcf%KElN*h#mD%q1u|mnB{yg(#p!p2Ee9sCb{p#08$i0a~ny2 zK@S$1+7E3NH0f__WAudIHAk{(1#mUQ3)ue3Bjse%EVK#lY-zEp{F9QJ8UtBIRf{~B zONQly9o9#niZt8dMsmu^p{O{2fB#AEq8C}JM4axpo%ZgeuY)y*-ootc9aJb;L&LAh zxr>6#E(vLib05#llyB3t-if83W|sDqi0ug_w%8k>@y9#>oYFf2CKEP#vY z_U$^QW993p0GG9&XWQ*NMNI7M?b`n$e}x{`D;qnKZsJps~XcGEO^^a3`XfDF=+tWu-Z z?i$r@f)!57c1xY@?M6+XZb7_xku%Frna=*5=t`CdKJ_Uq?8!7x^6=)4j+v&A+s|`# zt7@ySrXR6j@({1zyb&rkGBVQH%>G;Ljziek+t)QV&X#wKt8P{O;I0?xli{cm-(A7( zA3~`N44j7Te*gacpGuca!{GLBoygLYd30@B*^<1^8sU(7jh%Vd?xlqI4CT}duDdIY z4<3Ybp&EWTEo&}0;q#H1oBIkXU{Z7OZz?gHR`KtF0YQc9o(aOv+$J3~@$vC%>+4?( z>p$LMW+tbhX$zti{_ydm;rc}V(m;VPfT_^I*yLpLJ(bI4%MOcuY$uCJ*iR9trZ&Ep z{Yx)rsQ%_J9TsvBN55Dqw%!V)@tR1i$f?PF8uBv*AocW_Gq#6&wmziP&+2?g&y$c$ zO$LjlIj@emylaNbyPO>DuCJ|)W#v{gAd&IABd)>wo3p3@g3ph=FCa?G%Qu!wMki)w zB27eOUcJhg^d@d9IQ}ZIJS!-ewe7?4sotM*bAL98@K278u(r1LNB4_S71!K3vSn?9 zd&}%ibltaK@L3Hv{rU2Q)?9%-(B1ZNvwPK9!N*bu{Bao~BUfE50PJ*~R)(7cuJg=c zEBK9C!VNkTMc(`R3U^rIc9z}X0Rw1-BRQ(~-a#Z4SdWTI#6U7nEH3(&l<*?}eD5$Z zDVNz9U8E6ssHk|!%F4=Os5r2+Q~;ndY|n%L77ui2QTGG|4+1{Nei7Y$rIJ9 z8YdgU+0kNXkGDobjtf(F)f73)r?6y=db}1dHCPc#1YZO12tSrxVvH@wt;eDYMPh#t+D*N;FE z_8E6>Bi(M)eK+sTwi%OL?DMIB=A0+gnK!C0wWfLVUzHXYPx*8`$O^mB9t~Ue#XOtR zRKp4GM`=NMGU6^2b&cMM!@&my3;w{8s?EFSy&-K)ipe?mgFyDes@g{8?i?eMW@fV4 zp{O!PI(rj0+d7nfuhH6Uk^aw9ec2jy2iuG1&z&2~Youez4_cneRsZFiC+za&G0-74 z?(ycE`Su(gkuP5kNtGNqH{4-q6zGe)+UVVLIx<_pw~>=0_j9H3VFL zBGq~6W=NA+FIPhlmTJkVj(^l`Gs(T4nDLWy+MP|YN2xbsK^VGR=H0%cZQoN=(oG_cgG0TC%$ZHq=NDX z=hmv%$EC*U3oL5G2WM!h$C7T3)bHn~bC9`hUxNZ-HE8=3^vjipD>>|y``Wuh`PKu1 zg4sGH<7DTVqDo6k|5Oc;2d%2XE3~>NHDa-}DA`1JO#8#`vvHT`D5Re~BcczEd#J8{ zH{$kvuFbdserCQj$%8`f$}UoAFa@abn@SV(VNNU~F$<^#E`+GP~hoqyj)Zl7QAnyjliCwzSlw?g%mMU6p_EwFHl#Any#Las8S^}<8<~1BuU+~n2-|OZiCRWk`O3Y_%z&gl!AEc3A_osbkOc}T zv4n^99}Q@P+^*7Fb7(%WZunY1x``VocwqTAy8n$MfqI3NNS22dA*jty2Swl57LQ|I z)Z{r~-$+N@_pYg-U$I(wX=1Y3+cQscJe1XTVs)#z`JUT;?{l+;--PqeISX zn;a}ZhL-mZ_Wq>WOCX1_#1^}D5HPP@TuzORk3WJCR903Iw4J!Kva)jetd83ib2dqVPwQb+4qv%xdtxF@>vba?&j>H zdC=c6TARK%BceQe7i+pSK zKy4&mAi{5xViV1=%fu$)WioQ?sk)14bq?sBRen7&e)jwhOI>(Oy?2#rFp! zf=_s+pq=>P6?3 z`uc$w6_ZZer72Sn1*z0W&tD*iwFzEn3xDKkrbN4vtZk=Bd+Q_aN0I$PsG68m%0&HY zua5}GW@U}6?4Bd29yyJR0Fvt|rnO67n(6g2V7!Fae4xTvtV7kLgOS-@=$_xFv73=> zxa*M2(=C_9pMR6IQtf*&w6U|pAh0*V`dCr%CY6noQ`+;)(9-hKPeui{duvK7W$70n zWP=8Lj&PHCvxAwMyjRpP{*x5f962)Y)t`LF)xPygNlW8~-9a?9x7T-e2G{upQ&i{x zN{46iyxO*rsYHrM$s#@EP%)8CZ}*8QHdn~otNe@umI}meOuk9wrs?jh{-_gk_+}`P66~o?l;?&$c@jh%5{p3Sf*qI700j(SX zzt+Kg0gVljS1X$wOq7dmgC&+;xw#6}%eb9J`?axK2go5}6B83-Hxc3rth{H97)R9} z5*Yj}WLbZOwU``z<$-Kq@BYSS!IYqw|MW)n?8!r2e{Uo)2M2x01W|TN#O=BMFFJ|K zi~JU>suhBQf^NKyLS0?FAN+#KsR}DAC8hRP!#GuxmDhH5?mM_ntc$lCM5HdEb$_G2 zn*CUsojxpnLt67)m${ z`T6-D#B4rg+}I5bjg`&}W%Tn4`qkLzTR+NCUvE|)nc)7Uk(fBEwzCy|EBPstRZfn@ zNPa{{#tlmA>1>@4Qe>~C_k90e++%N@ z8MyO|Ds6XHGKYd>-`Sv;6m1khWlt zxyB2mptOHobN0FV3xn|mJX)JpQ=uJ-<+XhLJkZtOVz((Id8xmQI2V;@F<5xUlPQq8 z>$8Ul-C|EjOo4G&SOSO#mwUcl_xgv`cm-0gua~at*Omlu1UoLM>!Z^<4}H9RFWQg) zI`gb@lfw|TsLaKh{m0{Kdd>8yL;n{wpHULMrBTg#a<^L}y}5kmZt&9Zc>71XDa5G; zL$FxQl`=4(o%jzg)#N3~e_l@hPP@p2H*Bru1Ed~>cEpdj=B6oeAq)Q~{$28ZbW%XB z#kZq#KI=#q#dM!gekHN#kBWP7bM1+8bAe9sHU;Vq9wFf{5?2uo9N#{s}m$1j- zYa%kbwz;lk)822_;4T)}@(Ab|L18%i_{kH0i`#sB6bNhURpd~K#lT}t&Db1$An6s+ zk58XHOI_;*Z*^wH*~y8|Q_x{fF>&=|I~N`E>C+{0Dymm_wFd1`}?$#etW?K^&-uFwu6a4`IRe%AYdCX+`irZ^{GD% z?#h)bc#R?;Jw1JWbCbuqa@~ikA$m3mJpw`lUZo?yal=gXkoYvL*X|RvH zpvZEgj~4ahjE&Rq?M%Ye>$3M%vtNN0L5u!)fhkINEa~;c`GS|tR|um){f@hQ`&o3& z(XurYXn+6^FlWeqp0M`r% z|4eW-M4C(#dm8%WxWTOGhMu0DJ*)-8Stk(r8i1T>m)eYfn>KEbHS#z)az>R5wYSCa z$j$#vm6MkKm^ZYX2El7w>q&rL=6Iyb-(lC)Dq|>du&^)` z#DZM%v%ogkvuzF_yDQoHcGF2;-!<>8PtqFAw8fwhDm5PNJdO*`3mg|!;a4X6^(ve! z38TyGXLXChq6VvL; zGcq#FtCyd{`XCpz!39CY#KdeZ4@Ftm97Rq|O(7j~w0$p=lZTnKH$;r;nep7ZMc|38 zaGupb5!wI%FyJ(cEj0dicS|WKq>KAq3Cb%Ruy|nJ7Z4CYf?$%5Z-Paal9mQ8X*cov z{NKNSfoOub>;)zka?uGy8Pz#1V)Mn8?MDb;o-d7z=5^BmMO3r-D;|Mm)QEwM!Yc?V zDR)2tt8b)7bjV0t<;*eR2K%!!Cv42Hjx z%NgzmDXdZTrs%ef_|vBb0k=3gFNukXU8EIyUvJoqIgS|0>5BxPE@2|lqjoS@>{t?( zkxJwZynpsMpqPv9XTnpb5L8@-r}1*!P>FR-&ZPG7gn7Y0G@qqr-e{0kH0&hUM!!M1 zjuxVyt>(^@?!mEEuto5o77Fass1)o4$4A3wE839WxV2dqVbs@;>Tm-OMoIU%Q|=-GXqr^_7K z%XsI2&vI~TUgG5V$OW`ohx(5nnv#U09p?XfJuUXGcUfzgXPkh#zZU-xZ8wJk_nj2{tvjP#js6(z&^0T%C;V3Z6HhvLv z{4ndi51HCB-<_U|6MypLNv2i_JIKkush&Wn$bZxW7YJ3?cBbt*ELM2>aqkXgpHqnyR=wEbI&7pc0>TMz zF|A-L7C&Bt**0fRmxKBAOdu_*)i`!&A396W%Y#L3P`iNNBmp710YMr>BN)1Rz7o|K zGz}uSJ@N%U)J=ZAJF~UWOY8}S9l;4|BUJ7T&7%AC=tHh2J|tgYtH2p6t{t;sJ3KtZ z%h_@K*5F7chTN8zSXhvL_z(eZXb@p`rURJs zD=-?XV-m9P8)P@#(gm(t_3?rE*aVL+*l5k}yV!IVRTv%^{t4jWZBXZfUjWg)F)t*J zn}^5ccz+gb?4NaYg!J_EjchT6g@s5Xl%XL4;);C@C$kL?j_9v)(U1al8vHc)K?8{SoAGh!=_ZMJ z<%g2rqQ=6=yCu`1Vm3e#q4*(Df<<-rK&5f@*;ikSgXqn4|%S8(~$ z@Wr34t^Q!;hbAN>tg3cItWMoqN)Ul+g?J8eG`f5njXqfv#ruN!26aTw0;t}CZUj#a z^8n}k>y=-D%HqUjGxiV+e7PdCUIb{!6UIp0jErJ%He>)V`im{8!GG>7u!3oeDFtEF zDN4#vAkD~8;*IIiAqzgZxl^5WGf2^Fj~+c*8Y&6)BWK3n44er`ZEc#yV0sQGVW)}& z5MaSO(8zyzo=ohJ6G9*b;u=c*Su`5$bCGr-n$a&f*aS$n%b=v3Ts;<>u(oD{z#}E> zwN*s)?5Pv4mie9V$R8e5AqlRaRD7 zWjukLH?IG9&0+4(TZpz0u%x)n`&hrJ<;sIPm^U=vn?(r~H5`mAj2=1xY%VS^C?)=A z0(r;#notFSQ3yG&w82cqM&V^@YMFHT1iS$SNDSPe`lgW3K^lph?chpR@>yZ$m7cF^ z;Cgreh>o+>du-+R`?ok0(ciE#;COaGCaKcdyRf4ovB6a0sYv<}ZbCmr7Q-ba zBa^Irh~_OXB6jrPbRs%y!;Zj zA_~f4SFWBIuvU3PL&NHP=uG&hqxrLF@qF3;T{D16f2r+lJh|xYz2=Fx+u+(f(5gTd zt#5Bn$CxCJhe*&FfCmCbQsT#JEXujMA}}Knl3oP{gfj3(v!0BfkdKXtBCd#yA|B@z zZ94ZYCEz;GU}>oYY(9Go;tNojR&~Qmh{>LBFIq24vzz|;{C0A(uQNed0_JE;hfBHe z(;p_CiFn|HDVL2N6$QZspyF$T=DB%>^%r33MkCMg49q(iL+i0W7{i4ks;;gM!b2fN ze+>&J{A!V&xjZcM%9y@#yh0_1(%1JWTD%kXYNS#SMp4d;Wu_usQ4402>5revQ22u9)AY>U`h zEnxtS;1%$Qva(oYB3W&h%m)ka9pQFO;O9Nr8et&Gf+;Qa{Q2{0ryzPU`511aIS2^Y z3)qFPe?)Z!$?Z(jrZkNut@>U=jUTqmnU2~Oo3fV$WUKciAjB6SsMCM`C`PjDNJ~nd z1B&d@@=RR(PYoK4XPAnLiisMZHl|y7+z%Y^GzusuzynOSP*BN&i`xRk2;{{Es=8<{ z)P<#?2=ix!Y4CZiHQI`YMqNj#5wLXbR6|MdI(Gn#hZqM^F~TbtuT^&Ydg$!UwMMKdn8m_7Gv-=&eNz9&SUUqt(Zb0m|2-Uy6BCigdz1KCZc0u(RuwuXUo2c}A-tV4&DO0q;vvO3L8)aG&JH zgAYmQ;VNuF#2jX4`U+iW32qKst)O9r}#@gT>s;xPEJPHt!-oZ=#`t^&7&w>huHelH49mp<_^bU;p zs}g0Gd>h9PCA37a%(_U(1Ih98^MkP?p;L`ew~4h=G~@H(4A}ZZmmgj*WBxB~Re?1; z9>5$7{do1pqVMLga^TUjj}1o?h9^Gh3iKnct0IlX<&KLJ%ggP;tCe0@D-!@xH<&@h z$HV>tW%?3SGJLDa#uivI>JbOc`m8y;ju4&`gILr!(f@B_qyV+*o?bN)jT;)pzZ)|% zet(4*4)*q@Drli|zC*#Gn~g74Q}P#>5MD&248p=g>s8>t0QG~;^fXjaP(0c}3z37( z+w5hNAAnA^>+>VRckkYCHDO|C27*LDP%zJC{PE86 zkOV9f&={DVX;5+oaij8ZqxH3`E05K%0HXS6N6X`ATTKTq5tew?Q=xK(13o-PAz?ySBTHqTePcWe@D=j9|5RkSTQ&KHa9JyJK;1w>~Va|k+Qu9I2(*Y%3 z64bFRatg>zFZI=8@^A3_qR#+xrY=sW+`0rgdxjhi{~nb%@gM&^{(m|BKV2$BIH2eU zZSo9j_Z$RN6Mc(e0M`xtzm6%Rol^~hQ~&80Y*XL?I>04*vf;gC3j7lvgw#`c@tnu{ G@BSBw=9q*4 literal 0 HcmV?d00001 diff --git a/doc/img/refs3.png b/doc/img/refs3.png new file mode 100755 index 0000000000000000000000000000000000000000..eb5aae609c953da2631022eb9b7afc0e819af133 GIT binary patch literal 7311 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 ZyKdR8Va3m`@aYhtAg3amd)v_GzW_ecMs)xH literal 0 HcmV?d00001 diff --git a/doc/img/refs4.png b/doc/img/refs4.png new file mode 100755 index 0000000000000000000000000000000000000000..ce27712ef3e2e0c89f50c5b390e9200179fc3813 GIT binary patch literal 11980 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 E0F?UVX#fBK literal 0 HcmV?d00001 diff --git a/doc/img/refs5.png b/doc/img/refs5.png new file mode 100755 index 0000000000000000000000000000000000000000..c12595d6f6e41f517f4450c3696e82b0aa1f5414 GIT binary patch literal 15775 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 P)R5d$CFx>G!@&Oo<%4L9 literal 0 HcmV?d00001 diff --git a/doc/img/refs6.png b/doc/img/refs6.png new file mode 100755 index 0000000000000000000000000000000000000000..fb765c02ffba13ddd788dde54685d0b2371b053c GIT binary patch literal 7948 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 UE?_k$pl=OQkWmGfy*B;uUmbbDJOBUy literal 0 HcmV?d00001 diff --git a/doc/img/refs7.png b/doc/img/refs7.png new file mode 100755 index 0000000000000000000000000000000000000000..05488e0b19860637ee97470a51590b8724828d99 GIT binary patch literal 11807 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ʋ>U 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 literal 0 HcmV?d00001 diff --git a/doc/img/refs8.png b/doc/img/refs8.png new file mode 100755 index 0000000000000000000000000000000000000000..6f442a11fa6c373f391aec25fe509abb6a028f3b GIT binary patch literal 15828 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 UVDtv~{xwAIrIJ*^3;j?33)B05IRF3v literal 0 HcmV?d00001 diff --git a/doc/img/refs9.png b/doc/img/refs9.png new file mode 100755 index 0000000000000000000000000000000000000000..b0c53c418006eb8eb326487a7087398264aabf5d GIT binary patch literal 10700 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 ZB+S|9xc;d>c<&OTs-&q{`uNq`{{?j1d(Z#? literal 0 HcmV?d00001 diff --git a/doc/img/specialMethods1.png b/doc/img/specialMethods1.png new file mode 100755 index 0000000000000000000000000000000000000000..96be9db0069a93eb4c9eed029dd87ac0a81c073e GIT binary patch literal 14010 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 literal 0 HcmV?d00001 diff --git a/doc/img/strings1.png b/doc/img/strings1.png new file mode 100755 index 0000000000000000000000000000000000000000..ca4315622b04d656cd82f02bcd865169c49970ff GIT binary patch literal 2334 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 Ef^t-gQvd(} literal 0 HcmV?d00001 diff --git a/doc/img/strings2.png b/doc/img/strings2.png new file mode 100755 index 0000000000000000000000000000000000000000..82b2cdbacbeded0d839fe021fad957ed9492fedd GIT binary patch literal 1824 zcmV+*2jBRKP)5yB9J-0cCTd#!C@W7zE21!y=vUbc6^VXixi=*l#-GHjYflphK5D0 zSEW*c$K!#=@`$or)A18)k*!Y??YpAiY zaYi1AL_$WR@t1LXd2E4Ww7$MRa&vPd0Cf8FY4&%6!N8jD!Gi}JQ{?96(#n-9$=TVN zl9G~WWMqUr?*04sl$4Z2%a$!8p-@OMF)`Clg?>Kb?er#bDsR1J9mzw6H#awu%jI6w?&7OG}VO$`Acg+f7ky`C~NGfAyhQ)_E0 z>GgV+f7h;El$Mr827`g4LnsuIR;#502M)|hui0!SPft$*K#`G=w0rk%_L#XEZD?qS zPMtbM8#ZjPX^@JF3i|r>D@{yHPqYp!Mt5Q*UoC_4f8sVqziz zp#1#&c^Pe?YF1WO5&+U@G*nhrMkbSqtXAucTj!*Xt5>hurTt@v zJUk4u+040?`|{-rCub7D!NC9kkw^pp7#kY{0DS)Z8354U-VQG>FL-%*p{lA10Px|% zhk0FBE>z9f*jQ}ez8y_XO*nY)AXF+9R$b`}gm-dGjXX;^Oe>)2AtUB_$;Y4GjguF!1y9!`ruSF*G#9#uo+)?aKMtazqTuT4iqX+g6ciNT?AfybfJcuW!DuuB0Jd%0#v$PI`8J7t zeSHA{fq{W2E-vQ8yuH2WWweE=DHIA(Q&WT9-d?n|wc+yR%eZyx7H-_Qfuf=!I63`$ z9!^Y5*sM2cj=Adf@$mrwynFW!R;v{PfdDNnE%WM)i;D~5`Eopb_z*{q9ART^ zZEeWN$iTB_&kz(81ONyL3Bixg?7O8Qxy?YmFX=&{0xX_qw&Dz>p zL`O%XsHg~yjg9E&=wSN*fNio~ugA%gC+BSfTPv!krzg6*yAcr)frNwv+`oT+PFxcc z6R=vX7#SJC?c2A}+1ZJJfB;U;z`y{6LLvP9{Q&^=_4R0NZRO2v^qtgI}wx3}Zf zt5~ z!OzbRg@uKPii+aosMTuh-MbgT!NKtL^@YE`Ka@%(Cnqs65#izC=<4c1Y-}uYb91NE zvWI8J=V%W6S^Rvb78@H&04OIX=RY-1p5vwZ-^HOrhhVi@5fTytqtS?piVBECBDA!$ zVAZNsj(437EDV%NC7wKaf-`5%z+f<7$BrGStE>A@nG66NE1Cm;1pffQ#Tx;=MqLO1 O00008BFyV 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 literal 0 HcmV?d00001 diff --git a/doc/img/strings4.png b/doc/img/strings4.png new file mode 100755 index 0000000000000000000000000000000000000000..68291ce8d6af5b3da1530265e35c8a7398ce3890 GIT binary patch literal 2289 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 literal 0 HcmV?d00001 diff --git a/doc/img/strings7.png b/doc/img/strings7.png new file mode 100755 index 0000000000000000000000000000000000000000..a76de939320b8910d51ad4972ce062b61884a352 GIT binary patch literal 31658 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 literal 0 HcmV?d00001 diff --git a/doc/img/strings8.png b/doc/img/strings8.png new file mode 100755 index 0000000000000000000000000000000000000000..b3c85c08e12e536bbfcd5e468bb61d215bd05d22 GIT binary patch literal 11911 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 SI}Rh`h`h84>WieI@BahrF}^nd literal 0 HcmV?d00001 diff --git a/doc/img/strings9.png b/doc/img/strings9.png new file mode 100755 index 0000000000000000000000000000000000000000..9ce99d4ce8a96216c4f634fac589c98e9b070010 GIT binary patch literal 6554 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 P9%oe$5t7w&WUvMRlqSZp literal 0 HcmV?d00001 diff --git a/doc/img/tool.png b/doc/img/tool.png new file mode 100755 index 0000000000000000000000000000000000000000..0ee847b8e3802e88a80d3faad07ca17e96d87eec GIT binary patch literal 18042 zcmb`v1yogAyEnc70clZ?1_c%A4rwJtLJ$Gzkdy}L6s1EX1f>xHDQOT8kWxVDk_PGS zhVR+uym#F9d(ZukalbMCoN>0gU3;&!=9=?)el-n#s3c2(ONomh2*G_hDOChP=S2`S ztczIijzc$*ApC-5^gvb$IY<4MTALLO@8H>+%7 zLPjnT%0of~xrW@Ax~t~;du7Z;=ke}2_Qv3>-bbsa8NL@^;7;F?wXBp@amcKc{W$Th z@ZE65k;TWD*j+xV0-ed*j$TPQ1hG1I?Ec)tyn=1iruqkc|Ma*~(Eb%3nTC1c{LB=? z`eEYslRyy;vH4Mt$Mp2q=;`U*LlW$8gW$(6;6Gl;%~5as^YtGG{{2xnkoH#~#&}B) zlcON9l$6>b#?J^E;Z)Te{IlSopaX5JsF;|SQ;mU*t*zLmrlz0E%B0)l*orLsnUf7M zZYjk3e*Vnak$7i2ZFy;H{SJBWD&N85&Bo;nBf%;ushuVZ=Him1B${{p)}Jca*w_e| zn3xb>_+b?DP4Pa$AtolSbetz-Wn=5kd%}~g#!P+3;lhJB*1LszwXSgw?2mRVRwnA` z!YTRO7dT56dsQ^=IOCuv*1mR{#%FvR6qGFDc5$#k_lmy0KH4?wk#f>}bryPh3kwTw zt07K%N5?DSG7QPd$=vQc=2g#^;~esGb90f`MaHf288YEbeSK=4o}N#eLrB}i78e(} zjhZgnySR|SXU50Jx5hoz@87-a7Zmhob~ZRGD+_s@ntH9uVK&6UN>49&Wvp7m%~~NP zF){IiuR@a0W34jFn{#t>J*5_p?l{hcDI|+Lfxl}S7*KDCq$?C4Y6;7vcjWdyamB&I zyTZf6v$?hP=5ek%g(zc7-=i!g8no2?)*nA|zRmmWd*Tg?PTb?vxN+nW)xzeEM@%gG zetLQu|7>v}e`I334x5no&Ye3w*(wZZ*BTlc-XtXCTnJ9bGyVCFZ#Gs#FUqq26Al8W ziT?KOUTtVWSy`Dv0=KkG1T_=V)YK%kw?4t4m9PH7-yhSL*P=)2qe22b8XB6s-6i7T zD#t8`yX@ZGbty$&%(%QCKYqMSOnlwO#s*ztWp%Z=z5RiZ^GbGUh1>SrWwdWyn#@9s zaLm?HZlV0~-YTZAT8^r8aY;$|yDP>^hm-z9G1s&T^+bb%gQF_O-E+Sg$}mPt6Y|GA z=2^NwbJgq6N0?aUCLs+Gl?>|s;wZFRvCosXCCwKY}SlPw%iXdDmoQZLE5i{mc1br%#OWdtM8A52|@q4(48SI^{1VqPHpdSwPHd_>VwVLmp0~Kr)cRl zMdZSaTwGjmmcuO*lN1bWLUKNMN(}UEhg3YK9T@o?a#Orf{sgmsA_5%jZX6U|guB4u z&D5*Fd+s1y`0(sI)9b$XT6bJTl`nJ5wsp{PGn1GX7Z=N)KB7=J=OuD@Z@IJ3JydFO z#md^c$Zgxy)y<8`r0)Do7^(mLn-V4;;`;@r>unCz3>kvjIyyl+m!zhliD}oAjfjqcPU=zmg=)&CPR8^UYI2l3DES><~or$&)na)!zu>;o*Tu=;`SN zJGW7V7Oj$nH^PJ*j(hvotS_-I=TX+EJFUz&^as3jXIOUTY)U4G%U98t0gkWsZGwZC zS2J!(q!E7Si1F}o@@=Q8RoPX=-I)935D7mTXJ5Tfk5u;;`*YtG>pMA>HheMdco!;Q zq{pwBoTWPE@#~6&Xq3Y~N5MD0Tm1Z2x95KP=j1RA^7&R zT|GQznu4#$yOmk?@9ZfnD6qQ6VYf!mU?8sU?##RK2?>TUwK)X@G$Oh!%Qp7*0_y6- zMMOmGX4^<%W@EBxl|HGE1 zadB9_7noylVSSkoWQ|E?T#S0&tKG_H;kQl+`UyOk;+DL!f!^jHiu`IS)YAWpeN6*Sx%pc z=75JqZ#jMa!s(a74tGy|E%clDql}!!EFbf9?i@DG}cbLFE6jEew&+{`?Jrv zckNbK7(P6_sa86lCZDryI;-&-3e-FZ4aL**J~U}+X<=r;kUm>KKO?GkUi~&+>oK*u z8ot<@#lXsnUte4Cv~K&CFlw2Md+qC@rnGv#mg{2X+nAXV7*Ph<2!oa|ii4>@x(!&z z^`oQIX=!QXyymZq(^aCxM6-)qwr>9xfKqFz6vkyUDo8EjdI@G#<9v!w1Pl{7J}+Z5 zQTpMAK&nt_lwm;70+UW!&YF41nd0i&t9K_J*BJ}zD}7oE_2j>;=BfG5j!{2C+qrOc zpOxnTsn{$JWaJ zW)`fO_eYO$?xj!#J`(3OioZ_(scCv6UqTcRC-{4ZE@?ybq0D^x9|`^-sJ+pDw==O~*s`M7O)UJ18tn z3cieMdn|d#<=(5;uP>31kVxeA-^=Zv965rpr8e`l|;UcsDTRaQ}>Q!QL4vQwTO<4!K%=u?z@cWNlF_~UC*AF>cpe% zXqc{@QP|0EtL1g+zynV>oN|k6xhEy1T)42X(7LzKNaVquaX~k*5 z^HCADfVzF0IK}rnLq{L_EjNGom>KspZITKVq^2Ssduxr`Y}z7wSKKx>h(G8)kgP7} zSlHz=?9`(cw7b+_BSJjPmi}$#_NR&m^AT<39eJ#IM>YgK1^R&(yFRE$mfDgLB69bu zg36W!QsMjfo*kumR9po3<3HkZUX1OrzZNK;`64Na?PzZeQ(OD}<c?dvQViNVB~ zeu`WwlaZxmh+p?<%pmIWpBd}6vGI+<#lYAJ z??AL}j)ulDng`QyQ*zTPeMI>hOM6;qXG29ZvNfAWg0LnHXXf&UPTOgn7W>kqq6w(_ zWZSR)*&D8INEI<_rgx?Ht+hlyWM7+QeitG)4I316OqJw{Osx6XiHL!NGZ{?pfehM1j+kd zgh%DF?q8cvP&20Uu(=04;ZDWo?^gZvWFG=*@f3UwY;6410W`+}t8e`~;$3x*1nIT- zn{}az;8kmmV>9v9zotfn z*Xki1N2$fD(NP^%{X;f*7b9t5L#OwnoU*d4sruEqU+0vxYikRX-A`=GmfP=aKgOsMI!8@qNW~w9O$D{A<&=|YTK zmFs`@m-VeSJYTN=)`RZmrUggSbF8zEj*UJ@a@5zSduldM-XAIJuMzhUf&P(aZ=Yr;0le^qcH_V4#cj}DW7)Tf(li{bH z`?$?!{L8B`91l*@KDqdJ?~FRfPY)KelFWxbdsppVeVY*bYMYEb^-=3yrRO2;%F0Rz zCYJEir%&k_cuM+K0a!0w?Z)IeKc?WNBpB7v?P4e%!AOdpK6O=XwH-ea{ibh@5iXNo zahmIf*OmXktS@^?+wwHhVHB8`uU|_`3)WXLfRgUJ_c+bQ(T7Gx8oC?MelU@xb!Quz zSl}=+%GSwNXhyyut@?MStJUO|j{ zq_Wu9dAfCI!rlizCLK8gMkgXe++WW`KVrX^`!mo-QT#(z)^hA_*b*TlBcuPW_$T`- z#NCn?C?#Pfzx2l@x|`pfYM&8svyCWOC^W;2W3tyiBUL4rxY`^O_qh<1bMro*(|}z5 z!{zml@9MsorE~iQ9~EvG8Ku8ax?tJwg~6=;woU5sbSP<^UTIVI=1$NGmaJ^x<&n-? zNsX`YevtDykoQ^gse6{-3MCO1u(P}F>K9I~4BuG!o#e}777cZKm_?HE`Q~QMPD_?5 z>AJ@cB1iQcq%8P;&bFx)=k|VKaI(tSZaLk-ZmP=eRT2^dixY>wT(Yn(_v`!U?~-V^ zdCrgG20Jf*2iD@`(wbkY;A4Xt({=Lyf7#Yg*Y!)?XG$4B|$+! zgYAKJ!%y83?^Dhnt{xt!wML4chK&-s7}}TyG|FBkzI@qpJ+AjFMq5piqWlZT{!cQ4 z+P$4b6Sfn6&`TS-yV0NkfB)X`vchH8VYz?NNptfjvs&)ltGJ)P?u=oifXuRb zXU6kfj|$D+-rk}cHh1)BcyN)|PHQ3}qhkgZ7Edfs16mXT5OH=1-nlb9ImMt^XLzOK z=TFYm^9Mc!@$uJS>K`6zK`Dt7WM>t;sJ&0!bpG=RIHna+KP<>a2T*cX4vzPtey|_qg8^vn+MZul|sXe)Xa%qVs(DQIRSmATqMS zTcmB~fiQnf_*8#|qIP+@_S;_%bJVbw1)QPWJx!E7nvK!_l@JJ>s?G5_;615WhgTnY z7X@q#HhWC6r2(-&?Vxu3KgnkQFNdF1 z@g}~&&U#RtokFNvdxr_G&c~ne>pf#bLo^~HBB1{b?d^E_-iJ3)0>IH?V*MR|LvAxp zpEq!pGZ~+D+@GLXJp_6z&x3=BiP>ddsVNObzVuT}XBS8b7z9-OQW6qK01;gTXg((s z=cjbHl#}yTN}dg}^V*J6BcGrCxO@Q<6D0}&=5NZ^uCRmIdI1ZI`Iru95&Rho8Ljmo zi-?FI=Q6q=BjJ$@gp2q<}dBO{4GJOldPe0dg+ zjJ+vMGSF_WgTlN_D^IVM61autSI??qWgQ)AEPQfb$N67|-(KQC^GiXI-M(xU43K0@ ztGp_oFJC>{UyuCxULXUYFq~h|ZRxSyYH<$v7yV)%Znj>k3~Rf(DUIwxwyB8R)tMCXrPozzF5g` zt9+_$`le-tvf!DWKb>yA|HwF+yy?*W6pR0j^SPtX` zM~a_mR(YxAsw%=S% zi?#x4G5>kj!Gu!2u}};4-(QVVVch8d`TCCo|NhY52fDj&j+6s>4Nj-#At-j=`oG8gxG?@QF^BrDQ6%W1q6^KhurW5O7ZSNBX5d&1d+ zAec#Z^C+9#lh-Ux&kasAwPk4BMSCou?;t)F{KZ}m!W-iQn5k^k_;&3)-)e!5{7hs~7h91RTvl)^+b zja%zJQif@SHjinzEbQoXs?M+rCfe#{xfsAyK#=jZf(>UEwvzBcv9rs&C(kAi4xd&E z2^yGJ5XP67UMcu^?st~-jkvp*iQCbJY9%zyz4d=0Y4WQchG_+Tr*CafaRj)zxz>8C zvKMFlx@*6P_56oXpb+e}^btp?^3x=`0kyBP+NaBDv-bliP*3y|3E(sZ?MiA4p$cgN zWf!ErIoCq7YSpa6;~8rnYscms8Q$jUxW6m=2Y$E-iIlzkshPEqd=Da{hA(X7T{o#G zPAjQWYQ?bTK7Q2P-=<}qIJ)wwN{Au#%iGJQAuPG!EQ>yq`Dv$|1?QozF5V(@g(G1^ z`cx5#!d2v4r;nU0?APNoExZ=T)(*Lkl7qdI^n9~Qu1xc<*T?C5OE1e@&)ln3u2#=n z6Hk30xJN4;z;}!^ zrYILETlK*GRJ~Ggh#}pix6Zp!Jmtl$=g-nYGBJ@<-DoU9S7w~fSA8;%g|!b(s=oDn zP-0^p*}{lO+-wLBW34$nyoX5KHN5_*S_q@y7uE<{E`f%u#|5?h3&?@SwlC6^-T%3w zD4;5b!eM(0N$vaESD;ec;Vzn#gdqL8y07D%Xk~vTa@4L%gB$mIcCxZk3dMrmHtK#-RfKLhZ72V68rujWH@+;UV>`(gU z;X_8ui@Vi&u#oJ2oLm(jLOOANftcxeY|BF`fY|I&x0tWQXP>(pe+~}D{UXjWl)0Ok z=gwzYw&fBVj7x9yc^y=O2V>{rJ@r~0C5UF3idPH_#oNh(fp7KsrRo9}^koP3#(%~^WVq-Epxd3$Dm(E*J zO7xr(wM5`Sy~-7^K}WW>w(XhNXv%78ANG$E;+^k{;^MAhMm(@sJlHfaO0Xu+E&Zxi zswe3s(4=4-QmwVhpqtPTM}7M8Gi=h_RbyJw(JFgzXmilJ=AXf@$;Q9tj9j+L#0 z%cKbr9MVD+s*OF3&{%gYXNyqFf?x4Mme=MyD~K^}`CPmbi~E>ng|k@J%(c3j(yCE2 z;7B#feJocf?)QEdQrCkKo`a>hbiwF*HC;wQigIvl61HxF+XCnId|QWL?595LS9B~) zt*sN*WYEiGr&M$vaThy2-H3@~ZgypUq|YogSUs;Dq;xBk+Uho=3vY}+gUS?tM76|) z*9n=;I2a>zf6VIRja^Y-Y=Lg>>DJv@v`IL_oq=@H8exP{2VaDT;f1}jodT*_@2C}( z6ugj*X8g=Sbl1b0Of7!vp<#=)6uZ^*T5ZOUYs8Z{qRNeCun2@|Xlr{#D!E`)K#_C$8fNv+Q*h%I^;O6WHDX4N>LQ;{_T8WrNti z+Eh@od(A9#1?9eueqlkJ#Am3Fy1R$_6tOY-(c+Ce{6}y4_m=a&=uqi_27NAfHba}> zinF;N1qazt!tWL=TK;N9|CBLNgCHgKkJo=5`1d>iIPmX}{%;OH|15!mlBE{CSl-^= z8(UlVz;(3;>?hB~1U8%N>F!|cV3tzSJ+L_F9*imHa(q2N-(BjLEHV9=+Pk=;cfL1b z8)@|wZYM15P?&P8*aQzW>sO>K>bJ?7X4~H~@bHwVDzy1wU<0_xtJ&MwsNb4xM}1XB zVj?vPyxqTl9~>Z#O(7nh?Wmt*#KcitYV`CbtDKIz5!jzxPeQF9j3vK+A4z zyzDxazHm~7cf2@&eK3%d%~m?s-F^-G=_VY2xA?Rov2nDo(V$xlpD~uZCa4LZo-~yM($%9xl3M4XB)1*VMlHYN- zfki}%KRLd7&CJYfXLW=O0}Ef`ExT^a5gDr{%Ff4L(zkD3W`9=G(s3W+0aNSik%!y! zC_x#fi=3RC1UUHk5!(6cRQ-d+zfneRC=8gv?@|lo;q>!v&;A14>b^V9PEM>PKB#G` z)-93YrbbG!3_uwxr4Z!-p`)XB6&cGS5~oMIQE_otNlJkqKHNCjXe2_`#B;Pfn)B43CVkkZB=y&d%yb2R|577W(Pn&VVebRr+Lx*JayC&hVKk zNnNNr-J=>P)F&#_B6#-f8H$`ddGf?0Vr1xRTz>@sTKHMW7a^@>7t;@zbA?HPb-XX= zvj=N)(RhWUO!kzDwGFe(jWH?d%IdzeZx3 z7a^TkSguClG|&VDsR09zT*&EmUS3`sbw!aEUta-8u$Gq0Fjh!v)AIB#)w`MEBUw~2 zzwoXloXQxyoS=}97bz)p@W4OYP2F>Kbxrj-KkG8*1;zZBoKD|+@m9GkE6)ebwpbSrV2v`W}v0lA;^&%l*OS*LE z&XUjTGg22H7-E)RU1C5bTT<`(cYXEp08%{tD@oXOy>`Ei=C5mB`w`7ZOiq3=Rvr_% zsYg~g(MA2XUmQ9dw&9LsgJ(pV0}c_9td*5jPK6UxxMb3nxl7)v8;_RG%yi(-XFq`b zXY~RTy@LZY$!8iDO z+#&~qrhrY!!NCDaBdcDG=I~yj&nX^AW@FVZ^9k8f0r(UzAf2=FyDT*NE;OyyZ|GUR zYc3}T_MpsM6tErt^YjvN_oK9)F$d-^`CMK{PHKgEG>~C|2XN2Erl7d9%5lD{*286J zc(?)FRa9|+M?^5-HuVitN?N*Me4G}@uX*oBg3DK~u=JU#sgaD1jiq&)8yFk=lj*sl z!SiA39sn+V>Cz?S!Gi}oE5lb{Wf6@QihAs&f))X0y~NX}A5_pX%vpg(zIywXjFpvj z=cv2d#TM?$b8pzJjY~2B-%mdCTOgfxP<_1w>e`X63|S)hdxiJ>iiP2*AQ3q2@Lky( zRa~Y803MhX+BP>`MrLQ$%i9~bc6LaRV)Jf#laY8X;|so0GBV5~eU@d&B^W!m?Vke8 z&CSxtce4~P5QX6K-IaP5Yre`n1#a>X%GymqLCr!skOr3iB!y);?Vv75U)I`Zbt zn}?d37t6FzDUYSt*m57x?!F#O-a*M@Tie?Y#$5h$f zg>35Or6pVhCBy-g;Dq#_iS(>WG8Kx3%m&xCTTIsb#q*dELZrqYK+zO{%YP+i%+<1Q z!&353@j0VFwM)o4ZbD>%o|l*8*+AZ1nBot{d>~^5Me!R%1~z{QuN(A#dYt_zix3?H zBiz!l-WP3Qq=G~B(IYN6E%*;HUzX4jXwR+5q8>2g{Afkp4WO-IwW_GsfyejRW=sfr zjM0xbH;2AF&mCu$cl)ULJ^;==1>#-io^ewUaofc4?sAsKUJI3NeP<^TsypR9DX}{{ zIc#;XftEr`8awLK`A3XLV;w=lfPR=QGeM_-Srr5^p@V}1@=@j7{%_y_f{9q^eJTVE zSkMg~@gn(q$%6*>a|sspym~lYTE8Wi)56053P21;K56qLCm6kJ9SMTYE9Ae+o&`d& zbG!%V^9x{pn_ltlZRWz52~?F%T<;P7|L9&^T_O~yD4M1wIXJ{=syUbF==7J$(`}=b z?%$vK07r|4`k4ZFGw=UI3b{8!3yWY_&7Od+-6z)7p8N#(dAz?a+xt;*6I9}Kl?<6o z8<^md@P?s{&6(QiHGB&03jkq<%AURLZUrPBM$Ux}VL47dK53}fpRIWu4 zJ~T8`-`I!&ji3L^X#5eh1YgDj_N-2^V|=LUC{J_=wXQt&RvMNI>mu}hPDv-AJZ2_m zr?0C~LWXFIsXEj8ft;M{CvOB77Z(QC?!Oyn-owo%V_Co4k;#{%Yo>SDRbteVp(X`zu9tqLWQpl%{Iv6i8($k|OBA*IZ+1o+%ZfB_&s2 zcr3=gltE}#iizWsF~CSwP>s2Gc%os>eFsGve~*ia={`LJLo>wwIyyQ&z^E1*HewMI zTa4FK^>n6-12APOT7_Vw{K$_VKj`UUxzpEr>|X`>9AcEy^Ye^2I5;xlGu|y7ice;4 z>$S?#dEEfqH@&vT4t@kPSKK}XW&M6Vmy-+XcrTzVB?YTHQ$Cit*kxTW({r@azNgN| zC!?)BHwBQ9SIgXM#>?g~@fZ=QOx61`G68x|%+0fr*C1mr>DpmnV9YiWiO0aiK)VK& z3s~ODiWNjoS;vn~U-^wbFTNdUt03QZu(YYILN)H}fVPRppV>js= z6qG3Hp^hwI{QU{7hK4>ufB08M z86RSQh#bT)gMyqEy6z(1VV1eIQi_`s__Li2pLhQG^?{HzZ1x+!W;_|b>aXFIpKOus>{mwq%Odz zK9`oN(W0}z3*GvAb}a;pk&G6bJU|6nP*En&EgaMWLh6Bv1VLI5L4=$ZQe8R#W)NSx zot2|?gX4b052Va6a5|J8(zb#!!g^vHDk+8?Qzsj6Ov7M`Y_YY(?|gN zvZ$cY7+729iv(#$*^d_10Pv)STI*h@sIXQ$rI^+GSg=D%R+d3nmWNnitt z`(3??1tFdla%e`zYHn`3fE}0yix|6uGBPr@ZU&+J6sVKkU!Fg^*;I2d9eR<7Xi(S` z_&K?lryzKIgs6T=1ep+6*nkZDpvoCRYdF{))GxB1k%5f&?Oah(QVI$j7Z;ZgA3xHI zh)@G#uLs-S(8%Zoa6hq)N(Kf76)0Y?K>uR>fQ+H{V?&pjOKVXX7!_F%)X~*NLyC$Z z4eiVdv{rBJ01`*wlf8tdZwwL($e@)T`vqJ4oRV3KVJOsX5Myu5P`oO?|5#)-%UyK8dLJkyy;CU$k4IF1@XQ;mrb>Hdoh!=#y zm7bp7)X;DjusX0nIqP>(CcuS?Z|hZVOAJG?h|AYCb83< zN4%DO**$yDfjeD<3@E_6gXpu1;S@YrYinyD3)ne2Ha;t?4FI_!Q-qNb8el}=$VP-T5!%yU-0~!Qk0E`PYxdF$~X=@WLA8gJH)%l3q zjMp40ba-#byIG z9qN`*s1mgq26~;z&Fo5$8LwTth5*T47%pLi9RxAOC=H028Fz1Q56Yj^dw%QJ@$uO) zWMdJB2Q!f>(EWkK*Y<)yzHxM7`2L5O@T1kv_rAy;kjeQ|SI351T!L`)# zw>`_v6I*f;f@Y|4_;aG60S%(|l9raAx*fH3K!b#!^aTV|xIl-sHp?ttY2yT;=giP| zLHgVrnj4QVhcz1Wb!2F0@)en0Jyf^YEflv`N)q~;+us1e69f!S7|V=f?PSmo8UdH7 ztE+!5D)LK6ps1;>js1L;jxLhv(MMEr=J`@z!(@Yh5fqTKXOdDog2BWhqN13-pgL+G z-%;QLxXxuH9b_b_KY%09B@j7N(~m(xDAO5T0s`R~eUD2cOG-*$o(0KgUPh)D7H$K$ zCIw{=?HZ8nM-hKvtN-NX0DS-i0J1@sINDic03jQ-c?h`3o4B}-8iCM+cGkwUk9L(|#n?7j@_@2{OmvGMWb_Z1b{RFo~OV+UJ7db@}~ zVT=H&xefL@WLorobO1d$W4=6l49Zk+csS`_DCWO01xra%4@o}-Ir(im?}M}p*x2H6 zRRSN`h@;>d+F|N21I2g?eHahf+}pdFq{NtzkTCt{&kf`QXttM0Ni+NIn0H;vIDQre zmx6YUIaVGO39%CQ*vms+11rBh636<49wbRfU`HyyLjMV{=mUuIs%4gsQ7EPXg^F}- zQlFGr#s&rTLKkBT0C0QgCK^`hqX$Cx7p#`k&AW!N4Oe?b%&>a1GEUzJ2?4LrhE$ z&{eD$xo|}@MtG1MN-LOClxnle$}2+Y9a2)xYomvns5uCrb8AaV>IUo(f%1P7ls|L{ zC_IdSP1If#s^@~X0A*tdlhXL;SsnyrhJir{3JbRbfR~c`voY0}u9~y6r(Nq_c5ryO zsZT|p-kN<+dFLG@HbHSC7qq(ub*L9Mv#_%AYF?#;O@yE~bL>91s7Qpp8U)BiTwHVn z^bvXh=vBH7K+)mbmuVb9C#xN_{$0v7lm$H#oP^U;KoYyZS($T#rcu*EL(dHp7I_m) z)07~LzZ;J22P{E+1gqJ@C(rNGa&T?fv7tQ z3JOqqzXvXPxOvrpjQ&wMCE_ZZRy{CvpkD|gE8B{ltgWG;fk;?cv4TSS%CIqD3i3Tz zBTVgp(LS5BU$y#Ox>(c!6Je~{_)sJ0Uy91EI%+Q>N~=c&zF^1R&ACOxo(Xq12A)p3DcDHLmu-`Un6Q;@s~%yyB-j(eQgG zA&ah5zi}R3dV2A*gAC}`AvrlYrI18})RyfA#k=%*5!BX4Eq0%tG@ z7+?kWq~67NQel&%suyKuzGe$uidNiPC)s1|4vP804-k=0fH5_pErunJ9FL6EdQ`yj zWg^lm)U7Tbb;b{$z2D*GW<6HrD2qaJp#2-!+HyqSQoIav7VR47TR<;gzPx~gi+dRu zHf*kZ4`$()rp`xhr)&>EB?K!@2?QIdjBYt#lTUvo-f=&EYG(ETq&*bFMM=6qIw@>z zt`LiwGBce$QO$r-dkF{!lm_VcO|7lx40D;q?j-XWHK$n$ z398f8>0ma$!FmVXBm#k{2D;Fcvbxv6|Deny#Bm3!i%`eG>kvF6iwEh8TCg`+q31HWgscnd(ZB*=et&LWJ znIp44Ub}g+-O0egK?L)z5qwWnbndS+J|4&J*Qs$;L4u$+LcCF9*n6ghpbBL=QP(Qn?|;O16^N7W1hH<-vDJaZ;ca07V?0ZV%Ntzoki9K>z43{-Vg zV?&qF^FExt?3K4rWU`xapec5=z<|;zTwL}q(_L~oJ$jCVk57W2)&ojv*-G=1_KBdr zqdF})OFKv%6a*5n99%id0stog=I#A^_g<(NvoCGG)%RusRm;fCjB&m0{40bQm7&Sx zdp>gRek&=qz%}2Q@)qQsproWENX5%RI53u|nMJG>bh2pJ`5O$kI^GFLuuQ&V+he^} z!-zdhl&)nj%lsSyrqb*F$0(nomZOdrWrKZyLgxT}bONu%8z@sOCa}1B^0ftu%F0N= z>#eojN*1(FSIgIWj2fB2K@BKL&B{IW^vqvw#a1+~j#T_5V95dWc?$Gz>vVr&S@%Q8 zd7~{{J`lNw5llxheR+ATvsVKD0hm%fJzPK?2?_!+TNXhzcxkB{V1*#xLr7WVcZ%p+ z;|3$AjhVh&+g~13w)KGEJj!Rm;i0GhAD~u$^)<0ycOdl`2jvnE$$6X`SF_c|a+#Kv z9dH1zWrsAG7u*s^fe*!Whq}8}zBsQk0~bY?nEUx&gT9O0L*f71;~A&+aC7_d-u5dK zJ3G6(xGd1(wsL5v;NGfyO{x|&{v|7Y6rGsJ`d=XIR8zDJK`_@*|1Q7>)NW}2WHA~y zx<>bnn~>@8G?32%O%0`;<*4Vs>nVipaR_62$U#mV zRpcil^%QiR>6Mkd{gDDt!GWD*OQk;f;*T^Eote)JACly#)mY=n@4wRjTPeq<6||yh-TVN2?qk5Lm;m zaCgIxau)ib4^Lhk2+kV}7n`6@o{v<&f1N!b7%?+JVS90GO)p(!&hV<%4X?giv zvd7Ls)TXOQl^2z<0_?^MmZF~nVf^EV4^2>0_5;Olfhs_*9s0s$ZS)5;HX=H)4`pSs z2AtnvJ3)|4hIkFXwqfOm4;K#9r7juR*ZA6C`uJ#B&7M*ot9CdU3Y6j&C?&hEIvue;87 zEuKH;v#B^{pQfzxBN?Nzgem@;774bQvuA7LQSkKDM#hVPooC7q9 z{XLc|K5s(*v788EJMk6s>*J+g1v!u?9#-Df)zga@T>hE+ElDZsaBCJXl#JsRIsRpQ ztYDc8&$E++ckd{n88!mjgXLffdupp(VF+4$?u3Vhp_FfGLTm^Gr&m=aNCpz3DSWx@ z2>u5mNF7l#&(@AU2}F51S*a7m3dbbQQfS3{?qgobN91maAHLz}nCm0N7Ih3yrn z+ofPHq=~C*Jor9QKb~4C@4@}Lxw+Z+0E=|PdxuA{-PGLad{uJ9I(jv?xcH5$Nb-KX z=1-CLu8QtGLUl>yGcz-FPFrM`iC#arQ4)Mff;skGxq$JLCluawDNnh7)Yl`RIe+N2 zfM$XL=^1R-lLM|CwUEtCdjPtbEb&2ddnK((_jr%*yjy4N1VJ8AV0KUhcWYOTkj{;yz-v zwY8;XWyFMmKb~?o&Da|ik@NBKmG3>$(!#BW7*mzYIxT#lN?3@8LfOkp6g+L1-0)95 zM4CK-%3}R{&I}~G3+QNCT3RUB?KszwR#+IhzdkYJP<61gcm@8Ih)NxH9rnSxTVC|^ zUnF@Npa$Fl=uJvWdgC(A+C-i5wM&y=6ktB)aIPM6a&aknzN~&Z_yXM9%SOWj{kmV^ zup$m*&wRgp`BIbeXe_O0WI&19S*Oy@4~&lOKR>Pj!)*Ef{kv@v#@lvjWo4r9@bDUs z{RqI%y%VSl?d6}-pLMPVW`J@I;V$7~7gkoDF7{-qJ$^hq-U*=^%~EsXV5t|dp`d$W z;yk5kX4idjX(|2Frw}la?T`1Yp+oU`*~(-^YggE8Zp}VmZT~j2*)=pIcPn~orZp0^ zDIld&7Vf1nkSI|Mw)S%pN7ZG=0oV;XIbVkY9Taps4QM#A$~^`!7t>$LfRYgNzj#04 bt`9o%XvIYM*A~zP5#+wKl2pMxgBSk?0{U*d literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours1.png b/doc/img/toolAndFlavours1.png new file mode 100755 index 0000000000000000000000000000000000000000..db2fd0057eeb52081bc3e6f20933fa0343a1e9ca GIT binary patch literal 2561 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℘BSHcdC|-yha2{ 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 aT=B8tWRBovp)m2-9-yHLQK?k63jH5(f>LMz literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours12.png b/doc/img/toolAndFlavours12.png new file mode 100755 index 0000000000000000000000000000000000000000..9bab3a882b9d3be67c1d5b4e13b3a5cce8832ae2 GIT binary patch literal 11127 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours13.png b/doc/img/toolAndFlavours13.png new file mode 100755 index 0000000000000000000000000000000000000000..7f36729737f6eacf31d0350d45a9c8c70e5c52fb GIT binary patch literal 19540 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours14.png b/doc/img/toolAndFlavours14.png new file mode 100755 index 0000000000000000000000000000000000000000..66d57d43c77aedee9cb2308462a6796662b0eb88 GIT binary patch literal 13677 zcmbul2RzmP-#7k2D%-J%h*ZelTbwA$-Xkj`GP1JCJd!kw5(!z^d#}ulP-JG4Jt}+s zU*~)O@9X+q_jO(O{U4P_bq=5N`Mlq+_v`gs5$dW+B!mov2!fE@zJ=CA5S&o>x^w<4 zymGnagAn|6)q;NCz*TbGv=_=D86ZQWD8C zv?e&^2*QHgM&Ho(99{eAWvo4aa&EJi5098L62lsFKD8q?gY}6$t2g`iu9+aCY=gLw zI`3_3?_)1PYOb#8x9$ZOVpBEkX1KqX|9Sh%%lfNE1SSxJIUk6V1AoyGqR}ntEUc_yxF{4q6$XPzkwc@2@mX0d zu92fq3QsVYPYGcW zTEp;t;4a()&%emTbNPMwRP9`;r_bfw{Cj5?7_aGVq*aCmv|v!3-mTkLE^cs8T~$fP zMH2BhpJ65r;6_skz1`PHhK(3zI_ntc>vw~4U&g+h)ao;-BQ`Nq9`U}|blh3y6cBJ~ z(VX^C4nZtYj5^sLxGntPi8b)^ytAnTKQ}8HR0XX{H7%VoDq25BL|wYHCwg*dpPH0! zxrpAMs}K2L!0#-5(ZoXhd0Io*w;9e@OA5l3B|qkNdgp~laiI3E^^$Te=5+RPD7?yV6LPs;IT1bGUJVRmbmecpE8eq z`D1~5%=5U7_-_#b!4zZF0O{JkgH;Z4l+L$yAFWThxsPVsnxGW0Kk)5wINL!CVUpxy zMMp=T;*ye=Nl8&o4aYR!O}9RGKNhjvb&Odux)ps+-o^T4JN2Jux_wT@FI%~53^rWm za8*!9qy*2IiN|rBy#K~k+$7b_wTej@!!UsW?(MCM@(XD%t`TB)GWO`c={G%jF3aBO z70;a!8}pAEc&f5zpE{WRQA zV$=J1Z0y3ld-wQ6M9w0262(vx6BC$c&+e~Lpa%Kb{n-bNsY%P2?@i3>C>4=UUDX;sKrIw z(g)uao%B0eTk-k%`H{fJM!76)&g+JySslf^Ceo>NvoRN`{!9+#PbIGH% zjTBO9+oGAHX}Ap$B#f9o=)w1lrmn7>KJTTaCC~M$Uxn@~x_kTk(@~-mjc_m1D=U$b zkJqVq^wT+yl+b9MeC2?CDVwj14@ZjeAFq!$eZ2jeoSa;J&Kvfnxy*iOYI*tTd{;b| zbT}MqIHl%o&**)vFqmcUYcYdm_WR-C(yj}{38GH<6|3LUReW{eEtP9@baT zhKkC{@DVXd$=N@>vO`9?d`D;yl|%QqPG-Z>MK&?u^Kh-A$bN_i`#e8>{8${!p*1!(CZz3b7DS;2&tD{u#$c$hE#yBoB+f{R z2ES6bF2^6_C=Dhd*WtiVWcY|@m8sqj9(aMG`t<(xUn)dyKx&T>rJ4SM(PUGaJt$pz=VP4lCpKfRdfXeCuuQr%qrCve8L23c9Xms1eD zGx#J52WhUtwDT1z4byvDvwVVr;cv6)wWIw{Uc7!C{NQ`$bWTBih+&@M?)uOE%*V`7 zKgLIEthxpFqGGx9EM~);iJ2s*kj<}>8&hpj7Yd7ugUZUb(_DG8Vgw>EiyUD=PtNL} z>=#?apZf1U{<}ItboT67{hD6x zJaXTDj$M1xd#}u!UBYb@`}|d#zzw;&I$Gm@TG$0| zLiRgCy@}$KFJHc-6SkwW?ny|mSY0V-fMb~?QP#&Hntb2dTGx$5`e5PplP5S=Ya=jr zH`P+!6nxA#uA<=5&6TTg{8?x>_(^_+N!;b~>Fd)#oYpvv_kKBhgZiwgqx6It8X9jz z92j!*@`~W>2-yu}^+{AXO`d%bAhXaZvd9_x6sDN=1%>I(SS~t#i!<7s)FMt3&wk_? z=@|uoeGiSFn=~|>jG2`MX7BCW`ek<1-n;82s~#dEB9$I%436WK8g|bAv_Q!i`yG$Z zAp~%mTi-d=N9f)2N^f!Z*;yq(hRf_}?cZXu>O()L-i$1K@cqi(-rm$}H5m@~;|R*D zxJVqY>GO{tKT-_c<(dwE1P!Z8e!AiGnD=DAH{f%BKkA)`Ly)4@0q>XhUJLZFHq`J8 zZE!$P%*>{?N%lke=J3J8h30ss1kfTs4E#9WoeXHNd^F3#T3A%n1V>E8__RlK5)HM4 zgCzU@CJ+!5EVAxla9bWA_*wH+5q=5C6bHM$7Em0bzW) z!ijo0L&Nj4xaRY({mZPWnP~zJqR~t@{uj7`MI_oh>Hh5QOL0GQ*;!N1rnVG(q(Esj zf1YOh7g+ND0J;48x5#_h3Nc`hTD@zY$li$!`1FwxVX4`%ao|ticEF0iCQmgdwjI= zgByF^#l^+nNO=jsF9eC_F_BkSC%=CEx|xLqE;BRpKl|h+!2|~h|H6d}@FYSGqg2v9 zJ1x-s5hNla;yfv7SZpjcF$qb3zKJBZku@?aNHY8VMHyB&l0X})J0uG8C3NJ~FGM^% zJo@a)=wy7wG_|yF5FQ>LOhg0@a^~z=`E*V5{?wZ{xvE?v4*SWyvPRKys4Ib zm7Sd(Tsde@ELs_NP^PA)1Y~5iC{&ptH-gR??Cf~SX4UtZqrczPLOYf3-qm^k$F*1b>TFvSB_19g zKOf(V;B#clc}_MqS6vsnH9AeoAHF3=4O&qX;-gS(Y-~6zD?aTH_7Hx zYOcRKrpDK(g#N;zBS$POEK+0Ur>8F=_g8-8wZ@e>{**{>;`Mw6$FdlC0mEb|&s6u|gDLQWILPCr%RdCWUwI5z+MY5tldiDF_R zK?=*tTBBu8Ft8E0$oTlUnVsDyQS=`%X69r8>2eW=(M1#M`}bMc+3|Z4gt`8>;sx%k zjVa{maz(FgS>a2#FP}kRWZ@y{ssIu`xrECb8Zu1y{<(|Dm00)mmDs3_SGyA-Q>&}b zdSy?IosI$2$mI-Lv_EIMrK~LP>nnxrc|Gq$*@T3s-oJm31n%v5e$32FyZ!nKLa27_ z0s}+b(pGD0YtzUGJ?tAUVq0eT=H0trY9Hw6uDLR{{)0t~E1hw?yu8$N24TzsBKg1~ zguyTvU%PHxN!}I5-CX7RYjbm20S-bg42Ⓢh=^FS;I2B&_BO=EeAj8EPhKTa-6J> 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 TFWpZF{JMQp6`e0{7W97s1AVaC literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours15.png b/doc/img/toolAndFlavours15.png new file mode 100755 index 0000000000000000000000000000000000000000..b9ebcfeb95ca6d066295f8217b6c68a8b00a1a92 GIT binary patch literal 19359 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours16.png b/doc/img/toolAndFlavours16.png new file mode 100755 index 0000000000000000000000000000000000000000..08a208376dd1ea1cdd30493d81b14b8663d3c17a GIT binary patch literal 19038 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 PArJ2>N`IC#diMVS;@C3p literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours17.png b/doc/img/toolAndFlavours17.png new file mode 100755 index 0000000000000000000000000000000000000000..a0a73c073ce5bdbcaeec44ce675802c90be3b820 GIT binary patch literal 24914 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�dBLt!$~{G*ig1#_?DBRiIc=)P{{l369Lcj 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 GZ~iY4UyJYn literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours20.png b/doc/img/toolAndFlavours20.png new file mode 100755 index 0000000000000000000000000000000000000000..fc96d9304afc332aa3f40a6523ceba8cff20fe7c GIT binary patch literal 14839 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours21.png b/doc/img/toolAndFlavours21.png new file mode 100755 index 0000000000000000000000000000000000000000..74a378fd9f27c4d43b28075f9f083dc74251d760 GIT binary patch literal 40078 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 adY>29-b?OTg8%x2w0o!djzS}+kpBTK0{mS7 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours2b.png b/doc/img/toolAndFlavours2b.png new file mode 100755 index 0000000000000000000000000000000000000000..fa85999a18aa5a3132ad923fb6aad42c7dd67b5e GIT binary patch literal 11228 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 SYd{|^=#{hr?1!Y``~L;NVb&4= literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours2c.png b/doc/img/toolAndFlavours2c.png new file mode 100755 index 0000000000000000000000000000000000000000..08a4f9392b71803e89295dc98c6123398a7dafc0 GIT binary patch literal 3095 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 At^fc4 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours3.png b/doc/img/toolAndFlavours3.png new file mode 100755 index 0000000000000000000000000000000000000000..69f0f463c11f1c6c2d7110a399a44bcfe419eb7e GIT binary patch literal 4919 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours5.png b/doc/img/toolAndFlavours5.png new file mode 100755 index 0000000000000000000000000000000000000000..2b0d71a2a46caeb5665aaa3048ff23dbea66c20b GIT binary patch literal 3150 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours6.png b/doc/img/toolAndFlavours6.png new file mode 100755 index 0000000000000000000000000000000000000000..fae49c9b875c4cfe44fd187a7eaef56d7bc49e3b GIT binary patch literal 4537 zcmYjV2UHVVw2fFmx&=XsSipz~DAK!tKq#R~2_1Zdjz|e50wRd?rgVaW5SsK(=v8{} z1Zkm$fRRqZAK&|bt-of?+?g}C?7Ppo=kA$MEvPabH7hj;1fqkeDC&Sf7qWqSDXJ^L zwX-if7AUS*sVOUh&i@`?8_@B9fU!OwfkeO_&B-XlD@+grl(^ik>6+Piisc9SN8I=v=>lNitM1ssth zf0R6Sp4D4)Wz8Qf`xN#?flL3?$JDeb@MS_VtQ&KH(`l7r4;!o*e3V*!I_Nz zB8G6v)qlx#YDXT~C|$`i~ePqhfDh@-d{#HjN*2zcUAm8ZJL{>4n^E_2h-1fuoOKy<943ijp2G=YB`i9t)_Z&KY0dUNx)I%F&_%wcrg zDG|;QhtO_X3s)k0>5uKdu11*7NcqJg#Z<8`r85Mo&!8LQU#{G4fqB8T%s%wtXHBET z6xr#Vu&UVLtbxSYGUTCpm*(r64tMuLN~_EYdsSo;Nd{Z)3O1!c_oI8pR`?0ER{uh5((gdCJL&lcO-%NicVg zJj!1{>!BJ48>xyAS!-{zif~brZztev-5_B)!7UIO%!}*V!8+v|QI(c=n%1LaCu@w~ zp5V&adf$HUE1V~_@I|7(t(fYu9Kr^&XNAq#my$<*x}8qf`g5~JUZG>XqO95a3)jDx z(FET3B_YI0CxcQt@#F}P9|#pU*SIf;p)n}>Cq6YpVWG(SsR;eIn(qOXlDFP)i_%0Y zsTo?_l$NAl^J#f?U9_=(3QeYN?l2!H!G~l=tP|01T^%)zprv^+*=+EoneGqoqcMig zr#(OXmtkh~9XaxW5quj&&a7cu_UfWyO_YW+nfs&c^}zv!&@uo6cU(sLC2K??)!PcOQm`sBO8&A=+vkrse;P6HgEH0)FEz~3X*k38XkfMBpSF#u zOwMRo7PX$x{U@{JTR9`wP1wAjHl8C>gzX@qc_k)nn(krQrd}?y1`yGS9CK5))tH)rtE)1r_!CU zT#-Irx1Yctck7I4+HC*RvLYlkPjc+D-dcX`GH}3go+41Kp^!EFb==n5>4+LBl>&P= zI2GNxF-;af;4lv{Tk8wID7#wVG%6PF9e~rAeQvkQEQG4aHj_k7iCeXXPA%n{B|5CjPJ>d?6URIrj+{6bJrB1Ih^g4v63IM&=<8#bhNSz zecV}ETb3msGZmOi@9i3zq|IwRnjoA7S;G&9AOCp~BK>|g$Q{1;5d!*-nuq3=@^y{I z+fIDH43%J(nn%_q5ucyW{Q+Z-mt`YUWpoiuBx% z3&CjqZTLYx3)X)T1X?~7XrAw23%1(XEZsh~W8yHDGUDO9_CEbF94;nw z9+2tq1$&yTykON!9`qtkyIjcU2sz2rEqL#4FU%M)C_)zPPn8Kk*P9CyYc^fWMB#}= zDC?FwW^Y~_HnNOmf?LakFYeaL(BoX12b?4tbLVh4ZUmh~o`V8YyngEtHW3%mPQSM0F@pi4sZHp)GMRXe7tTBG_x3>ZQ} zr_Zk=Pw02N0(v~&;LT+hP1$DGaGjDp89{-J%-j_T*$hp~H`V8h-N|^9fd;v)7-tZ> z^r7@&uyj~;3zgj9!82qDk_!}>HrK-xZ>4)}FGIEyaM2Jyh8Ywx;J6C&6Cv=i*-r~J z?N&1khdGUbp+3x+tv(b(7&~9;Ft^&c#L()NZXAhb+Sgs!C;fRMk>BFa)hz39Fz;$s zKB=zaw$f69sNor5GL#lSKpLMjoq0~b-=9Frh()FMWGMTY;-#uYpa;0^?qny$;QjUm zaNmg8{#ukI#}1xG&a0eKEb&WNwDM>f3&o7vhJ8x^lw&1+bNfZOuf#>h6;8-OWL5rF zbmcO8zv(gWq6FSW&4yJdA%o3Vm^Nuu zMWs)-b%V(fW^3vr-->yjF-f|kglua>OP()qz*McHZ2&m0-~E2Vzh?SXq5a1A9RhNB zrCj}1`i*PvIUwT4k=c*F-Q**9fBLC#9dDl{qumpsW7B(mrxzxu1h-_PIaBA zFWWpl&&uU$(vc~|PZmOGuzr35Ay5}wy@J|w3F3~fGxBJLsuL$R238)#FKvBifP9(` zgBBF;i_H(DiEja$#8~$5qC2svQlhWNQBuU1b4HYZu6MwdFF{~6FGp5C+U=9jxSgIgW>e^mSc!spITCO_+`nkPu%h1h9ZVVK!^Q$S#*!;`tEw*zuZ zQ0y}0kjw)s!iT%Og4bk16EHLX)?ND*3$2w_HF$_}Se z9!FPKEv(Mbh)LG&YHgvtiv~~A)HREiTGgWgrZ4L&+zwGQ7<`84H+)D(reK)tOqg`) zw|4lOaA$&KS{Fx+e`1iEo$wbj9XWxl>5{_f3YB*CRc>FGOzd|Ns;G|-|7-}RFd36= zcxV+e!OP2b-{D=?xSW%WJegN+%Plw$&N}k)f+L+y6TXcnm|m8eIF{ve@^m^EQWNQG zpKW89RJt=kDT3k6C_)7$wnSStn3ZC%nCW-yQjPJesWNg|!%G|3l_DP1aFIrNfHhDB z?PlwH-PB!oVngZ5?Sb4bo4DQRGVV+p4H%>3(23|25Ze5a+A=zZE zRvLtmdU1c3BjANnUU;L~3#s!JN9?hE?rPNX{vxjfa%b!{{dkU(@2T~mN&YAk%9s>f zSX?C3JxM#RwZveJC-2mM{Qcz#qOMr@UDI{ld!?Mg#68~IaR^F3S>-$ElcyohT}M9` zc>by*7C^k^UIsU)HPoxcxyDVgzo_g*R36)V8#NXrry$j880Cf5Gr0g&ILA|l1OsJQ z9H0>Iy@UW-?n&|D41^d!?+roUix? ztTIgh2W)!(;fE`9OY6f~!qiV>WKbm~C9@+NGwp8R{uJSGY=f`c{^qNP8Yy~&Q)2@z z0r|NOglZ(KuvKTo?Mk0`(&=G*VxmEowNfN&@USh0FTF@Z3ZY|TlQVz$+~#5YM$xv5 zX)K1ym6_u~FgB)Fhag0?Slks8OS(*R3&hCArsm@#aq$Z6T_K^* z!8FXUD2S?RrbenrOu$!du&^hy&Ss4?R8$r-6?Rg8h7=SP74>Ei3ytq8oMvxv za&n#=;ME)*3&$mC9rg^vn;sW8ktO{6{JgxqhcVu6o;!0_<&>1JT%@FL@9m}W_xE2~ zUgqnXn(-_j&QdP7Y`c=9o-A)``zS9jPsIA~Fq>m}6%Lb86F-b+=NC4AySQMQI-kM^ z*kP6S!S(f$Hy*10Iy)vRDl0GJa7xwA^W8sx=6M#4_dr^@pM zg(?~u8Tnh6L&9Cl)zvjWH&?|JW-wl9w zJ&q!?;{Y?}qh66pSz%F8`r_i^n}0S&dj*f|y6BmCPT$#l zeyB0A6J{2~=ux25w7!c=b@|=FZ2ksd`)x58433YFZ~M%nJG9|m;j(~AN@7WPVq{g` zFlpvXXKrqeeD}_KGY{=3;}snl`4T<)ZQMRIDynKbH7!lu&W=Z*;m>u}$d3c*lFu!g z16Y}GDZp0=PRY+tCWM|Nv!*7gxmgaNMg;;{T=^Lfxa1-n4v$cJAkcIs*qbO&U5nRm z7qM);l$M@8Y%3(ZSzUQH`4C%EBZfpGsp#mkeGhlsw#A{G2BO>&AP%$F$riyTN-rxb3(b%*%_FU>ye^o{ z*BzbO-f;0q5pjZTc@Y%-onNI@yO~knvqyLOqi-@YHXrRRdmqjt_==^Eetq!r^?mM! zQ}45RPD#&hF`W5QirDuYbaZs22m4+BO2T6^2#U4_Gz4gSx;#YKVPZ-u$4Y9v!@nHJ z9|t@0;nR+t7EdjnvH-#2zCCpfSkpPsbXCCHAh0HiOI&;!SG76DCE|N(oW5{_kiI_n zBdk0h^TebkW`Aq47yN+{p{5;JwjjgH!*h)HR4ax9Ne@Zv7xnV-87VfG&C$$&y1NT$ z9Yk0xwTJ!%>w?7?`xc-l%dI-7af2Dr(a{WhdwUTq&nOzOCmI$VUisnYHnp|25gd}Y zTwGkvNTgcivEbFKS8Xd{KpyETweF&#rEMP_jkj$37@M4I=awo>Di{5W5dZy%V-Fij zp34_2=;;k(;+-nB4nYc1X)6n<^1ND*5PrL&BH_L+XJV2TQNk!cb|}fMT<$Q*UshHI znyT~Qb(k#5HgED1tdpm5O&p#KfwGIg4Z5fBF(xrFBqM{9xHeckE_xr>d2)^S-yTD$ p?zPWD$XnF^x5xbNkBf=(iy{H@4ozoddEh4t2=WrDSR`)|_&)+(7;FFl literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours7.png b/doc/img/toolAndFlavours7.png new file mode 100755 index 0000000000000000000000000000000000000000..c401e1b38579985e5c7848ec4cea29aaf72c9425 GIT binary patch literal 6026 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours8.png b/doc/img/toolAndFlavours8.png new file mode 100755 index 0000000000000000000000000000000000000000..2784e222cb22efcaad5f9604ffdad3f7a5d9421d GIT binary patch literal 14516 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

hmUEjLnDfDc6`M|l@t>gY-(U0d zC(8-lMjsy9=E|k%nqEEe`?5dZP~mxH&qF8@Pjq?mTqbeW4UU$O z0lnsGImy=kz|Pjb1GwR#q8-`To41a_KlO(2Ox)?h?xOhBvNVsnJh zi89s2!z&NBT5Pv#(i#W*cZ4rUuc_<1J%89UFX126MA{arR<+cJ6kD1LDxjC-P$x{+ z@Yvnqfa+IYT9%Y-jdTX;H$B|%H+%c5f9^WIS2Sn@5EHF`{-855GLDRlOf|SbHMW+Q zm&+ww_((`d*x1=a(;A%jdc$7v1qBB`pkQSDak4Sk_XR8S4b?5~ z8p-KFnE!L>%LXWww=X8-xpB{g&Wj{2f|8uaF;>My3k`fKmX>7|RYr*PJ87N9k$7)) zD2TV(av;4$Hstor%jis_QSnFB7Bc4I#&-(t%mfc-tBhCsuasTN@|@9W88kE$`U>iM zJa-am=Y&3QTfRigS&T99SXOKzrr)|^HM$m@jy@#Myri(i1Jlo$k3U*OtQC3It#~jo zGnG|VE{@+dNwY8(3krq`NLMEm09`nAp~<7dpabptY$s3=&Bn&2V&oN{bI1kUhrC4f zhiZ}0{#@PThdw|Fr>3S}-rU^J=T(gAw{NX_%)idmv>wp2@+7rW z$>{bmwr358dtccJ3hvR^JKO9iqTVKEmD^$ns@hgUD85=O+U!WxBWJ!lFABmd{eGyG zMn=TQ>==id!5b5j|J(~*H0BvOgYihFfj2KcpGW2^t|?@u`?#z^i1Ans

eQ$vpQ* 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 literal 0 HcmV?d00001 diff --git a/doc/img/toolAndFlavours9.png b/doc/img/toolAndFlavours9.png new file mode 100755 index 0000000000000000000000000000000000000000..af2256daced56147966e316106e30a4a4486379e GIT binary patch literal 31074 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 literal 0 HcmV?d00001 diff --git a/doc/img/workflow1.png b/doc/img/workflow1.png new file mode 100755 index 0000000000000000000000000000000000000000..6a13a1beba2a18236490a68b1529aeef33fa6017 GIT binary patch literal 9581 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 literal 0 HcmV?d00001 diff --git a/doc/img/workflow11.png b/doc/img/workflow11.png new file mode 100755 index 0000000000000000000000000000000000000000..bc87f59dd8bfb5cae1efdef33ab96abe792bf245 GIT binary patch literal 21364 zcmb@u2{@K**EW12WF})WHz+bxNM{0GlSQBE2;LI0mvks1jG{ zZ>q4|kYhQo!y?K_cJ>ywX{@uL8y97hMo8b~W_&!n+P1dL-ieNQ5ekZXT$I?&?KpXM zGRJT6-*s&H{{ARvc$`ZZO8Siw_A5zcYZMy9uxOvsJVJoj9R-eCPp)z7RMOZ3F)N3PBp%s z_G-oiylx<@!sn&hwS5*#i-Uw?RhOx-U$|ILtrDzOv%EL$z?g9I^zXX_u8dm+ zER7yY#K(VpY4Xr>XXb{TpS`C(rON#&+X?A2QnzoneILj%5GP)E==gABG?LfBj}l>j zf;2aKZMydNS~jeIV@J2AIp#z$yD+aYA0Xr^jtXc(Jdkt)yQ(eR4e zcxN?fihYcNf}-NiE|)#L=ilw#ti^T4s1d~84Ja-yHfxcCpBIqNgocE$M7Ah=%+@Wz ze(~Z(aY>1!oE$#F>v8B*Tvj%{yEbj{2#>+8>>HT|K>sxHv*Y(0!i|sU8|Si-!k+ ztEZ>u=kK3haY;ysJ|ZH*>2UX&&O6xE%I%rkQc~nhOxZNenmPKRtE)DCFJIP;jpF$KPQHKoDI#+DJvVsP*H z_?Y+RO?-s-?DbPOOn&&if3K74W@>6W|Fi6-kFW1Fn+b{XoiW$bL`1%+sq9Q*Zd&Dr zv0rxKE~POU+bZSn#XZG*e0)|{CvV^VAV@JbHg<7tq{8*))b#Y^(o%?Z)se=+(8_QD zk+-+^?u0K{u>-8^!u{|8bvL);ffc<5J~cDFX+1U*jb2okq&{~?6;U`uh#8Z) zxjEvMl5$=nOB)ld!8;1)Ncurw6aT$5e}7!WaBZsL9ltqEa!N|@?ArRe)VHVYHp|2O zUv!E{O*-Nm#wuK|+0ES@Eqf8B697vmwmtLf$H(Bd7@q0T61%{V5a|Rl_s&Xp*8-9K z{e3~lCAvBIb$B@WDO}u|+FEQ;mrbw8$op$jdlU!o!PK=pX>f&RpLU0~;IDsozaGsz z|9Yr?qt(6C!&&vR4jj`o(sqwbgZ5L-$h*$e8-F*B)I!jua?WKPVWB#_P6wMGAe+L% z6T>;A2JaAht(kMTARB#Dz~1q4HT_Xbb8~eQvuB82nd9VS-OJ{-wz?9#Ula55gA)tu z@QXy(ojX?%!L*vLd+f>|suLxBzZ%wHfBz_4R5S20kb`c<`1)B3OUt$0wa1}^ z6^_esn_PC%Q4V|S#^ncp%INsbs4l6*>n080ojPUM9>>25OIT#}6ArGSl@;kj9EK>4 z@*n)U$GFC=Px7=)6XLSTC?4=N-zGH}FA9&2(>9A2w>}Q~X3|kxT}_U+j~BkiwW}^; znyzBIz4UN%VJNfqpr-~0|IyQ@0bK8k1a>9VR9~EZ!f&tJ@@c%lcC_&Mv(V1)y03+W zbIv|#VyB!-&g?q&wW{@;xNOpvzF5I3(S4mDaCG`SFEhZ|6IF!?$zvfv4?3lQFeGj?X%+j>aERblI z%H26|L!ym_RI75S&CE2RHGA=dlv&b%OywQjO@IHAi?U(#z6U#JGJ21xubhZ0Mkj0L zj3HjeZPB+eDV$1V%on0dNltDZ+)lH%Uz@1G(JgaSa%umXiLYd${+k-k-j~xG?>~q2&p_3^_u&z>9sHM^Fv!!dJaat@9%}H zx|>+om3g|=FD5gzIR*qSEiI{~Ub+AIG-6aANOAFV*x4Jh2stS!>D1BAIPLwIn?#h(wm^C@Ac zkZaF6S#mv&Tuc?@<*zsh#|t?qd@-ofr=z1gt*EH@oBt&#qnggkO7{c85?yYWt%Zx1 zl;SP~kTPoj8Y#-Z!p0_rkgrsoRPwDruu~!R`&)~_v*J#xi3m$Hw_b+8cvF)cLe3~; zPj2_?2X*8nr86!rE=HY+lGt9mJ5?uo>F(^DoQi`ZBSiP_-;aoo*SBy#-s|urM2tG( zMKS%U$^Y7=d<&Dnw5y>$ZpzBaK|Kq7nYc(7Mv)c@lJ?c37z2+8A2n_5I6iT1Ze^{9 z4+$(SEp0dEluVByCE+4i5{H{TDrUw<<0nT62+Pxsc&>I~=k-tFEl-U0H-EFi1#q3f zn_NKxbE=L@d$)Mry=J(@h6Fk;4+kCWtYl)0pFVx%=jX>UAb%+`$iVaHL0m#~^d$yH zMt`+*s_5uwHX$Kxg))c5=x5!Zf^6*V)pcTC6{&qIh=n*pvvZ))!^5p;q9S?!Agu0)J9kxs6wBd&)u|o>*LmS zSar1ho@$0@4i^^}-fDHChV90U`*FkBT@JQn@=t zG{3N*umMYW?ZqG6C&tE)MhY#>af zi>Snl)WF(YR5~vk;+37vy}dFH;YS;fJ_SMJX7iL|%_nsZNVFQWLR%~2%)ac)m|bhJkLR(kWb=AfQnfxcbe7c#WZ54J6d z&j}D;k0lm<@y9PK%Q7gZ%w`fBUG*Yf>i$#}<|`^)`SGHzH1AWhvPf>;yty<|L`KFW z;)TInR89~J9UaxphfnHtP`PvGa!~}d35jayotc_B&o?v*m9w+68|Gr)zgLtjdlm<; zKv-_wLV;D3S;B(uz|;0P`NjL;8bjLy`G*Tm=9;ECu3LSYigz=~Aozsd_LCYHC`k@8 zdmduJeh3N+)3)_wYVv&1E>Pg|lo?5aqC7uZa>L_jOH;&sp9&&RtrOqt+T+HzC3>9C ziO<|4!P^4_QUl8$6cnUYWW}iOzSXB@5cB2@_U+q{++G=(D!mur+WKVm@fMS3O!}oa$fJ;kLk5Lh1|Yfcc$%2+j6EnBVP%^afJ)k zp|P>?B6nMT{U@#CSB1AFSrSBD1yHc(xTN*u=~E*BNf2r%6pTf8?T&OG!weAw3`25q zGOzo-efh=@VdFV|US0_)DQrLT24!wIp%Lp;QE%U>8#&`{kdTmI1{xb0l5~o!X14=c zjh;O5+ue1VnVXAtQp2T<3s*0L-78 zxLX-!!jOc|*v);fnQMQKUK+ap^78UdCr3M(TXYwa2|sXhym9VImKlUDP((yzwNKL^ z>V4JyROLG=DosP*OoB0tqAu#K_tmwuv~rz?hK5jt{k^>%lk@{x09GCzvZ}*%#VGok zzCLOQXh8typ?&E>ro&?V71@1#$CxXELqx1*%U)?@Bbt=3Xvn(tODbw;4lVSXUNf%E zcb(U*aCwk&lzx5L5H=5T`PAxU-JLskBn%A`d+Tz3JPr>uV`*L)`i6h9<9YIuhD+NJ zUPw=p8OkV3gYcUCV1V^j*jO2>2tGOdCEnTHU7L0kna;zJph<-@=UF4mZ zyU>&CXJI8?a%yH%asFzJ;)J`gFIl|hu%M1qiyyC%UAS~912a1}hgQi4+4mi~^WDu{ z^fEJ#6z}tfxSbpyX$!L~)NS`k!~U|ywB=fk2tX2&-^ekjdTm{~_gU+>Xxu|5L(|GC zn@{}GB|P!N)!PLHbs(wn{6SyyT3p6 z^Tl`r+(P)rk6HJ4DxvIBJn*`-5?SSORJu84r1Y6l*zrzIM@tI@tO+^%g^D9eVgC2; zAh@F-QP*uM9gP}SV_I(A%cRU=R{<7t$MKo6-MxFa9*%v((ZPQ)>Se!zf&$o@PsPt?Uujpi_NS-i zRPHMvTH)W5aO)xNj!3)3NS8BTzS5j6R=wY5^u%*}~ROiXg0&ni%yIRkYcg;!jj zPoI9)`fBL?wV;4{cz75Ec194z-L6N${Yh-gs)NlD=W&rFNZL%IE}v}OIUu1{+{suM zbB?|IE8y39qUv|(t+I4&7(`vDpr6$$wn@?sdpjs5EzOgWQUAyTmkL7kd;{8={i{DC zk+0ZyN*8nA?_F?BK1W|jMnRE_auU*UTQf2E{&^Uvdi3v}k4vH5I|=2>Md;w@P_`jZ z5{Q)l%ftWSSASniH?zq6zli~t2Q+X^z69$4LIEAYKdR~KumBBTAJy5+eUBB=bN=5n zf!y>!2(vg7)Lk?qMYTa?%jn?S7jr&$?%ZgFD=n8!pB=#LbbYf8(?vccJem>Imy`Wi9fZvqq?7G+-3+HFDxuvu!nnl3HQWvd&uN#ZmzcirnWQb zb_CQw#OC>PDX4i!byE{QK!9KxE{@zUP-3c~VnPMz?CSE)%;enu^OLhcM)KIp3xQBY z8I;P(N;MtG68vc_2G!No2$Xv~M8swDG<>+Uwl=-X&Y#eU2}5EALGqP~9VR%06A(%- z$(X0$lXs_rc{=k=?_bp|CXZxSk=55{dJ`EL5gi=>vGz9+@bfo(l8@{xceeYDowzC^ z3(#_Ma`N8XzU9wSYLp%UE&|vNUi1E|h*wpWI202smEfNT6Bz+cO;!8MYP(;Gty$gKzj?V31xoEJ& zj$OcF5Yg1sL?rIsB?jo5n3{^8xQpYc4QD3Hz}}t@S`OQ_DH+5|0ppXD^yv7A!12nt`>YB?(gOaU=xj3YL?ck}@S)BXNSw3!t(j{+>S(tr+5ZIi@Q}sb=*5zLC!C$_7A!lYLQ&CYF93D1mi{=V%n|&wZe0_%=7%V!D=PFEI zo&EhZXip6M>lB<{v%PGCDsD&t{<*ois+XyfAAWmkH2C!qn}C3Zw47Y9roOWb9X&nT zt=?5qYACjy{^Ys}PlYQ}dH3$!X@4nJ1_lOcxSpV$v9>byDyyGDU9gi$5HoIWZqjOM zZ#LtgDL9RfkIx#}()%Z!mTM6j&Z*FwW8}cUNx`|d|J^OKG+dC`Ys~X7PZ}YIc4AHm zw15m+K9>YH-?P!G91(y;1_!nHtj9iR+DJ=pN==�Kb2&8UDC;yE`oaP2Pc`AR8ph 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 literal 0 HcmV?d00001 diff --git a/doc/img/workflow12.png b/doc/img/workflow12.png new file mode 100755 index 0000000000000000000000000000000000000000..d6d6336c39de371ced76dd5f0b9b9e510f6bc4c6 GIT binary patch literal 17839 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≷M%gD6xIz{Rg)q>q@97B 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 literal 0 HcmV?d00001 diff --git a/doc/img/workflow3.png b/doc/img/workflow3.png new file mode 100755 index 0000000000000000000000000000000000000000..18d1462cb98deb5a4397375179d4d2b3aa8b1fa8 GIT binary patch literal 25622 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 UwaEg%XOcL6^tAF@MZ??w16HEtQUCw| literal 0 HcmV?d00001 diff --git a/doc/img/workflow6.png b/doc/img/workflow6.png new file mode 100755 index 0000000000000000000000000000000000000000..c110e7546fb87c48a040874cda5108d00a08c509 GIT binary patch literal 12924 zcmaib1yq$?*X;omLTeF)j=a@YH$s+H21>=UmV6`5-HX{+Q@71Oh>q5EoW}KoIr7-#(9!!E2DDQXu$+ ztS2QV47t1iPHxBw16xqPh^yH`AZR%EKM0W6_-9}v%2x>)5tJ#!2ajJsGW8aJLLko} z62kA49H#f?995MJubYn!icy!pOMU;2_&D2}SWh`MCf39!HkPhhNl&osf}?7?;*Y|J zi{kJ^5A$mosa_j8mJEnI1sa8BGaf;kwa`OhX!OZ-Ypn446E^Q_cnxDAS|ZP&O=3+F z+eN(X&*7K8sn0#1zJElq&y5y?NOAwCMB6_b$X+S4K3vvLt_xN^C;gt5C+!;?jn8_p z{4I!phmvNW5MP%`59>Tt+VkJdDLw>$Po%=a0oU_%sP5v|TQ01=s&x?w>UAZ1uczKs z?}x&o&3^3O);6d9BvU(VB0!4{MUH~ywZVKl5+Tz^sOWA$0LLm}p{L`Zmh;Pv^Cr3U zS)7&NYCP-_)&tf9Y$kif2<=#Q>YS$$8r7K7v)hd6Da3W9(o+iu3YLsb1fjYVRGEhJ z^sIeWH4L8D6h`|Y4mGcRqMv5gUVSZ^?F4(h`s%9Z&hhscPwe^PIuD%cyRvA!{)xbN zoX;=E4Ka9?0K_*{Uw_w~Uh8gsft;$H`k}wtA_M&zW5-5;C8ed7VG!2xIjOtX%O+Vo z=)nSm&m>$tYjd*RIYrtNA)_{wZ~Uj_ZciOF;8vU6RoGLy#nsKmM5UTE(VP8)n7fZgfo;GaqC3oj{ zwOem-NvYxP3;P=l%oV+LIz}D-);zdC=Ufiyl?abZ{gDWxL1OcJeTf+(Ikx(ZUj|xr z&3$7Hk6i7@A+!VV?un2)U6{8{kH5afDf?sJLKa&)CNt%t!M1niJ#QKpuPHQpWNDi= ziC)KDvaL_a6%VP-m;Ju9y`f!Q)mrwlJSf{~R*(D{wB|>*k!_@vfGXt@eWmxLB6os| zcQ8R+pfe)Rcx#DIeZkUA9s{k>9YL_D@pPX%P%sGIcfn^Qub}R)RT1lt{v=JlVI4OL zH{3LBFm1(TCO_)P{(-wzl)JuufHO=~ze2UHanSOs8BehJl}dG}ZDbT8{-1n#6v$W& zYbAzJA;w}}6=MwPkE37i2EF8WBTa8J%`OhF+D1l8-P^iswQEWidYs5EnvC9z-BM!* zS^n<%^K$~`{<}6hCcd^fC=-2#O?QYZJQAOnG_I!evHtam{VY+g$}r2aTi}+j-o%Gp zEqCpn!lN$1sHmC3V(!63Cxp`@3lmG3fSPN^`Jhbd(v8K1ZWFoe@k>f74`*!uSyb2$prDU~f_{m9STVeYU62Y>l$#j|UZOI%X z3n}uus2q(v-5NK=k+8{#a;yN+AIRuGoTQUQ?NG)9qFe++I1}YUV;c#ir05gR$b~-t z5oOerXw7LPh9{Byl2tML`g!}B4dK8@F4&IaM|?f~n-xK#&e}rJi>&f;)r$E*LHFeB zbPp@abv=~=8hBlU^3uuS1;4&I&ij4!`q>KMT?Hs_l9gkC8dJwmav&c_bVz)YO?(mM zU2DAxwsrPWSFX?IJyPlbB9xSP{d;3neJBZ@O+5{)a8MD@yz=3|E(51!#5rQ%T zU0k31nP%*kCC|^4|JowwV}qO5$?gFguGK^#Y-7!Ao_gJt%UdAm){j=5e=s6Xy>aeV z;2_`z&v|B=M0%$E&!I{T%PXQ}X<|%l{gOzH;C`I>!IhO;T-pKZqwY)sR9CyC;Ti=E zlq&2WL6w_>X|G{O#V_=*Wr(54k#I`9Hyi6gaODYG*;_nycDL`z`{ajOeb;?(D5Okh z+Diys%qV}q{Tt4(LmgC}RKqY3FSD&6#R-p;a^K#}HXq;FO?xm>V})!WC~`(ND_q&( zbED%wiINayj#95#L|Yefw6Lf&n6O>R(OvKKZ4Y(f*ro}yxGGQP>kSc<#!W6r?8nQO zJy{tVw3@_DwzoD!OLdXhte-G=YGQV8Y>`@>YjS4H$f8YCHi2IpCu==d zpRG~QvHYv^lMUp4?%2pKt82H_nye0$YC*HJ#8c9~+cZ8xqQj)?SNQwtFCuMTA(LNZ znS9uA>iBG7h}OJx%B@~!-q_KBf zXQ5@LfPU{4_qASOb~@9P?WI^ggGE<86r;1L!==bcOT{M(+Oi-+ z5YD48B98+IfYJ_vR1=F2W)uA_aZ%xCUo}LJj0}!K^ag}4xf_!5 z)&ezGQ|SqU;@ZDIa$4LaHO{r9-q^S%2)I9*5S6pd5SPmk3x7g3vTiv?|OSdMHP<64k2Q= zyp}>B8ar8T(m(&QXn#_bSgo*d6BAc8b* zSs=BT`yerq7M_4XV0K(#T$}4mY9iwrJdod78oZNHIj1VxC8g~k@2>& z>x-YML$hlvG#J|E3dER?0ago8^Wuv9619bo_ckq9D6^|nQ6ghz-HBcv_(dNrLm6Jb z(q6AJ-|bk*pB9V?V~mq1ZM|4O4(9Q&uZr_SeDmv!rO!1F>HhQ zL}=RRH}N+uc>wlaKm_*XLR?<`RNN@iX&j=}fx{-C2_hg;qFN&jeva!e&XaaBhk7A9f^4=2a@ zXeC>v_UQV#E>ERq12pD!N$=*}D)(;g)K0G!k%RTN=3|hSFg7C@lA;B2m0bFz!<-#k z2L)%yj2Q>W&vDiZoVD*{PYVb*mzAmrTb&0CJ94#QY)@BU z#CKNhS&X~-GNW}9Ne@Jp+UHYX4+U1cxB67i*wIO5v(>cVX}5Bfq}{8<=j>m;tn4Mb z3*1guZjA`j78vYLBY3vc!OBBM#Lc;q3BZNfb1#H_tkb-$eMkR$k#X z&T@W>a$+*LvDGPA&0-1P_Lavay%i8L{gZr#l;EAyPV^Rpl4PXgWMuzgcsTBn`W+KO zwo0#vUE%2XHyN2a$<9y0EylRGS}T49D`$pQPt>eVd5ZcbttOlrW2Prxja24b>kqIj zzf0!q%9Q-VuH(7#K_0ZC zB@|920@j4H`l-VLG8q7`$}P5UpShHc^(8U6x%`^uAk*y{2|Msp%`RnvH%lxUe}v;j;WF>L_p5TMIWP2IHM}{$cGNzIigtUteyJUEF>{3{mXXoUaOL*m zjtth#&oyyzJSlC*CCEW{CngQ({L^K|5MgQWSD!2lofi`2tD`#I1PAlp+@-!!Q&(Ro zGmhV1E1APoVv=brDf!tK2ne-q>WrhQ!mKu68ErpyJRf?C=6Y)8g{yWLCN|X9{5>J4ZwaclY%k4t@MbE8i}vO^ z@FF29PAV!8Psi)O1M0> z)$bl32rS0Sqr%F|@1u{}TDUePb53Q8V$ylR#}_xKlAmeW;N(vPdlRF=X#4tt=*Q0| zYZVi;A&zUTKM=2nwvGm2%G5QQ`JqqSh&J89yCEEBy98eE##1DOF(mL&Olr#3^|%9lJDoq(7ke&SGs$J-IEme;R`DHnM!dMRCek0v zf$*d-r5$bEc4?O9C;INMDmnAa{`lACB1$>CyA0ao*N;^gbyAg7dJYN1Y;Pt@Z0=)t zYxEKy!f7?#MeB$E$*yka!8f z{-~s1B?4~{H8eDoU2Ed0?=-sHGaGcEM?D{Bf5q~Yz;1VIZjMjzm0hb6&Bk&=pvUQE zT0$)F&vyvO`p0+L*Id(VTP`I|=!yLrkZ1mIF(P*6$%&FQG1Z1;v`W!~boC0eCxk;$ z7^LJMEsSqg>4a}fBPxj95TC=p#^&S6XP8rOM?IR2|;lO^spTFWn@D^^I)O$%*XWy}yOj?&j2;kWV=s zG%Xibl^B)Dz1j4T_^P<7O~!8ReaigM3itOR>?en-7YoZDaJ`BeRXYMVU*;DS3@1u# zIBc^_+i$+5G$wGFE`QjZWk-yQo1b5hqtYY*g^qPMKm+DV>bTwaNthm@BP3T>M`w~H zuE8R&`N%ETJ92ZLw3nAef1d18OY+QVZv>?F=^YBc)58yQ^JE^z*Jm3yHMY5Xmt#9h znT=q)W9AulGte8WTQQ|PW%Rqkxy{)#2^*Wj$SKifMI~G`LIS2krNOMT&c?XG@42Ly zb!VG7O|Gjo8^4O_jrjPHoQU5rUOd{=x*wx(-%u*Yd5e*uA$(A;wD|4t)+8ZLKY3I8 z(OgHrs+tDdQpH_bdietgF>xI0jD|YAtd0l`omb?Sto-JmJ-T&9RfDhb$BdHEIC+M8 zoh^tW@~7?u1O&tZrWMhB^)`ecC*TVmdJBu(>_qvNsz~k^7G`{<%EBLu@Z^ftZ=PXw z4{VwM$e`n^6gxSP2x9{E|&<18jCcQ*MyJA_|&~^C6!lg`ZI^==2 zF(7}ef{3s3&OeqYY`w$nS76ZbOku+2S6=wLepSA)+$n|NBqno_@g55e`i;S)*7^BF zHzbrJSUA^I)Twbzb=YP2W&TTivV&Q#%`Tm4hozP?u7VhqCmme@H)MOlUssDX8)9Wl zP3ef6bi}eclbGq1$)nly))Td=)h@D-F5UKsv>mOveNz|5QZv-f;;L(pe~Y0#V`CN9 zIR|fII^CBxJN1C#6;2)$3a#f}zk4=&Ko}oSr03ciqi(Brd^B)dg?pW--M=Nc>G&N5 zvpGdpE1#jjzf!S4og;B~J}mJzXlY`L1xyJQfRiotsU|L;p*uJ4hz#mTWo79Efi%ro znIsOeWyNRw${g0VD|;74SnSz?U?(>>_u*XT;c*GOEi`6jDeulL0l_sETGV+zl}`192$M8X&>_lhhg@atA@U@kY;FG<~{V6x={(N zsk$w+&#%7YM;D-}dL0{E(o^@6!l2-hj~qpAG?iYdgI93H3n~GxYN^!~%73b=y-z$A z+wk|Z5LVRpUFuk%Xo_x*TKuxkCmxk`X$Ebjdw)l&a=IsQ*&r}($vwxkdl(bbH1VW*~+x z=pS#YpwS&j^tbp+AMLg=YwvI+8lCq$=LFB^t z@?(^@$W3DNP}N5G)z(>2&J76x=37fQ1hmH6Z^`z8RF`u#(ofJS*DmQG>+W!*9}BVV zCwDQ_gQeLv>IIS74NgnDyV7Z*0nwZmv9~3Yld9@fmH|;w1S=f@D+lf|S;~!HmfpX4 z^XBmQSZ{kYC)YK1jGW(zJuonkn}>&xv}_tGD=S-FUA^gke0(fj=)Bg0hm1*fe?^no zYL<|Y5SpNwaJTj!^q{H+2S3%+(z3R-O*5Y;Y-?|yv#ERd@L^w);KHsGy-J}$PdMFi zn>Sygr-d4KWWTjW34Q6J>T!t8%%$ds>dSR92+gEp{ddHHG0iA^s?EP^)5%j)MQBkE9Gn^UaSfdw2*9C{;etKoBC3Y|16xj^(*h^O%DBpB4oXLb8;Xr0`!# zsvB>Sa36+0GOUet~^;XU^TxfJ1Ez}~`(a`}uAEj8} zYF3h)!fU~=n@<}X8^J>VWNIpLu|GFeZmL*wJGzbZb#FSt>1_KWw~=BMTgCp>$%aor zz}jBbf+%o#jg5b$rBOn7czD9Y!=I5>IXF;LQGJ1(ni>rz1_T74L+0n_pAd8UOGPm* z?eEKe`NG`be6hYcoR+Uq6$ss%URqfZ`t<3!nwlEq!Gi}wDMBdq_4U#G&YTc7;{oBk zu|EYGTr|?rkYsiD-`^iPI5{mJ9OzIRuXr+l+_mB3{Z;Sfey!}1G!{r%_7kgVr|$92 zmF5R=%frE#63GNqwv9il3zBxc0+%-El!;psiW@&6Bom3Pc|K@F0iucW))P#MmJ5vu z9v+ZCBO|7>)z&edd#76?xoZU)RWt$uiDkxv3aYB&4i4N|a!HI6ztrKm%X@n=BbhQW zEc(d4K4`GRrPk`&T5J*$X)vwNm_I=Xn6w`xgW5S<>+>2M+f$^XX1dg7MGUlbp=zf9xVq_=_Uxxe@_n}>G@u7=krz7O#4N| zZuaku7oMqZgQ^iUdhS%@G?qG#!@i?L(phcK2B&2WcGa0!PvGL?vwmuZ{KO!Y{O}?8 z_8}ENzgAQKg0bgl55oKR@43G$LY&Wce@{)tM84K2bvV+yhs49f#mN$V(H&wNTUY&9 zc2mT+0QMeXV9-!d{7#2k{Ygi)+ZoRg3nGI&A$t=IQW$Y@W8>G4A3uhzRVsC?@61Os z(NR%Rb33j0`07|u-HWsvynTEqXlQ;exLpS@HQj`Idq2|C)0?cZrR9U}F6LwNx9>q@-jK`6`pa(}ZG`L<{Sgh{#B6TwLKS*@S3rYrPnP==^*JfO`O{ z^3^MRo15Q`*}Qen*grQGyoVkI1r{-K zi@9S5vo&n;^74RgL0-IgvFd|$F&I-!ywIk^O2|fsbB&^cP1E;q#i1hNynFBcb=Xb@RIUY>c)UM#1Dq^jz( zZ{NO^n~gmd6cju^Sdar?J#1ESda#hRxcJG%#pTpTHA%qLWH|L91qDU!SwlkuDh5WT z^TqxXBKAl0^z@DjZ5Gyt28dws)Ml{hUc-~xI6QVPeiHJA-Kek{VFc(c#-9QTB~3P} zn8;y081k3%>h<9+I@OaNDqTEatK73M%z6#@2i>?yQcpAX%)2<>xB=gskb{5e z6!W(j9W8@DMt?1jS?XM_9khQgo2z@?4?FHAvStdEb48`t5ff*a54z41Wt4e*zkinc zzg&{PhRc6klH0?-JnXLnWB;cNr`4fg!69~vYbBthNX7NVxb3Wlr(2o!oxOnzHhFu0^vvDGyHzQARv z#mm9LVR3D(eKbe$<2Ad|!X&pPr_-qk2`Q2X6RnN{B(PBWfWAC z3iYbikeH10(w`!!!mE3M7D!E=0~7A+`4j3XB-Y*47fQ%QjYUsK<1%r;id7Yp`V!nU zIv9nd2v3XS*d^O=GtXtYFy0p-{tkT(phZZPUXh=sm`jVIO`Z5`tjrLxVu*)9p|2|E@d2#rKHeuXQoTP{85E) z9^53L&*&qVEX@9JZyHL zSUfkcwAfHk<_yDUY;VoLT1mtVH)%k>74Sp)e{wE}Xdp>9sEUV2M=YwA`uabLikL7k zFkoyC<2Wr+-S2JhlTw}NFY^K zR?eOA{xy;O?uWxkKUa5ue>)JQ0PvyvvpI5yNQj8{H5c$Qe=VfSAS(ckm1d90Kmsrm6uJ^?VNl2jX z@9*bpHxQwqpp1dMBnT}Yps-4jc(QSw4RvA9qdux@WXnS@+sE3OIJ1V5bGNPS<{9=3 z>NK`s4%eyPbeJu_rH$faV90B#uP7o%1`lt(<$`6R0|ZBMPyG;bKnWMqUhn#EVv+2EN}MWC^A zp1q$oeNLIU_s;d#w5RNiphV05(*ot*^Sv3=M~|NK^Cxr!5JyQ&$|eaEsL$8hnJ=%b z@Hn3{czJnw{`zGLc$tlB_LvIsuN>*Eh44nJ@eC;fJ$-%p-G!N%H~{^u`W;VjZ5v0G zXD3KVNH)g{hy~%NI1o^TlI;)XCue4m4grM@jgAJ4>haRjQhH`)Zl&Gf;yVHOsbXko z=skVl;ZeJbPJw31B?Xq1v9YkQFsPS%htbNF0wD)In3n--7XbmGFNUqtr0)If9#!An zn*A`2^#Fq0Y!) zw|03jNHY-6Z5x=njQ#kr-{x#39!g-6p8K{$ZMl_J=3awX&`5XILp$@a2gyGZNFm*w za!1*6w!3?u5gcIhI@lPbD@UC3+~ao5c|L5A!~o)yFL3N!p?)HzvPz1k;-?<43iGA$ zAuJCu4UUbt0(l263%zo!4Y6&6p|%nP=O9v*IkD!&^W}k_{(i&7=5Kv*T$skj#(=u? z=N|0s_2;XVJ$m%0d3-!Fkd)76cd|r-tTSQ%&Zswv2^7)RO-{g7*-ig=0=9ln{buLp z2zhMMAB_D2RCx5t%%3Nj$Me-%(h)75| z@@dErp`TCQ<&EW5t^lc#>Gt(2JCN4`t}w_4B_&}${MSk|c+1+{IHJp<7>4iWYlV3k z3TER}>22vxcVOI1gPL!D@M6GNMdT07x4KuCe)L)#09lr_vV3G?ml^Pj&-z+HT)@p& z1trcpQrvJMzu=az(W?Uyt=C=lP)*fj2!1xuD6Epp#Ps@gL9rISlob2`7;3($+57tE z6`DV0{P?npi-Qr6keR=3e)#_VJLF!S18`p(pvj3q^7Qn4ij9rfygOA^0?72yayx@| z{WA|x$A}87Oh`aCIV#}5f{@nGRyisRj~ zL00IlD$uOr5)vsYMcNQyVd1Ahg$yL{l~h*JfC3O2iaiDe3KDR+JCdY3*xV=-81)TK zXL?u1Ylb~huQiN{wJ7$_V~TUdTavNw8e0lu(Z6Z&mgqXiH|D$AV&3CKjg(4Z({nt6 zFgFS$56;AWmx~>YX$Q^>FAaUL+f$2!*i5;Ke#DZm$mqsx@u^CwEu=cu86Kt~&_8?0 zf5kj;d;-|*4bdH~1^-+>k?s1J`7WOmqDMBrv+2&%=q@y1FO7mzc^nrPPoiz!C?g}| z!NZ5cIf}G2vhmqWR)Dnwm~@ z27OHXk`gX&f^3opp?T-{cx4~$SLf5s z-|PKxJl4yw65fA_b9NhBF+CwaeYmx) z;JW8I3B-awE;J-Ygg7WuRYOgFAqBsHzlZis09j7w z4tq^WhkyL9*zhXxq-hu0_$YY{4d zT+uv#?lCmnqfoE{X12m?Fj=g734?`(gxnuY?sE7|0!~a^ryi%6DGk~#B6e|T z1dNLZ2SES=x7E#l_5Ev73(N;<>rG?JhLwRDet^|3Qm$%C)ZY5gR#K{)wg-urWise>e#|#ffr# z9fgV}px^F%>~2i<08`=f<9`XN;Q2mA#@tF6H}0A-6x-;t`&z+2Pv8kZoEBt>DT-XT zWnOu>&M1>z3MIc3&WEBq^AO)R`Mfo3>IA%L7dZZD9$H8JZT(qCWzXj`{nG@@{W-<8 z(@SgK)*vo$M(vqTPEq0@xL-u{x8L}`Pxz@DBXrL{|JIJ+t2_v z61bBi>6M|R9DjLq^zxLCZvD8`oBrLnqmIdmUjF$P%lt$xqanZZ7ATd{SYkcA%-AnA znfC;b;v&5F_?_YtSLT-&eb^m4+V}xJ{>f8e0@BBHG#d-pAtQqL#Kcm7cpd?F5%?&u zqO1?}I@Mn&$jHbX935GJB{n87wha^^5wOzYnxh^2gs84A0?}uLVD6Ee=FgC(lq@DIibth7IPa@P< zW)=rmL>Fi=lL~c!bE;LAq*z#3K!5(kBp*=GacvKw6cd+|+t?{;QhvSA>W%5s>+490-Vk&0!W@}t*qhcrP{XDko{r6l`|mt*Mx)W| zlS?CwuNl2w%u!%HY1Mv3NCt%O>+U2LAUDAC%+{*o1U?_=dfgLIIYD^3x*Hghi>s^k zmoLqK{)Fz&)s>l!WZJ-U#!&7957cblsKZ!~m9jiJ(69!^#v?Vh#t<7Do0oKSEY1RL ztw4!>8_AMmb3XqJz95I^=SE;r13*Nzx3>pHWoxdE3s@(HbG3GWSz?frlY_BRKBvcdvMeX+3!)R5yaF4y_h^ z56Y&k4aS+5?Oj!L`IFEL!%BK+bd9L*J)z8sU&MCi6K!QaY^W$f+vLv1U!Nw)kPZ@z z&>UTV6Eb0ARLRx!)<_vMn`(6B1N139D{G|MdW98rXlo?vV=th;GA=G}j0Y1lK$!)` zkd5&}a4S{3+KN3gB~E8%pyUqSoG}*sYw^YMlP@n7TP+BHQhIu1Q&wKiKJRvI0W6H- ziV8y@7kB3y;#OA;5D^ih*^DtDzz%xt@S=c|hyPl=4b&a< zaY2W}=SglbItdAhwzjt5_;?06|7v}S=)2y7RKU4E;8&9`h}{%c&`dP35axZxMiy;c z-ZTn1l6W)MP2geaX5lj(CQO@z|I)W5Gn#u@G4PXxX}1@BOnOq2cpA*E|CPO4dZMsb zcKPhACNc&|SH0uOJv6hh4CliD#Pnb~;phS&kMAuDkIhY!a`o4)uv3KO>}+rR*M&{UE;mP=pXX}vh>3~+ zb^MrbZ*L8!74padTma*j!)z4t30Qu}gUD#sd;^{#)geM^!BvbQ7*hRG=>V=SH9bGv z@~|n#81$tJGjKI|fXx3wwf97-alv0!zN>#QD>>U6Xo)HN(+6m@0qsB^16`<)I}-9` zGh1!#y^^x7E(H?ulTVvNDWLXm>AVF_Z*M}k0zJwjR8$IpF&I=bfJI+o{L?lJiZqfQ10|}!A8U$8WR<1EgNje!DLT@esa-m+QxW4Rw6AS35SBEh6= zXyp1K3qIJgb6_}AQrEB+4!AKKLM4EU zDCgWYNKyUq?SA_Pg}!(LeW z0m`vSavXV^SPTrb|6$ghoc%THl8|4kl6QkH>6#kO1<8LN^y!(b;|qrd$t`~f*U1QD z&SJS@cd(YbD$`vnrAMDVtS*5^RFU1cFC7*u-1S&>UiWW&>Okw$iv5toDJ|KOERC&< z^>2IfsJU*;3f&Z^uC+ey$cmRfQ?$|ipB`$<10&ZL3N`3|ISNH?;C4UkZ__k;F5imz t-w#JTtxEdaDgEoj{da@($Icx>c1LF30W4(|d`<)+AtEbW`2N%P{{>sejlTc@ literal 0 HcmV?d00001 diff --git a/doc/img/workflow7.png b/doc/img/workflow7.png new file mode 100755 index 0000000000000000000000000000000000000000..ba653628f82eb6076098d584da383c9a73e18351 GIT binary patch literal 17739 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 literal 0 HcmV?d00001 diff --git a/doc/img/workflow9.png b/doc/img/workflow9.png new file mode 100755 index 0000000000000000000000000000000000000000..668d079d952caeb8784403665286ce2d8f5186d3 GIT binary patch literal 14241 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 literal 0 HcmV?d00001 diff --git a/doc/img/xhtmlChunk.png b/doc/img/xhtmlChunk.png new file mode 100755 index 0000000000000000000000000000000000000000..bb4e14ab1d1e5f1e1a370460424afa0ab86f9f3b GIT binary patch literal 18047 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 POT$Ors+5HfopSvGE$Hg# literal 0 HcmV?d00001 diff --git a/doc/img/xhtmlStylesMapping.png b/doc/img/xhtmlStylesMapping.png new file mode 100755 index 0000000000000000000000000000000000000000..0171273053397ea8304e3b6c034bbbba1a379840 GIT binary patch literal 12553 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 literal 0 HcmV?d00001 diff --git a/doc/img/zmi.png b/doc/img/zmi.png new file mode 100755 index 0000000000000000000000000000000000000000..b65fe636efbc3ffd753b9e15b0f50fbcc35ee402 GIT binary patch literal 78718 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

aSv{tPmo}NO#|G*^YW#PkeN^r}Wuz!wW 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Ν@OF> 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 AoB#j- literal 0 HcmV?d00001 diff --git a/doc/img/zopeComponentEdit.png b/doc/img/zopeComponentEdit.png new file mode 100755 index 0000000000000000000000000000000000000000..665cfbedde8dd78c850dae66c83b878ce9ba004e GIT binary patch literal 83928 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 z

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 literal 0 HcmV?d00001 diff --git a/doc/index.html b/doc/index.html new file mode 100755 index 0000000..8d37cec --- /dev/null +++ b/doc/index.html @@ -0,0 +1,27 @@ + + + <b>Ap</b>plications in <b>Py</b>thon + + + +

Appy (Applications in python) is a bunch of tools distributed under the GPL license for developing applications in the Python programming language. The framework features two main modules: gen and pod.

+ +

Developers, too, have the right to (h)appyness !

+ +

Developers are often guys that live on another planet. Some think this is because software development is so exciting that everything else is poorly considered. At Null-IT software, we are deeply convinced that most developers do not enjoy themselves. They spend their lives together with complex problems that never go away from their minds. Nobody understands them. Their family? Their managers? Their clients? Their friends? No. Nobody. Nobody is able to imagine how huge and complex their tasks are. Consequently, what they do is underestimated. Worst: they can't communicate. Don't believe this is due to some intrinseque geek attitude. Their geekness results from the global incapacity to apprehend the very nature of their abilities. So they are forced to work harder while experiencing the true impossibility to share their permanent software experience. Of course, it may lead to social disasters.

+ +

By publishing this high-level, easy-to-use software construction kit, itself based on the tremendously productivity-boosting Python programming language, our crazy hope is to empower developers in such a way that they can leave more often their software prison and spend more time to discover real life.

+ +

But (h)appyness has a price. Appy developers themselves accepted to pay. They have dealed their social life for one of the highest forms of social denial (sorry we can't reveal their working conditions), hoping their sacrifice will free the users of their work. So if one day you meet one of them, please be gentle and patient. But they will probably not discuss with you.

+ +

The null-IT principle

+ +

Our action is guided by the following principle:

+ +

Information Technology (IT) should be as transparent and invisible as possible.

+ +

While this may seem obvious, this principle is largely ridiculed by a great number of widespread technologies. I will mention here JEE and XSL-FO which were taken as counter-examples while developing pod. In the Python world, Zope 3, by trying to mimick the ridiculous JEE component-model where code is viciously chopped into undersized chunks interconnected by obscure XML declarations, falls unfortunately into this category as well. This is a pity seeing Zope guys trying to abandon the elegant, simple, powerful (in a word: Pythonic) design of Zope 2. But don't be scared! Many people think that Zope 2 will last for many years... Null-IT, with others, is working hard to fight against the generalized Balkanization attitude that undermine IT innovation. If you believe there is still place for hope, you came at the right site. It is time to discover gen!

+ +

The Appy framework needs Python 2.4 or higher.

+ + diff --git a/doc/license.txt b/doc/license.txt new file mode 100755 index 0000000..ead25ca --- /dev/null +++ b/doc/license.txt @@ -0,0 +1,240 @@ +The Appy framework is copyright Gaetan Delannay and contributors + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; version 2 of the License. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, +MA 02111-1307 USA. + + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/doc/pod.html b/doc/pod.html new file mode 100755 index 0000000..6006932 --- /dev/null +++ b/doc/pod.html @@ -0,0 +1,39 @@ + + + An introduction to <b>pod</b> (Python Open Document) + + + +

What is pod ?

+ +

pod (python open document) is a library that allows to easily generate documents whose content is dynamic. The principle is simple: you create an ODF (Open Document Format) text document (with OpenOffice Writer 2.0 or higher for example), you insert some Python code at some places inside it, and from any program written in Python, you can call pod with, as input, the OpenDocument file and a bunch of Python objects. pod generates another ODF text document (ODT) that contains the desired result. If you prefer to get the result in another format, pod can call OpenOffice in server mode to generate the result in PDF, DOC, RTF or TXT format.

+ +

Getting started with pod

+ +

First, create a pod template, like the one besides this text. A pod template is an ODT document where:

+ +
    +
  • text inserted when editing the document in "track changes" mode is used for writing Python expressions;
  • +
  • notes are used for writing special Python-based statements that allow to conditionally include or repeat a portion of the document.
  • +
+ +

In this template, I wrote the Python expression IWillTellYouWhatInAMoment while being in "track changes" mode (with OpenOffice, in the Edit menu, choose Modifications->Record). I've also added 2 notes (with OpenOffice, in the Insert menu, choose Note). The first (before "It just claims...") contains the statement do text for i in range(3). The second contains do text if (not beingPaidForIt). Click here if you want to learn more about creating pod templates.

+ +

Here is the code for calling pod for generating a result in ODT format.

+ +

+ 01  from appy.pod.renderer import Renderer
+ 02  
+ 03  IWillTellYouWhatInAMoment = 'return'
+ 04  beingPaidForIt = True
+ 05  renderer = Renderer('SimpleTest.odt', globals(), 'result.odt')
+ 06  renderer.run()

+

+ +

First we need to import the Renderer class. Then we define some Python variables. We must then create an instance of the Renderer (line 5), with, as parameters, the name of the pod template (we assume here that the pod template shown above is called SimpleTest.odt and lies in the current folder), a dictionary of named Python objects (here we simply take the global environment) and the name of the result file. The script will generate it, with, as content, what is shown in the image below.

+ +

The second line of the template is repeated 3 times. It is the effect of the for loop in the first note. All text insertions in "track changes" mode were replaced by the results of evaluating them as Python expressions, thanks to the context given to the Renderer as second parameter of its constructor. Note that within a loop, a new name (the iterator variable, i in this case) is added in the context and can be used within the document part that is impacted by the for loop. The last line of the template was not rendered because the condition of the second note evaluated to False.

+ +

Click here if you want to learn more about rendering pod templates.

+ + diff --git a/doc/podRenderingTemplates.html b/doc/podRenderingTemplates.html new file mode 100755 index 0000000..e3bf8c1 --- /dev/null +++ b/doc/podRenderingTemplates.html @@ -0,0 +1,184 @@ + + + <b>pod</b> - Rendering templates + + + +

Rendering a pod template

+ +

In order to render a pod template, the first thing to do is to create a renderer (create a appy.pod.Renderer instance). The constructor for this class looks like this:

+ +

+ def __init__(self, template, context, result, pythonWithUnoPath=None, ooPort=2002, stylesMapping={}, forceOoCall=False):
+   '''This Python Open Document Renderer (PodRenderer) loads a document
+      template (p_template) which is a OpenDocument file with some elements
+      written in Python. Based on this template and some Python objects
+      defined in p_context, the renderer generates an OpenDocument file
+      (p_result) that instantiates the p_template and fills it with objects
+      from the p_context. If p_result does not end with .odt, the Renderer
+      will call OpenOffice to perform a conversion. If p_forceOoCall is True,
+      even if p_result ends with .odt, OpenOffice will be called, not for
+      performing a conversion, but for updating some elements like indexes
+      (table of contents, etc) and sections containing links to external
+      files (which is the case, for example, if you use the default function
+      "document"). If the Python interpreter
+      which runs the current script is not UNO-enabled, this script will
+      run, in another process, a UNO-enabled Python interpreter (whose path
+      is p_pythonWithUnoPath) which will call OpenOffice. In both cases, we
+      will try to connect to OpenOffice in server mode on port p_ooPort.
+      If you plan to make "XHTML to OpenDocument" conversions, you may specify
+      a styles mapping in p_stylesMapping.''' +

+ +

For the template and the result, you can specify absolute or relative paths. I guess it is better to always specify absolute paths.

+ +

The context may be either a dict, UserDict, or an instance. If it is an instance, its __dict__ attribute is used. For example, context may be the result of calling globals() or locals(). Every (key, value) pair defined in the context corresponds to a name (the key) that you can use within your template within pod statements or expressions. Those names may refer to any Python object: a function, a variable, an object, a module, etc.

+ +

Once you have the Renderer instance, simply call its run method. This method may raise a appy.pod.PodError exception.

+ +

Since pod 0.0.2, you may put a XHTML document somewhere in the context and ask pod to convert it as a chunk of OpenDocument into the resulting OpenDocument. You may want to customize the mapping between XHTML and OpenDocument styles. This can be done through the stylesMapping parameter. A detailed explanation about the "XHTML to OpenDocument" abilities of pod may be found here.

+ +

Result formats

+ +

If result ends with .odt, OpenOffice will NOT be called (unless forceOoCall is True). pod does not need OpenOffice to generate a result in ODT format, excepted in the following cases:

+ +
    +
  • you need to update fields in the result (ie a table of contents);
  • +
  • you need to include external documents into the result (ODT, PDF, Word, ...) by using special function document.
  • +
+ +

If result ends with:

+ +
    +
  • .pdf,
  • +
  • .doc (Microsoft Word 97),
  • +
  • .rtf or
  • +
  • .txt,
  • +
+ +

OpenOffice will be called in order to convert a temporary ODT file rendered by pod into the desired format. This will work only if your Python interpreter knows about the Python UNO bindings. UNO is the OpenOffice API. If typing import uno at the interpreter prompt does not produce an error, your interpreter is UNO-enabled. If not, there is probably a UNO-enabled Python interpreter within your OpenOffice copy (in <OpenOfficePath>/program). In this case you can specify this path in the pythonWithUnoPath parameter of the Renderer constructor. Note that when using a UNO-disabled interpreter, there will be one additional process fork for launching a Python-enabled interpreter.

+ +

During rendering, pod uses a temp folder located at <result>.temp.

+ +

Launching OpenOffice in server mode

+ +

You launch OpenOffice in server mode by running the command:

+ +

(under Windows: ) call "[path_to_oo]\program\soffice" "-accept=socket,host=localhost,port=2002;urp;"& (put this command in .bat file, for example)

+ +

Under Windows you may also need to define this environment variable (with OpenOffice 3.x) (here it is done in Python):

+ +

os.environ['URE_BOOTSTRAP']='file:///C:/Program%20Files/OpenOffice.org%203/program/fundamental.ini'

+ +

(under Linux: ) soffice "-accept=socket,host=localhost,port=2002;urp;"

+ +

Of course, use any port number you prefer.

+ +

Unfortunately, OpenOffice, even when launched in server mode, needs a Windowing system. So if your server runs Linux you will need to run a X server on it. If you want to avoid windows being shown on your server, you may launch a VNC server and define the variable DISPLAY=:1. If you run Ubuntu server and if you install package "openoffice.org-headless" you will not need a X server. On other Linux flavours you may also investigate the use of xvfb.

+ +

Rendering a pod template with Django

+ +

pod can be called from any Python program. Here is an example of integration of pod with Django for producing a PDF through the web. In the first code excerpt below, in a Django view I launch a pod Renderer and I give him a mix of Python objects and functions coming from various places (the Django session, other Python modules, etc).

+ +

+ 01 gotTheLock = Lock.acquire(10)
+ 02 if gotTheLock:
+ 03    template = '%s/pages/resultEpmDetails.odt' % os.path.dirname(faitesletest.__file__)
+ 04    params = self.getParameters()
+ 05    # Add 'time' package to renderer context
+ 06    import time
+ 07    params['time'] = time
+ 08    params['i18n'] = i21c(self.session['language'])
+ 09    params['floatToString'] = Converter.floatToString
+ 10    tmpFolder = os.path.join(os.path.dirname(faitesletest.__file__), 'temp')
+ 11    resultFile = os.path.join(tmpFolder, '%s_%f.%s' % (self.session.session_key, time.time(), self.docFormat))
+ 12    try:
+ 13        renderer = appy.pod.renderer.Renderer(template, params, resultFile, coOpenOfficePath)
+ 14        renderer.run()
+ 15        Lock.release()
+ 16    except PodError, pe:
+ 17        Lock.release()
+ 18        raise pe
+ 19    docFile = open(resultFile, 'rb')
+ 20    self.session['doc'] = docFile.read()
+ 21    self.session['docFormat'] = self.docFormat
+ 22    docFile.close()
+ 23    os.remove(resultFile)
+ 24 else:
+ 25    raise ViaActionError('docError')
+

+ +

When I wrote this, I was told of some unstabilities of OpenOffice in server mode (! this info is probably outdated, it was written in 2007). So I decided to send to OpenOffice one request at a time through a Locking system (lines 1 and 2). My site did not need to produce a lot of PDFs, but it may not be what you need for your site.

+ +

Line 11, I use the Django session id and current time to produce in a temp folder a unique name for dumping the PDF on disk. Let's assume that self.docFormat is pdf. Then, line 20, I read the content of this file into the Django session. I can then remove the temporary file (line 23). Finally, the chunk of code below is executed and a HttpResponse instance is returned.

+ +

+ 01 from django.http import HttpResponse
+ 02 ...
+ 03    # I am within a Django view
+ 04    res = HttpResponse(mimetype=self.getDocMimeType()) # Returns "application/pdf" for a PDF and "application/vnd.oasis.opendocument.text" for an ODT
+ 05    res['Content-Disposition'] = 'attachment; filename=%s.%s' % (
+ 06        self.getDocName(), self.extensions[self.getDocMimeType()])
+ 07    res.write(self.getDocContent())
+ 08    # Clean session
+ 09    self.session['doc'] = None
+ 10    self.session['docFormat'] = None
+ 11    return res
+

+ +

Line 7, self.getDocContent() returns the content of the PDF file, that we stored in self.session['doc'] (line 20 of previous code chunk). Line 5, by specifying attachment we force the browser to show a popup that asks the user if he wants to store the file on disk or open it with a given program. You can also specify inline. In this case the browser will try to open the file within its own window (potentially with the help of a plugin).

+ +

Rendering a pod template with Plone

+ +

The following code excerpt shows how to render the "ODT view" of a Plone object. Here, we start from an Archetypes class that was generated with ArchGenXML. It is a class named Avis that is part of a Zope/Plone product named Products.Avis. While "Avis" content type instances can be created, deleted, edited, etc, as any Plone object, it can also be rendered as ODT (and in any other format supported by pod/OpenOffice). As shown below we have added a method generateOdt to the Avis class, that calls a private method that does the job.

+ +

+ 01 import appy.pod.renderer
+ 02 import Products.Avis
+ 03 ...
+ 04    # We are in the Avis class
+ 05    security.declarePublic('generateOdt')
+ 06    def generateOdt(self, RESPONSE):
+ 07        '''Generates the ODT version of this advice.'''
+ 08        return self._generate(RESPONSE, 'odt')
+ 09
+ 10    # Manually created methods
+ 11
+ 12    def _generate(self, response, fileType):
+ 13        '''Generates a document that represents this advice.
+ 14           The document format is specified by p_fileType.'''
+ 15        # First, generate the ODT in a temp file
+ 16        tempFileName = '/tmp/%s.%f.%s' % (self._at_uid, time.time(), fileType)
+ 17        renderer = appy.pod.renderer.Renderer('%s/Avis.odt' % os.path.dirname(Products.Avis.__file__), {'avis': self}, tempFileName)
+ 18        renderer.run()
+ 19        # Tell the browser that the resulting page contains ODT
+ 20        response.setHeader('Content-type', 'application/%s' % fileType)
+ 21        response.setHeader('Content-disposition', 'inline;filename="%s.%s"' % (self.id, fileType))
+ 22        # Returns the doc and removes the temp file
+ 23        f = open(tempFileName, 'rb')
+ 24        doc = f.read()
+ 25        f.close()
+ 26        os.remove(tempFileName)
+ 27        return doc
+

+ +

First, I plan to create the ODT file on disk, in a temp folder. Line 16, I use a combination of the attribute self._at_uid of the Zope/Plone object and the current time to produce a unique name for the temp file. Then (lines 17 and 18) I create and call a pod renderer. I give him a pod template which is located in the Products folder (Avis subfolder) of my Zope instance. Lines 20 and 21, I manipulate the Zope object that represents the HTTP response to tell Zope that the resulting page will be an ODT document. Finally, the method returns the content of the temp file (line 27) that is deleted (line 26). In order to trigger the ODT generation from the "view" page of the Avis content type, I have overridden the header macro in Products/Avis/skins/Avis/avis_view.pt:

+ +

+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" i18n:domain="plone">
+ <body>
+     <div metal:define-macro="header">
+     <div class="documentActions"><a href="" tal:attributes="href python:here['id'] + '/generateOdt'">Generate ODT version</a></div>
+     <h1 tal:content="here/title">Advice title</h1>
+     <div class="discreet">
+         If you want to edit this advice, click on the "edit" tab above.
+     </div>
+     <p></p>
+     </div>
+ </body>
+ </html>
+

+ +

Hum... I know there are cleanest ways to achieve this result :-D

+ + diff --git a/doc/podWritingAdvancedTemplates.html b/doc/podWritingAdvancedTemplates.html new file mode 100755 index 0000000..280dd5c --- /dev/null +++ b/doc/podWritingAdvancedTemplates.html @@ -0,0 +1,265 @@ + + + <b>pod</b> - Writing advanced templates + + + +

Inserting arbitrary content: the from clause

+ +

In the section "Writing templates", you've learned how to write pod statements (if, for). Every pod statement is linked to a given part of the pod template (a text paragraph, a title, a table, a table row, etc) and conditions how this part is rendered in the result (the if statement, for example, renders the part only if the related condition is True). This way to work has its limits. Indeed, you can't insert what you want into the result: you are forced to use the part of the document that is the target of the statement. Of course, in this part, you can still write funny things like Python expressions and statements, but it may not be sufficient.

+ +

This is why a special from clause may be added to every pod statement. A statement containing such a clause will replace the content of the targeted document part by the result of the from clause. This clause must specify a Python expression that must produce a valid chunk of ODT content.

+ +

In the example below, the statement has a from clause that produces a simple paragraph containing 'Hello'.

+ +

+ +

In the result, the targeted paragraph has been replaced by the chunk of odt content specified in the from expression. Note that the from clause MUST start on a new line in the note. Else, it will be considered as part of statement and will probably produce an error.

+ +

+ +

Surprise! This statement is neither a 'if' not a 'for' statement... It is a "null" statement whose sole objective is to replace the target by the content of the from expression. But you can also add from clauses to 'if' and 'for' statements. Here is an example with a 'for' statement.

+ +

+ +

Here's the result. Note that within the from clause you may use the iterator variable (i, in this case) defined by the for statement.

+ +

+ +

Actually, when you don't specify a from clause in a statement, pod generates an implicit from clause whose result comes from the odt chunk that is the target of the statement.

+ +

I agree with you: these examples are not very useful. Moreover, it requires you to have some knowledge of the ODF syntax. You also have to take care about the namespaces you specify (text:, style:, fo:, etc): they must match the ones used in your pod template. But these examples illustrate how from clauses work and how you may go further by yourself if pod does not implement (yet ;-)) what you need.

+ +

The remaining of this page presents much more useful use cases, in the form of built-in pod functions that you may use within from clauses. Indeed, a bunch of functions is inserted by default to every context given to the pod renderer.

+ +

Managing XHTML input: the xhtml function

+ +

One of these functions is the xhtml function, that allows to convert chunks of XHTML documents (given as strings in the context) into chunks of OpenDocument within the resulting OpenDocument. This functionality is useful, for example, when using pod with systems like Plone, that maintain a part of their data in XHTML format (Kupu fields, for example).

+ +

Suppose you want to render this chunk of XHTML code at some place in your pod result:

+ + + + + + + + + +
XHTML codeXHTML rendering (Plone)
+ <p>Te<b>s</b>t1 : <b>bold</b>, i<i>tal</i>ics, exponent<sup>34</sup>, sub<sub>45</sub>.</p>
+ <p>An <a href="http://www.google.com">hyperlink</a> to Google.</p>
+ <ol><li>Number list, item 1</li>
+ <ol><li>Sub-item 1</li><li>Sub-Item 2</li>
+ <ol><li>Sub-sub-item A</li><li>Sub-sub-item B <i>italic</i>.</li></ol>
+ </ol>
+ </ol>
+ <ul><li>A bullet</li>
+ <ul><li>A sub-bullet</li>
+ <ul><li>A sub-sub-bullet</li></ul>
+ <ol><li>A sub-sub number</li><li>Another.<br /></li></ol>
+ </ul>
+ </ul>
+ <h2>Heading<br /></h2>
+ Heading Blabla.<br />
+ <h3>SubHeading</h3>
+ Subheading blabla.<br /> +
+ +
+ +

pod comes with a function named xhtml that you may use within your pod templates, like this:

+ +

+ +

In this example, the name dummy is available in the context, and dummy.getAt1() produces a Python string that contains the XHTML chunk shown above. This string is given as paremeter of the built-in pod xhtml function.

+ +

Note that if you specify a key "xhtml" in the context given to the pod renderer, the default "xhtml" function will be overridden by the value specified in the context.

+ +

The rendering produces this document:

+ +

+ +

The OpenDocument rendering is a bit different than the XHTML rendering shown above. This is because pod uses the styles found in the pod template and tries to make a correspondence between style information in the XHTML chunk and styles present in the pod template. By default, when pod encounters a XHTML element:

+
    +
  • it checks if a "class" attribute is defined on this element. If yes, and if a style with the same "display name" is found in the OpenDocument template, this style will be used. The "display name" of an OpenDocument style is the name of the style as it appears in OpenOffice, for example;
  • +
  • if no "class" attribute is present, and if the XHTML element is a heading (h1 to h6), pod tries to find an OpenDocument style which has the same "outline level". For example, "h1" may be mapped to "Heading 1". This is what happened in the example above; +
  • +
  • else, no style at all is applied. +
  • +
+ +

You have the possibility to customize this behaviour by defining styles mappings (see below).

+ +

Defining styles mappings

+ +

You can define styles mappings at two different levels. First, when you create a renderer instance, you may give a styles mapping to the parameter stylesMapping, which is the global style mapping (The renderer's constructor is defined here). A styles mapping is a Python dictionary whose keys are either CSS class names or XHTML element names, and whose values are "display names" of OpenDocument styles that must be present in the pod template. Every time you invoke the xhtml function in a pod template, the global styles mapping comes into play.

+ +

Note that in an OpenDocument document, OpenOffice stores only the styles that are used in the document (I don't know how others OpenDocument-compliant word processors behave). The styles names ("Heading 1", "Standard"...) that appear when opening your template with OpenOffice, for example, are thus a super-set of the styles that are really recorded into your document. You may consult the list of available styles in your pod template programmatically by calling your pod renderer's getStyles method.

+ +

In a styles mapping you can also define a special key, h*, and define a positive or negative integer as value. When pod tries to establish a style correspondance based on outline level, it will use this number. For example, if you specify a styles mapping = {'h*' : -1}, when encountering element h2 (that does not define a "class" attribute), if an OpenDocument with an outlevel of 2-1 is found (ie "Heading 1"), it will be used.

+ +

Second, each time you invoke the xhtml function in a pod template, you may specify a local styles mapping in the parameter named stylesMapping, like shown below.

+ +

+ +

Local styles mappings override what you have (potentially) defined in the global styles mapping.

+ +

At present, the XHTML elements listed below may not be "styled-mapped" (they may not be present in styles mappings) because pod uses it own automatically-generated OpenDocument styles:

+ +
    +
  • ol
  • +
  • ul
  • +
  • li
  • +
  • a
  • +
+ +

This can be problematic if, for instance, you want to use special style-related attributes, specially for li elements that correspond to paragraphs. This is why any pod template includes some predefined styles that may apply to these elements. The following table shows them, grouped by element type.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
ElementAvailable style(s)Description
olThe default pod style only.No pod-specific style is proposed at present. The unique default pod style of this element will always be used.
ulThe default pod style only.No pod-specific style is proposed at present. The unique default pod style of this element will always be used.
lipodItemKeepWithNextThis specific style adds the characteristic "Keep with next" to the target li paragraph. This way, the paragraph will always be present. This works for lis inside uls or ols.
aThe default pod style only.No pod-specific style is proposed at present. The unique default pod style of this element will be used.
+ +

In order to use one of those styles, you can specify its name in the "class" attribute of the target element, or you can go through a global or local styles mapping. For example, if you need a li element that will always stay on the same page as the paragraph below him, you can write <li class="podItemKeepWithNext"></li>.

+ +

Managing XHTML entities

+ +

By default, the xhtml function uses a standard XML parser (the Python "expatreader" parser) for parsing the XHTML code. This parser knows only about the 5 legal XML entities: &amp; (&), &quote; ("), &apos; ('), &lt; (<) and &gt; (>). If an XHTML entity is encountered (like &eacute;), the XML parser produces an error (numeric entities like &#234; seem to be supported). For solving this problem, pod may use another parser that comes with PyXML and resides in xml.sax.drivers2. If this parser is available in your Python interpreter, pod will use it and configure it: XHTML entities will then be supported and correctly converted. Type import xml.sax.drivers2 in your Python shell; if no exception is raised, the parser is installed and will be used by pod.

+ +

Integrating external files or images into the result: the document function

+ +

The document function allows you to integrate, into the ODT result, images or files that come from external sources. Here is the function signature; the table below explains each parameter. Examples follow.

+ +

document(content=None, at=None, format=None, anchor='as-char')

+ + + + + + + + + + + + + + + + + + + + + + +
ParameterDescription
contentIf you have the image or file content available in memory or via a file handler, use this parameter. content may hold the whole (binary) image or file content, or be an (opened) Python file instance (a Python file instance is obtained by calling the built-in Python method file or open (open being an alias for file).
atIf your image or file is available on disk, do not use the previous parameter and specify the file path in this parameter.
formatWhen using parameter at, pod guesses the file format based on file extension. But if you use parameter content, you must specify the file format here. The format may be a file extension (without the leading dot) or a MIME type. The currently supported formats are:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Parameter valueDescription
odt or application/vnd.oasis.opendocument.text  An OpenDocument Text document.
pdf or application/pdfAdobe PDF document. Note that pod needs Ghostscript installed for integrating PDFs into a pod result. It means that the program gs must be installed and available in the path. pod integrates a PDF file into the ODT result like this: (1) pod calls gs to split the PDF into images (one image per page); (2) pod uses internally function document to integrate every image into the pod result.
png or image/pngAn image in PNG format.
jpeg, jpg or image/jpegAn image in JPEG format.
gif or image/gifAn image in GIF format.
+
anchorThis parameter is used for images only. It determines the way to anchor the image in the result. Possible values are:

+ + + + + + + + + + + + + + + + + + + + + +
Parameter valueDescription
pageTo the page.
paragraphTo the paragraph.
charTo the character.
as-charAs character.
+
+ +

The following example shows a POD template part that integrates a PNG image from disk.

+ +

+ +

(Note that the from clause must be on a single line.). This could be rendered this way for example:

+ +

+ +

The following ODT template part reads PDF and ODT files from a database (The ZODB; it is a Plone site) and integrates them in the pod result.

+ +

+ +

For those who know Plone, annex is an instance of ATFile: annex.data returns its binary content, while annex.getContentType() returns is MIME type.

+ +

In future Appy releases:

+ +
    +
  • more formats will be supported (mainly, the Microsoft formats: doc, xls, etc);
  • +
  • more "protocols" will be supported for accessing the external file or image (HTTP, FTP, etc);
  • +
  • images or documents referenced in XHTML code that is imported through function xhtml will be integrated into the POD result.
  • +
+ +

Do not use built-in pod functions in pod expressions !

+ +

Pod built-in functions are designed to be used within pod statements (from clauses). If you try to use them in pod expressions, you will get strange results. The example below uses the xhtml function in a pod expression.

+ +

+ +

If dummy.getAt1() produces the XHTML chunk <p>Test1<br/></p>, the result will look like this:

+ +

+ + + diff --git a/doc/podWritingTemplates.html b/doc/podWritingTemplates.html new file mode 100755 index 0000000..6eaadc9 --- /dev/null +++ b/doc/podWritingTemplates.html @@ -0,0 +1,209 @@ + + + <b>pod</b> - Writing simple templates + + + +

Expressions

+ +

Within a pod template, any text written in "track changes" mode is interpreted as a Python expression. The interpretation context is given to pod like explained here. The example below contains some simple Python expressions (Python variables).

+ +

+ +

Running appy.pod with a context that associates a value to expr1, i1 and f1 produces a result like the one shown below.

+ +

+ +

Note that any style (bold, italic, etc) that is used within track-changed text is kept, but style variations within the text is ignored. For example, the first "expr1" text has an italicized "p", but this style information is ignored. The second "expr1" is bold, so the result is bold, too, and again the having an italicized "p" has no effect.

+ +

"if", "else" and "for" statements

+ +

An "if" statement is written in an ODT note and has the form do <document part> if <python_expression>. The <document part> which is the target of the statement will only be included in the result if the python expression resolves to True (the boolean value, or any equivalent Python value, like a non empty list, string, etc). "Document parts" that can be referenced in "if" statements are presented in the table below.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescription
textA paragraph
titleA title
sectionA section
tableA whole table
rowA single row within a table
cellA single cell within a table row
+ +

A "for" statement is also written in a ODT note and has the form do <document part> for <variable_name> in <python_expression>. The <document part> which is the target of the statement will be included as many times as there are items in the sequence that is defined by the <python_expression>. Within the document part in question, one can use <variable_name>, or any Python expression that uses it, within track-changed text (it adds this name in the context). Allowed <document part>s are those described in the previous table. If <variable_name> was already defined in the context, it is hidden by this new variable definition only within the scope of the targeted <document part>.

+ +

The example below contains several "if" and "for" statements. Small yellow rectangles are ODT notes that you insert, for example, through the "Insert->Note" menu in OpenOffice. Yellow blocks containing Python code represent the content of the note.

+ +

+ +

Applying this template with a given context may produce a result like the following.

+ +

+ +

The template contained 1 section. The result contains 3 sections, because 3 groups were defined in the groups variable (which was a Python list or tuple containing instances of some Group class defined somewhere in a python file) used in the 1st "for" statement. The 2 first groups contained persons (instances of some Person class), so the table was rendered in the 2 first sections (this is the effect of the second note). Those tables contain one row by person, thanks to the "for" statement in the third note. The last paragraph of the template was only rendered once, for the last group, because this group contained no person (this is the effect of the last note).

+ +

In this example, for each group, I wanted to include a table if persons were defined, or a paragraph else. In order to express this, I've defined 2 "if" statements with 2 conditions, one being the negation of the other. pod (starting from version 0.2) allows to use "else" statements: instead of writing do text if not group.persons in the last note, I could have written do text else instead. But do you believe I have time to rework those old screenshots? Moreover, you have to be careful with "else" statements. pod statements are independent of each other: an "if" statement and an "else" statement are really 2 different statements, unlike what happens in programming languages for example. It means that pod must be able to link "if" and "else" statements, and in some cases it is not possible. The following example contains several "else" statements that pod could unambiguously link to their corresponding "if" statements.

+ +

+ +

When pod encounters an "else" statement, it tries to link it to the last defined "if" statement in the part of the pod template that precedes the "else" statement. In the last example, when encountering the "else" statement numbered "4", pod links it to the "if" statement numbered "3". Once the link is done, the linked "if" statement is "consumed": it can't be linked to any other "else" statement. When pod encounters the "else" statement numbered "5", it links it to the last "unconsumed if" statement: the "if" statement numbered "2". In the same way, the "else" numbered "6" is linked to the "if" numbered "1". Here is the result: +

+ +

+ +

In the example below, however, pod does not produce the desired result.

+ +

+ +

Here I wanted to link the "else" to the first "if", but pod linked it to the second one instead, mistakenly rendering the last line:

+ +

+ +

With the currently presented concepts, here you would be forced to replace the "else" by an "if" that duplicates and negates the condition written in the first "if". This duplication could lead to maintenance problems (ie you update the condition in the first "if" and forget to update its negation in the third one). So if we want to conform to the null-IT principle and make pod a tool as invisible as possible, we need here the concept of "named statement". From pod 0.2, any statement may be named. The name must conform to the regular expression "\w+" (it can contain alphanumeric characters only + the underscore as explained here) and must be unique among the (not consumed) named statements in the pod template. The next example is the right way to produce the result we wanted to achieve in the last example: the first "if" is named and can thus be referred to explicitly by the "else".

+ +

+ +

The result is superb! pod is invisible!

+ +

+ +

Note that it is legal to name any pod statement; however, pod uses statement names only for connecting "if" and "else" statements (at least for now).

+ +

But... where exactly can you place "if", "else" and "for" statements ?

+ +

You can place statements anywhere within the element you want to repeat or conditionally include. In a table, for example, you can place a "do table..." note in any cell of the table. The only thing you have to take care of is the order of notes that apply on nested elements. For example, a note that applies on a table must be placed in the table before a second note that applies on a row of this table. This note must itself be placed before a note that applies on a cell within that row. In the first cell of a table, for example, you can define several notes sequentially: one for the table, one for the row and one for the cell.

+ +

Back to expressions (just for a few minutes): the "if" expression

+ +

Besides the "if" and "else" statements, pod also proposes an "if" expression. Indeed, if the things you want to conditionnally include are small enough (a few words for example) you may find more convenient to use the "if" expression, that is implemented as a function named "test" that is directly available in the pod context as a default function. Here is an example:

+ +

+ +

The result:

+ +

+ +

Errors management

+ +

While interpreting expressions or statements, errors may be raised. In such cases, the result is still generated, but a note containing an explanation about the error, together with the Python traceback, is produced in a note instead of the expression result or the document part that is the target of a statement.

+ +

The example below defines an expression that uses a variable "A" that is not defined.

+ +

+ +

Instead of containing the result of evaluating A+B, the result contains a note that gives an explanation about the error and the Python traceback, as shown below.

+ +

+ +

In the next example, we try to render a table if a condition is True, but evaluating the condition produces an error.

+ +

+ +

The table is rendered but only contains a note explaining what happened.

+ +

+ +

The following example illustrate errors produced while evaluating "for" statements.

+ +

+ +

Notice that in the result shown below, the second note does not contain a traceback. Indeed, Python did not produce an error while evaluating expression 45. pod simply expected a sequence.

+ +

+ +

The previous examples were all examples of "runtime" errors, ie errors that were produced while rendering the template. Errors may also occur at "parsing" time, when pod reads the content of notes and track-changed text to analyse the Python-like expressions. In the example below, statements do not respect the pod syntax.

+ +

+ +

Oh! So much effort has been made to produce clear error messages that I do not need to add a comment here :-)

+ +

+ +

Repetition or conditional inclusion of table cells is a bit more tricky

+ +

Playing with table cells may render tables that do not contain a number of cells that produce complete rows. In the example below, the "for" statement will produce 5 cells in a 3-columns table (there are 3 persons defined in persons). So there is one missing cell. If you are bored with my explanations, you can make a pause now and listen to some musical illustration of this "missing cell" problem (ok I agree the artist has its own point of view on this question).

+ +

+ +

Hurrah! pod added the missing cell for you.

+ +

+ +

Sometimes the number of cells it too high. In the example below, again 3 persons will be inserted, producing a row of 6 cells instead of 4.

+ +

+ +

Hurrah again. pod broke this row into 2 complete rows.

+ +

+ +

Who said it is exactly the same problem as the previous one? Hmm. Hmm. Indeed. Ok. I must recognize that "too much" or "not enough" cells is just a question of point of view. You're right. But I will not change the names of my test files or refactor them to eliminate redundant ones. You are aware of this strange situation, now let's continue.

+ +

Conditional inclusion of cells through statements like do cell if trucmuche raise the same issues and are solved by pod in the same way.

+ +

In order to avoid having some cells to lack a right border like on my screenshots, check that all your table cells have 4 borders.

+ +

Removing tables and sections that were created just for inserting statements

+ +

Very often, when creating complex pod templates, you will create sections containing tables containing tables of tables of tables etc. Those hierarchical levels exist just because you need to insert a statement, but you don't care about keeping them in the final result. You can tell pod to remove tables and sections from the final result by using the "minus" operator, like shown below.

+ +

+ +

The result, produced while persons is a list of 8 persons, is shown below.

+ +

+ +

Of course, do that only if you don't care about any formatting associated with the table or section to remove. In the previous example, using the "minus" operator was not the right choice if we wanted to print those addresses on envelopes. In other cases, using this operator may prevent occurrence of a bug in OpenOffice (2.1): a table that spans multiple pages may be truncated after 1 or 2 pages. Some manual edition (like inserting a "carriage return" somewhere) is needed to correct this problem; so if you planned to convert your result automatically to PDF for example you are KO.

+ +

The "minus" operator is only allowed for sections and one-cell tables. When applying it to a table that has more than one cell...

+ +

+ +

... pod complains.

+ +

+ +

Tips for writing pod templates with OpenOffice.org

+ +

When you write text in "track changes" mode (for writing pod expressions), sometimes OpenOffice (2.2) splits this text in several chunks. For example, while typing "azerty" OpenOffice may create 2 contiguous text inserts, "aze" and "rty". So the best way to write expressions in a pod template with OpenOffice is to perform the following steps:

+ +
    +
  • write and edit your expression in normal mode;
  • +
  • when you're happy with it, cut it;
  • +
  • switch in "track changes" mode (Edit -> Changes -> Record)
  • +
  • paste your expression
  • +
  • switch back in normal mode (clicking again on Edit -> Changes -> Record will uncheck this menu option.)
  • +
+ +

Of course this can be boring. So you won't do that systematically. In order to check that your expressions are not split, go to Edit -> Changes -> Accept or reject. Do not accept or reject anything, but use the arrows to navigate within your expressions. You will immediately detect a truncated expression (or potentally merged expressions)

+ +

Try to minimize Python code within pod templates

+ +

pod templates should be as readable as possible. One day (who knows?), a non-developer may need to consult one of them. So try minimize the amount of Python code you put in it. For example, instead of writing a complex expression or a complex condition within a statement, think about writing this code in a Python method with a nice name and simply call it within your template (of course the object on which this method is defined must be in the pod context).

+ +

If you need to use the result of a resources-consuming method in several places within a pod template, instead of calling this method in several expressions (pod will execute the method in each expression), call it once before rendering the template and give the result under a new name in the context passed to pod.

+ +

For more information about calling pod to render a template with a given context, come here !

+ + diff --git a/doc/template.html b/doc/template.html new file mode 100755 index 0000000..a857397 --- /dev/null +++ b/doc/template.html @@ -0,0 +1,64 @@ + + + Appy framework + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +
+ + + + + + + + +
The Appy framework + +  Home +  Download +  Contact +  To do + + +
Documentation | gen - creating basic and advanced classes - security and workflows | pod - creating basic and advanced templates - rendering templates
+
{{ title }}
{{ content }}
 Download and install
+ + + + + +
+
+
+ + diff --git a/doc/todo.txt b/doc/todo.txt new file mode 100755 index 0000000..7efbf8f --- /dev/null +++ b/doc/todo.txt @@ -0,0 +1,69 @@ +vpod +v- Error in buffers.py line 422 (in method evaluate): evalEntry.action may be None but I don't know why (maybe due to buffers cut?) +v- Document the ability to read the template from memory, not only from the file system (it seems to work) +v- Size of resulting ODTs is too big. +v- Try to convert xhtml chunks that are not utf-8-encoded +v- XHTML conversion is not implemented for all XHTML tags. +v- XHTML conversion produces empty results for some XHTML tag combinations +v- Implement a function "pod" that allows to insert the content of another pod template into the current file +v- Implement a "retry n times" function when calling OO in server mode ("n" should be parameterized) +v- Add a "do bullet" (li, ul) ? +v- Add a function "text" that replaces "carriage returns" with </p><p> (ou <br/>?) and that replaces leading dashes with bullets. +v- Deprecate "xhtml" function -> New function text(format=...) with format="xhtml" or "text" or... +v- ImageImporter: adding 'g' to file names may lead to too long file names. +v- Finalize function "document" (manage Microsoft formats: doc, xls...) +v- converter.py: allow to call converter.py without updating sections and/or indexes (may cause performance problems?) +v- When an error occurs in a for loop, the iteratr variable may not be incremented, which duplicates the errors in subsequent iterations. Try:finally? + +vgen +v- View on AppyFolder must be query.pt +v- Build automatically a research page (included fields are selectable through the flavour) only with "searchable" fields. +v- Correct some navigation problems (after actions like delete, edit, etc) +v- Validation system: check if it is possible to forget about duplicating page and group labels in child classes. Possible to remove xxx_list labels? +v- Add a button for checking if current Python running Zope is UNO-compliant. +v- __setattr__ for Refs on Wrappers do not work, but the problem is solved in method "create" (inspiration source). +v- Generate a static site from a gen-application +v- Xml export (on file system or via webdav/REST) +v- Add an option to generator, where un-managed i18n labels are removed (useful during development, when fields are creates, deleted, renamed...) +v- Make the list of reserved attribute and method names (tool, trigger, state, ...) and raise errors on generation if those names are used by a gen-class +v- produceNiceDefault: manage numbers (when a number is encountered, add a space, etc). +v- When editing (not creating) a flavour (or when reinstalling the product), create ALL the portal_types if they do not exist (some may have been added after flavour creation). +v- By flavour or date object, add 2 params: date format with and without hour. Create a appy-specific macro for displaying dates, that will use those params. +v- Move some generated code (appyMixins, CommonMethods...) in appy.gen (minimize generated code). +v- Create the "pod" field type +v- Add on tool special action "uninstall" (similar to special action "install") + question "update workflow settings or not" ? +v- At startup, patch actions "tool.install" -> show = si selon Plone le Product doit etre reinstallé, i18n messages, etc. +v- Allow to create objects in the app root folder (and not only in the tool) from the tool (or anywhere else). +v- On dashboards and Ref tables, fields rendering does not always take into account permissions, show, etc. +v- Add "self.flavour" on any wrapper. +v- Config instance: add supposed number of flavours (for generating corresponding i18n labels _1, _2, etc, for flavour-specific content-types) +v- Config instance: create a defaultWorkflow attribute, similar to defaultCreators +v- Duplicate all special fields (optionalFieldsFor, defaultValueFor, etc) generated in a flavour for all child classes of a given class. +v- Permissions-to-roles mappings: if you don't specify a value for a given field-specific read/write permission, by default it will take the same value as for the whole-gen-class read/write permission. +v- Implement abstract workflows +v- displayTabs: do not display tabs for which no widget shows up (ie edit tabs on which no Ref widget is shown) +v- Add i18n labels for messages when transitions are triggered (! transition may potentially return a custom message!) +v- On all widgets: implement "warning method" -> kind of condition. If True, a warning message appears somewhere near the field. Useful for actions, transitions and pod templates. +v- Action fields: add param "confirm" (also for workflow transitions): if True a popup appears (with possibility to define a i18n message) +v- Ref fields: add parameter "sort" for sorting Ref fields (this param may be the name of a field or a custom method). On Refs with link=True, it is used for sorting the list of all references that may be linked with the current object; on Refs with add=True, it is used for inserting the newly created object. +v- tool.getReferenceLabel: use brain if fields are indexed (wake up object only when needed) +v- Delete tool.maxListBoxWidth and use param "width" of Ref field instead. +v- Comments in ZPTs: use everywhere tal tag "comment" +v- Common method "fieldValueSelected" -> does it produce the right value when the page is shown again due to a validation error? Must we check this case explicitly via emptyness of dict "errors" in request? +v- Document how to write your own code generator +v- pod integratio: when returning a PDF/ODT file, file name is not set (or file extension). +v- Add a param to pod fields will allow to freeze generated result, and to unfreeze or re-generate them (with admin access only or...?) +v- Take into account field-specific permissions when displaying backward fields +v- Improve graphical rendering of pages with additional classes (Group, Page,...) that may be specified instead of strings for parameters "group", "page" on fields +v- Add an event management system (generalize the mail notification mechanism from PloneMeeting) that one may customize per flavour, with some predefined action types (emails, log, freeze pdf,...) +v- Interoperability: class and worklow inheritance from one product to another and Refs to objects coming from other standard non Appy Plone products. +v- Add a mechanism that will allow developers to add things like ZPTs, etc, into the Plone product. +v- Write a test system. +v- Bug (seems to come from standard Plone): when defining a field multiselection mandatory, when unselecting all values, it does not do anything (if the field is not mandatory it works). +v- When we copy fields in class Flavour (because of editDefault), we must also recopy methods that were defined on the original Appy class on the FLavour class generated in appyWrappers.py. +v- Check accessors get_flavour defined multiple times in PodTemplate_Wrapper +v- Bug: when we specify encoding in a Python file, the generated Python AST is empty. +v- plone25: remove warnings by setting deprecated=True for all generated classes in configure.zcml +v- Workflow dependencies: permissions of a given object can depend on the ones defined on another (containing?). +v- Add an on-line help system (popup for every field) + diff --git a/doc/version.txt b/doc/version.txt new file mode 100755 index 0000000..bbbb948 --- /dev/null +++ b/doc/version.txt @@ -0,0 +1,41 @@ +0.3.1 (2009-04-10) +- gen: added the concept of "phase" for structuring a root content type. + +0.3.0 (2009-03-25) +- Includes the first version of appy.gen, a new code generator for Plone for building complex and shared web applications. +- pod: new function "document" that allows to integrate, in a pod template, the content of an external document or image. +- pod: converter.py: instead of asking to OpenOffice to convert an odt file into pdf, doc, etc, converter.py can now ask to update an odt document (refresh indexes and table of contents, resolve external links). Resolving external links is needed if you use the new "document" function (excepted for images and pdfs). +- pod: new boolean parameter to the renderer: "forceOoCall". If True, OpenOffice will be contacted in server mode even if the result is asked in odt. This way, OpenOffice will update indexes and resolve external links. Set this parameter to True when using the new "document" function. +- pod: you may now create pod templates with OpenOffice 3.x (parsing problem with notes is solved) +- pod: OO conversion: connection to OO in server mode under Windows solved ("import socket" before "import uno") +- pod: instruction "do ... for ...' accepts now all Python objects implementing the iterator protocol, like iterators from Django query sets (querySet.iterator()) + +0.2.1 (2008-06-04) +- XHTML to ODT conversion: possibility to use 2 different predefined pod-styles to apply to "li" elements: the default one, and a second one named "podItemKeepWithNext" that ensures that the targeted "li" element will always stay on the same page as the paragraph below him. +- Minor bugfixes. + +0.2.0 (2008-03-23) +- Implementation of an "else" statement. +- "if" statements may be named in order to solve ambiguities when linking "if" and "else" statements. +- Besides "if" and "else" statements, an "if" expression is also proposed under the form of a function named "test" that is defined in the default pod context. + +0.1.0 (2008-03-10) +- Because of huge international pressure, version 0.0.4 was published as 0.1.0. From now on, the pod numbering scheme will follow the rule MAJOR.MINOR.BUGFIX: development of major functions will increment MAJOR (the first figure); development of minor functions will increment MINOR (the second figure) while bug fixes will increment BUGFIX (the third figure). +- From now on, pod eggs will be published on http://pypi.python.org. + +0.0.4 (2008-03-10) +- Management of XHTML tables. +- XHTML parser is now case-insensitive. + +0.0.3 (2008-01-24) +- Refactoring in the SAX parsers used in pod has improved overall design and performance. +- Pod replacements now work in headers and footers. +- A "from" clause can now complete any pod statement, allowing to include arbitrary ODT content. +- The "xhtml" function MUST now be used in "from" clauses ("do text from xhtml(xhtmlChunk)") and not in pod expressions anymore (users migrating from pod 0.0.2 to 0.0.3 and using the "xhtml" function will need to modify their pod templates). + +0.0.2 (2007-10-01) +- Possibility to integrate XHTML chunks into ODT documents. You can customize the way pod maps html elements or CSS styles to ODT styles. +- New automated test system. + +0.0.1 (2007-05-22) +- First version of appy.pod. diff --git a/gen/__init__.py b/gen/__init__.py new file mode 100755 index 0000000..33a2aab --- /dev/null +++ b/gen/__init__.py @@ -0,0 +1,459 @@ +# ------------------------------------------------------------------------------ +import re +from appy.gen.utils import sequenceTypes, PageDescr + +# Default Appy permissions ----------------------------------------------------- +r, w, d = ('read', 'write', 'delete') + +# Descriptor classes used for refining descriptions of elements in types +# (pages, groups,...) ---------------------------------------------------------- +class Page: + def __init__(self, name, phase='main', show=True): + self.name = name + self.phase = phase + self.show = show + +# ------------------------------------------------------------------------------ +class Type: + '''Basic abstract class for defining any appy type.''' + def __init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, searchable, + specificReadPermission, specificWritePermission, width, + height, master, masterValue): + # The validator restricts which values may be defined. It can be an + # interval (1,None), a list of string values ['choice1', 'choice2'], + # a regular expression, a custom function, a Selection instance, etc. + self.validator = validator + # Multiplicity is a tuple indicating the minimum and maximum + # occurrences of values. + self.multiplicity = multiplicity + # Type of the index on the values. If you want to represent a simple + # (ordered) list of values, specify None. If you want to + # index your values with unordered integers or with other types like + # strings (thus creating a dictionary of values instead of a list), + # specify a type specification for the index, like Integer() or + # String(). Note that this concept of "index" has nothing to do with + # the concept of "database index". + self.index = index + # Default value + self.default = default + # Is the field optional or not ? + self.optional = optional + # May the user configure a default value ? + self.editDefault = editDefault + # Must the field be visible or not? + self.show = show + # When displaying/editing the whole object, on what page and phase must + # this field value appear? Default is ('main', 'main'). pageShow + # indicates if the page must be shown or not. + self.page, self.phase, self.pageShow = PageDescr.getPageInfo(page, Page) + # Within self.page, in what group of fields must this field value + # appear? + self.group = group + # The following attribute allows to move a field back to a previous + # position (useful for content types that inherit from others). + self.move = move + # If specified "searchable", the field will be referenced in low-level + # indexing mechanisms for fast access and search functionalities. + self.searchable = searchable + # Normally, permissions to read or write every attribute in a type are + # granted if the user has the global permission to read or + # create/edit instances of the whole type. If you want a given attribute + # to be protected by specific permissions, set one or the 2 next boolean + # values to "True". + self.specificReadPermission = specificReadPermission + self.specificWritePermission = specificWritePermission + # Widget width and height + self.width = width + self.height = height + # The behaviour of this field may depend on another, "master" field + self.master = master + if master: + self.master.slaves.append(self) + # When master has some value(s), there is impact on this field. + self.masterValue = masterValue + self.id = id(self) + self.type = self.__class__.__name__ + self.pythonType = None # The True corresponding Python type + self.slaves = [] # The list of slaves of this field + self.selfClass = None # The Python class to which this Type definition + # is linked. This will be computed at runtime. + + def isMultiValued(self): + '''Does this type definition allow to define multiple values?''' + res = False + maxOccurs = self.multiplicity[1] + if (maxOccurs == None) or (maxOccurs > 1): + res = True + return res + +class Integer(Type): + def __init__(self, validator=None, multiplicity=(0,1), index=None, + default=None, optional=False, editDefault=False, show=True, + page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None): + Type.__init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, False, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.pythonType = long + +class Float(Type): + def __init__(self, validator=None, multiplicity=(0,1), index=None, + default=None, optional=False, editDefault=False, show=True, + page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None): + Type.__init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, False, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.pythonType = float + +class String(Type): + # Some predefined regular expressions that may be used as validators + c = re.compile + EMAIL = c('[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.' \ + '[a-zA-Z][a-zA-Z\.]*[a-zA-Z]') + ALPHANUMERIC = c('[\w-]+') + URL = c('(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*(\.[a-z]{2,5})?' \ + '(([0-9]{1,5})?\/.*)?') + # Possible values for "format" + LINE = 0 + TEXT = 1 + XHTML = 2 + def __init__(self, validator=None, multiplicity=(0,1), index=None, + default=None, optional=False, editDefault=False, format=LINE, + show=True, page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None): + Type.__init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, searchable, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.format = format + def isSelection(self): + '''Does the validator of this type definition define a list of values + into which the user must select one or more values?''' + res = True + if type(self.validator) in (list, tuple): + for elem in self.validator: + if not isinstance(elem, basestring): + res = False + break + else: + if not isinstance(self.validator, Selection): + res = False + return res + +class Boolean(Type): + def __init__(self, validator=None, multiplicity=(0,1), index=None, + default=None, optional=False, editDefault=False, show=True, + page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None): + Type.__init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, searchable, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.pythonType = bool + +class Date(Type): + # Possible values for "format" + WITH_HOUR = 0 + WITHOUT_HOUR = 1 + def __init__(self, validator=None, multiplicity=(0,1), index=None, + default=None, optional=False, editDefault=False, + format=WITH_HOUR, show=True, page='main', group=None, move=0, + searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None): + Type.__init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, searchable, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.format = format + +class File(Type): + def __init__(self, validator=None, multiplicity=(0,1), index=None, + default=None, optional=False, editDefault=False, show=True, + page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None, + isImage=False): + Type.__init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, False, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.isImage = isImage + +class Ref(Type): + def __init__(self, klass=None, attribute=None, validator=None, + multiplicity=(0,1), index=None, default=None, optional=False, + editDefault=False, add=False, link=True, unlink=False, + back=None, isBack=False, show=True, page='main', group=None, + showHeaders=False, shownInfo=(), wide=False, select=None, + move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None): + Type.__init__(self, validator, multiplicity, index, default, optional, + editDefault, show, page, group, move, False, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.klass = klass + self.attribute = attribute + self.add = add # May the user add new objects through this ref ? + self.link = link # May the user link existing objects through this ref? + self.unlink = unlink # May the user unlink existing objects? + self.back = back + self.isBack = isBack # Should always be False + self.showHeaders = showHeaders # When displaying a tabular list of + # referenced objects, must we show the table headers? + self.shownInfo = shownInfo # When displaying referenced object(s), + # we will display its title + all other fields whose names are listed + # in this attribute. + self.wide = wide # If True, the table of references will be as wide + # as possible + self.select = select # If a method is defined here, it will be used to + # filter the list of available tied objects. + +class Computed(Type): + def __init__(self, validator=None, multiplicity=(0,1), index=None, + default=None, optional=False, editDefault=False, show=True, + page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, method=None, plainText=True, + master=None, masterValue=None): + Type.__init__(self, None, multiplicity, index, default, optional, + False, show, page, group, move, False, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.method = method # The method used for computing the field value + self.plainText = plainText # Does field computation produce pain text + # or XHTML? + +class Action(Type): + '''An action is a workflow-independent Python method that can be triggered + by the user on a given gen-class. For example, the custom installation + procedure of a gen-application is implemented by an action on the custom + tool class. An action is rendered as a button.''' + def __init__(self, validator=None, multiplicity=(1,1), index=None, + default=None, optional=False, editDefault=False, show=True, + page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, action=None, master=None, + masterValue=None): + Type.__init__(self, None, (0,1), index, default, optional, + False, show, page, group, move, False, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + self.action = action # Can be a single method or a list/tuple of methods + + def __call__(self, obj): + '''Calls the action on p_obj.''' + try: + if type(self.action) in sequenceTypes: + # There are multiple Python methods + res = [True, ''] + for act in self.action: + actRes = act(obj) + if type(actRes) in sequenceTypes: + res[0] = res[0] and actRes[0] + res[1] = res[1] + '\n' + actRes[1] + else: + res[0] = res[0] and actRes + else: + # There is only one Python method + actRes = self.action(obj) + if type(actRes) in sequenceTypes: + res = list(actRes) + else: + res = [actRes, ''] + # If res is None (ie the user-defined action did not return anything) + # we consider the action as successfull. + if res[0] == None: res[0] = True + except Exception, e: + res = (False, str(e)) + return res + +class Info(Type): + '''An info is a field whose purpose is to present information + (text, html...) to the user.''' + def __init__(self, validator=None, multiplicity=(1,1), index=None, + default=None, optional=False, editDefault=False, show=True, + page='main', group=None, move=0, searchable=False, + specificReadPermission=False, specificWritePermission=False, + width=None, height=None, master=None, masterValue=None): + Type.__init__(self, None, (0,1), index, default, optional, + False, show, page, group, move, False, + specificReadPermission, specificWritePermission, width, + height, master, masterValue) + +# Workflow-specific types ------------------------------------------------------ +class State: + def __init__(self, permissions, initial=False, phase='main', show=True): + self.permissions = permissions #~{s_permissionName:[s_roleName]}~ This + # dict gives, for every permission managed by a workflow, the list of + # roles for which the permission is granted in this state. + # Standard permissions are 'read', 'write' and 'delete'. + self.initial = initial + self.phase = phase + self.show = show + def getUsedRoles(self): + res = set() + for roleValue in self.permissions.itervalues(): + if isinstance(roleValue, basestring): + res.add(roleValue) + elif roleValue: + for role in roleValue: + res.add(role) + return list(res) + def getTransitions(self, transitions, selfIsFromState=True): + '''Among p_transitions, returns those whose fromState is p_self (if + p_selfIsFromState is True) or those whose toState is p_self (if + p_selfIsFromState is False).''' + res = [] + for t in transitions: + if self in t.getStates(selfIsFromState): + res.append(t) + return res + def getPermissions(self): + '''If you get the permissions mapping through self.permissions, dict + values may be of different types (a list of roles, a single role or + None). Iy you call this method, you will always get a list which + may be empty.''' + res = {} + for permission, roleValue in self.permissions.iteritems(): + if roleValue == None: + res[permission] = [] + elif isinstance(roleValue, basestring): + res[permission] = [roleValue] + else: + res[permission] = roleValue + return res + +class Transition: + def __init__(self, states, condition=True, action=None, notify=None): + self.states = states # In its simpler form, it is a tuple with 2 + # states: (fromState, toState). But it can also be a tuple of several + # (fromState, toState) sub-tuples. This way, you may define only 1 + # transition at several places in the state-transition diagram. It may + # be useful for "undo" transitions, for example. + self.condition = condition + self.action = action + self.notify = notify # If not None, it is a method telling who must be + # notified by email after the transition has been executed. + + def getUsedRoles(self): + '''If self.condition is specifies a role.''' + res = [] + if isinstance(self.condition, basestring): + res = [self.condition] + return res + + def isSingle(self): + '''If this transitions is only define between 2 states, returns True. + Else, returns False.''' + return isinstance(self.states[0], State) + + def getStates(self, fromStates=True): + '''Returns the fromState(s) if p_fromStates is True, the toState(s) + else. If you want to get the states grouped in tuples + (fromState, toState), simply use self.states.''' + res = [] + stateIndex = 1 + if fromStates: + stateIndex = 0 + if self.isSingle(): + res.append(self.states[stateIndex]) + else: + for states in self.states: + theState = states[stateIndex] + if theState not in res: + res.append(theState) + return res + + def hasState(self, state, isFrom): + '''If p_isFrom is True, this method returns True if p_state is a + starting state for p_self. If p_isFrom is False, this method returns + True if p_state is an ending state for p_self.''' + stateIndex = 1 + if isFrom: + stateIndex = 0 + if self.isSingle(): + res = state == self.states[stateIndex] + else: + res = False + for states in self.states: + if states[stateIndex] == state: + res = True + break + return res + +class Permission: + '''If you need to define a specific read or write permission of a given + attribute of an Appy type, you use the specific boolean parameters + "specificReadPermission" or "specificWritePermission" for this attribute. + When you want to refer to those specific read or write permissions when + defining a workflow, for example, you need to use instances of + "ReadPermission" and "WritePermission", the 2 children classes of this + class. For example, if you need to refer to write permission of + attribute "t1" of class A, write: "WritePermission("A.t1") or + WritePermission("x.y.A.t1") if class A is not in the same module as + where you instantiate the class.''' + def __init__(self, fieldDescriptor): + self.fieldDescriptor = fieldDescriptor + +class ReadPermission(Permission): pass +class WritePermission(Permission): pass + +# ------------------------------------------------------------------------------ +class Selection: + '''Instances of this class may be given as validator of a String, in order + to tell Appy that the validator is a selection that will be computed + dynamically.''' + pass + +# ------------------------------------------------------------------------------ +class Tool: + '''If you want so define a custom tool class, she must inherit from this + class.''' +class Flavour: + '''A flavour represents a given group of configuration options. If you want + to define a custom flavour class, she must inherit from this class.''' + def __init__(self, name): self.name = name + +# ------------------------------------------------------------------------------ +class Config: + '''If you want to specify some configuration parameters for appy.gen and + your application, please create an instance of this class and modify its + attributes. You may put your instance anywhere in your application + (main package, sub-package, etc).''' + + # The default Config instance, used if the application does not give one. + defaultConfig = None + def getDefault(): + if not Config.defaultConfig: + Config.defaultConfig = Config() + return Config.defaultConfig + getDefault = staticmethod(getDefault) + + def __init__(self): + # For every language code that you specify in this list, appy.gen will + # produce and maintain translation files. + self.languages = ['en'] + # People having one of these roles will be able to create instances + # of classes defined in your application. + self.defaultCreators = ['Manager', 'Owner'] + # If True, the following flag will produce a minimalist Plone, where + # some actions, portlets or other stuff less relevant for building + # web applications, are removed or hidden. Using this produces + # effects on your whole Plone site! + self.minimalistPlone = False + # If you want to replace the Plone front page with a page coming from + # your application, use the following parameter. Setting + # frontPage = True will replace the Plone front page with a page + # whose content will come fron i18n label "front_page_text". + self.frontPage = False +# ------------------------------------------------------------------------------ diff --git a/gen/descriptors.py b/gen/descriptors.py new file mode 100644 index 0000000..11a53ca --- /dev/null +++ b/gen/descriptors.py @@ -0,0 +1,193 @@ +# ------------------------------------------------------------------------------ +from appy.gen import State, Transition, Type + +# ------------------------------------------------------------------------------ +class Descriptor: # Abstract + def __init__(self, klass, orderedAttributes, generator): + self.klass = klass # The corresponding Python class + self.orderedAttributes = orderedAttributes # Names of the static appy- + # compliant attributes declared in self.klass + self.generator = generator # A reference to the code generator. + + def __repr__(self): return '' % self.klass.__name__ + +class ClassDescriptor(Descriptor): + '''This class gives information about an Appy class.''' + def getOrderedAppyAttributes(self): + '''Returns the appy types for all attributes of this class and parent + class(es).''' + res = [] + # First, get the attributes for the current class + for attrName in self.orderedAttributes: + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, Type): + res.append( (attrName, attrValue) ) + # Then, add attributes from parent classes + for baseClass in self.klass.__bases__: + # Find the classDescr that corresponds to baseClass + baseClassDescr = None + for classDescr in self.generator.classes: + if classDescr.klass == baseClass: + baseClassDescr = classDescr + break + if baseClassDescr: + res = baseClassDescr.getOrderedAppyAttributes() + res + return res + + def getChildren(self): + '''Returns, among p_allClasses, the classes that inherit from p_self.''' + res = [] + for classDescr in self.generator.classes: + if (classDescr.klass != self.klass) and \ + issubclass(classDescr.klass, self.klass): + res.append(classDescr) + return res + + def getPhases(self): + '''Gets the phases defined on fields of this class.''' + res = [] + for fieldName, appyType in self.getOrderedAppyAttributes(): + if appyType.phase not in res: + res.append(appyType.phase) + return res + +class WorkflowDescriptor(Descriptor): + '''This class gives information about an Appy workflow.''' + + def _getWorkflowElements(self, elemType): + res = [] + for attrName in dir(self.klass): + attrValue = getattr(self.klass, attrName) + condition = False + if elemType == 'states': + condition = isinstance(attrValue, State) + elif elemType == 'transitions': + condition = isinstance(attrValue, Transition) + elif elemType == 'all': + condition = isinstance(attrValue, State) or \ + isinstance(attrValue, Transition) + if condition: + res.append(attrValue) + return res + + def getStates(self): + return self._getWorkflowElements('states') + + def getTransitions(self): + return self._getWorkflowElements('transitions') + + def getStateNames(self, ordered=False): + res = [] + attrs = dir(self.klass) + allAttrs = attrs + if ordered: + attrs = self.orderedAttributes + allAttrs = dir(self.klass) + for attrName in attrs: + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, State): + res.append(attrName) + # Complete the list with inherited states. For the moment, we are unable + # to sort inherited states. + for attrName in allAttrs: + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, State) and (attrName not in attrs): + res.insert(0, attrName) + return res + + def getInitialStateName(self): + res = None + for attrName in dir(self.klass): + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, State) and attrValue.initial: + res = attrName + break + return res + + def getTransitionNamesOf(self, transitionName, transition, + limitToFromState=None): + '''Appy p_transition may correspond to several transitions of the + concrete workflow engine used. This method returns in a list the + name(s) of the "concrete" transition(s) corresponding to + p_transition.''' + res = [] + if transition.isSingle(): + res.append(transitionName) + else: + for fromState, toState in transition.states: + if not limitToFromState or \ + (limitToFromState and (fromState == limitToFromState)): + fromStateName = self.getNameOf(fromState) + toStateName = self.getNameOf(toState) + res.append('%s%s%sTo%s%s' % (transitionName, + fromStateName[0].upper(), fromStateName[1:], + toStateName[0].upper(), toStateName[1:])) + return res + + def getTransitionNames(self, limitToTransitions=None, limitToFromState=None, + withLabels=False): + '''Returns the name of all "concrete" transitions corresponding to the + Appy transitions of this worlflow. If p_limitToTransitions is not + None, it represents a list of Appy transitions and the result is a + list of the names of the "concrete" transitions that correspond to + those transitions only. If p_limitToFromState is not None, it + represents an Appy state; only transitions having this state as start + state will be taken into account. If p_withLabels is True, the method + returns a list of tuples (s_transitionName, s_transitionLabel); the + label being the name of the Appy transition.''' + res = [] + for attrName in dir(self.klass): + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, Transition): + # We encountered a transition. + t = attrValue + tName = attrName + if not limitToTransitions or \ + (limitToTransitions and t in limitToTransitions): + # We must take this transition into account according to + # param "limitToTransitions". + if (not limitToFromState) or \ + (limitToFromState and \ + t.hasState(limitToFromState, isFrom=True)): + # We must take this transition into account according + # to param "limitToFromState" + tNames = self.getTransitionNamesOf( + tName, t, limitToFromState) + if not withLabels: + res += tNames + else: + for tn in tNames: + res.append((tn, tName)) + return res + + def getEndStateName(self, transitionName): + '''Returns the name of the state where the "concrete" transition named + p_transitionName ends.''' + res = None + for attrName in dir(self.klass): + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, Transition): + # We got a transition. + t = attrValue + tName = attrName + if t.isSingle(): + if transitionName == tName: + endState = t.states[1] + res = self.getNameOf(endState) + else: + transNames = self.getTransitionNamesOf(tName, t) + if transitionName in transNames: + endState = t.states[transNames.index(transitionName)][1] + res = self.getNameOf(endState) + return res + + def getNameOf(self, stateOrTransition): + '''Gets the Appy name of a p_stateOrTransition.''' + res = None + for attrName in dir(self.klass): + attrValue = getattr(self.klass, attrName) + if attrValue == stateOrTransition: + res = attrName + break + return res +# ------------------------------------------------------------------------------ diff --git a/gen/generator.py b/gen/generator.py new file mode 100755 index 0000000..3482b99 --- /dev/null +++ b/gen/generator.py @@ -0,0 +1,420 @@ +# ------------------------------------------------------------------------------ +import os, os.path, sys, parser, symbol, token +from optparse import OptionParser +from appy.gen import Type, State, Config, Tool, Flavour +from appy.gen.descriptors import * +from appy.gen.utils import produceNiceMessage +import appy.pod, appy.pod.renderer +from appy.shared.utils import FolderDeleter + +# ------------------------------------------------------------------------------ +class GeneratorError(Exception): pass + +# I need the following classes to parse Python classes and find in which +# order the attributes are defined. -------------------------------------------- +class AstMatcher: + '''Allows to find a given pattern within an ast (part).''' + def _match(pattern, node): + res = None + if pattern[0] == node[0]: + # This level matches + if len(pattern) == 1: + return node + else: + if type(node[1]) == tuple: + return AstMatcher._match(pattern[1:], node[1]) + return res + _match = staticmethod(_match) + def match(pattern, node): + res = [] + for subNode in node[1:]: + # Do I find the pattern among the subnodes ? + occurrence = AstMatcher._match(pattern, subNode) + if occurrence: + res.append(occurrence) + return res + match = staticmethod(match) + +# ------------------------------------------------------------------------------ +class AstClass: + '''Python class.''' + def __init__(self, node): + # Link to the Python ast node + self.node = node + self.name = node[2][1] + self.attributes = [] # We are only interested in parsing static + # attributes to now their order + if sys.version_info[:2] >= (2,5): + self.statementPattern = ( + symbol.stmt, symbol.simple_stmt, symbol.small_stmt, + symbol.expr_stmt, symbol.testlist, symbol.test, symbol.or_test, + symbol.and_test, symbol.not_test, symbol.comparison, symbol.expr, + symbol.xor_expr, symbol.and_expr, symbol.shift_expr, + symbol.arith_expr, symbol.term, symbol.factor, symbol.power) + else: + self.statementPattern = ( + symbol.stmt, symbol.simple_stmt, symbol.small_stmt, + symbol.expr_stmt, symbol.testlist, symbol.test, symbol.and_test, + symbol.not_test, symbol.comparison, symbol.expr, symbol.xor_expr, + symbol.and_expr, symbol.shift_expr, symbol.arith_expr, + symbol.term, symbol.factor, symbol.power) + for subNode in node[1:]: + if subNode[0] == symbol.suite: + # We are in the class body + self.getStaticAttributes(subNode) + + def getStaticAttributes(self, classBody): + statements = AstMatcher.match(self.statementPattern, classBody) + for statement in statements: + if len(statement) == 2 and statement[1][0] == symbol.atom and \ + statement[1][1][0] == token.NAME: + attrName = statement[1][1][1] + self.attributes.append(attrName) + + def __repr__(self): + return '' % (self.name, str(self.attributes)) + +# ------------------------------------------------------------------------------ +class Ast: + '''Python AST.''' + classPattern = (symbol.stmt, symbol.compound_stmt, symbol.classdef) + def __init__(self, pyFile): + f = file(pyFile) + fContent = f.read() + f.close() + fContent = fContent.replace('\r', '') + ast = parser.suite(fContent).totuple() + # Get all the classes defined within this module. + self.classes = {} + classNodes = AstMatcher.match(self.classPattern, ast) + for node in classNodes: + astClass = AstClass(node) + self.classes[astClass.name] = astClass + +# ------------------------------------------------------------------------------ +WARN_NO_TEMPLATE = 'Warning: the code generator should have a folder "%s" ' \ + 'containing all code templates.' +CODE_HEADER = '''# -*- coding: utf-8 -*- +# +# GNU General Public License (GPL) +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. +# +''' +class Generator: + '''Abstract base class for building a generator.''' + def __init__(self, application, outputFolder, options): + self.application = application + # Determine application name + self.applicationName = os.path.basename(application) + if application.endswith('.py'): + self.applicationName = self.applicationName[:-3] + # Determine output folder (where to store the generated product) + self.outputFolder = '%s/%s' % (outputFolder, self.applicationName) + self.options = options + # Determine templates folder + exec 'import %s as genModule' % self.__class__.__module__ + self.templatesFolder = os.path.join(os.path.dirname(genModule.__file__), + 'templates') + if not os.path.exists(self.templatesFolder): + print WARN_NO_TEMPLATE % self.templatesFolder + # Default descriptor classes + self.classDescriptor = ClassDescriptor + self.workflowDescriptor = WorkflowDescriptor + self.customToolClassDescriptor = ClassDescriptor + self.customFlavourClassDescriptor = ClassDescriptor + # Custom tool and flavour classes, if they are defined in the + # application + self.customToolDescr = None + self.customFlavourDescr = None + # The following dict contains a series of replacements that need to be + # applied to file templates to generate files. + self.repls = {'applicationName': self.applicationName, + 'applicationPath': os.path.dirname(self.application), + 'codeHeader': CODE_HEADER} + # List of Appy classes and workflows found in the application + self.classes = [] + self.workflows = [] + self.initialize() + self.config = Config.getDefault() + + def determineAppyType(self, klass): + '''Is p_klass an Appy class ? An Appy workflow? None of this ? + If it (or a parent) declares at least one appy type definition, + it will be considered an Appy class. If it (or a parent) declares at + least one state definition, it will be considered an Appy + workflow.''' + res = 'none' + for attrValue in klass.__dict__.itervalues(): + if isinstance(attrValue, Type): + res = 'class' + elif isinstance(attrValue, State): + res = 'workflow' + if not res: + for baseClass in klass.__bases__: + baseClassType = self.determineAppyType(baseClass) + if baseClassType != 'none': + res = baseClassType + break + return res + + IMPORT_ERROR = 'Warning: error while importing module %s (%s)' + SYNTAX_ERROR = 'Warning: error while parsing module %s (%s)' + def walkModule(self, moduleName): + '''Visits a given (sub-*)module into the application.''' + try: + exec 'import %s' % moduleName + exec 'moduleObj = %s' % moduleName + moduleFile = moduleObj.__file__ + if moduleFile.endswith('.pyc'): + moduleFile = moduleFile[:-1] + astClasses = Ast(moduleFile).classes + except ImportError, ie: + # True import error or, simply, this is a simple folder within + # the application, not a sub-module. + print self.IMPORT_ERROR % (moduleName, str(ie)) + return + except SyntaxError, se: + print self.SYNTAX_ERROR % (moduleName, str(se)) + return + classType = type(Generator) + # Find all classes in this module + for moduleElemName in moduleObj.__dict__.keys(): + exec 'moduleElem = moduleObj.%s' % moduleElemName + if (type(moduleElem) == classType) and \ + (moduleElem.__module__ == moduleObj.__name__): + # We have found a Python class definition in this module. + appyType = self.determineAppyType(moduleElem) + if appyType != 'none': + # Produce a list of static class attributes (in the order + # of their definition). + attrs = astClasses[moduleElem.__name__].attributes + if appyType == 'class': + if issubclass(moduleElem, Tool): + descrClass = self.customToolClassDescriptor + self.customToolDescr = descrClass( + moduleElem, attrs, self) + elif issubclass(moduleElem, Flavour): + descrClass = self.customFlavourClassDescriptor + self.customFlavourDescr = descrClass( + moduleElem, attrs, self) + else: + descrClass = self.classDescriptor + self.classes.append( + descrClass(moduleElem, attrs, self)) + elif appyType == 'workflow': + descrClass = self.workflowDescriptor + self.workflows.append( + descrClass(moduleElem, attrs, self)) + elif isinstance(moduleElem, Config): + self.config = moduleElem + + # Walk potential sub-modules + if moduleFile.find('__init__.py') != -1: + # Potentially, sub-modules exist + moduleFolder = os.path.dirname(moduleFile) + for elem in os.listdir(moduleFolder): + subModuleName, ext = os.path.splitext(elem) + if ((ext == '.py') and (subModuleName != '__init__')) or \ + os.path.isdir(os.path.join(moduleFolder, subModuleName)): + # Submodules may be sub-folders or Python files + subModuleName = '%s.%s' % (moduleName, subModuleName) + self.walkModule(subModuleName) + + def walkApplication(self): + '''This method walks into the application and creates the corresponding + meta-classes in self.classes, self.workflows, etc.''' + # Where is the application located ? + containingFolder = os.path.dirname(self.application) + sys.path.append(containingFolder) + # What is the name of the application ? + appName = os.path.basename(self.application) + if os.path.isfile(self.application): + appName = os.path.splitext(appName)[0] + self.walkModule(appName) + sys.path.pop() + + def generateClass(self, classDescr): + '''This method is called whenever a Python class declaring Appy type + definition(s) is encountered within the application.''' + + def generateWorkflow(self, workflowDescr): + '''This method is called whenever a Python class declaring states and + transitions is encountered within the application.''' + + def initialize(self): + '''Called before the old product is removed (if any), in __init__.''' + + def finalize(self): + '''Called at the end of the generation process.''' + + def copyFile(self, fileName, replacements, destName=None, destFolder=None, + isPod=False): + '''This method will copy p_fileName from self.templatesFolder to + self.outputFolder (or in a subFolder if p_destFolder is given) + after having replaced all p_replacements. If p_isPod is True, + p_fileName is a POD template and the copied file is the result of + applying p_fileName with context p_replacements.''' + # Get the path of the template file to copy + templatePath = os.path.join(self.templatesFolder, fileName) + # Get (or create if needed) the path of the result file + destFile = fileName + if destName: destFile = destName + if destFolder: destFile = '%s/%s' % (destFolder, destFile) + absDestFolder = self.outputFolder + if destFolder: + absDestFolder = os.path.join(self.outputFolder, destFolder) + if not os.path.exists(absDestFolder): + os.makedirs(absDestFolder) + resultPath = os.path.join(self.outputFolder, destFile) + if os.path.exists(resultPath): os.remove(resultPath) + if not isPod: + # Copy the template file to result file after having performed some + # replacements + f = file(templatePath) + fileContent = f.read() + f.close() + if not fileName.endswith('.png'): + for rKey, rValue in replacements.iteritems(): + fileContent = fileContent.replace( + '' % rKey, str(rValue)) + f = file(resultPath, 'w') + f.write(fileContent) + f.close() + else: + # Call the POD renderer to produce the result + rendererParams = {'template': templatePath, + 'context': replacements, + 'result': resultPath} + renderer = appy.pod.renderer.Renderer(**rendererParams) + renderer.run() + + def run(self): + self.walkApplication() + for classDescr in self.classes: self.generateClass(classDescr) + for wfDescr in self.workflows: self.generateWorkflow(wfDescr) + self.finalize() + print 'Done.' + +# ------------------------------------------------------------------------------ +ERROR_CODE = 1 +VALID_PRODUCT_TYPES = ('plone25', 'odt') +APP_NOT_FOUND = 'Application not found at %s.' +WRONG_NG_OF_ARGS = 'Wrong number of arguments.' +WRONG_OUTPUT_FOLDER = 'Output folder not found. Please create it first.' +PRODUCT_TYPE_ERROR = 'Wrong product type. Product type may be one of the ' \ + 'following: %s' % str(VALID_PRODUCT_TYPES) +C_OPTION = 'Removes from i18n files all labels that are not automatically ' \ + 'generated from your gen-application. It can be useful during ' \ + 'development, when you do lots of name changes (classes, ' \ + 'attributes, states, transitions, etc): in this case, the Appy ' \ + 'i18n label generation machinery produces lots of labels that ' \ + 'then become obsolete.' +S_OPTION = 'Sorts all i18n labels. If you use this option, among the ' \ + 'generated i18n files, you will find first all labels ' \ + 'that are automatically generated by appy.gen, in some logical ' \ + 'order (ie: field-related labels appear together, in the order ' \ + 'they are declared in the gen-class). Then, if you have added ' \ + 'labels manually, they will appear afterwards. Sorting labels ' \ + 'may not be desired under development. Indeed, when no sorting ' \ + 'occurs, every time you add or modify a field, class, state, etc, ' \ + 'newly generated labels will all appear together at the end of ' \ + 'the file; so it will be easy to translate them all. When sorting ' \ + 'occurs, those elements may be spread at different places in the ' \ + 'i18n file. When the development is finished, it may be a good ' \ + 'idea to sort the labels to get a clean and logically ordered ' \ + 'set of translation files.' + +class GeneratorScript: + '''usage: %prog [options] app productType outputFolder + + "app" is the path to your Appy application, which may be a + Python module (= a file than ends with .py) or a Python + package (= a folder containing a file named __init__.py). + Your app may reside anywhere (but it needs to be + accessible by the underlying application server, ie Zope), + excepted within the generated product. Typically, if you + generate a Plone product, it may reside within + /lib/python, but not within the + generated product (typically stored in + /Products). + "productType" is the kind of product you want to generate + (currently, only "plone25" and 'odt' are supported; + in the near future, the "plone25" target will also produce + Plone 3-compliant code that will still work with + Plone 2.5). + "outputFolder" is the folder where the product will be generated. + For example, if you specify /my/output/folder for your + application /home/gde/MyApp.py, this script will create + a folder /my/output/folder/MyApp and put in it the + generated product. + + Example: generating a Plone product + ----------------------------------- + In your Zope instance named myZopeInstance, create a folder + "myZopeInstance/lib/python/MyApp". Create into it your Appy application + (we suppose here that it is a Python package, containing a __init__.py + file and other files). Then, chdir into this folder and type + "python /gen/generator.py . plone25 ../../../Products" and the + product will be generated in myZopeInstance/Products/MyApp. + "python" must refer to a Python interpreter that knows package appy.''' + + def generateProduct(self, options, application, productType, outputFolder): + exec 'from appy.gen.%s.generator import Generator' % productType + Generator(application, outputFolder, options).run() + + def manageArgs(self, parser, options, args): + # Check number of args + if len(args) != 3: + print WRONG_NG_OF_ARGS + parser.print_help() + sys.exit(ERROR_CODE) + # Check productType + if args[1] not in VALID_PRODUCT_TYPES: + print PRODUCT_TYPE_ERROR + sys.exit(ERROR_CODE) + # Check existence of application + if not os.path.exists(args[0]): + print APP_NOT_FOUND % args[0] + sys.exit(ERROR_CODE) + # Check existence of outputFolder basic type + if not os.path.exists(args[2]): + print WRONG_OUTPUT_FOLDER + sys.exit(ERROR_CODE) + # Convert all paths in absolute paths + for i in (0,2): + args[i] = os.path.abspath(args[i]) + def run(self): + optParser = OptionParser(usage=GeneratorScript.__doc__) + optParser.add_option("-c", "--i18n-clean", action='store_true', + dest='i18nClean', default=False, help=C_OPTION) + optParser.add_option("-s", "--i18n-sort", action='store_true', + dest='i18nSort', default=False, help=S_OPTION) + (options, args) = optParser.parse_args() + try: + self.manageArgs(optParser, options, args) + print 'Generating %s product in %s...' % (args[1], args[2]) + self.generateProduct(options, *args) + except GeneratorError, ge: + sys.stderr.write(str(ge)) + sys.stderr.write('\n') + optParser.print_help() + sys.exit(ERROR_CODE) + +# ------------------------------------------------------------------------------ +if __name__ == '__main__': + GeneratorScript().run() +# ------------------------------------------------------------------------------ diff --git a/gen/odt/__init__.py b/gen/odt/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/gen/odt/generator.py b/gen/odt/generator.py new file mode 100755 index 0000000..c1f4ad2 --- /dev/null +++ b/gen/odt/generator.py @@ -0,0 +1,54 @@ +'''This file contains the main Generator class used for generating an + ODT file from an Appy application.''' + +# ------------------------------------------------------------------------------ +import os, os.path +from appy.gen import Page +from appy.gen.utils import produceNiceMessage +from appy.gen.generator import Generator as AbstractGenerator + +# ------------------------------------------------------------------------------ +class Generator(AbstractGenerator): + '''This generator generates ODT files from an Appy application.''' + + def __init__(self, *args, **kwargs): + AbstractGenerator.__init__(self, *args, **kwargs) + self.repls = {'generator': self} + + def finalize(self): + pass + + def getOdtFieldLabel(self, fieldName): + '''Given a p_fieldName, this method creates the label as it will appear + in the ODT file.''' + return '%s' % \ + (fieldName, produceNiceMessage(fieldName)) + + def generateClass(self, classDescr): + '''Is called each time an Appy class is found in the application.''' + repls = self.repls.copy() + repls['classDescr'] = classDescr + self.copyFile('basic.odt', repls, + destName='%sEdit.odt' % classDescr.klass.__name__, isPod=True) + + def fieldIsStaticallyInvisible(self, field): + '''This method determines if p_field is always invisible. It can be + verified for example if field.type.show is the boolean value False or + if the page where the field must be displayed has a boolean attribute + "show" having the boolean value False.''' + if (type(field.show) == bool) and not field.show: return True + if (type(field.pageShow) == bool) and not field.pageShow: return True + return False + + undumpable = ('Ref', 'Action', 'File', 'Computed') + def getRelevantAttributes(self, classDescr): + '''Some fields, like computed fields or actions, should not be dumped + into the ODT file. This method returns the list of "dumpable" + fields.''' + res = [] + for fieldName, field in classDescr.getOrderedAppyAttributes(): + if (field.type not in self.undumpable) and \ + (not self.fieldIsStaticallyInvisible(field)): + res.append((fieldName, field)) + return res +# ------------------------------------------------------------------------------ diff --git a/gen/odt/templates/basic.odt b/gen/odt/templates/basic.odt new file mode 100644 index 0000000000000000000000000000000000000000..7f3816a3b8ddb3cc478342b58de608603fc1be79 GIT binary patch literal 10487 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 literal 0 HcmV?d00001 diff --git a/gen/plone25/__init__.py b/gen/plone25/__init__.py new file mode 100755 index 0000000..e69de29 diff --git a/gen/plone25/descriptors.py b/gen/plone25/descriptors.py new file mode 100755 index 0000000..a3595a0 --- /dev/null +++ b/gen/plone25/descriptors.py @@ -0,0 +1,666 @@ +'''Descriptor classes defined in this file are "intermediary" classes that + gather, from the user application, information about concepts (like Archetype + classes or DC workflow definitions) that will eventually be dumped into the + generated application. Typically they have methods named "generate..." that + produce generated code.''' + +# ------------------------------------------------------------------------------ +import types, copy +from model import ModelClass, Flavour, flavourAttributePrefixes +from utils import stringify +import appy.gen +import appy.gen.descriptors +from appy.gen.po import PoMessage +from appy.gen import Date, String, State, Transition, Type +from appy.gen.utils import GroupDescr, PageDescr, produceNiceMessage +TABS = 4 # Number of blanks in a Python indentation. + +# ------------------------------------------------------------------------------ +class ArchetypeFieldDescriptor: + '''This class allows to gather information needed to generate an Archetypes + definition (field + widget) from an Appy type. An Appy type is used for + defining the type of attributes defined in the user application.''' + + singleValuedTypes = ('Integer', 'Float', 'Boolean', 'Date', 'File') + # Although Appy allows to specify a multiplicity[0]>1 for those types, it is + # not supported by Archetypes. So we will always generate single-valued type + # definitions for them. + specialParams = ('title', 'description') + + def __init__(self, fieldName, appyType, classDescriptor): + self.appyType = appyType + self.classDescr = classDescriptor + self.generator = classDescriptor.generator + self.applicationName = classDescriptor.generator.applicationName + self.fieldName = fieldName + self.fieldParams = {'name': fieldName} + self.widgetParams = {} + self.fieldType = None + self.widgetType = None + self.walkAppyType() + + def __repr__(self): + return '' % (self.fieldName, self.classDescr) + + def getFlavourAttributeMessage(self, fieldName): + '''Some attributes generated on the Flavour class need a specific + default message, returned by this method.''' + res = fieldName + for prefix in flavourAttributePrefixes: + if fieldName.startswith(prefix): + messageId = 'MSG_%s' % prefix + res = getattr(PoMessage, messageId) + if res.find('%s') != -1: + # I must complete the message with the field name. + res = res % fieldName.split('_')[-1] + break + return res + + def produceMessage(self, msgId, isLabel=True): + '''Gets the default label or description (if p_isLabel is False) for + i18n message p_msgId.''' + default = ' ' + produceNice = False + if isLabel: + produceNice = True + default = self.fieldName + # Some attributes need a specific predefined message + if isinstance(self.classDescr, FlavourClassDescriptor): + default = self.getFlavourAttributeMessage(self.fieldName) + if default != self.fieldName: produceNice = False + msg = PoMessage(msgId, '', default) + if produceNice: + msg.produceNiceDefault() + return msg + + def walkBasicType(self): + '''How to dump a basic type?''' + self.fieldType = '%sField' % self.appyType.type + self.widgetType = "%sWidget" % self.appyType.type + if self.appyType.type == 'Date': + self.fieldType = 'DateTimeField' + self.widgetType = 'CalendarWidget' + if self.appyType.format == Date.WITHOUT_HOUR: + self.widgetParams['show_hm'] = False + elif self.appyType.type == 'Float': + self.widgetType = 'DecimalWidget' + elif self.appyType.type == 'File': + if self.appyType.isImage: + self.fieldType = 'ImageField' + self.widgetType = 'ImageWidget' + self.fieldParams['storage'] = 'python:AttributeStorage()' + + def walkString(self): + '''How to generate an Appy String?''' + if self.appyType.format == String.LINE: + if self.appyType.isSelection(): + if self.appyType.isMultiValued(): + self.fieldType = 'LinesField' + self.widgetType = 'MultiSelectionWidget' + self.fieldParams['multiValued'] = True + else: + self.fieldType = 'StringField' + self.widgetType = 'SelectionWidget' + self.widgetParams['format'] = 'select' + # Elements common to all selection fields + methodName = 'list_%s_values' % self.fieldName + self.fieldParams['vocabulary'] = methodName + self.classDescr.addSelectMethod( + methodName, self, self.appyType.isMultiValued()) + self.fieldParams['enforceVocabulary'] = True + else: + self.fieldType = 'StringField' + self.widgetType = 'StringWidget' + self.widgetParams['size'] = 50 + if self.appyType.width: + self.widgetParams['size'] = self.appyType.width + # Manage index + if self.appyType.searchable: + self.fieldParams['index'] = 'FieldIndex' + elif self.appyType.format == String.TEXT: + self.fieldType = 'TextField' + self.widgetType = 'TextAreaWidget' + if self.appyType.height: + self.widgetParams['rows'] = self.appyType.height + elif self.appyType.format == String.XHTML: + self.fieldType = 'TextField' + self.widgetType = 'RichWidget' + self.fieldParams['allowable_content_types'] = ('text/html',) + self.fieldParams['default_output_type'] = "text/html" + else: + self.fieldType = 'StringField' + self.widgetType = 'StringWidget' + # Manage searchability + if self.appyType.searchable: + self.fieldParams['searchable'] = True + + def walkComputed(self): + '''How to generate a computed field? We generate an Archetypes String + field.''' + self.fieldType = 'StringField' + self.widgetType = 'StringWidget' + self.widgetParams['visible'] = False # Archetypes will believe the + # field is invisible; we will display it ourselves (like for Ref fields) + + def walkAction(self): + '''How to generate an action field ? We generate an Archetypes String + field.''' + self.fieldType = 'StringField' + self.widgetType = 'StringWidget' + self.widgetParams['visible'] = False # Archetypes will believe the + # field is invisible; we will display it ourselves (like for Ref fields) + # Add action-specific i18n messages + for suffix in ('ok', 'ko'): + label = '%s_%s_action_%s' % (self.classDescr.name, self.fieldName, + suffix) + msg = PoMessage(label, '', + getattr(PoMessage, 'ACTION_%s' % suffix.upper())) + self.generator.labels.append(msg) + self.classDescr.labelsToPropagate.append(msg) + + def walkRef(self): + '''How to generate a Ref?''' + relationship = '%s_%s_rel' % (self.classDescr.name, self.fieldName) + self.fieldType = 'ReferenceField' + self.widgetType = 'ReferenceWidget' + self.fieldParams['relationship'] = relationship + if self.appyType.isMultiValued(): + self.fieldParams['multiValued'] = True + self.widgetParams['visible'] = False + # Update the list of referers + self.generator.addReferer(self, relationship) + # Add the widget label for the back reference + refClassName = ArchetypesClassDescriptor.getClassName( + self.appyType.klass) + if issubclass(self.appyType.klass, ModelClass): + refClassName = self.applicationName + self.appyType.klass.__name__ + elif issubclass(self.appyType.klass, appy.gen.Tool): + refClassName = '%sTool' % self.applicationName + elif issubclass(self.appyType.klass, appy.gen.Flavour): + refClassName = '%sFlavour' % self.applicationName + backLabel = "%s_%s_back" % (refClassName, self.appyType.back.attribute) + poMsg = PoMessage(backLabel, '', self.appyType.back.attribute) + poMsg.produceNiceDefault() + self.generator.labels.append(poMsg) + + def walkInfo(self): + '''How to generate an Info field? We generate an Archetypes String + field.''' + self.fieldType = 'StringField' + self.widgetType = 'StringWidget' + self.widgetParams['visible'] = False # Archetypes will believe the + # field is invisible; we will display it ourselves (like for Ref fields) + + alwaysAValidatorFor = ('Ref', 'Integer', 'Float') + def walkAppyType(self): + '''Walks into the Appy type definition and gathers data about the + Archetype elements to generate.''' + # Manage things common to all Appy types + # - special accessor for fields "title" and "description" + if self.fieldName in self.specialParams: + self.fieldParams['accessor'] = self.fieldName.capitalize() + # - default value + if self.appyType.default != None: + self.fieldParams['default'] = self.appyType.default + # - required? + if self.appyType.multiplicity[0] >= 1: + if self.appyType.type != 'Ref': + # Indeed, if it is a ref appy will manage itself field updates + # in at_post_create_script, so Archetypes must not enforce + # required=True + self.fieldParams['required'] = True + # - optional ? + if self.appyType.optional: + Flavour._appy_addOptionalField(self) + self.widgetParams['condition'] = ' python: ' \ + 'here.fieldIsUsed("%s")'% self.fieldName + # - edit default value ? + if self.appyType.editDefault: + Flavour._appy_addDefaultField(self) + methodName = 'getDefaultValueFor%s' % self.fieldName + self.fieldParams['default_method'] = methodName + self.classDescr.addDefaultMethod(methodName, self) + # - searchable ? + if self.appyType.searchable and (self.appyType.type != 'String'): + self.fieldParams['index'] = 'FieldIndex' + # - slaves ? + if self.appyType.slaves: + self.widgetParams['visible'] = False # Archetypes will believe the + # field is invisible; we will display it ourselves (like for Ref + # fields) + # - need to generate a field validator? + # In all cases, add an i18n message for the validation error for this + # field. + label = '%s_%s_valid' % (self.classDescr.name, self.fieldName) + poMsg = PoMessage(label, '', PoMessage.DEFAULT_VALID_ERROR) + self.generator.labels.append(poMsg) + if (type(self.appyType.validator) == types.FunctionType) or \ + (type(self.appyType.validator) == type(String.EMAIL)) or \ + (self.appyType.type in self.alwaysAValidatorFor): + # For references, we always add a validator because gen validates + # itself things like multiplicities; + # For integers and floats, we also need validators because, by + # default, Archetypes produces an exception if the field value does + # not have the correct type, for example. + methodName = 'validate_%s' % self.fieldName + # Add a validate method for this + specificType = None + if self.appyType.type in self.alwaysAValidatorFor: + specificType = self.appyType.type + self.classDescr.addValidateMethod(methodName, label, self, + specificType=specificType) + # Manage specific permissions + permFieldName = '%s %s' % (self.classDescr.name, self.fieldName) + if self.appyType.specificReadPermission: + self.fieldParams['read_permission'] = '%s: Read %s' % \ + (self.generator.applicationName, permFieldName) + if self.appyType.specificWritePermission: + self.fieldParams['write_permission'] = '%s: Write %s' % \ + (self.generator.applicationName, permFieldName) + # i18n labels + i18nPrefix = "%s_%s" % (self.classDescr.name, self.fieldName) + wp = self.widgetParams + wp['label'] = self.fieldName + wp['label_msgid'] = '%s' % i18nPrefix + wp['description'] = '%sDescr' % i18nPrefix + wp['description_msgid'] = '%s_descr' % i18nPrefix + wp['i18n_domain'] = self.applicationName + # Create labels for generating them in i18n files. + messages = self.generator.labels + messages.append(self.produceMessage(wp['label_msgid'])) + messages.append(self.produceMessage(wp['description_msgid'], + isLabel=False)) + # Create i18n messages linked to pages and phases + messages = self.generator.labels + pageMsgId = '%s_page_%s' % (self.classDescr.name, self.appyType.page) + phaseMsgId = '%s_phase_%s' % (self.classDescr.name, self.appyType.phase) + pagePoMsg = PoMessage(pageMsgId, '', + produceNiceMessage(self.appyType.page)) + phasePoMsg = PoMessage(phaseMsgId, '', + produceNiceMessage(self.appyType.phase)) + for poMsg in (pagePoMsg, phasePoMsg): + if poMsg not in messages: + messages.append(poMsg) + self.classDescr.labelsToPropagate.append(poMsg) + # Create i18n messages linked to groups + if self.appyType.group: + groupName, cols = GroupDescr.getGroupInfo(self.appyType.group) + msgId = '%s_group_%s' % (self.classDescr.name, groupName) + poMsg = PoMessage(msgId, '', groupName) + poMsg.produceNiceDefault() + if poMsg not in messages: + messages.append(poMsg) + self.classDescr.labelsToPropagate.append(poMsg) + # Manage schemata + if self.appyType.page != 'main': + self.fieldParams['schemata'] = self.appyType.page + # Manage things which are specific to basic types + if self.appyType.type in self.singleValuedTypes: self.walkBasicType() + # Manage things which are specific to String types + elif self.appyType.type == 'String': self.walkString() + # Manage things which are specific to Computed types + elif self.appyType.type == 'Computed': self.walkComputed() + # Manage things which are specific to Actions + elif self.appyType.type == 'Action': self.walkAction() + # Manage things which are specific to reference types + elif self.appyType.type == 'Ref': self.walkRef() + # Manage things which are specific to info types + elif self.appyType.type == 'Info': self.walkInfo() + + def generate(self): + '''Produces the Archetypes field definition as a string.''' + res = '' + s = stringify + spaces = TABS + # Generate field name + res += ' '*spaces + self.fieldType + '(\n' + # Generate field parameters + spaces += TABS + for fParamName, fParamValue in self.fieldParams.iteritems(): + res += ' '*spaces + fParamName + '=' + s(fParamValue) + ',\n' + # Generate widget + res += ' '*spaces + 'widget=%s(\n' % self.widgetType + spaces += TABS + for wParamName, wParamValue in self.widgetParams.iteritems(): + res += ' '*spaces + wParamName + '=' + s(wParamValue) + ',\n' + # End of widget definition + spaces -= TABS + res += ' '*spaces + ')\n' + # End of field definition + spaces -= TABS + res += ' '*spaces + '),\n' + return res + +class ClassDescriptor(appy.gen.descriptors.ClassDescriptor): + '''Represents an Archetypes-compliant class.''' + def __init__(self, klass, orderedAttributes, generator): + appy.gen.descriptors.ClassDescriptor.__init__(self, klass, + orderedAttributes, generator) + self.schema = '' # The archetypes schema will be generated here + self.methods = '' # Needed method definitions will be generated here + # We remember here encountered pages and groups defined in the Appy + # type. Indeed, after having parsed all application classes, we will + # need to generate i18n labels for every child class of the class + # that declared pages and groups. + self.labelsToPropagate = [] #~[PoMessage]~ Some labels (like page, + # group or action names) need to be propagated in children classes + # (because they contain the class name). But at this time we don't know + # yet every sub-class. So we store those labels here; the Generator + # will propagate them later. + self.flavourFieldsToPropagate = [] # For this class, some fields have + # been defined on the Flavour class. Those fields need to be defined + # for child classes of this class as well, but at this time we don't + # know yet every sub-class. So we store field definitions here; the + # Generator will propagate them later. + + def generateSchema(self): + '''Generates the corresponding Archetypes schema in self.schema.''' + for attrName in self.orderedAttributes: + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, Type): + field = ArchetypeFieldDescriptor(attrName, attrValue, self) + self.schema += '\n' + field.generate() + + def addSelectMethod(self, methodName, fieldDescr, isMultivalued=False): + '''For the selection field p_fieldDescr I need to generate a method + named p_methodName that will generate the vocabulary for + p_fieldDescr.''' + # Generate the method signature + m = self.methods + s = stringify + spaces = TABS + m += '\n' + ' '*spaces + 'def %s(self):\n' % methodName + spaces += TABS + appyType = fieldDescr.appyType + if type(appyType.validator) in (list, tuple): + # Generate i18n messages for every possible value + f = fieldDescr + labels = [] + for value in appyType.validator: + msgLabel = '%s_%s_list_%s' % (f.classDescr.name, f.fieldName, + value) + labels.append(msgLabel) # I will need it later + poMsg = PoMessage(msgLabel, '', value) + poMsg.produceNiceDefault() + self.generator.labels.append(poMsg) + # Generate a method that returns a DisplayList + appName = self.generator.applicationName + allValues = appyType.validator + if not isMultivalued: + allValues = [''] + appyType.validator + labels.insert(0, 'choose_a_value') + m += ' '*spaces + 'return self._appy_getDisplayList' \ + '(%s, %s, %s)\n' % (s(allValues), s(labels), s(appName)) + self.methods = m + + def addValidateMethod(self, methodName, label, fieldDescr, + specificType=None): + '''For the field p_fieldDescr I need to generate a validation method. + If p_specificType is not None, it corresponds to the name of a type + like Ref, Integer or Float, for which specific validation is needed, + beyond the potential custom validation specified by a user-defined + validator method.''' + # Generate the method signature + m = self.methods + s = stringify + spaces = TABS + m += '\n' + ' '*spaces + 'def %s(self, value):\n' % methodName + spaces += TABS + m += ' '*spaces + 'return self._appy_validateField(%s, value, %s, ' \ + '%s)\n' % (s(fieldDescr.fieldName), s(label), s(specificType)) + self.methods = m + + def addDefaultMethod(self, methodName, fieldDescr): + '''When the default value of a field may be edited, we must add a method + that will gather the default value from the flavour.''' + m = self.methods + spaces = TABS + m += '\n' + ' '*spaces + 'def %s(self):\n' % methodName + spaces += TABS + m += ' '*spaces + 'return self.getDefaultValueFor("%s")\n' % \ + fieldDescr.fieldName + self.methods = m + +class ArchetypesClassDescriptor(ClassDescriptor): + '''Represents an Archetypes-compliant class that corresponds to an + application class.''' + predefined = False + def __init__(self, klass, orderedAttributes, generator): + ClassDescriptor.__init__(self, klass, orderedAttributes, generator) + if not hasattr(self, 'name'): + self.name = self.getClassName(klass) + self.generateSchema() + + def getClassName(klass): + '''Generates the name of the corresponding Archetypes class.''' + return klass.__module__.replace('.', '_') + '_' + klass.__name__ + getClassName = staticmethod(getClassName) + + def isAbstract(self): + '''Is self.klass abstract?''' + res = False + if self.klass.__dict__.has_key('abstract'): + res = self.klass.__dict__['abstract'] + return res + + def isRoot(self): + '''Is self.klass root? A root class represents some kind of major + concept into the application. For example, creating instances + of such classes will be easy from the user interface.''' + res = False + if self.klass.__dict__.has_key('root'): + res = self.klass.__dict__['root'] + return res + + def isPod(self): + '''May this class be associated with POD templates?.''' + res = False + if self.klass.__dict__.has_key('pod') and self.klass.__dict__['pod']: + res = True + return res + + def isFolder(self, klass=None): + '''Must self.klass be a folder? If klass is not None, this method tests + it on p_klass instead of self.klass.''' + res = False + theClass = self.klass + if klass: + theClass = klass + if theClass.__dict__.has_key('folder'): + res = theClass.__dict__['folder'] + else: + if theClass.__bases__: + res = self.isFolder(theClass.__bases__[0]) + return res + + def addGenerateDocMethod(self): + m = self.methods + spaces = TABS + m += '\n' + ' '*spaces + 'def generateDocument(self):\n' + spaces += TABS + m += ' '*spaces + "'''Generates a document from p_self.'''\n" + m += ' '*spaces + 'return self._appy_generateDocument()\n' + self.methods = m + +class ToolClassDescriptor(ClassDescriptor): + '''Represents the POD-specific fields that must be added to the tool.''' + predefined = True + def __init__(self, klass, generator): + ClassDescriptor.__init__(self, klass, klass._appy_attributes, generator) + self.name = '%sTool' % generator.applicationName + def isFolder(self, klass=None): return True + def isRoot(self): return False + def addUnoValidator(self): + m = self.methods + spaces = TABS + m += '\n' + ' '*spaces + 'def validate_unoEnabledPython(self, value):\n' + spaces += TABS + m += ' '*spaces + 'return self._appy_validateUnoEnabledPython(value)\n' + self.methods = m + def generateSchema(self): + ClassDescriptor.generateSchema(self) + self.addUnoValidator() + +class FlavourClassDescriptor(ClassDescriptor): + '''Represents an Archetypes-compliant class that corresponds to the Flavour + for the generated application.''' + predefined = True + def __init__(self, klass, generator): + ClassDescriptor.__init__(self, klass, klass._appy_attributes, generator) + self.name = '%sFlavour' % generator.applicationName + self.attributesByClass = klass._appy_classes + # We don't generate the schema automatically here because we need to + # add more fields. + def isFolder(self, klass=None): return True + def isRoot(self): return False + +class PodTemplateClassDescriptor(ClassDescriptor): + '''Represents a POD template.''' + predefined = True + def __init__(self, klass, generator): + ClassDescriptor.__init__(self, klass, klass._appy_attributes, generator) + self.name = '%sPodTemplate' % generator.applicationName + def isRoot(self): return False + +class CustomToolClassDescriptor(ArchetypesClassDescriptor): + '''If the user defines a class that inherits from Tool, we will add those + fields to the tool.''' + predefined = False + def __init__(self, *args): + self.name = '%sTool' % args[2].applicationName + ArchetypesClassDescriptor.__init__(self, *args) + def generateSchema(self): + '''Custom tool fields may not use the variability mechanisms, ie + 'optional' or 'editDefault' attributes.''' + for attrName in self.orderedAttributes: + attrValue = getattr(self.klass, attrName) + if isinstance(attrValue, Type): + attrValue = copy.copy(attrValue) + attrValue.optional = False + attrValue.editDefault = False + field = ArchetypeFieldDescriptor(attrName, attrValue, self) + self.schema += '\n' + field.generate() + +class CustomFlavourClassDescriptor(CustomToolClassDescriptor): + def __init__(self, *args): + self.name = '%sFlavour' % args[2].applicationName + ArchetypesClassDescriptor.__init__(self, *args) + +class WorkflowDescriptor(appy.gen.descriptors.WorkflowDescriptor): + '''Represents a workflow.''' + # How to map Appy permissions to Plone permissions ? + appyToPlonePermissions = { + 'read': ('View', 'Access contents information'), + 'write': ('Modify portal content',), + 'delete': ('Delete objects',), + } + def getPlonePermissions(self, permission): + '''Returns the Plone permission(s) that correspond to + Appy p_permission.''' + if self.appyToPlonePermissions.has_key(permission): + res = self.appyToPlonePermissions[permission] + elif isinstance(permission, basestring): + res = [permission] + else: + # Permission if an Appy permission declaration + className, fieldName = permission.fieldDescriptor.rsplit('.', 1) + if className.find('.') == -1: + # The related class resides in the same module as the workflow + fullClassName = '%s_%s' % ( + self.klass.__module__.replace('.', '_'), className) + else: + # className contains the full package name of the class + fullClassName = className.replace('.', '_') + # Read or Write ? + if permission.__class__.__name__ == 'ReadPermission': + access = 'Read' + else: + access = 'Write' + permName = '%s: %s %s %s' % (self.generator.applicationName, + access, fullClassName, fieldName) + res = [permName] + return res + + def getWorkflowName(klass): + '''Generates the name of the corresponding Archetypes workflow.''' + res = klass.__module__.replace('.', '_') + '_' + klass.__name__ + return res.lower() + getWorkflowName = staticmethod(getWorkflowName) + + def getStatesInfo(self, asDumpableCode=False): + '''Gets, in a dict, information for configuring states of the workflow. + If p_asDumpableCode is True, instead of returning a dict, this + method will return a string containing the dict that can be dumped + into a Python code file.''' + res = {} + transitions = self.getTransitions() + for state in self.getStates(): + stateName = self.getNameOf(state) + # We need the list of transitions that start from this state + outTransitions = state.getTransitions(transitions, + selfIsFromState=True) + tNames = self.getTransitionNames(outTransitions, + limitToFromState=state) + # Compute the permissions/roles mapping for this state + permissionsMapping = {} + for permission, roles in state.getPermissions().iteritems(): + for plonePerm in self.getPlonePermissions(permission): + permissionsMapping[plonePerm] = roles + # Add 'Review portal content' to anyone; this is not a security + # problem because we limit the triggering of every transition + # individually. + allRoles = self.generator.getAllUsedRoles() + if 'Manager' not in allRoles: allRoles.append('Manager') + permissionsMapping['Review portal content'] = allRoles + res[stateName] = (tNames, permissionsMapping) + if not asDumpableCode: + return res + # We must create the "Python code" version of this dict + newRes = '{' + for stateName, stateInfo in res.iteritems(): + transitions = ','.join(['"%s"' % tn for tn in stateInfo[0]]) + # Compute permissions + permissions = '' + for perm, roles in stateInfo[1].iteritems(): + theRoles = ','.join(['"%s"' % r for r in roles]) + permissions += '"%s": [%s],' % (perm, theRoles) + newRes += '\n "%s": ([%s], {%s}),' % \ + (stateName, transitions, permissions) + return newRes + '}' + + def getTransitionsInfo(self, asDumpableCode=False): + '''Gets, in a dict, information for configuring transitions of the + workflow. If p_asDumpableCode is True, instead of returning a dict, + this method will return a string containing the dict that can be + dumped into a Python code file.''' + res = {} + for tName in self.getTransitionNames(): + res[tName] = self.getEndStateName(tName) + if not asDumpableCode: + return res + # We must create the "Python code" version of this dict + newRes = '{' + for transitionName, endStateName in res.iteritems(): + newRes += '\n "%s": "%s",' % (transitionName, endStateName) + return newRes + '}' + + def getManagedPermissions(self): + '''Returns the Plone permissions of all Appy permissions managed by this + workflow.''' + res = set() + res.add('Review portal content') + for state in self.getStates(): + for permission in state.permissions.iterkeys(): + for plonePerm in self.getPlonePermissions(permission): + res.add(plonePerm) + return res + + def getScripts(self): + res = '' + wfName = WorkflowDescriptor.getWorkflowName(self.klass) + for tName in self.getTransitionNames(): + scriptName = '%s_do%s%s' % (wfName, tName[0].upper(), tName[1:]) + res += 'def %s(self, stateChange, **kw): do("%s", ' \ + 'stateChange, logger)\n' % (scriptName, tName) + return res +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/generator.py b/gen/plone25/generator.py new file mode 100755 index 0000000..5ca1265 --- /dev/null +++ b/gen/plone25/generator.py @@ -0,0 +1,712 @@ +'''This file contains the main Generator class used for generating a + Plone 2.5-compliant product.''' + +# ------------------------------------------------------------------------------ +import os, os.path, re, sys +import appy.gen +from appy.gen import * +from appy.gen.po import PoMessage, PoFile, PoParser +from appy.gen.generator import Generator as AbstractGenerator +from model import ModelClass, PodTemplate, Flavour, Tool +from descriptors import ArchetypeFieldDescriptor, ArchetypesClassDescriptor, \ + WorkflowDescriptor, ToolClassDescriptor, \ + FlavourClassDescriptor, PodTemplateClassDescriptor, \ + CustomToolClassDescriptor, CustomFlavourClassDescriptor + +# Common methods that need to be defined on every Archetype class -------------- +COMMON_METHODS = ''' + def at_post_create_script(self): self._appy_onEdit(True) + def at_post_edit_script(self): self._appy_onEdit(False) + def post_validate(self, REQUEST=None, errors=None): + if not errors: self._appy_validateAllFields(REQUEST, errors) + def getTool(self): return self.%s + def getProductConfig(self): return Products.%s.config +''' +# ------------------------------------------------------------------------------ +class Generator(AbstractGenerator): + '''This generator generates a Plone 2.5-compliant product from a given + appy application.''' + poExtensions = ('.po', '.pot') + + def __init__(self, *args, **kwargs): + Flavour._appy_clean() + AbstractGenerator.__init__(self, *args, **kwargs) + # i18n labels to generate + self.labels = [] # i18n labels + self.toolName = '%sTool' % self.applicationName + self.flavourName = '%sFlavour' % self.applicationName + self.toolInstanceName = 'portal_%s' % self.applicationName.lower() + self.podTemplateName = '%sPodTemplate' % self.applicationName + self.portletName = '%s_portlet' % self.applicationName.lower() + self.queryName = '%s_query' % self.applicationName.lower() + self.skinsFolder = 'skins/%s' % self.applicationName + # The following dict, pre-filled in the abstract generator, contains a + # series of replacements that need to be applied to file templates to + # generate files. + commonMethods = COMMON_METHODS % \ + (self.toolInstanceName, self.applicationName) + self.repls.update( + {'toolName': self.toolName, 'flavourName': self.flavourName, + 'portletName': self.portletName, 'queryName': self.queryName, + 'toolInstanceName': self.toolInstanceName, + 'podTemplateName': self.podTemplateName, + 'macros': '%s_macros' % self.applicationName.lower(), + 'commonMethods': commonMethods}) + # Predefined class descriptors + self.toolDescr = ToolClassDescriptor(Tool, self) + self.flavourDescr = FlavourClassDescriptor(Flavour, self) + self.podTemplateDescr = PodTemplateClassDescriptor(PodTemplate,self) + self.referers = {} + + versionRex = re.compile('(.*?\s+build)\s+(\d+)') + def initialize(self): + # Use customized class descriptors + self.classDescriptor = ArchetypesClassDescriptor + self.workflowDescriptor = WorkflowDescriptor + self.customToolClassDescriptor = CustomToolClassDescriptor + self.customFlavourClassDescriptor = CustomFlavourClassDescriptor + # Determine version number of the Plone product + self.version = '0.1 build 1' + versionTxt = os.path.join(self.outputFolder, 'version.txt') + if os.path.exists(versionTxt): + f = file(versionTxt) + oldVersion = f.read().strip() + f.close() + res = self.versionRex.search(oldVersion) + self.version = res.group(1) + ' ' + str(int(res.group(2))+1) + # Existing i18n files + self.i18nFiles = {} #~{p_fileName: PoFile}~ + # Retrieve existing i18n files if any + i18nFolder = os.path.join(self.outputFolder, 'i18n') + if os.path.exists(i18nFolder): + for fileName in os.listdir(i18nFolder): + name, ext = os.path.splitext(fileName) + if ext in self.poExtensions: + poParser = PoParser(os.path.join(i18nFolder, fileName)) + self.i18nFiles[fileName] = poParser.parse() + + def finalize(self): + # Some useful aliases + msg = PoMessage + app = self.applicationName + # Some global i18n messages + poMsg = msg(app, '', app); poMsg.produceNiceDefault() + self.labels += [poMsg, + msg('workflow_state', '', msg.WORKFLOW_STATE), + msg('phase', '', msg.PHASE), + msg('root_type', '', msg.ROOT_TYPE), + msg('workflow_comment', '', msg.WORKFLOW_COMMENT), + msg('choose_a_value', '', msg.CHOOSE_A_VALUE), + msg('choose_a_doc', '', msg.CHOOSE_A_DOC), + msg('min_ref_violated', '', msg.MIN_REF_VIOLATED), + msg('max_ref_violated', '', msg.MAX_REF_VIOLATED), + msg('no_ref', '', msg.REF_NO), + msg('add_ref', '', msg.REF_ADD), + msg('ref_name', '', msg.REF_NAME), + msg('ref_actions', '', msg.REF_ACTIONS), + msg('move_up', '', msg.REF_MOVE_UP), + msg('move_down', '', msg.REF_MOVE_DOWN), + msg('query_create', '', msg.QUERY_CREATE), + msg('query_no_result', '', msg.QUERY_NO_RESULT), + msg('query_consult_all', '', msg.QUERY_CONSULT_ALL), + msg('ref_invalid_index', '', msg.REF_INVALID_INDEX), + msg('bad_int', '', msg.BAD_INT), + msg('bad_float', '', msg.BAD_FLOAT), + msg('bad_email', '', msg.BAD_EMAIL), + msg('bad_url', '', msg.BAD_URL), + msg('bad_alphanumeric', '', msg.BAD_ALPHANUMERIC), + ] + # Create basic files (config.py, Install.py, etc) + self.generateAppyReference() + self.generateTool() + self.generateConfig() + self.generateInit() + self.generateInstall() + self.generateWorkflows() + self.generateWrappers() + self.generatePortlet() + if self.config.frontPage == True: + self.labels.append(msg('front_page_text', '', msg.FRONT_PAGE_TEXT)) + self.copyFile('frontPage.pt', self.repls, + destFolder=self.skinsFolder, + destName='%sFrontPage.pt' % self.applicationName) + self.copyFile('configure.zcml', self.repls) + self.copyFile('import_steps.xml', self.repls, + destFolder='profiles/default') + self.copyFile('ProfileInit.py', self.repls, destFolder='profiles', + destName='__init__.py') + self.copyFile('tool.gif', {}) + self.copyFile('Macros.pt', self.repls, destFolder=self.skinsFolder, + destName='%s_macros.pt' % self.applicationName.lower()) + self.copyFile('appy_view.pt', self.repls, destFolder=self.skinsFolder, + destName='%s_appy_view.pt' % self.applicationName) + self.copyFile('appy_edit.cpt', self.repls, destFolder=self.skinsFolder, + destName='%s_appy_edit.cpt' % self.applicationName) + self.copyFile('appy_edit.cpt.metadata', self.repls, + destFolder=self.skinsFolder, + destName='%s_appy_edit.cpt.metadata'%self.applicationName) + self.copyFile('Styles.css.dtml', self.repls, destFolder=self.skinsFolder, + destName = '%s.css.dtml' % self.applicationName) + self.copyFile('do.py', self.repls, destFolder=self.skinsFolder, + destName='%s_do.py' % self.applicationName) + self.copyFile('colophon.pt', self.repls, destFolder=self.skinsFolder) + self.copyFile('footer.pt', self.repls, destFolder=self.skinsFolder) + # Create version.txt + f = open(os.path.join(self.outputFolder, 'version.txt'), 'w') + f.write(self.version) + f.close() + # Make Extensions a Python package + for moduleFolder in ('Extensions',): + initFile = '%s/%s/__init__.py' % (self.outputFolder, moduleFolder) + if not os.path.isfile(initFile): + f = open(initFile, 'w') + f.write('') + f.close() + # Decline i18n labels into versions for child classes + for classDescr in self.classes: + for poMsg in classDescr.labelsToPropagate: + for childDescr in classDescr.getChildren(): + childMsg = poMsg.clone(classDescr.name, childDescr.name) + if childMsg not in self.labels: + self.labels.append(childMsg) + # Generate i18n pot file + potFileName = '%s.pot' % self.applicationName + if self.i18nFiles.has_key(potFileName): + potFile = self.i18nFiles[potFileName] + else: + fullName = os.path.join(self.outputFolder, 'i18n/%s' % potFileName) + potFile = PoFile(fullName) + self.i18nFiles[potFileName] = potFile + removedLabels = potFile.update(self.labels, self.options.i18nClean, + not self.options.i18nSort) + if removedLabels: + print 'Warning: %d messages were removed from translation ' \ + 'files: %s' % (len(removedLabels), str(removedLabels)) + potFile.generate() + # Generate i18n po files + for language in self.config.languages: + # I must generate (or update) a po file for the language(s) + # specified in the configuration. + poFileName = potFile.getPoFileName(language) + if self.i18nFiles.has_key(poFileName): + poFile = self.i18nFiles[poFileName] + else: + fullName = os.path.join(self.outputFolder, + 'i18n/%s' % poFileName) + poFile = PoFile(fullName) + self.i18nFiles[poFileName] = poFile + poFile.update(potFile.messages, self.options.i18nClean, + not self.options.i18nSort) + poFile.generate() + # Generate i18n po files for other potential files + for poFile in self.i18nFiles.itervalues(): + if not poFile.generated: + poFile.generate() + + ploneRoles = ('Manager', 'Member', 'Owner', 'Reviewer') + def getAllUsedRoles(self, appOnly=False): + '''Produces a list of all the roles used within all workflows defined + in this application. If p_appOnly is True, it returns only roles + which are specific to this application (ie it removes predefined + Plone roles like Member, Manager, etc.''' + res = [] + for wfDescr in self.workflows: + # Browse states and transitions + for attr in dir(wfDescr.klass): + attrValue = getattr(wfDescr.klass, attr) + if isinstance(attrValue, State) or \ + isinstance(attrValue, Transition): + res += attrValue.getUsedRoles() + res = list(set(res)) + if appOnly: + for ploneRole in self.ploneRoles: + if ploneRole in res: + res.remove(ploneRole) + return res + + def addReferer(self, fieldDescr, relationship): + '''p_fieldDescr is a Ref type definition. We will create in config.py a + dict that lists all back references, by type.''' + k = fieldDescr.appyType.klass + if issubclass(k, ModelClass): + refClassName = self.applicationName + k.__name__ + elif issubclass(k, appy.gen.Tool): + refClassName = '%sTool' % self.applicationName + elif issubclass(k, appy.gen.Flavour): + refClassName = '%sFlavour' % self.applicationName + else: + refClassName = ArchetypesClassDescriptor.getClassName(k) + if not self.referers.has_key(refClassName): + self.referers[refClassName] = [] + self.referers[refClassName].append( (fieldDescr, relationship)) + + def generatePortlet(self): + rootClasses = '' + for classDescr in self.classes: + if classDescr.isRoot(): + rootClasses += "'%s'," % classDescr.name + repls = self.repls.copy() + repls['rootClasses'] = rootClasses + self.copyFile('Portlet.pt', repls, destName='%s.pt' % self.portletName, + destFolder=self.skinsFolder) + self.copyFile('Query.pt', repls, destName='%s.pt' % self.queryName, + destFolder=self.skinsFolder) + + def generateConfig(self): + # Compute referers + referers = '' + for className, refInfo in self.referers.iteritems(): + referers += '"%s":[' % className + for fieldDescr, relationship in refInfo: + refClass = fieldDescr.classDescr.klass + if issubclass(refClass, ModelClass): + refClassName = 'Extensions.appyWrappers.%s' % \ + refClass.__name__ + else: + refClassName = '%s.%s' % (refClass.__module__, + refClass.__name__) + referers += '(%s.%s' % (refClassName, fieldDescr.fieldName) + referers += ',"%s"' % relationship + referers += '),' + referers += '],\n' + # Compute workflow instances initialisation + wfInit = '' + for workflowDescr in self.workflows: + k = workflowDescr.klass + className = '%s.%s' % (k.__module__, k.__name__) + wfInit += 'wf = %s()\n' % className + wfInit += 'wf._transitionsMapping = {}\n' + for transition in workflowDescr.getTransitions(): + tName = workflowDescr.getNameOf(transition) + tNames = workflowDescr.getTransitionNamesOf(tName, transition) + for trName in tNames: + wfInit += 'wf._transitionsMapping["%s"] = wf.%s\n' % \ + (trName, tName) + # We need a new attribute that stores states in order + wfInit += 'wf._states = []\n' + for stateName in workflowDescr.getStateNames(ordered=True): + wfInit += 'wf._states.append("%s")\n' % stateName + wfInit += 'workflowInstances[%s] = wf\n' % className + # Compute imports + imports = ['import %s' % self.applicationName] + classDescrs = self.classes[:] + if self.customToolDescr: + classDescrs.append(self.customToolDescr) + if self.customFlavourDescr: + classDescrs.append(self.customFlavourDescr) + for classDescr in (classDescrs + self.workflows): + theImport = 'import %s' % classDescr.klass.__module__ + if theImport not in imports: + imports.append(theImport) + # Compute list of add permissions + addPermissions = '' + for classDescr in self.classes: + addPermissions += ' "%s":"%s: Add %s",\n' % (classDescr.name, + self.applicationName, classDescr.name) + repls = self.repls.copy() + # Compute list of used roles for registering them if needed + repls['roles'] = ','.join(['"%s"' % r for r in \ + self.getAllUsedRoles(appOnly=True)]) + repls['referers'] = referers + repls['workflowInstancesInit'] = wfInit + repls['imports'] = '\n'.join(imports) + repls['defaultAddRoles'] = ','.join( + ['"%s"' % r for r in self.config.defaultCreators]) + repls['addPermissions'] = addPermissions + self.copyFile('config.py', repls) + + def generateInit(self): + # Compute imports + imports = [' import %s' % self.toolName, + ' import %s' % self.flavourName, + ' import %s' % self.podTemplateName] + for c in self.classes: + importDef = ' import %s' % c.name + if importDef not in imports: + imports.append(importDef) + repls = self.repls.copy() + repls['imports'] = '\n'.join(imports) + self.copyFile('__init__.py', repls) + + def generateInstall(self): + # Compute lists of class names + allClassNames = '"%s",' % self.flavourName + allClassNames += '"%s",' % self.podTemplateName + appClassNames = ','.join(['"%s"' % c.name for c in self.classes]) + allClassNames += appClassNames + # Compute imports + imports = [] + for classDescr in self.classes: + theImport = 'import %s' % classDescr.klass.__module__ + if theImport not in imports: + imports.append(theImport) + # Compute list of application classes + appClasses = [] + for classDescr in self.classes: + k = classDescr.klass + appClasses.append('%s.%s' % (k.__module__, k.__name__)) + # Compute classes whose instances must not be catalogued. + catalogMap = '' + blackClasses = [self.toolName, self.flavourName, self.podTemplateName] + for blackClass in blackClasses: + catalogMap += "catalogMap['%s'] = {}\n" % blackClass + catalogMap += "catalogMap['%s']['black'] = " \ + "['portal_catalog']\n" % blackClass + # Compute workflows + workflows = '' + for classDescr in self.classes: + if hasattr(classDescr.klass, 'workflow'): + wfName = WorkflowDescriptor.getWorkflowName( + classDescr.klass.workflow) + className = ArchetypesClassDescriptor.getClassName( + classDescr.klass) + workflows += '\n "%s":"%s",' % (className, wfName) + # Generate the resulting file. + repls = self.repls.copy() + repls['allClassNames'] = allClassNames + repls['appClassNames'] = appClassNames + repls['catalogMap'] = catalogMap + repls['imports'] = '\n'.join(imports) + repls['appClasses'] = "[%s]" % ','.join(appClasses) + repls['minimalistPlone'] = self.config.minimalistPlone + repls['appFrontPage'] = self.config.frontPage == True + repls['workflows'] = workflows + self.copyFile('Install.py', repls, destFolder='Extensions') + + def generateWorkflows(self): + '''Generates the file that contains one function by workflow. + Those functions are called by Plone for registering the workflows.''' + workflows = '' + for wfDescr in self.workflows: + # Compute state names & info, transition names & infos, managed + # permissions + stateNames=','.join(['"%s"' % sn for sn in wfDescr.getStateNames()]) + stateInfos = wfDescr.getStatesInfo(asDumpableCode=True) + transitionNames = ','.join(['"%s"' % tn for tn in \ + wfDescr.getTransitionNames()]) + transitionInfos = wfDescr.getTransitionsInfo(asDumpableCode=True) + managedPermissions = ','.join(['"%s"' % tn for tn in \ + wfDescr.getManagedPermissions()]) + wfName = WorkflowDescriptor.getWorkflowName(wfDescr.klass) + workflows += '%s\ndef create_%s(self, id):\n ' \ + 'stateNames = [%s]\n ' \ + 'stateInfos = %s\n ' \ + 'transitionNames = [%s]\n ' \ + 'transitionInfos = %s\n ' \ + 'managedPermissions = [%s]\n ' \ + 'return WorkflowCreator("%s", DCWorkflowDefinition, ' \ + 'stateNames, "%s", stateInfos, transitionNames, ' \ + 'transitionInfos, managedPermissions, PROJECTNAME, ' \ + 'ExternalMethod).run()\n' \ + 'addWorkflowFactory(create_%s,\n id="%s",\n ' \ + 'title="%s")\n\n' % (wfDescr.getScripts(), wfName, stateNames, + stateInfos, transitionNames, transitionInfos, + managedPermissions, wfName, wfDescr.getInitialStateName(), + wfName, wfName, wfName) + repls = self.repls.copy() + repls['workflows'] = workflows + self.copyFile('workflows.py', repls, destFolder='Extensions') + + def generateWrapperProperty(self, attrName, appyType): + # Generate getter + res = ' def get_%s(self):\n' % attrName + blanks = ' '*8 + if isinstance(appyType, Ref): + res += blanks + 'return self.o._appy_getRefs("%s", ' \ + 'noListIfSingleObj=True)\n' % attrName + elif isinstance(appyType, Computed): + res += blanks + 'appyType = getattr(self.klass, "%s")\n' % attrName + res += blanks + 'return self.o.getComputedValue(' \ + 'appyType.__dict__)\n' + else: + getterName = 'get%s%s' % (attrName[0].upper(), attrName[1:]) + if attrName in ArchetypeFieldDescriptor.specialParams: + getterName = attrName.capitalize() + res += blanks + 'return self.o.%s()\n' % getterName + res += ' %s = property(get_%s)\n\n' % (attrName, attrName) + return res + + def generateWrapperPropertyBack(self, attrName, rel): + '''Generates a wrapper property for accessing the back reference named + p_attrName through Archetypes relationship p_rel.''' + res = ' def get_%s(self):\n' % attrName + blanks = ' '*8 + res += blanks + 'return self.o._appy_getRefsBack("%s", "%s", ' \ + 'noListIfSingleObj=True)\n' % (attrName, rel) + res += ' %s = property(get_%s)\n\n' % (attrName, attrName) + return res + + def getClassesInOrder(self, allClasses): + '''When generating wrappers, classes mut be dumped in order (else, it + generates forward references in the Python file, that does not + compile).''' + res = [] # Appy class descriptors + resClasses = [] # Corresponding real Python classes + for classDescr in allClasses: + klass = classDescr.klass + if not klass.__bases__ or \ + (klass.__bases__[0].__name__ == 'ModelClass'): + # This is a root class. We dump it at the begin of the file. + res.insert(0, classDescr) + resClasses.insert(0, klass) + else: + # If a child of this class is already present, we must insert + # this klass before it. + lowestChildIndex = sys.maxint + for resClass in resClasses: + if klass in resClass.__bases__: + lowestChildIndex = min(lowestChildIndex, + resClasses.index(resClass)) + if lowestChildIndex != sys.maxint: + res.insert(lowestChildIndex, classDescr) + resClasses.insert(lowestChildIndex, klass) + else: + res.append(classDescr) + resClasses.append(klass) + return res + + def generateWrappers(self): + # We must generate imports and wrapper definitions + imports = [] + wrappers = [] + allClasses = self.classes[:] + # Add predefined classes (Tool, Flavour, PodTemplate) + allClasses += [self.toolDescr, self.flavourDescr, self.podTemplateDescr] + if self.customToolDescr: + allClasses.append(self.customToolDescr) + if self.customFlavourDescr: + allClasses.append(self.customFlavourDescr) + for c in self.getClassesInOrder(allClasses): + if not c.predefined: + moduleImport = 'import %s' % c.klass.__module__ + if moduleImport not in imports: + imports.append(moduleImport) + # Determine parent wrapper and class + parentWrapper = 'AbstractWrapper' + parentClass = '%s.%s' % (c.klass.__module__, c.klass.__name__) + if c.predefined: + parentClass = c.klass.__name__ + if c.klass.__bases__: + baseClassName = c.klass.__bases__[0].__name__ + for k in allClasses: + if k.klass.__name__ == baseClassName: + parentWrapper = '%s_Wrapper' % k.name + wrapperDef = 'class %s_Wrapper(%s, %s):\n' % \ + (c.name, parentWrapper, parentClass) + titleFound = False + for attrName in c.orderedAttributes: + if attrName == 'title': + titleFound = True + attrValue = getattr(c.klass, attrName) + if isinstance(attrValue, Type): + wrapperDef += self.generateWrapperProperty(attrName, + attrValue) + # Generate properties for back references + if self.referers.has_key(c.name): + for refDescr, rel in self.referers[c.name]: + attrName = refDescr.appyType.back.attribute + wrapperDef += self.generateWrapperPropertyBack(attrName,rel) + if not titleFound: + # Implicitly, the title will be added by Archetypes. So I need + # to define a property for it. + wrapperDef += self.generateWrapperProperty('title', String()) + wrappers.append(wrapperDef) + repls = self.repls.copy() + repls['imports'] = '\n'.join(imports) + repls['wrappers'] = '\n'.join(wrappers) + repls['toolBody'] = Tool._appy_getBody() + repls['flavourBody'] = Flavour._appy_getBody() + repls['podTemplateBody'] = PodTemplate._appy_getBody() + self.copyFile('appyWrappers.py', repls, destFolder='Extensions') + + def generateTool(self): + '''Generates the Plone tool that corresponds to this application.''' + # Generate the tool class in itself and related i18n messages + t = self.toolName + Msg = PoMessage + repls = self.repls.copy() + # Manage predefined fields + Tool.flavours.klass = Flavour + if self.customFlavourDescr: + Tool.flavours.klass = self.customFlavourDescr.klass + self.toolDescr.generateSchema() + repls['predefinedFields'] = self.toolDescr.schema + repls['predefinedMethods'] = self.toolDescr.methods + # Manage custom fields + repls['fields'] = '' + repls['methods'] = '' + repls['wrapperClass'] = '%s_Wrapper' % self.toolDescr.name + if self.customToolDescr: + repls['fields'] = self.customToolDescr.schema + repls['methods'] = self.customToolDescr.methods + wrapperClass = '%s_Wrapper' % self.customToolDescr.name + repls['wrapperClass'] = wrapperClass + self.copyFile('ToolTemplate.py', repls, destName='%s.py'% self.toolName) + repls = self.repls.copy() + # Create i18n-related messages + self.labels += [ + Msg(self.toolName, '', Msg.CONFIG % self.applicationName), + Msg('%s_edit_descr' % self.toolName, '', ' ')] + # Before generating the Flavour class, finalize it with query result + # columns, with fields to propagate, workflow-related fields. + for classDescr in self.classes: + for fieldName, fieldType in classDescr.flavourFieldsToPropagate: + for childDescr in classDescr.getChildren(): + childFieldName = fieldName % childDescr.name + fieldType.group = childDescr.klass.__name__ + Flavour._appy_addField(childFieldName,fieldType,childDescr) + if classDescr.isRoot(): + # We must be able to configure query results from the + # flavour. + Flavour._appy_addQueryResultColumns(classDescr) + Flavour._appy_addWorkflowFields(self.flavourDescr) + Flavour._appy_addWorkflowFields(self.podTemplateDescr) + # Generate the flavour class and related i18n messages + self.flavourDescr.generateSchema() + self.labels += [ Msg(self.flavourName, '', Msg.FLAVOUR), + Msg('%s_edit_descr' % self.flavourName, '', ' ')] + repls = self.repls.copy() + repls['predefinedFields'] = self.flavourDescr.schema + repls['predefinedMethods'] = self.flavourDescr.methods + # Manage custom fields + repls['fields'] = '' + repls['methods'] = '' + repls['wrapperClass'] = '%s_Wrapper' % self.flavourDescr.name + if self.customFlavourDescr: + repls['fields'] = self.customFlavourDescr.schema + repls['methods'] = self.customFlavourDescr.methods + wrapperClass = '%s_Wrapper' % self.customFlavourDescr.name + repls['wrapperClass'] = wrapperClass + repls['metaTypes'] = [c.name for c in self.classes] + self.copyFile('FlavourTemplate.py', repls, + destName='%s.py'% self.flavourName) + # Generate the PodTemplate class + self.podTemplateDescr.generateSchema() + self.labels += [ Msg(self.podTemplateName, '', Msg.POD_TEMPLATE), + Msg('%s_edit_descr' % self.podTemplateName, '', ' ')] + repls = self.repls.copy() + repls['fields'] = self.podTemplateDescr.schema + repls['methods'] = self.podTemplateDescr.methods + repls['wrapperClass'] = '%s_Wrapper' % self.podTemplateDescr.name + self.copyFile('PodTemplate.py', repls, + destName='%s.py' % self.podTemplateName) + for imgName in PodTemplate.podFormat.validator: + self.copyFile('%s.png' % imgName, {}, + destFolder=self.skinsFolder) + + refFiles = ('createAppyObject.cpy', 'createAppyObject.cpy.metadata', + 'arrowUp.png', 'arrowDown.png', 'plus.png', 'appyConfig.gif', + 'nextPhase.png', 'nextState.png', 'done.png', 'current.png') + prefixedRefFiles = ('AppyReference.pt',) + def generateAppyReference(self): + '''Generates what is needed to use Appy-specific references.''' + # Some i18n messages + Msg = PoMessage + for refFile in self.prefixedRefFiles: + self.copyFile(refFile, self.repls, destFolder=self.skinsFolder, + destName='%s%s' % (self.applicationName, refFile)) + for refFile in self.refFiles: + self.copyFile(refFile, self.repls, destFolder=self.skinsFolder) + + def generateClass(self, classDescr): + '''Is called each time an Appy class is found in the application, for + generating the corresponding Archetype class and schema.''' + k = classDescr.klass + print 'Generating %s.%s (gen-class)...' % (k.__module__, k.__name__) + # Add, for this class, the needed configuration attributes on Flavour + if classDescr.isPod(): + Flavour._appy_addPodField(classDescr) + if not classDescr.isAbstract(): + Flavour._appy_addWorkflowFields(classDescr) + # Determine base archetypes schema and class + baseClass = 'BaseContent' + baseSchema = 'BaseSchema' + if classDescr.isFolder(): + baseClass = 'OrderedBaseFolder' + baseSchema = 'OrderedBaseFolderSchema' + parents = [baseClass, 'ClassMixin'] + imports = [] + implements = [baseClass] + for baseClass in classDescr.klass.__bases__: + if self.determineAppyType(baseClass) == 'class': + bcName = ArchetypesClassDescriptor.getClassName(baseClass) + parents.remove('ClassMixin') + parents.append(bcName) + implements.append(bcName) + imports.append('from %s import %s' % (bcName, bcName)) + baseSchema = '%s.schema' % bcName + break + parents = ','.join(parents) + implements = '+'.join(['(getattr(%s,"__implements__",()),)' % i \ + for i in implements]) + classDoc = classDescr.klass.__doc__ + if not classDoc: + classDoc = 'Class generated with appy.gen.' + # If the class is abstract I will not register it + register = "registerType(%s, '%s')" % (classDescr.name, + self.applicationName) + if classDescr.isAbstract(): + register = '' + classDescr.addGenerateDocMethod() # For POD + repls = self.repls.copy() + repls.update({ + 'imports': '\n'.join(imports), 'parents': parents, + 'className': classDescr.klass.__name__, + 'genClassName': classDescr.name, + 'classDoc': classDoc, 'applicationName': self.applicationName, + 'fields': classDescr.schema, 'methods': classDescr.methods, + 'implements': implements, 'baseSchema': baseSchema, + 'register': register, 'toolInstanceName': self.toolInstanceName}) + fileName = '%s.py' % classDescr.name + # Remember i18n labels that will be generated in the i18n file + poMsg = PoMessage(classDescr.name, '', classDescr.klass.__name__) + poMsg.produceNiceDefault() + self.labels.append(poMsg) + poMsgDescr = PoMessage('%s_edit_descr' % classDescr.name, '', ' ') + self.labels.append(poMsgDescr) + # Remember i18n labels for flavoured variants + for i in range(2,10): + poMsg = PoMessage('%s_%d' % (classDescr.name, i), '', + classDescr.klass.__name__) + poMsg.produceNiceDefault() + self.labels.append(poMsg) + poMsgDescr = PoMessage('%s_%d_edit_descr' % (classDescr.name, i), + '', ' ') + self.labels.append(poMsgDescr) + # Generate the resulting Archetypes class and schema. + self.copyFile('ArchetypesTemplate.py', repls, destName=fileName) + + def generateWorkflow(self, wfDescr): + '''This method does not generate the workflow definition, which is done + in self.generateWorkflows. This method just creates the i18n labels + related to the workflow described by p_wfDescr.''' + k = wfDescr.klass + print 'Generating %s.%s (gen-workflow)...' % (k.__module__, k.__name__) + # Identify Plone workflow name + wfName = WorkflowDescriptor.getWorkflowName(wfDescr.klass) + # Add i18n messages for states and transitions + for sName in wfDescr.getStateNames(): + poMsg = PoMessage('%s_%s' % (wfName, sName), '', sName) + poMsg.produceNiceDefault() + self.labels.append(poMsg) + for tName, tLabel in wfDescr.getTransitionNames(withLabels=True): + poMsg = PoMessage('%s_%s' % (wfName, tName), '', tLabel) + poMsg.produceNiceDefault() + self.labels.append(poMsg) + for transition in wfDescr.getTransitions(): + if transition.notify: + # Appy will send a mail when this transition is triggered. + # So we need 2 i18n labels for every DC transition corresponding + # to this Appy transition: one for the mail subject and one for + # the mail body. + tName = wfDescr.getNameOf(transition) # Appy name + tNames = wfDescr.getTransitionNamesOf(tName, transition) # DC + # name(s) + for tn in tNames: + subjectLabel = '%s_%s_mail_subject' % (wfName, tn) + poMsg = PoMessage(subjectLabel, '', PoMessage.EMAIL_SUBJECT) + self.labels.append(poMsg) + bodyLabel = '%s_%s_mail_body' % (wfName, tn) + poMsg = PoMessage(bodyLabel, '', PoMessage.EMAIL_BODY) + self.labels.append(poMsg) +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/installer.py b/gen/plone25/installer.py new file mode 100644 index 0000000..b4e5219 --- /dev/null +++ b/gen/plone25/installer.py @@ -0,0 +1,496 @@ +'''This package contains stuff used at run-time for installing a generated + Plone product.''' + +# ------------------------------------------------------------------------------ +import os, os.path +from StringIO import StringIO +from sets import Set +from appy.gen.utils import produceNiceMessage +from appy.gen.plone25.utils import updateRolesForPermission + +class PloneInstaller: + '''This Plone installer runs every time the generated Plone product is + installed or uninstalled (in the Plone configuration interface).''' + def __init__(self, reinstall, productName, ploneSite, minimalistPlone, + appClasses, appClassNames, allClassNames, catalogMap, applicationRoles, + defaultAddRoles, workflows, appFrontPage, ploneStuff): + self.reinstall = reinstall # Is it a fresh install or a re-install? + self.productName = productName + self.ploneSite = ploneSite + self.minimalistPlone = minimalistPlone # If True, lots of basic Plone + # stuff will be hidden. + self.appClasses = appClasses # The list of classes declared in the + # gen-application. + self.appClassNames = appClassNames # Names of those classes + self.allClassNames = allClassNames # Includes Flavour and PodTemplate + self.catalogMap = catalogMap # Indicates classes to be indexed or not + self.applicationRoles = applicationRoles # Roles defined in the app + self.defaultAddRoles = defaultAddRoles # The default roles that can add + # content + self.workflows = workflows # Dict whose keys are class names and whose + # values are workflow names (=the workflow + # used by the content type) + self.appFrontPage = appFrontPage # Does this app define a site-wide + # front page? + self.ploneStuff = ploneStuff # A dict of some Plone functions or vars + self.toLog = StringIO() + self.typeAliases = {'sharing': '', 'gethtml': '', + '(Default)': '%s_appy_view' % self.productName, + 'edit': '%s_appy_edit' % self.productName, + 'index.html': '', 'properties': '', 'view': ''} + self.tool = None # The Plone version of the application tool + self.appyTool = None # The Appy version of the application tool + self.toolName = '%sTool' % self.productName + self.toolInstanceName = 'portal_%s' % self.productName.lower() + + + actionsToHide = { + 'portal_actions': ('sitemap', 'accessibility', 'change_state','sendto'), + 'portal_membership': ('mystuff', 'preferences'), + 'portal_undo': ('undo',) + } + def customizePlone(self): + '''Hides some UI elements that appear by default in Plone.''' + for portalName, toHide in self.actionsToHide.iteritems(): + portal = getattr(self.ploneSite, portalName) + portalActions = portal.listActions() + for action in portalActions: + if action.id in toHide: action.visible = False + + appyFolderType = 'AppyFolder' + def registerAppyFolderType(self): + '''We need a specific content type for the folder that will hold all + objects created from this application, in order to remove it from + Plone navigation settings. We will create a new content type based + on Large Plone Folder.''' + if not hasattr(self.ploneSite.portal_types, self.appyFolderType): + portal_types = self.ploneSite.portal_types + lpf = 'Large Plone Folder' + largePloneFolder = getattr(portal_types, lpf) + typeInfoName = 'ATContentTypes: ATBTreeFolder (ATBTreeFolder)' + portal_types.manage_addTypeInformation( + largePloneFolder.meta_type, id=self.appyFolderType, + typeinfo_name=typeInfoName) + appyFolder = getattr(portal_types, self.appyFolderType) + appyFolder.title = 'Appy folder' + #appyFolder.factory = largePloneFolder.factory + #appyFolder.product = largePloneFolder.product + # Copy actions and aliases + appyFolder._actions = tuple(largePloneFolder._cloneActions()) + # Copy aliases from the base portal type + appyFolder.setMethodAliases(largePloneFolder.getMethodAliases()) + # Prevent Appy folders to be visible in standard Plone navigation + nv = self.ploneSite.portal_properties.navtree_properties + metaTypesNotToList = list(nv.getProperty('metaTypesNotToList')) + if self.appyFolderType not in metaTypesNotToList: + metaTypesNotToList.append(self.appyFolderType) + nv.manage_changeProperties( + metaTypesNotToList=tuple(metaTypesNotToList)) + + def getAddPermission(self, className): + '''What is the name of the permission allowing to create instances of + class whose name is p_className?''' + return self.productName + ': Add ' + className + + def installRootFolder(self): + '''Creates and/or configures, at the root of the Plone site and if + needed, the folder where the application will store instances of + root classes.''' + # Register first our own Appy folder type if needed. + site = self.ploneSite + if not hasattr(site.portal_types, self.appyFolderType): + self.registerAppyFolderType() + # Create the folder + if not hasattr(site.aq_base, self.productName): + # Temporarily allow me to create Appy large plone folders + getattr(site.portal_types, self.appyFolderType).global_allow = 1 + site.invokeFactory(self.appyFolderType, self.productName, + title=self.productName) + getattr(site.portal_types, self.appyFolderType).global_allow = 0 + appFolder = getattr(site, self.productName) + # All roles defined as creators should be able to create the + # corresponding root content types in this folder. + i = -1 + allCreators = set() + for klass in self.appClasses: + i += 1 + if klass.__dict__.has_key('root') and klass.__dict__['root']: + # It is a root class. + creators = getattr(klass, 'creators', None) + if not creators: creators = self.defaultAddRoles + allCreators = allCreators.union(creators) + className = self.appClassNames[i] + updateRolesForPermission(self.getAddPermission(className), + tuple(creators), appFolder) + # Beyond content-type-specific "add" permissions, creators must also + # have the main permission "Add portal content". + updateRolesForPermission('Add portal content', tuple(allCreators), + appFolder) + + def installTypes(self): + '''Registers and configures the Plone content types that correspond to + gen-classes.''' + site = self.ploneSite + # Do Plone-based type registration + classes = self.ploneStuff['listTypes'](self.productName) + self.ploneStuff['installTypes'](site, self.toLog, classes, + self.productName) + self.ploneStuff['install_subskin'](site, self.toLog, + self.ploneStuff['GLOBALS']) + # Set appy view/edit pages for every created type + for className in self.allClassNames + ['%sTool' % self.productName]: + # I did not put the app tool in self.allClassNames because it + # must not be registered in portal_factory + if hasattr(site.portal_types, className): + # className may correspond to an abstract class that has no + # corresponding Plone content type + typeInfo = getattr(site.portal_types, className) + typeInfo.setMethodAliases(self.typeAliases) + # Update edit and view actions + typeActions = typeInfo.listActions() + for action in typeActions: + if action.id == 'view': + page = '%s_appy_view' % self.productName + action.edit(action='string:${object_url}/%s' % page) + elif action.id == 'edit': + page = '%s_appy_edit' % self.productName + action.edit(action='string:${object_url}/%s' % page) + + # Configure types for instance creation through portal_factory + factoryTool = site.portal_factory + factoryTypes = self.allClassNames + factoryTool.getFactoryTypes().keys() + factoryTool.manage_setPortalFactoryTypes(listOfTypeIds=factoryTypes) + + # Configure CatalogMultiplex: tell what types will be catalogued or not. + atTool = getattr(site, self.ploneStuff['ARCHETYPETOOLNAME']) + for meta_type in self.catalogMap: + submap = self.catalogMap[meta_type] + current_catalogs = Set( + [c.id for c in atTool.getCatalogsByType(meta_type)]) + if 'white' in submap: + for catalog in submap['white']: + current_catalogs.update([catalog]) + if 'black' in submap: + for catalog in submap['black']: + if catalog in current_catalogs: + current_catalogs.remove(catalog) + atTool.setCatalogsByType(meta_type, list(current_catalogs)) + + def findPodFile(self, klass, podTemplateName): + '''Finds the file that corresponds to p_podTemplateName for p_klass.''' + res = None + exec 'import %s' % klass.__module__ + exec 'moduleFile = %s.__file__' % klass.__module__ + folderName = os.path.dirname(moduleFile) + fileName = os.path.join(folderName, '%s.odt' % podTemplateName) + if os.path.isfile(fileName): + res = fileName + return res + + def updatePodTemplates(self): + '''Creates or updates the POD templates in flavours according to pod + declarations in the application classes.''' + i = -1 + for klass in self.appClasses: + i += 1 + if klass.__dict__.has_key('pod'): + pod = getattr(klass, 'pod') + if isinstance(pod, bool): + podTemplates = [klass.__name__] + else: + podTemplates = pod + for templateName in podTemplates: + fileName = self.findPodFile(klass, templateName) + if fileName: + # Create the corresponding PodTemplate in all flavours + for flavour in self.appyTool.flavours: + podId='%s_%s' % (self.appClassNames[i],templateName) + podAttr = 'podTemplatesFor%s'% self.appClassNames[i] + allPodTemplates = getattr(flavour, podAttr) + if allPodTemplates: + if isinstance(allPodTemplates, list): + allIds = [p.id for p in allPodTemplates] + else: + allIds = [allPodTemplates.id] + else: + allIds = [] + if podId not in allIds: + # Create a PodTemplate instance + f = file(fileName) + flavour.create(podAttr, id=podId, podTemplate=f, + title=produceNiceMessage(templateName)) + f.close() + + def installTool(self): + '''Configures the application tool and flavours.''' + # Register the tool in Plone + try: + self.ploneSite.manage_addProduct[ + self.productName].manage_addTool(self.toolName) + except self.ploneStuff['BadRequest']: + # If an instance with the same name already exists, this error will + # be unelegantly raised by Zope. + pass + except: + e = sys.exc_info() + if e[0] != 'Bad Request': raise + + # Hide the tool from the search form + portalProperties = self.ploneSite.portal_properties + if portalProperties is not None: + siteProperties = getattr(portalProperties, 'site_properties', None) + if siteProperties is not None and \ + siteProperties.hasProperty('types_not_searched'): + current = list(siteProperties.getProperty('types_not_searched')) + if self.toolName not in current: + current.append(self.toolName) + siteProperties.manage_changeProperties( + **{'types_not_searched' : current}) + + # Hide the tool in the navigation + if portalProperties is not None: + nvProps = getattr(portalProperties, 'navtree_properties', None) + if nvProps is not None and nvProps.hasProperty('idsNotToList'): + current = list(nvProps.getProperty('idsNotToList')) + if self.toolInstanceName not in current: + current.append(self.toolInstanceName) + nvProps.manage_changeProperties(**{'idsNotToList': current}) + + # Remove workflow for the tool + wfTool = self.ploneSite.portal_workflow + wfTool.setChainForPortalTypes([self.toolName], '') + + # Create the default flavour + self.tool = getattr(self.ploneSite, self.toolInstanceName) + self.appyTool = self.tool._appy_getWrapper(force=True) + if self.reinstall: + self.tool.at_post_edit_script() + else: + self.tool.at_post_create_script() + if not self.appyTool.flavours: + self.appyTool.create('flavours', title=self.productName, number=1) + self.updatePodTemplates() + + # Uncatalog tool + self.tool.unindexObject() + + # Register tool as configlet + portalControlPanel = self.ploneSite.portal_controlpanel + portalControlPanel.unregisterConfiglet(self.toolName) + portalControlPanel.registerConfiglet( + self.toolName, self.productName, + 'string:${portal_url}/%s' % self.toolInstanceName, 'python:True', + 'Manage portal', # Access permission + 'Products', # Section to which the configlet should be added: + # (Plone, Products (default) or Member) + 1, # Visibility + '%sID' % self.toolName, 'site_icon.gif', # Icon in control_panel + self.productName, None) + + def installRolesAndGroups(self): + '''Registers roles used by workflows defined in this application if + they are not registered yet. Creates the corresponding groups if + needed.''' + site = self.ploneSite + data = list(site.__ac_roles__) + for role in self.applicationRoles: + if not role in data: + data.append(role) + # Add to portal_role_manager + # First, try to fetch it. If it's not there, we probaly have no + # PAS or another way to deal with roles was configured. + try: + prm = site.acl_users.get('portal_role_manager', None) + if prm is not None: + try: + prm.addRole(role, role, + "Added by product '%s'" % self.productName) + except KeyError: # Role already exists + pass + except AttributeError: + pass + # Create a specific group and grant him this role + group = '%s_group' % role + if not site.portal_groups.getGroupById(group): + site.portal_groups.addGroup(group, title=group) + site.portal_groups.setRolesForGroup(group, [role]) + site.__ac_roles__ = tuple(data) + + def installWorkflows(self): + '''Creates or updates the workflows defined in the application.''' + wfTool = self.ploneSite.portal_workflow + for contentType, workflowName in self.workflows.iteritems(): + # Register the workflow if needed + if workflowName not in wfTool.listWorkflows(): + wfMethod = self.ploneStuff['ExternalMethod']('temp', 'temp', + self.productName + '.workflows', 'create_%s' % workflowName) + workflow = wfMethod(self, workflowName) + wfTool._setObject(workflowName, workflow) + else: + self.log('%s already in workflows.' % workflowName) + # Link the workflow to the current content type + wfTool.setChainForPortalTypes([contentType], workflowName) + return wfTool + + def installStyleSheet(self): + '''Registers In Plone the stylesheet linked to this application.''' + cssName = self.productName + '.css' + cssTitle = self.productName + ' CSS styles' + cssInfo = {'id': cssName, 'title': cssTitle} + try: + portalCss = self.ploneSite.portal_css + try: + portalCss.unregisterResource(cssInfo['id']) + except: + pass + defaults = {'id': '', 'media': 'all', 'enabled': True} + defaults.update(cssInfo) + portalCss.registerStylesheet(**defaults) + except: + # No portal_css registry + pass + + def installPortlet(self): + '''Adds the application-specific portlet and configure other Plone + portlets if relevant.''' + portletName= 'here/%s_portlet/macros/portlet' % self.productName.lower() + site = self.ploneSite + # This is the name of the application-specific portlet + leftPortlets = site.getProperty('left_slots') + if not leftPortlets: leftPortlets = [] + else: leftPortlets = list(leftPortlets) + if portletName not in leftPortlets: + leftPortlets.insert(0, portletName) + # Remove some basic Plone portlets that make less sense when building + # web applications. + portletsToRemove = ["here/portlet_navigation/macros/portlet", + "here/portlet_recent/macros/portlet", + "here/portlet_related/macros/portlet"] + if not self.minimalistPlone: portletsToRemove = [] + for p in portletsToRemove: + if p in leftPortlets: + leftPortlets.remove(p) + site.manage_changeProperties(left_slots=tuple(leftPortlets)) + if self.minimalistPlone: + site.manage_changeProperties(right_slots=()) + + def finalizeInstallation(self): + '''Performs some final installation steps.''' + site = self.ploneSite + # Do not generate an action (tab) for each root folder + if self.minimalistPlone: + site.portal_properties.site_properties.manage_changeProperties( + disable_folder_sections=True) + # Do not allow an anonymous user to register himself as new user + site.manage_permission('Add portal member', ('Manager',), acquire=0) + # Call custom installer if any + if hasattr(self.appyTool, 'install'): + self.tool.executeAppyAction('install', reindex=False) + # Replace Plone front-page with an application-specific page if needed + if self.appFrontPage: + frontPageName = self.productName + 'FrontPage' + site.manage_changeProperties(default_page=frontPageName) + + def log(self, msg): print >> self.toLog, msg + + def install(self): + self.log("Installation of %s:" % self.productName) + if self.minimalistPlone: self.customizePlone() + self.installRootFolder() + self.installTypes() + self.installTool() + self.installRolesAndGroups() + self.installWorkflows() + self.installStyleSheet() + self.installPortlet() + self.finalizeInstallation() + self.log("Installation of %s done." % self.productName) + return self.toLog.getvalue() + + def uninstallTool(self): + site = self.ploneSite + # Unmention tool in the search form + portalProperties = getattr(site, 'portal_properties', None) + if portalProperties is not None: + siteProperties = getattr(portalProperties, 'site_properties', None) + if siteProperties is not None and \ + siteProperties.hasProperty('types_not_searched'): + current = list(siteProperties.getProperty('types_not_searched')) + if self.toolName in current: + current.remove(self.toolName) + siteProperties.manage_changeProperties( + **{'types_not_searched' : current}) + + # Unmention tool in the navigation + if portalProperties is not None: + nvProps = getattr(portalProperties, 'navtree_properties', None) + if nvProps is not None and nvProps.hasProperty('idsNotToList'): + current = list(nvProps.getProperty('idsNotToList')) + if self.toolInstanceName in current: + current.remove(self.toolInstanceName) + nvProps.manage_changeProperties(**{'idsNotToList': current}) + + def uninstall(self): + self.log("Uninstallation of %s:" % self.productName) + self.uninstallTool() + self.log("Uninstallation of %s done." % self.productName) + return self.toLog.getvalue() + +# ------------------------------------------------------------------------------ +class ZopeInstaller: + '''This Zope installer runs every time Zope starts and encounters this + generated Zope product.''' + def __init__(self, zopeContext, productName, toolClass, + defaultAddContentPermission, addContentPermissions, + logger, ploneStuff): + self.zopeContext = zopeContext + self.productName = productName + self.toolClass = toolClass + self.defaultAddContentPermission = defaultAddContentPermission + self.addContentPermissions = addContentPermissions + self.logger = logger + self.ploneStuff = ploneStuff # A dict of some Plone functions or vars + + def installApplication(self): + '''Performs some application-wide installation steps.''' + self.ploneStuff['DirectoryView'].registerDirectory('skins', + self.ploneStuff['product_globals']) + + def installTool(self): + '''Installs the tool.''' + self.ploneStuff['ToolInit'](self.productName + ' Tools', + tools = [self.toolClass], icon='tool.gif').initialize( + self.zopeContext) + + def installTypes(self): + '''Installs and configures the types defined in the application.''' + contentTypes, constructors, ftis = self.ploneStuff['process_types']( + self.ploneStuff['listTypes'](self.productName), self.productName) + + self.ploneStuff['cmfutils'].ContentInit(self.productName + ' Content', + content_types = contentTypes, + permission = self.defaultAddContentPermission, + extra_constructors = constructors, fti = ftis).initialize( + self.zopeContext) + + # Define content-specific "add" permissions + for i in range(0, len(contentTypes)): + className = contentTypes[i].__name__ + if not className in self.addContentPermissions: continue + self.zopeContext.registerClass(meta_type = ftis[i]['meta_type'], + constructors = (constructors[i],), + permission = self.addContentPermissions[className]) + + def finalizeInstallation(self): + '''Performs some final installation steps.''' + # Apply customization policy if any + cp = self.ploneStuff['CustomizationPolicy'] + if cp and hasattr(cp, 'register'): cp.register(context) + + def install(self): + self.logger.info('is being installed...') + self.installApplication() + self.installTool() + self.installTypes() + self.finalizeInstallation() +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/mixins/ClassMixin.py b/gen/plone25/mixins/ClassMixin.py new file mode 100644 index 0000000..22190a7 --- /dev/null +++ b/gen/plone25/mixins/ClassMixin.py @@ -0,0 +1,42 @@ +# ------------------------------------------------------------------------------ +from appy.gen.plone25.mixins import AbstractMixin + +# ------------------------------------------------------------------------------ +class ClassMixin(AbstractMixin): + _appy_meta_type = 'class' + def _appy_fieldIsUsed(self, portalTypeName, fieldName): + tool = self.getTool() + flavour = tool.getFlavour(portalTypeName) + optionalFieldsAccessor = 'getOptionalFieldsFor%s' % self.meta_type + exec 'usedFields = flavour.%s()' % optionalFieldsAccessor + res = False + if fieldName in usedFields: + res = True + return res + + def _appy_getDefaultValueFor(self, portalTypeName, fieldName): + tool = self.getTool() + flavour = tool.getFlavour(portalTypeName) + fieldFound = False + klass = self.__class__ + while not fieldFound: + metaType = klass.meta_type + defValueAccessor = 'getDefaultValueFor%s_%s' % (metaType, fieldName) + if not hasattr(flavour, defValueAccessor): + # The field belongs to a super-class. + klass = klass.__bases__[-1] + else: + fieldFound = True + exec 'res = flavour.%s()' % defValueAccessor + return res + + def fieldIsUsed(self, fieldName): + '''Checks in the corresponding flavour if p_fieldName is used.''' + portalTypeName = self._appy_getPortalType(self.REQUEST) + return self._appy_fieldIsUsed(portalTypeName, fieldName) + + def getDefaultValueFor(self, fieldName): + '''Gets in the flavour the default value for p_fieldName.''' + portalTypeName = self._appy_getPortalType(self.REQUEST) + return self._appy_getDefaultValueFor(portalTypeName,fieldName) +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/mixins/FlavourMixin.py b/gen/plone25/mixins/FlavourMixin.py new file mode 100644 index 0000000..dc5986f --- /dev/null +++ b/gen/plone25/mixins/FlavourMixin.py @@ -0,0 +1,113 @@ +# ------------------------------------------------------------------------------ +import appy.gen +from appy.gen.plone25.mixins import AbstractMixin +from appy.gen.plone25.descriptors import ArchetypesClassDescriptor + +# ------------------------------------------------------------------------------ +class FlavourMixin(AbstractMixin): + _appy_meta_type = 'flavour' + def getPortalType(self, metaTypeOrAppyType): + '''Returns the name of the portal_type that is based on + p_metaTypeOrAppyType in this flavour.''' + res = metaTypeOrAppyType + isPredefined = False + isAppy = False + appName = self.getProductConfig().PROJECTNAME + if not isinstance(res, basestring): + res = ArchetypesClassDescriptor.getClassName(res) + isAppy = True + if res.find('Extensions_appyWrappers') != -1: + isPredefined = True + elems = res.split('_') + res = '%s%s' % (elems[1], elems[4]) + elif isAppy and issubclass(metaTypeOrAppyType, appy.gen.Tool): + # This is the custom tool + isPredefined = True + res = '%sTool' % appName + elif isAppy and issubclass(metaTypeOrAppyType, appy.gen.Flavour): + # This is the custom Flavour + isPredefined = True + res = '%sFlavour' % appName + if not isPredefined: + if self.getNumber() != 1: + res = '%s_%d' % (res, self.number) + return res + + def registerPortalTypes(self): + '''Registers, into portal_types, the portal types which are specific + to this flavour.''' + i = -1 + registeredFactoryTypes = self.portal_factory.getFactoryTypes().keys() + factoryTypesToRegister = [] + appName = self.getProductConfig().PROJECTNAME + for metaTypeName in self.allMetaTypes: + i += 1 + portalTypeName = '%s_%d' % (metaTypeName, self.number) + # If the portal type corresponding to the meta type is + # registered in portal_factory (in the model: + # use_portal_factory=True), we must also register the new + # portal_type we are currently creating. + if metaTypeName in registeredFactoryTypes: + factoryTypesToRegister.append(portalTypeName) + if not hasattr(self.portal_types, portalTypeName) and \ + hasattr(self.portal_types, metaTypeName): + # Indeed abstract meta_types have no associated portal_type + typeInfoName = "%s: %s (%s)" % (appName, metaTypeName, + metaTypeName) + self.portal_types.manage_addTypeInformation( + getattr(self.portal_types, metaTypeName).meta_type, + id=portalTypeName, typeinfo_name=typeInfoName) + # Set the human readable title explicitly + portalType = getattr(self.portal_types, portalTypeName) + portalType.title = portalTypeName + # Associate a workflow for this new portal type. + pf = self.portal_workflow + workflowChain = pf.getChainForPortalType(metaTypeName) + pf.setChainForPortalTypes([portalTypeName],workflowChain) + # Copy actions from the base portal type + basePortalType = getattr(self.portal_types, metaTypeName) + portalType._actions = tuple(basePortalType._cloneActions()) + # Copy aliases from the base portal type + portalType.setMethodAliases(basePortalType.getMethodAliases()) + # Update the factory tool with the list of types to register + self.portal_factory.manage_setPortalFactoryTypes( + listOfTypeIds=factoryTypesToRegister+registeredFactoryTypes) + + def getClassFolder(self, className): + '''Return the folder related to p_className.''' + return getattr(self, className) + + def getAvailablePodTemplates(self, obj, phase='main'): + '''Returns the POD templates which are available for generating a + document from p_obj.''' + appySelf = self._appy_getWrapper() + fieldName = 'podTemplatesFor%s' % obj.meta_type + res = [] + podTemplates = getattr(appySelf, fieldName, []) + if not isinstance(podTemplates, list): + podTemplates = [podTemplates] + res = [r.o for r in podTemplates if r.phase==phase] + hasParents = True + klass = obj.__class__ + while hasParents: + parent = klass.__bases__[-1] + if hasattr(parent, 'wrapperClass'): + fieldName = 'podTemplatesFor%s' % parent.meta_type + podTemplates = getattr(appySelf, fieldName, []) + if not isinstance(podTemplates, list): + podTemplates = [podTemplates] + res += [r.o for r in podTemplates if r.phase==phase] + klass = parent + else: + hasParents = False + return res + + def getMaxShownTemplates(self, obj): + attrName = 'podMaxShownTemplatesFor%s' % obj.meta_type + return getattr(self, attrName) + + def getAttr(self, attrName): + '''Gets on this flavour attribute named p_attrName. Useful because we + can't use getattr directly in Zope Page Templates.''' + return getattr(self, attrName, None) +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/mixins/PodTemplateMixin.py b/gen/plone25/mixins/PodTemplateMixin.py new file mode 100644 index 0000000..85a9e3a --- /dev/null +++ b/gen/plone25/mixins/PodTemplateMixin.py @@ -0,0 +1,97 @@ +# ------------------------------------------------------------------------------ +import os, os.path, time +from appy.shared import mimeTypes +from appy.gen.plone25.mixins import AbstractMixin +from StringIO import StringIO + +# ------------------------------------------------------------------------------ +class PodError(Exception): pass + +# ------------------------------------------------------------------------------ +def getOsTempFolder(): + tmp = '/tmp' + if os.path.exists(tmp) and os.path.isdir(tmp): + res = tmp + elif os.environ.has_key('TMP'): + res = os.environ['TMP'] + elif os.environ.has_key('TEMP'): + res = os.environ['TEMP'] + else: + raise "Sorry, I can't find a temp folder on your machine." + return res + +# Error-related constants ------------------------------------------------------ +POD_ERROR = 'An error occurred while generating the document. Please check ' \ + 'the following things if you wanted to generate the document in ' \ + 'PDF, DOC or RTF: (1) OpenOffice is started in server mode on ' \ + 'the port you should have specified in the PloneMeeting ' \ + 'configuration (go to Site setup-> PloneMeeting configuration); ' \ + '(2) if the Python interpreter running Zope and ' \ + 'Plone is not able to discuss with OpenOffice (it does not have ' \ + '"uno" installed - check it by typing "import uno" at the Python ' \ + 'prompt) please specify, in the PloneMeeting configuration, ' \ + 'the path to a UNO-enabled Python interpreter (ie, the Python ' \ + 'interpreter included in the OpenOffice distribution, or, if ' \ + 'your server runs Ubuntu, the standard Python interpreter ' \ + 'installed in /usr/bin/python). Here is the error as reported ' \ + 'by the appy.pod library:\n\n %s' +DELETE_TEMP_DOC_ERROR = 'A temporary document could not be removed. %s.' + +# ------------------------------------------------------------------------------ +class PodTemplateMixin(AbstractMixin): + _appy_meta_type = 'podtemplate' + def generateDocument(self, obj): + '''Generates a document from this template, for object p_obj.''' + appySelf = self._appy_getWrapper(force=True) + appName = self.getProductConfig().PROJECTNAME + appModule = getattr(self.getProductConfig(), appName) + # Temporary file where to generate the result + tempFileName = '%s/%s_%f.%s' % ( + getOsTempFolder(), obj.UID(), time.time(), self.getPodFormat()) + # Define parameters to pass to the appy.pod renderer + currentUser = self.portal_membership.getAuthenticatedMember() + podContext = {'self': obj._appy_getWrapper(force=True), + 'user': currentUser, + 'podTemplate': appySelf, + 'now': self.getProductConfig().DateTime(), + 'projectFolder': os.path.dirname(appModule.__file__) + } + rendererParams = {'template': StringIO(appySelf.podTemplate), + 'context': podContext, + 'result': tempFileName } + if appySelf.tool.unoEnabledPython: + rendererParams['pythonWithUnoPath'] = appySelf.tool.unoEnabledPython + if appySelf.tool.openOfficePort: + rendererParams['ooPort'] = appySelf.tool.openOfficePort + # Launch the renderer + import appy.pod + try: + renderer = appy.pod.renderer.Renderer(**rendererParams) + renderer.run() + except appy.pod.PodError, pe: + if not os.path.exists(tempFileName): + # In some (most?) cases, when OO returns an error, the result is + # nevertheless generated. + raise PodError(POD_ERROR % str(pe)) + # Open the temp file on the filesystem + f = file(tempFileName, 'rb') + forBrowser = True + if forBrowser: + # Create a OFS.Image.File object that will manage correclty HTTP + # headers, etc. + theFile = self.getProductConfig().File('dummyId', 'dummyTitle', f, + content_type=mimeTypes[appySelf.podFormat]) + res = theFile.index_html(self.REQUEST, self.REQUEST.RESPONSE) + else: + # I must return the raw document content. + res = f.read() + f.close() + # Returns the doc and removes the temp file + try: + os.remove(tempFileName) + except OSError, oe: + self.getProductConfig().logger.warn(DELETE_TEMP_DOC_ERROR % str(oe)) + except IOError, ie: + self.getProductConfig().logger.warn(DELETE_TEMP_DOC_ERROR % str(ie)) + return res +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/mixins/ToolMixin.py b/gen/plone25/mixins/ToolMixin.py new file mode 100644 index 0000000..cdd3fa5 --- /dev/null +++ b/gen/plone25/mixins/ToolMixin.py @@ -0,0 +1,192 @@ +# ------------------------------------------------------------------------------ +import re, os, os.path +from appy.gen.utils import FieldDescr +from appy.gen.plone25.mixins import AbstractMixin +from appy.gen.plone25.mixins.FlavourMixin import FlavourMixin +from appy.gen.plone25.wrappers import AbstractWrapper + +_PY = 'Please specify a file corresponding to a Python interpreter ' \ + '(ie "/usr/bin/python").' +FILE_NOT_FOUND = 'Path "%s" was not found.' +VALUE_NOT_FILE = 'Path "%s" is not a file. ' + _PY +NO_PYTHON = "Name '%s' does not starts with 'python'. " + _PY +NOT_UNO_ENABLED_PYTHON = '"%s" is not a UNO-enabled Python interpreter. ' \ + 'To check if a Python interpreter is UNO-enabled, ' \ + 'launch it and type "import uno". If you have no ' \ + 'ImportError exception it is ok.' + +# ------------------------------------------------------------------------------ +class ToolMixin(AbstractMixin): + _appy_meta_type = 'tool' + def _appy_validateUnoEnabledPython(self, value): + '''This method represents the validator for field unoEnabledPython. + This field is present on the Tool only if POD is needed.''' + if value: + if not os.path.exists(value): + return FILE_NOT_FOUND % value + if not os.path.isfile(value): + return VALUE_NOT_FILE % value + if not os.path.basename(value).startswith('python'): + return NO_PYTHON % value + if os.system('%s -c "import uno"' % value): + return NOT_UNO_ENABLED_PYTHON % value + return None + + def getFlavour(self, contextObjOrPortalType, appy=False): + '''Gets the flavour that corresponds to p_contextObjOrPortalType.''' + if isinstance(contextObjOrPortalType, basestring): + portalTypeName = contextObjOrPortalType + else: + # It is the contextObj, not a portal type name + portalTypeName = contextObjOrPortalType.portal_type + res = None + appyTool = self._appy_getWrapper(force=True) + flavourNumber = None + nameElems = portalTypeName.split('_') + if len(nameElems) > 1: + try: + flavourNumber = int(nameElems[-1]) + except ValueError: + pass + appName = self.getProductConfig().PROJECTNAME + if flavourNumber != None: + for flavour in appyTool.flavours: + if flavourNumber == flavour.number: + res = flavour + elif portalTypeName == ('%sFlavour' % appName): + # Current object is the Flavour itself. In this cas we simply + # return the wrapped contextObj. Here we are sure that + # contextObjOrPortalType is an object, not a portal type. + res = contextObjOrPortalType._appy_getWrapper(force=True) + if not res and appyTool.flavours: + res = appyTool.flavours[0] + # If appy=False, return the Plone object and not the Appy wrapper + # (this way, we avoid Zope security/access-related problems while + # using this object in Zope Page Templates) + if res and not appy: + res = res.o + return res + + def getFlavoursInfo(self): + '''Returns information about flavours.''' + res = [] + appyTool = self._appy_getWrapper(force=True) + for flavour in appyTool.flavours: + if isinstance(flavour.o, FlavourMixin): + # This is a bug: sometimes other objects are associated as + # flavours. + res.append({'title': flavour.title, 'number':flavour.number}) + return res + + def getAppFolder(self): + '''Returns the folder at the root of the Plone site that is dedicated + to this application.''' + portal = self.getProductConfig().getToolByName( + self, 'portal_url').getPortalObject() + appName = self.getProductConfig().PROJECTNAME + return getattr(portal, appName) + + def showPortlet(self): + return not self.portal_membership.isAnonymousUser() + + def executeQuery(self, queryName, flavourNumber): + if queryName.find(',') != -1: + # Several content types are specified + portalTypes = queryName.split(',') + if flavourNumber != 1: + portalTypes = ['%s_%d' % (pt, flavourNumber) \ + for pt in portalTypes] + else: + portalTypes = queryName + params = {'portal_type': portalTypes, 'batch': True} + res = self.portal_catalog.searchResults(**params) + batchStart = self.REQUEST.get('b_start', 0) + res = self.getProductConfig().Batch(res, + self.getNumberOfResultsPerPage(), int(batchStart), orphan=0) + return res + + def getResultColumnsNames(self, queryName): + contentTypes = queryName.strip(',').split(',') + resSet = None # Temporary set for computing intersections. + res = [] # Final, sorted result. + flavour = None + fieldNames = None + for cType in contentTypes: + # Get the flavour tied to those content types + if not flavour: + flavour = self.getFlavour(cType, appy=True) + if flavour.number != 1: + cType = cType.rsplit('_', 1)[0] + fieldNames = getattr(flavour, 'resultColumnsFor%s' % cType) + if not resSet: + resSet = set(fieldNames) + else: + resSet = resSet.intersection(fieldNames) + # By converting to set, we've lost order. Let's put things in the right + # order. + for fieldName in fieldNames: + if fieldName in resSet: + res.append(fieldName) + return res + + def getResultColumns(self, anObject, queryName): + '''What columns must I show when displaying a list of root class + instances? Result is a list of tuples containing the name of the + column (=name of the field) and a FieldDescr instance.''' + res = [] + for fieldName in self.getResultColumnsNames(queryName): + if fieldName == 'workflowState': + # We do not return a FieldDescr instance if the attributes is + # not a *real* attribute but the workfow state. + res.append(fieldName) + else: + # Create a FieldDescr instance + appyType = anObject.getAppyType(fieldName) + atField = anObject.schema.get(fieldName) + fieldDescr = FieldDescr(atField, appyType, None) + res.append(fieldDescr.get()) + return res + + xhtmlToText = re.compile('<.*?>', re.S) + def getReferenceLabel(self, brain, appyType): + '''p_appyType is a Ref with link=True. I need to display, on an edit + view, the referenced object p_brain in the listbox that will allow + the user to choose which object(s) to link through the Ref. + According to p_appyType, the label may only be the object title, + or more if parameter appyType.shownInfo is used.''' + res = brain.Title + if 'title' in appyType['shownInfo']: + # We may place it at another place + res = '' + appyObj = brain.getObject()._appy_getWrapper(force=True) + for fieldName in appyType['shownInfo']: + value = getattr(appyObj, fieldName) + if isinstance(value, AbstractWrapper): + value = value.title.decode('utf-8') + elif isinstance(value, basestring): + value = value.decode('utf-8') + refAppyType = appyObj.o.getAppyType(fieldName) + if refAppyType and (refAppyType['type'] == 'String') and \ + (refAppyType['format'] == 2): + value = self.xhtmlToText.sub(' ', value) + else: + value = str(value) + prefix = '' + if res: + prefix = ' | ' + res += prefix + value.encode('utf-8') + maxWidth = self.getListBoxesMaximumWidth() + if len(res) > maxWidth: + res = res[:maxWidth-2] + '...' + return res + + translationMapping = {'portal_path': ''} + def translateWithMapping(self, label): + '''Translates p_label in the application domain, with a default + translation mapping.''' + if not self.translationMapping['portal_path']: + self.translationMapping['portal_path'] = \ + self.portal_url.getPortalPath() + appName = self.getProductConfig().PROJECTNAME + return self.utranslate(label, self.translationMapping, domain=appName) +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/mixins/__init__.py b/gen/plone25/mixins/__init__.py new file mode 100644 index 0000000..f748b5d --- /dev/null +++ b/gen/plone25/mixins/__init__.py @@ -0,0 +1,840 @@ +'''This package contains mixin classes that are mixed in with generated classes: + - mixins/ClassMixin is mixed in with Standard Archetypes classes; + - mixins/ToolMixin is mixed in with the generated application Tool class; + - mixins/FlavourMixin is mixed in with the generated application Flavour + class. + The AbstractMixin defined hereafter is the base class of any mixin.''' + +# ------------------------------------------------------------------------------ +import os, os.path, sys, types +import appy.gen +from appy.gen import String +from appy.gen.utils import FieldDescr, GroupDescr, PhaseDescr, StateDescr, \ + ValidationErrors, sequenceTypes +from appy.gen.plone25.descriptors import ArchetypesClassDescriptor +from appy.gen.plone25.utils import updateRolesForPermission, getAppyRequest + +# ------------------------------------------------------------------------------ +class AbstractMixin: + '''Every Archetype class generated by appy.gen inherits from a mixin that + inherits from this class. It contains basic functions allowing to + minimize the amount of generated code.''' + + def getAppyType(self, fieldName): + '''Returns the Appy type corresponding to p_fieldName.''' + res = None + if fieldName == 'id': return res + if self.wrapperClass: + baseClass = self.wrapperClass.__bases__[-1] + try: + # If I get the attr on self instead of baseClass, I get the + # property field that is redefined at the wrapper level. + appyType = getattr(baseClass, fieldName) + res = self._appy_getTypeAsDict(fieldName, appyType, baseClass) + except AttributeError: + # Check for another parent + if self.wrapperClass.__bases__[0].__bases__: + baseClass = self.wrapperClass.__bases__[0].__bases__[-1] + try: + appyType = getattr(baseClass, fieldName) + res = self._appy_getTypeAsDict(fieldName, appyType, + baseClass) + except AttributeError: + pass + return res + + def _appy_getRefs(self, fieldName, ploneObjects=False, + noListIfSingleObj=False): + '''p_fieldName is the name of a Ref field. This method returns an + ordered list containing the objects linked to p_self through this + field. If p_ploneObjects is True, the method returns the "true" + Plone objects instead of the Appy wrappers.''' + res = [] + sortedFieldName = '_appy_%s' % fieldName + exec 'objs = self.get%s%s()' % (fieldName[0].upper(), fieldName[1:]) + if objs: + if type(objs) != list: + objs = [objs] + objectsUids = [o.UID() for o in objs] + sortedObjectsUids = getattr(self, sortedFieldName) + # The list of UIDs may contain too much UIDs; indeed, when deleting + # objects, the list of UIDs are not updated. + uidsToDelete = [] + for uid in sortedObjectsUids: + try: + uidIndex = objectsUids.index(uid) + obj = objs[uidIndex] + if not ploneObjects: + obj = obj._appy_getWrapper(force=True) + res.append(obj) + except ValueError: + uidsToDelete.append(uid) + # Delete unused UIDs + for uid in uidsToDelete: + sortedObjectsUids.remove(uid) + if res and noListIfSingleObj: + appyType = self.getAppyType(fieldName) + if appyType['multiplicity'][1] == 1: + res = res[0] + return res + + def getAppyRefs(self, fieldName): + '''Gets the objects linked to me through p_fieldName.''' + return self._appy_getRefs(fieldName, ploneObjects=True) + + def getAppyRefIndex(self, fieldName, obj): + '''Gets the position of p_obj within Ref field named p_fieldName.''' + sortedFieldName = '_appy_%s' % fieldName + sortedObjectsUids = getattr(self, sortedFieldName) + res = sortedObjectsUids.index(obj.UID()) + return res + + def getAppyBackRefs(self): + '''Returns the list of back references (=types) that are defined for + this class.''' + className = self.__class__.__name__ + referers = self.getProductConfig().referers + res = [] + if referers.has_key(className): + for appyType, relationship in referers[className]: + d = appyType.__dict__ + d['backd'] = appyType.back.__dict__ + res.append((d, relationship)) + return res + + def getAppyRefPortalType(self, fieldName): + '''Gets the portal type of objects linked to me through Ref field named + p_fieldName.''' + appyType = self.getAppyType(fieldName) + tool = self.getTool() + if self._appy_meta_type == 'flavour': + flavour = self._appy_getWrapper(force=True) + else: + portalTypeName = self._appy_getPortalType(self.REQUEST) + flavour = tool.getFlavour(portalTypeName) + return self._appy_getAtType(appyType['klass'], flavour) + + def _appy_getOrderedFields(self, isEdit): + '''Gets all fields (normal fields, back references, fields to show, + fields to hide) in order, in the form of a list of FieldDescr + instances.''' + orderedFields = [] + # Browse Archetypes fields + for atField in self.Schema().filterFields(isMetadata=0): + fieldName = atField.getName() + appyType = self.getAppyType(fieldName) + if not appyType: + if isEdit and (fieldName == 'title'): + # We must provide a dummy appy type for it. Else, it will + # not be rendered in the "edit" form. + appyType = String(multiplicity=(1,1)).__dict__ + else: + continue # Special fields like 'id' are not relevant + # Do not display title on view page; it is already in the header + if not isEdit and (fieldName=='title'): pass + else: + orderedFields.append(FieldDescr(atField, appyType, None)) + # Browse back references + for appyType, fieldRel in self.getAppyBackRefs(): + orderedFields.append(FieldDescr(None, appyType, fieldRel)) + # If some fields must be moved, do it now + res = [] + for fieldDescr in orderedFields: + if fieldDescr.appyType['move']: + newPosition = len(res) - abs(fieldDescr.appyType['move']) + if newPosition <= 0: + newPosition = 0 + res.insert(newPosition, fieldDescr) + else: + res.append(fieldDescr) + return res + + def showField(self, fieldDescr, isEdit=False): + '''Must I show field corresponding to p_fieldDescr?''' + if isinstance(fieldDescr, FieldDescr): + fieldDescr = fieldDescr.__dict__ + appyType = fieldDescr['appyType'] + if isEdit and (appyType['type']=='Ref') and appyType['add']: + return False + if (fieldDescr['widgetType'] == 'backField') and \ + not self.getBRefs(fieldDescr['fieldRel']): + return False + # Do not show field if it is optional and not selected in flavour + if appyType['optional']: + tool = self.getTool() + flavour = tool.getFlavour(self, appy=True) + flavourAttrName = 'optionalFieldsFor%s' % self.meta_type + flavourAttrValue = getattr(flavour, flavourAttrName, ()) + if fieldDescr['atField'].getName() not in flavourAttrValue: + return False + # Check if the user has the permission to view or edit the field + if fieldDescr['widgetType'] != 'backField': + user = self.portal_membership.getAuthenticatedMember() + if isEdit: + perm = fieldDescr['atField'].write_permission + else: + perm = fieldDescr['atField'].read_permission + if not user.has_permission(perm, self): + return False + # Evaluate fieldDescr['show'] + if callable(fieldDescr['show']): + obj = self._appy_getWrapper(force=True) + res = fieldDescr['show'](obj) + else: + res = fieldDescr['show'] + return res + + def getAppyFields(self, isEdit, page): + '''Returns the fields sorted by group. For every field, a dict + containing the relevant info needed by the view or edit templates is + given.''' + res = [] + groups = {} # The already encountered groups + for fieldDescr in self._appy_getOrderedFields(isEdit): + # Select only widgets shown on current page + if fieldDescr.page != page: + continue + # Do not take into account hidden fields and fields that can't be + # edited through the edit view + if not self.showField(fieldDescr, isEdit): continue + if not fieldDescr.group: + res.append(fieldDescr.get()) + else: + # Have I already met this group? + groupName, cols = GroupDescr.getGroupInfo(fieldDescr.group) + if not groups.has_key(groupName): + groupDescr = GroupDescr(groupName, cols, + fieldDescr.appyType['page']).get() + groups[groupName] = groupDescr + res.append(groupDescr) + else: + groupDescr = groups[groupName] + groupDescr['fields'].append(fieldDescr.get()) + if groups: + for groupDict in groups.itervalues(): + GroupDescr.computeRows(groupDict) + return res + + def getAppyStates(self, phase, currentOnly=False): + '''Returns information about the states that are related to p_phase. + If p_currentOnly is True, we return the current state, even if not + related to p_phase.''' + res = [] + dcWorkflow = self.getWorkflow(appy=False) + if not dcWorkflow: return res + currentState = self.portal_workflow.getInfoFor(self, 'review_state') + if currentOnly: + return [StateDescr(currentState,'current').get()] + workflow = self.getWorkflow(appy=True) + if workflow: + stateStatus = 'done' + for stateName in workflow._states: + if stateName == currentState: + stateStatus = 'current' + elif stateStatus != 'done': + stateStatus = 'future' + state = getattr(workflow, stateName) + if (state.phase == phase) and \ + (self._appy_showState(workflow, state.show)): + res.append(StateDescr(stateName, stateStatus).get()) + return res + + def getAppyPage(self, isEdit, phaseInfo, appyName=True): + '''On which page am I? p_isEdit indicates if the current page is an + edit or consult view. p_phaseInfo indicates the current phase.''' + pageAttr = 'pageName' + if isEdit: + pageAttr = 'fieldset' # Archetypes page name + default = phaseInfo['pages'][0] + # Default page is the first page of the current phase + res = self.REQUEST.get(pageAttr, default) + if appyName and (res == 'default'): + res = 'main' + return res + + def getAppyPages(self, phase='main'): + '''Gets the list of pages that are defined for this content type.''' + res = [] + for atField in self.Schema().filterFields(isMetadata=0): + appyType = self.getAppyType(atField.getName()) + if not appyType: continue + if (appyType['phase'] == phase) and (appyType['page'] not in res) \ + and self._appy_showPage(appyType['page'], appyType['pageShow']): + res.append(appyType['page']) + for appyType, fieldRel in self.getAppyBackRefs(): + if (appyType['backd']['phase'] == phase) and \ + (appyType['backd']['page'] not in res) and \ + self._appy_showPage(appyType['backd']['page'], + appyType['backd']['pageShow']): + res.append(appyType['backd']['page']) + return res + + def getAppyPhases(self, currentOnly=False, fieldset=None, forPlone=False): + '''Gets the list of phases that are defined for this content type. If + p_currentOnly is True, the search is limited to the current phase. + If p_fieldset is not None, the search is limited to the phase + corresponding the Plone fieldset whose name is given in this + parameter. If p_forPlone=True, among phase info we write Plone + fieldset names, which are a bit different from Appy page names.''' + # Get the list of phases + res = [] # Ordered list of phases + phases = {} # Dict of phases + for atField in self.Schema().filterFields(isMetadata=0): + appyType = self.getAppyType(atField.getName()) + if not appyType: continue + if appyType['phase'] not in phases: + phase = PhaseDescr(appyType['phase'], + self.getAppyStates(appyType['phase']), forPlone, self) + res.append(phase.__dict__) + phases[appyType['phase']] = phase + else: + phase = phases[appyType['phase']] + phase.addPage(appyType, self) + for appyType, fieldRel in self.getAppyBackRefs(): + if appyType['backd']['phase'] not in phases: + phase = PhaseDescr(appyType['backd']['phase'], + self.getAppyStates(appyType['backd']['phase']), + forPlone, self) + res.append(phase.__dict__) + phases[appyType['phase']] = phase + else: + phase = phases[appyType['backd']['phase']] + phase.addPage(appyType['backd'], self) + # Remove phases that have no visible page + for i in range(len(res)-1, -1, -1): + if not res[i]['pages']: + del phases[res[i]['name']] + del res[i] + # Then, compute status of phases + for ph in phases.itervalues(): + ph.computeStatus() + ph.totalNbOfPhases = len(res) + # Restrict the result if we must not produce the whole list of phases + if currentOnly: + for phaseInfo in res: + if phaseInfo['phaseStatus'] == 'Current': + return phaseInfo + elif fieldset: + for phaseInfo in res: + if fieldset in phaseInfo['pages']: + return phaseInfo + else: + return res + + def changeAppyRefOrder(self, fieldName, objectUid, newIndex, isDelta): + '''This method changes the position of object with uid p_objectUid in + reference field p_fieldName to p_newIndex i p_isDelta is False, or + to actualIndex+p_newIndex if p_isDelta is True.''' + sortedFieldName = '_appy_%s' % fieldName + sortedObjectsUids = getattr(self, sortedFieldName) + oldIndex = sortedObjectsUids.index(objectUid) + sortedObjectsUids.remove(objectUid) + if isDelta: + newIndex = oldIndex + newIndex + else: + pass # To implement later on + sortedObjectsUids.insert(newIndex, objectUid) + + def getWorkflow(self, appy=True): + '''Returns the Appy workflow instance that is relevant for this + object. If p_appy is False, it returns the DC workflow.''' + res = None + if appy: + # Get the workflow class first + workflowClass = None + if self.wrapperClass: + appyClass = self.wrapperClass.__bases__[1] + if hasattr(appyClass, 'workflow'): + workflowClass = appyClass.workflow + if workflowClass: + # Get the corresponding prototypical workflow instance + res = self.getProductConfig().workflowInstances[workflowClass] + else: + dcWorkflows = self.portal_workflow.getWorkflowsFor(self) + if dcWorkflows: + res = dcWorkflows[0] + return res + + def getWorkflowLabel(self, stateName=None): + '''Gets the i18n label for the workflow current state. If no p_stateName + is given, workflow label is given for the current state.''' + res = '' + wf = self.getWorkflow(appy=False) + if wf: + res = stateName + if not res: + res = self.portal_workflow.getInfoFor(self, 'review_state') + appyWf = self.getWorkflow(appy=True) + if appyWf: + res = '%s_%s' % (wf.id, res) + return res + + def getComputedValue(self, appyType): + '''Computes on p_self the value of the Computed field corresponding to + p_appyType.''' + res = '' + obj = self._appy_getWrapper(force=True) + if appyType['method']: + try: + res = appyType['method'](obj) + if not isinstance(res, basestring): + res = repr(res) + except Exception, e: + res = str(e) + return res + + def may(self, transitionName): + '''May the user execute transition named p_transitionName?''' + # Get the Appy workflow instance + workflow = self.getWorkflow() + res = False + if workflow: + # Get the corresponding Appy transition + transition = workflow._transitionsMapping[transitionName] + user = self.portal_membership.getAuthenticatedMember() + if isinstance(transition.condition, basestring): + # It is a role. Transition may be triggered if the user has this + # role. + res = user.has_role(transition.condition, self) + elif type(transition.condition) == types.FunctionType: + obj = self._appy_getWrapper() + res = transition.condition(workflow, obj) + elif type(transition.condition) in (tuple, list): + # It is a list of roles and or functions. Transition may be + # triggered if user has at least one of those roles and if all + # functions return True. + hasRole = None + for roleOrFunction in transition.condition: + if isinstance(roleOrFunction, basestring): + if hasRole == None: + hasRole = False + if user.has_role(roleOrFunction, self): + hasRole = True + elif type(roleOrFunction) == types.FunctionType: + obj = self._appy_getWrapper() + if not roleOrFunction(workflow, obj): + return False + if hasRole != False: + res = True + return res + + def executeAppyAction(self, actionName, reindex=True): + '''Executes action with p_fieldName on this object.''' + appyClass = self.wrapperClass.__bases__[1] + res = getattr(appyClass, actionName)(self._appy_getWrapper(force=True)) + self.reindexObject() + return res + + def callAppySelect(self, selectMethod, brains): + '''Selects objects from a Reference field.''' + if selectMethod: + obj = self._appy_getWrapper(force=True) + allObjects = [b.getObject()._appy_getWrapper() \ + for b in brains] + filteredObjects = selectMethod(obj, allObjects) + filteredUids = [o.o.UID() for o in filteredObjects] + res = [] + for b in brains: + if b.UID in filteredUids: + res.append(b) + else: + res = brains + return res + + def getCssClasses(self, appyType, asSlave=True): + '''Gets the CSS classes (used for master/slave relationships) for this + object, either as slave (p_asSlave=True) either as master. The HTML + element on which to define the CSS class for a slave or a master is + different. So this method is called either for getting CSS classes + as slave or as master.''' + res = '' + if not asSlave and appyType['slaves']: + res = 'appyMaster master_%s' % appyType['id'] + elif asSlave and appyType['master']: + res = 'slave_%s' % appyType['master'].id + res += ' slaveValue_%s_%s' % (appyType['master'].id, + appyType['masterValue']) + return res + + def fieldValueSelected(self, fieldName, value, vocabValue): + '''When displaying a selection box (ie a String with a validator being a + list), must the _vocabValue appear as selected?''' + # Check according to database value + if (type(value) in sequenceTypes): + if vocabValue in value: return True + else: + if vocabValue == value: return True + # Check according to value in request + valueInReq = self.REQUEST.get(fieldName, None) + if type(valueInReq) in sequenceTypes: + if vocabValue in valueInReq: return True + else: + if vocabValue == valueInReq: return True + return False + + def checkboxChecked(self, fieldName, value): + '''When displaying a checkbox, must it be checked or not?''' + valueInReq = self.REQUEST.get(fieldName, None) + if valueInReq != None: + return valueInReq in ('True', 1, '1') + else: + return value + + def getLabelPrefix(self, fieldName=None): + '''For some i18n labels, wee need to determine a prefix, which may be + linked to p_fieldName. Indeed, the prefix may be based on the name + of the (super-)class where p_fieldName is defined.''' + res = self.meta_type + if fieldName: + appyType = self.getAppyType(fieldName) + res = '%s_%s' % (self._appy_getAtType(appyType['selfClass']), + fieldName) + return res + + def _appy_getWrapper(self, force=False): + '''Returns the wrapper object for p_self. It is created if it did not + exist.''' + if (not hasattr(self.aq_base, 'appyWrapper')) or force: + # In some cases (p_force=True), we need to re-generate the + # wrapper object. Else, acquisition may be lost on wrapper.o. + self.appyWrapper = self.wrapperClass(self) + return self.appyWrapper + + def _appy_getSourceClass(self, fieldName, baseClass): + '''We know that p_fieldName was defined on Python class p_baseClass or + one of its parents. This method returns the exact class (p_baseClass + or a parent) where it was defined.''' + if fieldName in baseClass.__dict__: + return baseClass + else: + return self._appy_getSourceClass(fieldName, baseClass.__bases__[0]) + + def _appy_getTypeAsDict(self, fieldName, appyType, baseClass): + '''Within page templates, the appyType is given as a dict instead of + an object in order to avoid security problems.''' + appyType.selfClass = self._appy_getSourceClass(fieldName, baseClass) + res = appyType.__dict__ + if res.has_key('back') and res['back'] and (not res.has_key('backd')): + res['backd'] = res['back'].__dict__ + # I create a new entry "backd"; if I put the dict in "back" I + # really modify the initial appyType object and I don't want to do + # this. + return res + + def _appy_getAtType(self, appyClass, flavour=None): + '''Gets the name of the Archetypes class that corresponds to + p_appyClass (which is a Python class coming from the user + application). If p_flavour is specified, the method returns the name + of the specific Archetypes class in this flavour (ie suffixed with + the flavour number).''' + res = ArchetypesClassDescriptor.getClassName(appyClass) + appName = self.getProductConfig().PROJECTNAME + if res.find('Extensions_appyWrappers') != -1: + # This is not a content type defined Maybe I am a tool or flavour + res = appName + appyClass.__name__ + elif issubclass(appyClass, appy.gen.Tool): + # This is the custom tool + res = '%sTool' % appName + elif issubclass(appyClass, appy.gen.Flavour): + # This is the custom Flavour + res = '%sFlavour' % appName + else: + if flavour and flavour.number != 1: + res += '_%d' % flavour.number + return res + + def _appy_getRefsBack(self, fieldName, relName, ploneObjects=False, + noListIfSingleObj=False): + '''This method returns the list of objects linked to this one + through the BackRef corresponding to the Archetypes + relationship named p_relName.''' + res = [] + referers = self.getProductConfig().referers + objs = self.getBRefs(relName) + for obj in objs: + if not ploneObjects: + obj = obj._appy_getWrapper(force=True) + res.append(obj) + if res and noListIfSingleObj: + className = self.__class__.__name__ + appyType = None + for anAppyType, rel in referers[className]: + if rel == relName: + appyType = anAppyType + break + if appyType.back.multiplicity[1] == 1: + res = res[0] + return res + + def _appy_showPage(self, page, pageShow): + '''Must I show p_page?''' + if callable(pageShow): + return pageShow(self._appy_getWrapper(force=True)) + else: return pageShow + + def _appy_showState(self, workflow, stateShow): + '''Must I show a state whose "show value" is p_stateShow?''' + if callable(stateShow): + return stateShow(workflow, self._appy_getWrapper()) + else: return stateShow + + def _appy_managePermissions(self): + '''When an object is created or updated, we must update "add" + permissions accordingly: if the object is a folder, we must set on + it permissions that will allow to create, inside it, objects through + Ref fields; if it is not a folder, we must update permissions on its + parent folder instead.''' + # Determine on which folder we need to set "add" permissions + folder = self + if not self.isPrincipiaFolderish: + folder = self.getParentNode() + # On this folder, set "add" permissions for every content type that will + # be created through reference fields + allCreators = set() + for field in self.schema.fields(): + if field.type == 'reference': + refContentTypeName= self.getAppyRefPortalType(field.getName()) + refContentType = getattr(self.portal_types, refContentTypeName) + refMetaType = refContentType.content_meta_type + if refMetaType in self.getProductConfig(\ + ).ADD_CONTENT_PERMISSIONS: + # No specific "add" permission is defined for tool and + # flavour, for example. + appyClass = refContentType.wrapperClass.__bases__[-1] + # Get roles that may add this content type + creators = getattr(appyClass, 'creators', None) + if not creators: + creators = self.getProductConfig().defaultAddRoles + allCreators = allCreators.union(creators) + # Grant this "add" permission to those roles + updateRolesForPermission( + self.getProductConfig().ADD_CONTENT_PERMISSIONS[\ + refMetaType], creators, folder) + # Beyond content-type-specific "add" permissions, creators must also + # have the main permission "Add portal content". + if allCreators: + updateRolesForPermission('Add portal content', tuple(allCreators), + folder) + + def _appy_onEdit(self, created): + '''What happens when an object is created (p_created=True) or edited?''' + # Manage references + self._appy_manageRefs(created) + if self.wrapperClass: + # Get the wrapper first + appyWrapper = self._appy_getWrapper(force=True) + # Call the custom "onEdit" if available + try: + appyWrapper.onEdit(created) + except AttributeError, ae: + pass + # Manage "add" permissions + self._appy_managePermissions() + # Re/unindex object + if self._appy_meta_type == 'tool': self.unindexObject() + else: self.reindexObject() + + def _appy_getDisplayList(self, values, labels, domain): + '''Creates a DisplayList given a list of p_values and corresponding + i18n p_labels.''' + res = [] + i = -1 + for v in values: + i += 1 + res.append( (v, self.utranslate(labels[i], domain=domain))) + return self.getProductConfig().DisplayList(tuple(res)) + + nullValues = (None, '', ' ') + numbersMap = {'Integer': 'int', 'Float': 'float'} + validatorTypes = (types.FunctionType, type(String.EMAIL)) + def _appy_validateField(self, fieldName, value, label, specificType): + '''Checks whether the p_value entered in field p_fieldName is + correct.''' + appyType = self.getAppyType(fieldName) + msgId = None + if (specificType == 'Ref') and appyType['link']: + # We only check "link" Refs because in edit views, "add" Refs are + # not visible. So if we check "add" Refs, on an "edit" view we will + # believe that that there is no referred object even if there is. + # If the field is a reference, appy must ensure itself that + # multiplicities are enforced. + fieldValue = self.REQUEST.get('appy_ref_%s' % fieldName, '') + if not fieldValue: + nbOfRefs = 0 + elif isinstance(fieldValue, basestring): + nbOfRefs = 1 + else: + nbOfRefs = len(fieldValue) + minRef = appyType['multiplicity'][0] + maxRef = appyType['multiplicity'][1] + if maxRef == None: + maxRef = sys.maxint + if nbOfRefs < minRef: + msgId = 'min_ref_violated' + elif nbOfRefs > maxRef: + msgId = 'max_ref_violated' + elif specificType in self.numbersMap: # Float, Integer + pyType = self.numbersMap[specificType] + # Validate only if input value is there. + # By the way, we also convert the value. + if value not in self.nullValues: + try: + exec 'value = %s(value)' % pyType + except ValueError: + msgId = 'bad_%s' % pyType + else: + value = None + # Apply the custom validator if it exists + validator = appyType['validator'] + if not msgId and (type(validator) in self.validatorTypes): + obj = self._appy_getWrapper(force=True) + if type(validator) == self.validatorTypes[0]: + # It is a custom function. Execute it. + try: + validValue = validator(obj, value) + if isinstance(validValue, basestring) and validValue: + # Validation failed; and p_validValue contains an error + # message. + return validValue + else: + if not validValue: + msgId = label + except Exception, e: + return str(e) + except: + msgId = label + elif type(validator) == self.validatorTypes[1]: + # It is a regular expression + if (value not in self.nullValues) and \ + not validator.match(value): + # If the regular expression is among the default ones, we + # generate a specific error message. + if validator == String.EMAIL: + msgId = 'bad_email' + elif validator == String.URL: + msgId = 'bad_url' + elif validator == String.ALPHANUMERIC: + msgId = 'bad_alphanumeric' + else: + msgId = label + res = msgId + if msgId: + res = self.utranslate(msgId, domain=self.i18nDomain) + return res + + def _appy_validateAllFields(self, REQUEST, errors): + '''This method is called when individual validation of all fields + succeed (when editing or creating an object). Then, this method + performs inter-field validation. This way, the user must first + correct individual fields before being confronted to potential + inter-fields validation errors.''' + obj = self._appy_getWrapper() + appyRequest = getAppyRequest(REQUEST, obj) + try: + appyErrors = ValidationErrors() + obj.validate(appyRequest, appyErrors) + # This custom "validate" method may have added fields in the given + # ValidationErrors instance. Now we must fill the Zope "errors" dict + # based on it. For every error message that is not a string, + # we replace it with the standard validation error for the + # corresponding field. + for key, value in appyErrors.__dict__.iteritems(): + resValue = value + if not isinstance(resValue, basestring): + msgId = '%s_valid' % self.getLabelPrefix(key) + resValue = self.utranslate(msgId, domain=self.i18nDomain) + errors[key] = resValue + except AttributeError: + pass + + def _appy_getPortalType(self, request): + '''Guess the portal_type of p_self from info about p_self and + p_request.''' + res = None + # If the object is being created, self.portal_type is not correctly + # initialized yet. + if request.has_key('__factory__info__'): + factoryInfo = request['__factory__info__'] + if factoryInfo.has_key('stack'): + res = factoryInfo['stack'][0] + if not res: + res = self.portal_type + return res + + def _appy_generateDocument(self): + '''Generates the document from a template whose UID is specified in the + request for a given object whose UID is also in the request.''' + # Get the object + objectUid = self.REQUEST.get('objectUid') + obj = self.uid_catalog(UID=objectUid)[0].getObject() + # Get the POD template + templateUid = self.REQUEST.get('templateUid') + podTemplate = self.uid_catalog(UID=templateUid)[0].getObject() + return podTemplate.generateDocument(obj) + + def _appy_manageSortedRefs(self): + '''For every reference field, this method creates the additional + reference lists that are ordered (if it did not already exist).''' + for field in self.schema.fields(): + if field.type == 'reference': + sortedRefField = '_appy_%s' % field.getName() + if not hasattr(self.aq_base, sortedRefField): + pList = self.getProductConfig().PersistentList + exec 'self.%s = pList()' % sortedRefField + + def _appy_manageRefs(self, created): + '''Every time an object is created or updated, this method updates + the Reference fields accordingly.''' + self._appy_manageSortedRefs() + self._appy_manageRefsFromRequest() + # If the creation was initiated by another object, update the + # reference. + if created: + session = self.REQUEST.SESSION + initiatorUid = session.get('initiator', None) + initiator = None + if initiatorUid: + initiatorRes = self.uid_catalog.searchResults(UID=initiatorUid) + if initiatorRes: + initiator = initiatorRes[0].getObject() + if initiator: + fieldName = session.get('initiatorField') + initiator._appy_getWrapper(force=True).link(fieldName, self) + # Re-initialise the session + session['initiator'] = None + + def _appy_manageRefsFromRequest(self): + '''Appy manages itself some Ref fields (with link=True). So here we must + update the Ref fields.''' + fieldsInRequest = [] # Fields present in the request + for requestKey in self.REQUEST.keys(): + if requestKey.startswith('appy_ref_'): + fieldName = requestKey[9:] + fieldsInRequest.append(fieldName) + fieldValue = self.REQUEST[requestKey] + sortedRefField = getattr(self, '_appy_%s' % fieldName) + del sortedRefField[:] + if isinstance(fieldValue, basestring): + fieldValue = [fieldValue] + refObjects = [] + for uid in fieldValue: + obj = self.uid_catalog(UID=uid)[0].getObject() + refObjects.append(obj) + sortedRefField.append(uid) + exec 'self.set%s%s(refObjects)' % (fieldName[0].upper(), + fieldName[1:]) + # Manage Ref fields that are not present in the request + currentFieldset = self.REQUEST.get('fieldset', 'default') + for field in self.schema.fields(): + if (field.type == 'reference') and \ + (field.schemata == currentFieldset) and \ + (field.getName() not in fieldsInRequest): + # If this field is visible, it was not present in the request: + # it means that we must remove any Ref from it. + fieldName = field.getName() + appyType = self.getAppyType(fieldName) + fieldDescr = FieldDescr(field, appyType, None) + if self.showField(fieldDescr, isEdit=True): + exec 'self.set%s%s([])' % (fieldName[0].upper(), + fieldName[1:]) +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/model.py b/gen/plone25/model.py new file mode 100755 index 0000000..f59cfc6 --- /dev/null +++ b/gen/plone25/model.py @@ -0,0 +1,226 @@ +'''This file contains basic classes that will be added into any user + application for creating the basic structure of the application "Tool" which + is the set of web pages used for configuring the application. The "Tool" is + available to administrators under the standard Plone link "site setup". Plone + itself is shipped with several tools used for conguring the various parts of + Plone (content types, catalogs, workflows, etc.)''' + +# ------------------------------------------------------------------------------ +import copy, types +from appy.gen import Type, Integer, String, File, Ref, Boolean + +# ------------------------------------------------------------------------------ +class ModelClass: + '''This class is the abstract class of all predefined application classes + used in the Appy model: Tool, Flavour, PodTemplate, etc. All methods and + attributes of those classes are part of the Appy machinery and are + prefixed with _appy_ in order to avoid name conflicts with user-defined + parts of the application model.''' + _appy_attributes = [] # We need to keep track of attributes order. + _appy_notinit = ('id', 'type', 'pythonType', 'slaves', 'selfClass', + 'phase', 'pageShow') # When creating a new instance of a + # ModelClass, those attributes must not be given in the + # constructor. + + def _appy_addField(klass, fieldName, fieldType, classDescr): + exec "klass.%s = fieldType" % fieldName + klass._appy_attributes.append(fieldName) + if hasattr(klass, '_appy_classes'): + klass._appy_classes[fieldName] = classDescr.name + _appy_addField = classmethod(_appy_addField) + + def _appy_getTypeBody(klass, appyType): + '''This method returns the code declaration for p_appyType.''' + typeArgs = '' + for attrName, attrValue in appyType.__dict__.iteritems(): + if attrName in ModelClass._appy_notinit: + continue + if isinstance(attrValue, basestring): + attrValue = '"%s"' % attrValue + elif isinstance(attrValue, Type): + attrValue = klass._appy_getTypeBody(attrValue) + elif type(attrValue) == type(ModelClass): + moduleName = attrValue.__module__ + if moduleName.startswith('appy.gen'): + attrValue = attrValue.__name__ + else: + attrValue = '%s.%s' % (moduleName, attrValue.__name__) + typeArgs += '%s=%s,' % (attrName, attrValue) + return '%s(%s)' % (appyType.__class__.__name__, typeArgs) + _appy_getTypeBody = classmethod(_appy_getTypeBody) + + def _appy_getBody(klass): + '''This method returns the code declaration of this class. We will dump + this in appyWrappers.py in the resulting product.''' + res = '' + for attrName in klass._appy_attributes: + exec 'appyType = klass.%s' % attrName + res += ' %s=%s\n' % (attrName, klass._appy_getTypeBody(appyType)) + return res + _appy_getBody = classmethod(_appy_getBody) + +class PodTemplate(ModelClass): + description = String(format=String.TEXT) + podTemplate = File(multiplicity=(1,1)) + podFormat = String(validator=['odt', 'pdf', 'rtf', 'doc'], + multiplicity=(1,1), default='odt') + phase = String(default='main') + _appy_attributes = ['description', 'podTemplate', 'podFormat', 'phase'] + +defaultFlavourAttrs = ('number', 'enableNotifications') +flavourAttributePrefixes = ('optionalFieldsFor', 'defaultValueFor', + 'podTemplatesFor', 'podMaxShownTemplatesFor', 'resultColumnsFor', + 'showWorkflowFor', 'showWorkflowCommentFieldFor', 'showAllStatesInPhaseFor') +# Attribute prefixes of the fields generated on the Flavour for configuring +# the application classes. + +class Flavour(ModelClass): + '''For every application, the Flavour may be different (it depends on the + fields declared as optional, etc). Instead of creating a new way to + generate the Archetypes Flavour class, we create a silly + FlavourStub instance and we will use the standard Archetypes + generator that generates classes from the application to generate the + flavour class.''' + number = Integer(default=1, show=False) + enableNotifications = Boolean(default=True, page='notifications') + _appy_classes = {} # ~{s_attributeName: s_className}~ + # We need to remember the original classes related to the flavour attributes + _appy_attributes = list(defaultFlavourAttrs) + + def _appy_clean(klass): + toClean = [] + for k, v in klass.__dict__.iteritems(): + if not k.startswith('__') and (not k.startswith('_appy_')): + if k not in defaultFlavourAttrs: + toClean.append(k) + for k in toClean: + exec 'del klass.%s' % k + klass._appy_attributes = list(defaultFlavourAttrs) + klass._appy_classes = {} + _appy_clean = classmethod(_appy_clean) + + def _appy_copyField(klass, appyType): + '''From a given p_appyType, produce a type definition suitable for + storing the default value for this field.''' + res = copy.copy(appyType) + res.editDefault = False + res.optional = False + res.show = True + res.phase = 'main' + res.specificReadPermission = False + res.specificWritePermission = False + res.multiplicity = (0, appyType.multiplicity[1]) + if type(res.validator) == types.FunctionType: + # We will not be able to call this function from the flavour. + res.validator = None + if isinstance(appyType, Ref): + res.link = True + res.add = False + res.back = copy.copy(appyType.back) + res.back.attribute += 'DefaultValue' + res.back.show = False + res.select = None # Not callable from flavour + return res + _appy_copyField = classmethod(_appy_copyField) + + def _appy_addOptionalField(klass, fieldDescr): + className = fieldDescr.classDescr.name + fieldName = 'optionalFieldsFor%s' % className + fieldType = getattr(klass, fieldName, None) + if not fieldType: + fieldType = String(multiplicity=(0,None)) + fieldType.validator = [] + klass._appy_addField(fieldName, fieldType, fieldDescr.classDescr) + fieldType.validator.append(fieldDescr.fieldName) + fieldType.page = 'data' + fieldType.group = fieldDescr.classDescr.klass.__name__ + _appy_addOptionalField = classmethod(_appy_addOptionalField) + + def _appy_addDefaultField(klass, fieldDescr): + className = fieldDescr.classDescr.name + fieldName = 'defaultValueFor%s_%s' % (className, fieldDescr.fieldName) + fieldType = klass._appy_copyField(fieldDescr.appyType) + klass._appy_addField(fieldName, fieldType, fieldDescr.classDescr) + fieldType.page = 'data' + fieldType.group = fieldDescr.classDescr.klass.__name__ + _appy_addDefaultField = classmethod(_appy_addDefaultField) + + def _appy_addPodField(klass, classDescr): + '''Adds a POD field to the flavour and also an integer field that will + determine the maximum number of documents to show at once on consult + views. If this number is reached, a list is displayed.''' + # First, add the POD field that will hold PodTemplates. + fieldType = Ref(PodTemplate, multiplicity=(0,None), add=True, + link=False, back = Ref(attribute='flavour'), + page="documentGeneration", + group=classDescr.klass.__name__) + fieldName = 'podTemplatesFor%s' % classDescr.name + klass._appy_addField(fieldName, fieldType, classDescr) + # Then, add the integer field + fieldType = Integer(default=1, page='userInterface', + group=classDescr.klass.__name__) + fieldName = 'podMaxShownTemplatesFor%s' % classDescr.name + klass._appy_addField(fieldName, fieldType, classDescr) + classDescr.flavourFieldsToPropagate.append( + ('podMaxShownTemplatesFor%s', copy.copy(fieldType)) ) + _appy_addPodField = classmethod(_appy_addPodField) + + def _appy_addQueryResultColumns(klass, classDescr): + className = classDescr.name + fieldName = 'resultColumnsFor%s' % className + attrNames = [a[0] for a in classDescr.getOrderedAppyAttributes()] + attrNames.append('workflowState') # Object state from workflow + if 'title' in attrNames: + attrNames.remove('title') # Included by default. + fieldType = String(multiplicity=(0,None), validator=attrNames, + page='userInterface', + group=classDescr.klass.__name__) + klass._appy_addField(fieldName, fieldType, classDescr) + _appy_addQueryResultColumns = classmethod(_appy_addQueryResultColumns) + + def _appy_addWorkflowFields(klass, classDescr): + '''Adds, for a given p_classDescr, the workflow-related fields.''' + className = classDescr.name + groupName = classDescr.klass.__name__ + # Adds a field allowing to show/hide completely any workflow-related + # information for a given class. + defaultValue = False + if classDescr.isRoot() or issubclass(classDescr.klass, ModelClass): + defaultValue = True + fieldName = 'showWorkflowFor%s' % className + fieldType = Boolean(default=defaultValue, page='userInterface', + group=groupName) + klass._appy_addField(fieldName, fieldType, classDescr) + # Adds the boolean field for showing or not the field "enter comments". + fieldName = 'showWorkflowCommentFieldFor%s' % className + fieldType = Boolean(default=defaultValue, page='userInterface', + group=groupName) + klass._appy_addField(fieldName, fieldType, classDescr) + # Adds the boolean field for showing all states in current state or not. + # If this boolean is True but the current phase counts only one state, + # we will not show the state at all: the fact of knowing in what phase + # we are is sufficient. If this boolean is False, we simply show the + # current state. + defaultValue = False + if len(classDescr.getPhases()) > 1: + defaultValue = True + fieldName = 'showAllStatesInPhaseFor%s' % className + fieldType = Boolean(default=defaultValue, page='userInterface', + group=groupName) + klass._appy_addField(fieldName, fieldType, classDescr) + + _appy_addWorkflowFields = classmethod(_appy_addWorkflowFields) + +class Tool(ModelClass): + flavours = Ref(None, multiplicity=(1,None), add=True, link=False, + back=Ref(attribute='tool')) + # First arg is None because we don't know yet if it will link + # to the predefined Flavour class or a custom class defined + # in the application. + unoEnabledPython = String(group="connectionToOpenOffice") + openOfficePort = Integer(default=2002, group="connectionToOpenOffice") + numberOfResultsPerPage = Integer(default=30) + listBoxesMaximumWidth = Integer(default=100) + _appy_attributes = ['flavours', 'unoEnabledPython', 'openOfficePort', + 'numberOfResultsPerPage', 'listBoxesMaximumWidth'] +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/notifier.py b/gen/plone25/notifier.py new file mode 100644 index 0000000..b205f18 --- /dev/null +++ b/gen/plone25/notifier.py @@ -0,0 +1,105 @@ +'''This package contains functions for sending email notifications.''' + +# ------------------------------------------------------------------------------ +def getEmailAddress(name, email, encoding='utf-8'): + '''Creates a full email address from a p_name and p_email.''' + res = email + if name: res = name.decode(encoding) + ' <%s>' % email + return res + +def convertRolesToEmails(users, portal): + '''p_users is a list of emails and/or roles. This function returns the same + list, where all roles have been expanded to emails of users having this + role (more precisely, users belonging to the group Appy created for the + given role).''' + res = [] + for mailOrRole in users: + if mailOrRole.find('@') != -1: + # It is an email. Append it directly to the result. + res.append(mailOrRole) + else: + # It is a role. Find the corresponding group (Appy creates + # one group for every role defined in the application). + groupId = mailOrRole + '_group' + group = portal.acl_users.getGroupById(groupId) + if group: + for user in group.getAllGroupMembers(): + userMail = user.getProperty('email') + if userMail and (userMail not in res): + res.append(userMail) + return res + +# ------------------------------------------------------------------------------ +SENDMAIL_ERROR = 'Error while sending mail: %s.' +ENCODING_ERROR = 'Encoding error while sending mail: %s.' + +from appy.gen.utils import sequenceTypes +from appy.gen.plone25.descriptors import WorkflowDescriptor +import socket + +def sendMail(obj, transition, transitionName, workflow, logger): + '''Sends mail about p_transition that has been triggered on p_obj that is + controlled by p_workflow.''' + wfName = WorkflowDescriptor.getWorkflowName(workflow.__class__) + ploneObj = obj.o + portal = ploneObj.portal_url.getPortalObject() + mailInfo = transition.notify(workflow, obj) + if not mailInfo[0]: return # Send a mail to nobody. + # mailInfo may be one of the following: + # (to,) + # (to, cc) + # (to, mailSubject, mailBody) + # (to, cc, mailSubject, mailBody) + # "to" and "cc" maybe simple strings (one simple string = one email + # address or one role) or sequences of strings. + # Determine mail subject and body. + if len(mailInfo) <= 2: + # The user didn't mention mail body and subject. We will use + # those defined from i18n labels. + wfHistory = ploneObj.getWorkflowHistory() + labelPrefix = '%s_%s' % (wfName, transitionName) + tName = obj.translate(labelPrefix) + keys = {'siteUrl': portal.absolute_url(), + 'siteTitle': portal.Title(), + 'objectUrl': ploneObj.absolute_url(), + 'objectTitle': ploneObj.Title(), + 'transitionName': tName, + 'transitionComment': wfHistory[0]['comments']} + mailSubject = obj.translate(labelPrefix + '_mail_subject', keys) + mailBody = obj.translate(labelPrefix + '_mail_body', keys) + else: + mailSubject = mailInfo[-1] + mailBody = mailInfo[-2] + # Determine "to" and "cc". + to = mailInfo[0] + cc = [] + if (len(mailInfo) in (2,4)) and mailInfo[1]: cc = mailInfo[1] + if type(to) not in sequenceTypes: to = [to] + if type(cc) not in sequenceTypes: cc = [cc] + # Among "to" and "cc", convert all roles to concrete email addresses + to = convertRolesToEmails(to, portal) + cc = convertRolesToEmails(cc, portal) + # Determine "from" address + enc= portal.portal_properties.site_properties.getProperty('default_charset') + fromAddress = getEmailAddress( + portal.getProperty('email_from_name'), + portal.getProperty('email_from_address'), enc) + # Send the mail + i = 0 + for recipient in to: + i += 1 + try: + if i != 1: cc = [] + portal.MailHost.secureSend(mailBody.encode(enc), + recipient.encode(enc), fromAddress.encode(enc), + mailSubject.encode(enc), mcc=cc, charset='utf-8') + except socket.error, sg: + logger.warn(SENDMAIL_ERROR % str(sg)) + break + except UnicodeDecodeError, ue: + logger.warn(ENCODING_ERROR % str(ue)) + break + except Exception, e: + logger.warn(SENDMAIL_ERROR % str(e)) + break +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/templates/AppyReference.pt b/gen/plone25/templates/AppyReference.pt new file mode 100755 index 0000000..28be62e --- /dev/null +++ b/gen/plone25/templates/AppyReference.pt @@ -0,0 +1,228 @@ + We begin with some sub-macros used within + macro "showReference" defined below. + + + Displays the title of a referenced object, with a link on + it to reach the consult view for this object. If we are on a back reference, the link + allows to reach the correct page where the forward reference is defined. + + + + + Displays icons for triggering actions on a given + referenced object (edit, delete, etc). + + + Edit the element + + Delete the element + + Arrows for moving objects up or down + + +
+ + + + +
+ + + + Arrow up + + + + Arrow down + + + +
+
+
+ + + Displays the "plus" icon that allows to add new object + through a reference widget. Indeed, If field was declared as "addable", we must provide + an icon for creating a new linked object (at least if multiplicities allow it). + + + +
+ + This macro displays the Reference widget on a "consult" page. + + The definition of "atMostOneRef" above may sound strange: we shouldn't check the actual number + of referenced objects. But for back references people often forget to specify multiplicities. + So concretely, multiplicities (0,None) are coded as (0,1). + + + Display a simplified widget if maximum number of + referenced objects is 1. + + + + If there is no object... + + + + + + If there is an object... + + + + + + +
no_ref + +
+
+ + Display a fieldset in all other cases. + +
+ + + + + + Object description +

+ + No object is present +

no_ref

+ + + +
+ + Show backward reference(s) + + + + +
+
+ + Show forward reference(s) + + + + + + + + Object title, shown here if not specified somewhere + else in appyType.shownInfo. + + Additional fields that must be shown + + Actions + + +
+ + + + +
  + + + + + + + + + + + + + + + + + + + +   + + +
+ +
+
+ A carriage return needed in some cases. +
+
+
+ +
+ + This macro displays the Reference widget on an "edit" page + + +
+
+ +
diff --git a/gen/plone25/templates/ArchetypesTemplate.py b/gen/plone25/templates/ArchetypesTemplate.py new file mode 100755 index 0000000..a7bb780 --- /dev/null +++ b/gen/plone25/templates/ArchetypesTemplate.py @@ -0,0 +1,34 @@ + +from AccessControl import ClassSecurityInfo +from Products.Archetypes.atapi import * +import Products..config +from Extensions.appyWrappers import _Wrapper +from appy.gen.plone25.mixins.ClassMixin import ClassMixin + + +schema = Schema(( +),) +fullSchema = .copy() + schema.copy() + +class (): + '''''' + security = ClassSecurityInfo() + __implements__ = + archetype_name = '' + meta_type = '' + portal_type = '' + allowed_content_types = [] + filter_content_types = 0 + global_allow = 1 + immediate_view = '_appy_view' + default_view = '_appy_view' + suppl_views = () + typeDescription = '' + typeDescMsgId = '_edit_descr' + _at_rename_after_creation = True + i18nDomain = '' + schema = fullSchema + wrapperClass = _Wrapper + + + diff --git a/gen/plone25/templates/FlavourTemplate.py b/gen/plone25/templates/FlavourTemplate.py new file mode 100755 index 0000000..4d1ec10 --- /dev/null +++ b/gen/plone25/templates/FlavourTemplate.py @@ -0,0 +1,38 @@ + +from AccessControl import ClassSecurityInfo +from Products.Archetypes.atapi import * +import Products..config +from appy.gen.plone25.mixins.FlavourMixin import FlavourMixin +from Extensions.appyWrappers import + +predefinedSchema = Schema(( +),) +schema = Schema(( +),) +fullSchema = OrderedBaseFolderSchema.copy() + predefinedSchema.copy() + schema.copy() + +class (OrderedBaseFolder, FlavourMixin): + '''Configuration flavour class for .''' + security = ClassSecurityInfo() + __implements__ = (getattr(OrderedBaseFolderSchema,'__implements__',()),) + archetype_name = '' + meta_type = '' + portal_type = '' + allowed_content_types = [] + filter_content_types = 0 + global_allow = 1 + #content_icon = '.gif' + immediate_view = '_appy_view' + default_view = '_appy_view' + suppl_views = () + typeDescription = "" + typeDescMsgId = '_edit_descr' + i18nDomain = '' + schema = fullSchema + allMetaTypes = + wrapperClass = + _at_rename_after_creation = True + + + +registerType(, '') diff --git a/gen/plone25/templates/Install.py b/gen/plone25/templates/Install.py new file mode 100755 index 0000000..7408dd4 --- /dev/null +++ b/gen/plone25/templates/Install.py @@ -0,0 +1,36 @@ + +from zExceptions import BadRequest +from Products.ExternalMethod.ExternalMethod import ExternalMethod +from Products.Archetypes.Extensions.utils import installTypes +from Products.Archetypes.Extensions.utils import install_subskin +from Products.Archetypes.config import TOOL_NAME as ARCHETYPETOOLNAME +from Products.Archetypes.atapi import listTypes +from Products..config import applicationRoles,defaultAddRoles +from Products..config import product_globals as GLOBALS +import appy.gen +from appy.gen.plone25.installer import PloneInstaller + +catalogMap = {} + +appClasses = +appClassNames = [] +allClassNames = [] +workflows = {} +# ------------------------------------------------------------------------------ +def install(self, reinstall=False): + '''Installation of product ""''' + ploneInstaller = PloneInstaller(reinstall, "", self, + , appClasses, appClassNames, allClassNames, + catalogMap, applicationRoles, defaultAddRoles, workflows, + , globals()) + return ploneInstaller.install() + +# ------------------------------------------------------------------------------ +def uninstall(self, reinstall=False): + '''Uninstallation of product ""''' + ploneInstaller = PloneInstaller(reinstall, "", self, + , appClasses, appClassNames, allClassNames, + catalogMap, applicationRoles, defaultAddRoles, workflows, + , globals()) + return ploneInstaller.uninstall() +# ------------------------------------------------------------------------------ diff --git a/gen/plone25/templates/Macros.pt b/gen/plone25/templates/Macros.pt new file mode 100755 index 0000000..3bb670d --- /dev/null +++ b/gen/plone25/templates/Macros.pt @@ -0,0 +1,765 @@ +
+ + + Form submitted when an object needs to be generated as a document. +
+ + +
+ + + + Display templates as links if a few number of templates must be shown + + + + + +   + Display templates as a list if a lot of templates must be shown + + +
+ + +