{ "info": { "author": "Alex Clark", "author_email": "aclark@aclark.net", "bugtrack_url": null, "classifiers": [ "Framework :: Buildout", "Framework :: Plone" ], "description": ".. contents:: :depth: 2\n\ncharm\n=====\n\n*(Formerly mr.importer, formerly parse2plone.)*\n\nImport static websites on the file system into Plone via::\n\n $ bin/plone run bin/charm /path/to/files\n\nWorks like a charm!\n\n.. Warning::\n\n This is more of a \"toy\" project than a \"real\" data migrator. For any\n serious Plone migrations, you may want to consider a\n `collective.transmogrifier`_-based tool e.g. `mr.migrator`_. That is not\n to say you will not find ``charm`` useful as a sample migration script,\n just that you should not expect it to scale to meet any complex needs;\n whereas that is exactly what transmogrifier-based tools are designed to do.\n\nIntroduction\n------------\n\n``charm`` is a Buildout recipe that creates a script for you to\nget content from static websites on the file system into Plone.\n\n.. Note::\n\n This is a **Buildout** recipe for use with **Plone**; by itself it does nothing. If you\n don't know what Plone is, please see: http://plone.org. If you don't know\n what Buildout is, please see: http://www.buildout.org/.\n\n``charm`` relies on the \"run\" argument of scripts created by\n`plone.recipe.zope2instance`_ to mount and modify the Plone database.\n\nGetting started\n---------------\n\n* A ``Plone`` site object must exist in the ``Zope2`` instance database. By\n default, charm assumes the site object is named \"Plone\".\n\n* A user must exist in the ``Zope2`` instance database (or Plone site). By\n default, charm assumes the user is named \"admin\".\n\n.. Note::\n This recipe creates a script that is **not** intended to be run directly.\n Due to technical limitations, the author was not able to implement a user\n friendly error message. So if you run ``bin/charm`` directly you will see\n this::\n\n $ bin/charm\n Traceback (most recent call last):\n File \"bin/charm\", line 117, in \n charm.main(app=app)\n NameError: name 'app' is not defined\n\n To avoid this, run the script as intended::\n\n $ bin/plone run bin/charm /path/to/files\n\n See the `execution`_ section below for more information.\n\nInstallation\n------------\n\nYou can install ``charm`` by editing your ``buildout.cfg`` file like\nso::\n\n [buildout]\n ...\n parts =\n ...\n charm\n\n [charm]\n recipe = charm\n\nNow run ``bin/buildout`` as usual.\n\nExecution\n---------\n\nNow you can run ``charm`` like this::\n\n $ bin/plone run bin/charm /path/to/files\n\n.. Note:: \n In the example above and examples below, ``bin/plone`` refers to a *Zope 2\n instance* script created by `plone.recipe.zope2instance`_.\n\n Your ``bin/plone`` script may be called ``bin/instance`` or\n ``bin/client``, etc. instead.\n\n.. _`plone.recipe.zope2instance`: http://pypi.python.org/pypi/plone.recipe.zope2instance\n\nExample\n-------\n\nIf you have a site in /var/www/html that contains the following::\n\n /var/www/html/index.html\n /var/www/html/about/index.html\n\nYou should run::\n\n $ bin/plone run bin/charm /var/www/html\n\nAnd the following will be created:\n\n* http://localhost:8080/Plone/index.html\n* http://localhost:8080/Plone/about/index.html\n\nTroubleshooting\n---------------\n\nHere are some trouble-shooting comments/tips.\n\nCompiling lxml\n~~~~~~~~~~~~~~\n\n``charm`` requires ``lxml`` which in turn requires ``libxml2`` and\n``libxslt``. If you do not have ``lxml`` installed \"globally\" (i.e. in your\nsystem Python's site-packages directory) then Buildout will try to install it\nfor you. At this point ``lxml`` will look for the libxml2/libxslt2 development\nlibraries to build against, and if you don't have them installed on your system\nalready *your mileage may vary* (i.e. Buildout will fail).\n\nDatabase access\n~~~~~~~~~~~~~~~\n\nBefore running ``charm``, you must either stop your Plone site or\nuse ZEO. Otherwise ``charm`` will not be able to access the\ndatabase.\n\nContact\n-------\n\nQuestions/comments/concerns? Please e-mail: aclark@aclark.net.\n\nCredits\n-------\n\nDevelopment sponsored by Radio Free Asia\n\n.. _`collective.transmogrifier`: http://pypi.python.org/pypi/collective.transmogrifier/\n.. _`mr.migrator`: https://github.com/collective/mr.migrator\n\n\nContributors\n------------\n\n- Alex Clark [aclark4life]\n- Derek Broughton [derek]\n\n\nHistory\n-------\n\n1.0b4 (03/23/2011)\n~~~~~~~~~~~~~~~~~~\n\n* Bug fix for when not --match'ing.\n\n1.0b3 (03/22/2011)\n~~~~~~~~~~~~~~~~~~\n\n* Include the damn data\n\n1.0b2 (03/22/2011)\n~~~~~~~~~~~~~~~~~~\n\n* Fix package\n\n1.0b1 (03/22/2011)\n~~~~~~~~~~~~~~~~~~\n\n* Rename ``mr.importer`` to ``charm``\n\n * ``mr.importer`` was not that clever, and the author missed flat namespace\n\n* Get rid of all buildout options, support command line args only\n* Make _setup_app optionally accept user, else use system user\n* Fix broken tests; remove unneccessary; now at 34% coverage\n\n * 619 34% charm (/Users/aclark/Developer/charm/charm.py)\n\n* Doc fixes; clean up / scale down\n\n* Many bug fixes\n\n1.0a5 (02/05/2011)\n~~~~~~~~~~~~~~~~~~\n\n* Rename ``parse2plone`` to ``mr.importer``\n\n * Repackage as needed\n\n* Switch to kwargs in main()\n\n * Better _SETTINGS handling\n\n* Add support for illegal_expressions check\n* Add \"Keep going!\" feature (to ignore errors)\n* Add all HTML4 tags to target_tags\n\n1.0a4 (01/12/2011)\n~~~~~~~~~~~~~~~~~~\n\n* Remove Plone dep\n\n1.0a3 (11/17/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Bug fix: TypeError: join() takes exactly one argument (2 given) related to \n specifying import dir on on command line (as args[0]) fixed\n* Fix tests\n\n1.0a2 (11/17/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Add spreadsheet import feature\n* Fix docs\n\n1.0a1 (11/17/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Moved development to the (experimental) collective on Github\n\n0.9.9 (11/16/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Added a large number of tests; performed associated refactoring; 50% test coverage\n\n0.9.8 (11/12/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Add \"paths\" feature to allow multi-import dirs (on the\n file system), and corresponding object paths (in Plone)\n to be specified.\n\n0.9.7 (11/08/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Fix import error\n* Add file handler to logger; saves output to a file called \"parse2plone.log\"\n\n0.9.6 (11/08/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Fixes to \"match\" feature\n* Combine all modules into one\n* Remove a stray pdb (!)\n* Add tests (we're at 20% test coverage people!)\n* Update docs\n\n0.9.5 (11/08/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Add match feature\n* Add more project justifications to the docs\n\n0.9.4 (11/06/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Remove ``bin/import`` script whenever recipe is uninstalled [aclark4life]\n* Add support for XPath syntax in target_tags [derek]\n* Add \"typeswap\" feature [aclark4life]\n* Update docs [aclark4life]\n\n0.9.3 (11/04/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Add Plone 2.5 compat\n* Bug fixes\n\n * Better handling of file system path; better base dir calculation\n\n0.9.2 (11/03/2010)\n~~~~~~~~~~~~~~~~~~\n\n* More doc fixes\n\n0.9.1 (11/03/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Doc fixes\n\n0.9.0 (11/03/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Fix regressions introduced (or unresolved as of) 0.8.2. Thanks Derek\n Broughton for the bug report(s)\n\n * Many fixes to convert_parameter_values() method which converts\n recipe parameters to arguments passed to main()\n * Fix \"slugify\" feature\n\n0.8.2 (11/02/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Add rename feature\n* Fix regressions introduced in 0.8.1\n\n0.8.1 (10/29/2010)\n~~~~~~~~~~~~~~~~~~\n\n* Refactor options/parameters functionality to universally support _SETTINGS dict\n* Add \"slugify\" feature\n* Doc fixes\n* Add support to optionally publish content after creation\n* Add support for generic file import\n\n0.8 (10/27/2010)\n~~~~~~~~~~~~~~~~\n\n* Support the importing of content to folders within the Plone site object\n\n0.7 (10/25/2010)\n~~~~~~~~~~~~~~~~\n\n* Documentation fixes\n\n0.6 (10/25/2010)\n~~~~~~~~~~~~~~~~\n\n* Support customization via recipe parameters and command line arguments\n\n0.5 (10/22/2010)\n~~~~~~~~~~~~~~~~\n\n* Revert 'Add Plone to install_requires'\n\n0.4 (10/22/2010)\n~~~~~~~~~~~~~~~~\n\n* Add 'Plone' to install_requires\n\n0.3 (10/22/2010)\n~~~~~~~~~~~~~~~~\n\n* Another setuptools fix\n\n0.2 (10/22/2010)\n~~~~~~~~~~~~~~~~\n\n* Setuptools fix\n\n0.1 (10/21/2010)\n~~~~~~~~~~~~~~~~\n\n* Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/aclark4life/charm", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "charm", "package_url": "https://pypi.org/project/charm/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/charm/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/aclark4life/charm" }, "release_url": "https://pypi.org/project/charm/1.0b4/", "requires_dist": null, "requires_python": null, "summary": "Import static websites on the file system into Plone.", "version": "1.0b4" }, "last_serial": 787344, "releases": { "1.0b1": [ { "comment_text": "", "digests": { "md5": "bcf80ed8a18d6424e8bd559f556ea2d8", "sha256": "106e7961af53c413c258197e510d6c4bb1876fc55aad30fc87ad35fc07cede65" }, "downloads": -1, "filename": "charm-1.0b1.zip", "has_sig": false, "md5_digest": "bcf80ed8a18d6424e8bd559f556ea2d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87894, "upload_time": "2011-03-22T15:30:53", "url": "https://files.pythonhosted.org/packages/63/77/41d8819792d643209f34631a636ec7f76d2fe5309c170f2a5f4891494c0a/charm-1.0b1.zip" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "23611bc3eb00155d217f9d99e8564a41", "sha256": "d7a9431391189a093f28e435f3e101252543dbfe968c5fb4b8dd91aec40d6d03" }, "downloads": -1, "filename": "charm-1.0b2.zip", "has_sig": false, "md5_digest": "23611bc3eb00155d217f9d99e8564a41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 87927, "upload_time": "2011-03-22T15:44:15", "url": "https://files.pythonhosted.org/packages/ef/49/7d54c28b886f5a8d9f6b1d56fb0ea056297f4e130bc47cd26c3a1f968c3b/charm-1.0b2.zip" } ], "1.0b3": [ { "comment_text": "", "digests": { "md5": "e446148ce13d842014ff433e4607f1ec", "sha256": "2437859c163c32aa0a1e6cf37b33583ad3c01a4d1b8722e668386644ea5df590" }, "downloads": -1, "filename": "charm-1.0b3.zip", "has_sig": false, "md5_digest": "e446148ce13d842014ff433e4607f1ec", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88442, "upload_time": "2011-03-23T20:55:41", "url": "https://files.pythonhosted.org/packages/83/0e/8242cb8d68fbbf3476d1e04032126594519c1ecb5e2adfdf8f04d4f44bcc/charm-1.0b3.zip" } ], "1.0b4": [ { "comment_text": "", "digests": { "md5": "f7d9c80f49513e5b2bcea265b0e06e8f", "sha256": "1c240147a9f3ae17a83105641a7330d4bef46d1efcfa736c6407029f55b3d1ca" }, "downloads": -1, "filename": "charm-1.0b4.zip", "has_sig": false, "md5_digest": "f7d9c80f49513e5b2bcea265b0e06e8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88535, "upload_time": "2011-03-23T21:31:05", "url": "https://files.pythonhosted.org/packages/67/6c/6173abe5f27f59f4ce000802a60f8d8d32ad33052391b2c407729b1c7185/charm-1.0b4.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f7d9c80f49513e5b2bcea265b0e06e8f", "sha256": "1c240147a9f3ae17a83105641a7330d4bef46d1efcfa736c6407029f55b3d1ca" }, "downloads": -1, "filename": "charm-1.0b4.zip", "has_sig": false, "md5_digest": "f7d9c80f49513e5b2bcea265b0e06e8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 88535, "upload_time": "2011-03-23T21:31:05", "url": "https://files.pythonhosted.org/packages/67/6c/6173abe5f27f59f4ce000802a60f8d8d32ad33052391b2c407729b1c7185/charm-1.0b4.zip" } ] }