{ "info": { "author": "Dieter Maurer", "author_email": "dieter@handshake.de", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Framework :: Zope2", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Utilities" ], "description": "This functionality used to be in the Zope core as ``ZClasses``.\nIt allows the menu driven construction of Web applications.\nDue to the menu support, only limited programming skills are necessary.\n\nMore precisely: the ``ZClasses`` functionality allowed to define classes\n(in the object oriented sense of the word)\nvia the Zope Management Interface (``ZMI``), so called ``ZClasses``.\nA ``ZClass`` could inherit from base classes and other ``ZClasses`` (multiple\ninheritance), manage data in a set of associated property sheets, define\nmethods to operate on its instances (present, modify) via arbitrary\nother Zope objects\n(e.g. templates, scripts), define permissions appropriate for the class\nand map class relevant permissions to the standard permissions used by\nthe objects implementing the class methods.\nClasses could then be instantiated and the instances used in the\nWeb application, to hold data, to provide fundamental services, to glue\nthings together.\nQuite impressive....\n\nIt has been a valuable selling point in the past. In fact, back\nin 2000, I used ``ZClasses`` to build a large multilingual Web\napplication comprising about half a dozen ``ZClasses`` and allowing\nto perform queries against a European tender database and subscribe\nto email notifications for changed query results.\n\nUnfortunately, some influential Zope developers (especially\nthe Zope 2 release manager) did not like ``ZClasses``\nand started to fight them. Finally (with Zope 2.12), they removed\nthe functionality from the Zope core -- originally claiming the\nhigh maintenance burden (although since 2.8 nothing was done with\n``ZClasses``) but finally conceeding that the removal happened\nbecause they did not want ``ZClasses``.\n\nTrue, ``ZClasses`` had some problems:\n\n * ``ZClasses`` are Zope objects, stored and maintained in the ZODB\n (the Zope Object Database). There is no version control system\n documenting who changed what for what reason. Such documentation\n can be vital for large projects with a long lifetime.\n\n * ``ZClasses`` provided a vast functionality but there have been\n no tests to verify all this functionality. As a consequence,\n ``ZClassess`` broke once partially and this was only detected\n by Zope users and not during the development by the tests.\n\n * For Zope 2.8, ``ZClasses`` needed an overhaul and only Jim Fulton\n (the initial author of Zope and ``ZClasses``) was able to do this\n work. The developers feared that a future Zope version might need\n a similar effort with the resources missing.\n\n * ``ZClasses`` do not play well with storage mounting.\n\n\nIt is right to caution users against such deficiencies but in my view\nit was wrong to break backward compatibility by removing the\nfunctionality. Fortunately, Zope is open source which somewhat limits\nthe power of developers and release managers.\nThis package uses so called monkey patching (runtime code modifications)\nto reinsert into Zope again the ``ZClasses`` functionality\nthe Zope developers had ripped off.\n\nSome **warning notes**: monkey patching is potentially\ndangerous. Partially, it replaces core functionality by a slightly\nmodified one. I have tried hard that these replacements should\nbe okay for Zope 2.12 but future Zope versions might need other\nreplacements. The breakage might occur not in ``ZClasses`` itself\nbut in the core functionality. Moreover, the Zope developers hostility\ntowards ``ZClasses`` may be large enough that they remove further parts\nrequired by ``ZClasses``. While in principle, these parts can also\nbe put back, the costs increase and may finally get too large (such\nthat I abandon the project). Therefore, it is probably wise not\nto rely on this package for long living new projects but restrict\nits use to get some additional time to reimplement ``ZClasses`` based\nprojects or for short living prototypes.\n\n``ZClasses`` used to be documented at\n\"http://www.plope.com/Books/2_7Edition/CustomZopeObjects.stx\".\nThe Zope developers did not forget to rip this documentation off as well.\nBut, I have anticipated the step and have saved a copy. You find\nit in the package's ``doc`` subdirectory. It still presents the \"plope\"\nlook&feel and links will not to work. Screenshots are lost but you\ncan use your Zope to get them.\n\nActivation\n==========\n\nThis package does nothing until it is imported. On import,\nit performs its monkey patching.\n\n``ZClasses`` require a special class factory for\nthe root ZODB. To this end, the root ZODB configuration\nmust use the configuration option (in the Zope configuration file)::\n\n class-factory dm.zopepatches.zclasses.ClassFactory\n\nUsually, the import (mentioned in the first paragraph)\nis performed when this option is processed.\n\nLimitations\n===========\n\n * This version does not yet reinstate the ``ZClasses`` help pages.\n\n * This version does not yet reinstate the distibution tab of products.\n Likewise, distribution import is likely not to work.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/dm.zopepatches.zclasses", "keywords": "application development menu web", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "dm.zopepatches.zclasses", "package_url": "https://pypi.org/project/dm.zopepatches.zclasses/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/dm.zopepatches.zclasses/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/dm.zopepatches.zclasses" }, "release_url": "https://pypi.org/project/dm.zopepatches.zclasses/0.1.1/", "requires_dist": null, "requires_python": null, "summary": "Through the Web application development without deep programming skills (former ZClasses functionality in the Zope core).", "version": "0.1.1" }, "last_serial": 791275, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "26b1462fc4e7330160ffa7c835689cf2", "sha256": "f1192305f7b830c2ca782be7e63b81eeb30749692778d4ac33884e33e024640b" }, "downloads": -1, "filename": "dm.zopepatches.zclasses-0.1.tar.gz", "has_sig": false, "md5_digest": "26b1462fc4e7330160ffa7c835689cf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71867, "upload_time": "2009-10-03T16:49:59", "url": "https://files.pythonhosted.org/packages/ae/81/78c3771db76409cf45858f30c676011bc4ed6c9527af11ecb9afe991c549/dm.zopepatches.zclasses-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "715ab77fe4691b7e3212449103a66cb6", "sha256": "f2fc83f87818284334d0bb8b2f53f8328c50df65c2e4f63462cb570916475421" }, "downloads": -1, "filename": "dm.zopepatches.zclasses-0.1.1.tar.gz", "has_sig": false, "md5_digest": "715ab77fe4691b7e3212449103a66cb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71902, "upload_time": "2009-10-16T14:00:59", "url": "https://files.pythonhosted.org/packages/ca/ec/642c42c18b665e0812e033ad45eaca5a746fa1aa697ece98329b80550875/dm.zopepatches.zclasses-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "715ab77fe4691b7e3212449103a66cb6", "sha256": "f2fc83f87818284334d0bb8b2f53f8328c50df65c2e4f63462cb570916475421" }, "downloads": -1, "filename": "dm.zopepatches.zclasses-0.1.1.tar.gz", "has_sig": false, "md5_digest": "715ab77fe4691b7e3212449103a66cb6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71902, "upload_time": "2009-10-16T14:00:59", "url": "https://files.pythonhosted.org/packages/ca/ec/642c42c18b665e0812e033ad45eaca5a746fa1aa697ece98329b80550875/dm.zopepatches.zclasses-0.1.1.tar.gz" } ] }