{ "info": { "author": "Bruno Binet", "author_email": "binet.bruno@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Pylons", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: JavaScript", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: WSGI", "Topic :: Internet :: WWW/HTTP :: WSGI :: Application" ], "description": "PyGall\n======\n\nAbout PyGall\n------------\n\nPyGall is a simple web photo gallery written in Python and built on the\n`Pyramid `_ web framework.\n\nPyGall is licensed under a BSD permissive license.\n\nCode is hosted on github: https://github.com/inneos/PyGall.\n\nBe warned that this image gallery is beta software, and not full featured.\nIt has been developped to fit my own needs, and may not suit your wishes.\n\nBut that being said, feel free to report bugs or ask for new features at\nhttps://github.com/inneos/PyGall/issues.\nEven better, since the code is hosted on github, feel free to fork and send\npull requests.\n\nFeatures\n--------\n\nPyGall currently provides the following features:\n\n* Browse and view photos through a nice interface borrowed from\n `Galleria `_.\n\n* Bulk upload of photos through the browser using `jQuery-File-Upload\n `_. The photos are\n automatically scaled and rotated if needed.\n\n* If using `F-Spot `_ as your personal photo management\n desktop application, PyGall provides a script to automatically import photos\n from F-Spot and keep in sync your PyGall gallery.\n\n* Administer your PyGall gallery via a dedicated interface that let you update\n photo metadata such as date, rating, or description. You can also delete\n photos, or organize them through tags (which will soon be used to provide\n different views in PyGall).\n\n* Allow templates override so that the user interface can be easily customized\n to your needs.\n\nFor upcoming features, you can have a look at\nhttps://github.com/inneos/PyGall/blob/master/TODO.txt\n\nInstall\n-------\n\nPrior to actually install PyGall and its dependencies, you should install the\nlibjpeg and python development files, which are needed to compile the Python\nImaging Library dependency.\nOn Debian Linux you can do::\n\n $ sudo aptitude install build-essential libjpeg-dev python-dev\n\nYou should have a working setuptools (or distribute) environment. I advise\nyou to use `virtualenv `_ to create\nan isolated Python environment.\nOn Linux you can do::\n\n $ wget https://raw.github.com/pypa/virtualenv/master/virtualenv.py \n $ python virtualenv.py --no-site-packages venv\n\nThis will create a virtual environment named `venv` that we'll use to install\nPyGall. See http://www.virtualenv.org for more information on virtualenv.\n\nSo let's install PyGall in the freshly created venv::\n\n $ venv/bin/pip install PyGall\n\nPyGall is now installed. We need to make a configuration file for your\nPyGall photo gallery. The easiest way is to copy the file from the PyGall\nrepository and customize it to your needs::\n\n $ wget https://raw.github.com/inneos/PyGall/master/production.ini\n\nFirst, you should edit ``production.ini`` and set a unique random value for\nthe ``authtkt_secret`` (instead of the `\u0300 changeme`` default value) to guard\nagainst the theft of authentication session.\n\nThis ``production.ini`` file will be used by Paster to initialize the\napplication, create the database, and serve your application.\n\nSo you need to setup PyGall, generate a configuration for\nauthentication (auth.cfg) and create the database (PyGall.db)::\n\n $ venv/bin/python -m pygall.scripts.setup production.ini\n\nAnd finally, you can serve your PyGall application::\n\n $ venv/bin/paster serve production.ini\n\nThat's all, you can point your browser to http://127.0.0.1:6543 and start\nusing PyGall.\n\nBy default, the following 2 user accounts are set up:\n\nAn administrator account\n | login: admin\n | password: admin\n\nA guest account\n | login: guest\n | password: guest\n\n.. note::\n\n You can edit these users by editing the auth.cfg file located in the same\n directory as your production.ini file. Note that password hashes are\n generated using the htpasswd utility. For example, to add a user named\n \"john\", you will generate his password hash with::\n\n $ htpasswd -n john\n\n Then you just have to append a new line to the file auth.cfg copying the\n output of the previous htpasswd command.\n\n If john should be in group admin, then just append \":admin\" to the line.\n\n Also remember to change the passwords of the default accounts (or remove\n these default accounts entirely).\n\nLog in as administrator and you're ready to import your first photos!\n\nUse PyGall\n----------\n\nBy default, when anonymous, you will be prompted for login: only registered\nusers will be allowed to view the gallery.\n\nIf you want to allow any anonymous user to view the gallery, you can set\n`allow_anonymous = true` in the `production.ini` config file.\n\nOnce logged in, you will be redirected to the PyGall gallery index page.\nThen if you are part of the admin group, you will be allowed both to upload new\nphotos and to edit, delete existing photos. For that purpose, you can go\nthrough the 'Upload' and 'Admin' link in the upper right corner of the gallery.\n\nIf you are using F-spot as your personnal photo management desktop application,\nyou can rather choose to use the F-spot synchronization script provided with\nPyGall to import photos coming from F-spot directly in your gallery.\nTo use it, simply run the following command::\n\n $ venv/bin/python -m pygall.scripts.fspot_sync --fspot-photosdir=/path/to/fspot/photos production.ini\n\nBy default, all photos that have the tag 'pygall' will be imported in your\ngallery. Pass `--help` option to see all possible options::\n\n $ venv/bin/python -m pygall.scripts.fspot_sync --help\n\nIf you want to share your gallery to other people, please refer to the\nprevious note to create new user accounts.\n\nNote that PyGall has been internationalized, and is available in both french\nand english languages. To change the current locale, you can set the `_LOCALE_`\nparameter in the query string of the current url. So the url would look like::\n\n http://127.0.0.1:6543/?_LOCALE_=en\n\nor::\n\n http://127.0.0.1:6543/?_LOCALE_=fr\n\nCustomize look and feel\n-----------------------\n\nYou can easily customize the look and feel of the PyGall gallery by overriding\nsome mako templates and providing your own static resources (css, images).\n\nTo override some default PyGall templates, you have to update your\n`production.ini` and uncomment the line::\n\n templates_dir = %(here)s/custom_templates\n\nThen create the `custom_templates` directory, and put some mako templates in\nthere. For example, you can copy the default PyGall templates from\nhttps://github.com/inneos/PyGall/tree/master/pygall/templates and update them\nas needed.\n\nIf you want to include some static resources, you can also activate a new\nstatic view by uncommenting the line::\n\n static_dir = %(here)s/custom_static\n\nThen create the `custom_static` directory, and put some static files in there.\nYou can now access these static resources from your mako templates with\nsomething like::\n\n ${request.static_url(request.registry.settings['static_dir'] + /path/to/resource')}\n\nExtend PyGall\n-------------\n\nIf the customization of the look and feel is not enough, you can go further and\ncreate a new Pyramid application which extends PyGall.\n\nThus you can use all the flexibility of the Pyramid web framework to make your\nown application and use PyGall views internally.\n\nPlease refer to the `Pyramid web framework documentation\n`_ to know more about\napplication customization.\n\n\n\nChanges\n=======\n\n0.12\n----\n\n* set upper limit for WebOb dependency since formalchemy use UnicodeMultiDict\n which have been removed in WebOb 1.2x\n\n* update buildout.cfg to be able to hack on pygall\n\n* add allow_anonymous option:\n it is not anymore necessary to be authenticated to view the gallery, this\n option should be set in the paste config production.ini\n\n* get rid of threadlocal call and load auth_cfg in memory at startup\n\n0.11\n----\n\n* add an additionnal static_view if static_dir is set in the paste config\n so that the user can use his own static resources\n\n* allow override templates by setting templates_dir config property\n\n* add default values for config parameters\n\n* make pygall an extensible pyramid application\n https://pylonsproject.org/projects/pyramid/dev/narr/extending.html\n\n* fix photo url that was broken with pyramid 1.2.1\n\n* static_path is now hard coded rather than parameterized from paster config\n\n0.10\n----\n\n* bugfix: empty directories should now be correctly removed when an image is\n deleted\n\n* remove old \"editcomment\" view\n\n* update galleria to last version (1.2.5)\n\n* better css for the galleria info box\n\n* clean up galleria mako template and css\n\n* desaturate color of gif for upload animation\n\n* make authtkt secret customizable\n\n* download resources files either from cdn or from static directory depending\n on 'allow_cdn' config option value\n\n* add a buildout.cfg to build css and js files using c2c.recipe.cssmin and\n c2c.recipe.closurecompile\n\n* some refactoring, eg. rename Tag and Photo models\n\n0.9.1\n-----\n\n* create upload directory if it does not already exist\n\n0.9\n---\n\n* build an administration interface based on FormAlchemy\n\n* complete rewriting of the script that do the synchronization from f-spot\n\n* refactor and clean up the imageprocessing module so that it can be used by\n the f-spot sync script\n\n* image md5sum does not take the exif metadata into account so that when a tag\n is added or removed, the md5sum does not change anymore\n\n* add fspot_id to the PyGallPhoto model so that we are able to track photos\n that have been imported from F-spot\n\n* remove upper limit on SQLAlchemy dependency, so that PyGall can be used with\n SQLAlchemy 0.7\n\n* the static view is now also secured\n\n* upload is now much better (based on jQuery-File-Upload instead of\n gp.fileupload)\n\n0.8\n---\n\n* port PyGall to the pyramid web framework\n http://pylonsproject.org/\n\n0.7\n---\n\n* add support for other image formats than jpeg (these formats should be\n supported by PIL though)\n\n* add missing PIL dependency and remove pyexiv2 system dependency so that\n pygall now works in an isolated virtual environment built with\n \"virtualenv --no-site-packages\"\n\n* improve installation instructions\n\n* add support for i18n (with translations for \"en\" and \"fr\" languages)\n\n* prompt for admin password when setting up PyGall\n\n0.6\n---\n\n* refactoring and cleanups\n\n0.5\n---\n\n* Add support for authentication and authorization with repoze.who/what\n\n* Refactor model definition to use declarative syntax (default in Pylons 1.0)\n\n* Keep only one checkbox that will be used by both delete and import buttons\n\n* Upgrade to Pylons 1.0 and SQLAlchemy 0.6\n\n* Various small other fixes\n\n* Get rid off import phase: photos are now directly published\n\n* Reorganisation of templates directory\n\n0.4.1\n-----\n\n* Add long_description to setup.py\n\n* Add docs and license information\n\n0.4\n---\n\n* fspot_to_pygall.py: speed up query by deactivating lazy loading\n\n* fspot_to_pygall.py: calculate md5sum for photos imported from f-spot\n\n* fspot_to_pygall.py: export the modified version to pygall instead of the\n original\n\n* Reorganize templates struture on filesystem\n\n* Move model declaration to its own file\n\n0.3\n---\n\n* First usable release with upload and import support.\n\n* Refactoring of mako templates using inheritance.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://gitorious.org/PyGall", "keywords": "web wsgi pylons pyramid image photo web gallery", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "PyGall", "package_url": "https://pypi.org/project/PyGall/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/PyGall/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://gitorious.org/PyGall" }, "release_url": "https://pypi.org/project/PyGall/0.12/", "requires_dist": null, "requires_python": null, "summary": "Image gallery built with Pyramid web framework", "version": "0.12" }, "last_serial": 732027, "releases": { "0.10": [ { "comment_text": "", "digests": { "md5": "ac3c4807447f2e97dbe22f805cb08255", "sha256": "2c0f0ac0d144f775b9509307a3e311f29648b7bc60798e798ff9cc8c5cbfb0c7" }, "downloads": -1, "filename": "PyGall-0.10.tar.gz", "has_sig": false, "md5_digest": "ac3c4807447f2e97dbe22f805cb08255", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 504457, "upload_time": "2011-09-26T10:13:44", "url": "https://files.pythonhosted.org/packages/9b/32/10180a0ada2387c0e5151c6c6caea3a2d24edccca61ab928cc00a1dec21c/PyGall-0.10.tar.gz" } ], "0.10dev": [ { "comment_text": "", "digests": { "md5": "7315e1d7927b6265624f29662032ab4c", "sha256": "dde1ce57e61eceace42c8d9d0ad2e66c98561d534f0b5af92369c3402208dd39" }, "downloads": -1, "filename": "PyGall-0.10dev.tar.gz", "has_sig": false, "md5_digest": "7315e1d7927b6265624f29662032ab4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 504482, "upload_time": "2011-09-26T10:04:35", "url": "https://files.pythonhosted.org/packages/b8/0b/402e824434a65442ad97a75eac8a8a07d545801973eb4785c79823dff0aa/PyGall-0.10dev.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "358b505c63ce4e2022ca8cca75a910b3", "sha256": "0d9a13ead40ad1ce4c33e6f2f0f7ca659419768cc18f7e63828d757fdb42acd4" }, "downloads": -1, "filename": "PyGall-0.11.tar.gz", "has_sig": false, "md5_digest": "358b505c63ce4e2022ca8cca75a910b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 506104, "upload_time": "2011-10-16T00:26:50", "url": "https://files.pythonhosted.org/packages/75/d6/c0831cca8aeebc4f6c01f252797476f3e6b964a3e6131ffa05428d0a56e2/PyGall-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "a954286fe1495b2a4042380b8c9c06aa", "sha256": "21c17c34c73ee21c747267266603cc849fddda6a36d74ca24a2819934dfa9a7d" }, "downloads": -1, "filename": "PyGall-0.12.tar.gz", "has_sig": false, "md5_digest": "a954286fe1495b2a4042380b8c9c06aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 507111, "upload_time": "2011-10-18T01:35:31", "url": "https://files.pythonhosted.org/packages/eb/36/19c36f68229c98e833c677a14626b6abb65ed51633c8dafd6f9e4b860b29/PyGall-0.12.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "6b554fe97212a310bfcf9f89049bdb0a", "sha256": "4d1afa2016eef6baf55bd5016a7ff31155f0c2c3eb10f476b895e17aa4a42574" }, "downloads": -1, "filename": "PyGall-0.2.1.tar.gz", "has_sig": false, "md5_digest": "6b554fe97212a310bfcf9f89049bdb0a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53599, "upload_time": "2010-09-19T22:21:22", "url": "https://files.pythonhosted.org/packages/5f/b7/91049e976a50d00c2eff66d4c9ff7bd2e34fcb2ae62b2ce81b7269543276/PyGall-0.2.1.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "fa67cbfc00df5af9d42e49083c868257", "sha256": "35610473a050164943866ec23c23fbafc8764ef696962f8908f874cd05476c98" }, "downloads": -1, "filename": "PyGall-0.3.tar.gz", "has_sig": false, "md5_digest": "fa67cbfc00df5af9d42e49083c868257", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9877298, "upload_time": "2010-09-20T01:11:13", "url": "https://files.pythonhosted.org/packages/57/dd/bc30e19b901adbc9dbaaed985c45ba4f995f85ddd247601755569ae67cf3/PyGall-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "035642164886bbb9d78b8eaf82737667", "sha256": "69451126cbb0db498c60601df0e945c703dd8e59d3a1eac42e5b489d05b81bf8" }, "downloads": -1, "filename": "PyGall-0.4.tar.gz", "has_sig": false, "md5_digest": "035642164886bbb9d78b8eaf82737667", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 53126, "upload_time": "2010-10-11T13:28:05", "url": "https://files.pythonhosted.org/packages/ed/8e/bd7cad476fbd79accc872aa5f49a6e5238d8b5f2e02211e565f8de68c342/PyGall-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "ced2fcfbce7da55f8b7c7a9312971a4c", "sha256": "d630a832c562aa330da986bdfafde9bfeebbd7bd66cc8b1c3575ce50d6cbf1af" }, "downloads": -1, "filename": "PyGall-0.4.1.tar.gz", "has_sig": false, "md5_digest": "ced2fcfbce7da55f8b7c7a9312971a4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 55592, "upload_time": "2010-10-11T18:22:46", "url": "https://files.pythonhosted.org/packages/1d/97/7a2a4435713919a23a466ab0be181759a30146b0deb0c6bc07e105038113/PyGall-0.4.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "ccc104ac1748fba487593711f39f8206", "sha256": "15d6cec3180955309d09366af101bc002a1ad3188f3483fd61b8ff60e348ed2d" }, "downloads": -1, "filename": "PyGall-0.5.tar.gz", "has_sig": false, "md5_digest": "ccc104ac1748fba487593711f39f8206", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56782, "upload_time": "2010-10-14T03:02:10", "url": "https://files.pythonhosted.org/packages/c1/a3/bce345aa255922b07d95713d61abce78d5f488acf0afec77550971bdf1c7/PyGall-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "95517a5c373c9bedcaf83dddb4b65198", "sha256": "1d48f14edfa78d91de8ae24d839f9e801d64d8f1ff64e67f2f5ff32a91261c8a" }, "downloads": -1, "filename": "PyGall-0.6.tar.gz", "has_sig": false, "md5_digest": "95517a5c373c9bedcaf83dddb4b65198", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41720, "upload_time": "2011-02-09T23:51:50", "url": "https://files.pythonhosted.org/packages/58/1d/8fc6d781e93fc52e2b48fb318eab372bc3582a02f67aff2434988fc348a3/PyGall-0.6.tar.gz" } ], "0.6dev": [ { "comment_text": "", "digests": { "md5": "317cccca5fe9980211d92332a29125b6", "sha256": "ea44cfa4d7a3cda5d86964523c12e1947b4812d72599b7a709b99db289d7ee2a" }, "downloads": -1, "filename": "PyGall-0.6dev.tar.gz", "has_sig": false, "md5_digest": "317cccca5fe9980211d92332a29125b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41727, "upload_time": "2011-02-09T23:50:30", "url": "https://files.pythonhosted.org/packages/1e/71/48736967cabb9bf5d2515a41c40dfe5e28978d8541cea846491cdecba791/PyGall-0.6dev.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "f1ee5b3633f0e28e23494c9aaf6c780a", "sha256": "077cdeb26038334346a6de5ea19f2f17cd05cf22058b38d3b0576aa54a0b1d8f" }, "downloads": -1, "filename": "PyGall-0.7.tar.gz", "has_sig": false, "md5_digest": "f1ee5b3633f0e28e23494c9aaf6c780a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43424, "upload_time": "2011-03-31T01:40:27", "url": "https://files.pythonhosted.org/packages/22/3c/f32e74465e197ba0d5ef103461392b91d0caf00a4d4983ed307c4c5a8e84/PyGall-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "b56baefc395c06e70e683c1687ab3411", "sha256": "8fcaec59986b9c060f8e39ff998ef551bac7855227174b58da4f8df6c283cb10" }, "downloads": -1, "filename": "PyGall-0.8.tar.gz", "has_sig": false, "md5_digest": "b56baefc395c06e70e683c1687ab3411", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43106, "upload_time": "2011-06-17T02:49:26", "url": "https://files.pythonhosted.org/packages/05/aa/0f6f086cde89934a9e44d510a9a154682002810a04c01f39ad0c6d48cd67/PyGall-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "b2fe2dcd8efbfacfd189feb34b99b0f1", "sha256": "3d11238a18ebe5e2a1976c2ac07b59d8da99bdc5aa41de77fd8c07458fd764f6" }, "downloads": -1, "filename": "PyGall-0.9.tar.gz", "has_sig": false, "md5_digest": "b2fe2dcd8efbfacfd189feb34b99b0f1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69379, "upload_time": "2011-09-04T01:56:12", "url": "https://files.pythonhosted.org/packages/d8/93/7ec79e5b39c0e2745a6c3aea03fffcd2dff5dac2b042564e200500a01d51/PyGall-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "09077aa1f4e4cb15968a1e2091c77139", "sha256": "18de262728a07e33fa782b210034cd8a913771b98e50f4e204fee1f81583ee52" }, "downloads": -1, "filename": "PyGall-0.9.1.tar.gz", "has_sig": false, "md5_digest": "09077aa1f4e4cb15968a1e2091c77139", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69530, "upload_time": "2011-09-04T02:23:36", "url": "https://files.pythonhosted.org/packages/c0/12/1410b79ba830ddff24e45dfce894e35511bc497c4945f85bb687ab526728/PyGall-0.9.1.tar.gz" } ], "0.9dev": [ { "comment_text": "", "digests": { "md5": "b042218a42a1afddc4552b295fcaa14c", "sha256": "dc69c9358e4b89574be79219eb6e64780d212317f85d61e9671c04a2573fd8eb" }, "downloads": -1, "filename": "PyGall-0.9dev.tar.gz", "has_sig": false, "md5_digest": "b042218a42a1afddc4552b295fcaa14c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69389, "upload_time": "2011-09-04T01:55:26", "url": "https://files.pythonhosted.org/packages/15/45/c1f564a949672e4810a048f5504c9b38e8b9b0f761fc38bb21e1f61550a1/PyGall-0.9dev.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a954286fe1495b2a4042380b8c9c06aa", "sha256": "21c17c34c73ee21c747267266603cc849fddda6a36d74ca24a2819934dfa9a7d" }, "downloads": -1, "filename": "PyGall-0.12.tar.gz", "has_sig": false, "md5_digest": "a954286fe1495b2a4042380b8c9c06aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 507111, "upload_time": "2011-10-18T01:35:31", "url": "https://files.pythonhosted.org/packages/eb/36/19c36f68229c98e833c677a14626b6abb65ed51633c8dafd6f9e4b860b29/PyGall-0.12.tar.gz" } ] }