{ "info": { "author": "marazmiki", "author_email": "marazmiki@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "====================\ndjango-image-cropper\n====================\n\nThis application is used for image cropping. User can upload some images or photo,\npick wished area up and save image.\n\nThe license is MIT.\n\nRequirements\n============\n\nStarting with version 0.2 the Django of version 1.3+ is required. If you're\nuse an older Django version, please\n\nAlso you need PIL or Pillow graphic libraries to be installed. The PIL\nwill be installed together with django-image-cropper\n\nInstallation\n============\n\nFirst of all, please install django-image-cropper:\n\n::\n\n pip install django-image-cropper\n\nThen you must edit your settings module: add item 'cropper' to\nyour INSTALLED_APPS:\n\n::\n\n INSTALLED_APPS += (\n 'cropper',\n )\n\nNext step add django-image-cropper URL config to your url module:\n\n::\n\n urlpatterns = patterns('',\n ....\n url('^cropper/', include('cropper.urls')),\n ...\n )\n\nAnd last call syncdb management command in your project:\n\n::\n\n ./manage.py syncdb \n\nif you're use django.contrib.staticfiles application, you also\nneed to collect static files:\n\n::\n \n ./manage.py collecstatic\n \n\nOtherwise you need copy django-image-cropper/cropper/static files into your\nSTATIC_ROOT directory manually or create a symlink.\n\nUsage\n=====\n\nOpen /cropper/ URL in your browser. Here you can choose image via file input\nand upload it. On the next screen, if javascript is enabled and static serves\ngood, you'll see the jQuery's jCrop plugin workspace. Pick some area and push\nthe Crop button to get cropped image\n\nCropped image copies are saved on server\n\n\nCustomize crop logics\n=====================\n\nOf course, default logic is poor and unusable. But you can easy change\napplication behavior. \n\nYou can write own success handlers for image upload and image crop and tell\ndjango to use it.\n\nTo use own hanlders insead of defaults, just use own URLConfs. You must use\nown 'success' key in keyword args. This value must be python callable type\n\n::\n\n from cropper.forms import CroppedForm, UploadForm\n from my_project.utils import my_upload_handler, my_crop_handler\n\n urlpatterns = patterns('cropper.views',\n url('^$', view='upload', name='cropper_upload', kwargs={'form_class': UploadForm, 'success': my_upload_handler}),\n url('^(?P\\d+)/$', view='crop', name='cropper_crop', kwargs={'form_class': CropForm, 'success': my_crop_handler}),\n )\n\n\nAs you see, you can also use another form class instead of standart if you'll\nspecify 'form_class' key, but probably don't need this. \n\nWhat handler is it?\n\nEach handler is python function which has some input arguments and returns\nHttpResponse object like every view function.\n\nLet's see to upload handler prototype:\n\n::\n\n def my_upload_success_handler(request, form, original):\n \"\"\"\n Success upload handler \n \"\"\"\n print \"Uploda form data\", form.cleaned_data\n print \"File uploaded to \" % original.image.path\n \n # This handler do nothing, but print parameters\n \n from django.shortcuts import redirect \n return redirect(original)\n\n* **request** is WSGIRequest object (same as view)\n* **form** is upload form instance. This form instance is valid anyway.\n* **original** is Original model instance. Image field calls ``image``\n\nCrop handler prototype:\n\n::\n\n def my_crop_success_handler(request, form, original, cropped):\n \"\"\"\n Custom crop handler\n \"\"\"\n print \"Crop form data\", form.cleaned_data\n print \"Original object: %s\" % original\n print \"Original in cropped model (the same in previous line): %s\" % cropped.original\n print \"Cropped image: %s\" % cropped.image\n\n # For example, we can use cropped image as user profile avatar\n # Perhaps user is authenticated and skip checks ;)\n\n from django.core.files.base import ContentFile\n from django.contrib import messages\n from django.shortcuts import redirect\n import os\n\n profile = request.user.get_profile()\n profile.avatar.save(\n os.path.basename(cropped.image.path),\n ContentFile(cropped.image.path)\n )\n \n messages.success(request, 'Avatar uploaded and cropped')\n return redirect(request.user)\n\nFirst three arguments the same as upload handler input arguments. Fouth - is\n**Cropped** model instance. It has ``image`` field containts cropped image and\nforeign key to related Original photo.\n\n\nContributing\n============\n\nIf you've found a bug, implemented a feature and think it is useful, then please\nconsider contributing. Patches, pull requests or just suggestions are welcome!", "description_content_type": null, "docs_url": null, "download_url": "http://bitbucket.org/marazmiki/django-image-cropper/get/tip.zip", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://bitbucket.org/marazmiki/django-image-cropper/", "keywords": null, "license": "MIT license", "maintainer": null, "maintainer_email": null, "name": "django-image-cropper", "package_url": "https://pypi.org/project/django-image-cropper/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-image-cropper/", "project_urls": { "Download": "http://bitbucket.org/marazmiki/django-image-cropper/get/tip.zip", "Homepage": "http://bitbucket.org/marazmiki/django-image-cropper/" }, "release_url": "https://pypi.org/project/django-image-cropper/0.3.0/", "requires_dist": null, "requires_python": null, "summary": "This app allows upload and crop images", "version": "0.3.0" }, "last_serial": 789850, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "cac3dc3092a11f51c402ad2ee3db7a45", "sha256": "317521be34020c17eeeb71e847a3cb73843891487a147197ba5e72c713092330" }, "downloads": -1, "filename": "django-image-cropper-0.1.tar.gz", "has_sig": false, "md5_digest": "cac3dc3092a11f51c402ad2ee3db7a45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47670, "upload_time": "2011-03-09T20:09:52", "url": "https://files.pythonhosted.org/packages/23/39/7babc8004b03d323f686ed726100ca8ab2da2131a2f03891f807dac49da8/django-image-cropper-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "c0f4219fba4a3200f07371b09cec8c8f", "sha256": "c63422fe4f4ee144b75c31eeafe55dac2f8224e2cb05a54c8f98bd9d0a40ce8a" }, "downloads": -1, "filename": "django-image-cropper-0.1.1.tar.bz2", "has_sig": false, "md5_digest": "c0f4219fba4a3200f07371b09cec8c8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46789, "upload_time": "2011-10-30T21:39:32", "url": "https://files.pythonhosted.org/packages/34/ab/9c4123efc53f3eaa53400b539499e96aa933192d8cfaf84cf222f07ce99e/django-image-cropper-0.1.1.tar.bz2" }, { "comment_text": "", "digests": { "md5": "128a2f256395d4d6a8287bf1dacd814b", "sha256": "86b3d856ac17f089c9dc49449cd272e1eb7b5130b20f15405c1fe61b4c45af75" }, "downloads": -1, "filename": "django-image-cropper-0.1.1.tar.gz", "has_sig": false, "md5_digest": "128a2f256395d4d6a8287bf1dacd814b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50347, "upload_time": "2011-10-30T21:39:33", "url": "https://files.pythonhosted.org/packages/ae/3b/37c86abce7403780baac597f395ebbde025584d984cef06100cba3665b89/django-image-cropper-0.1.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "fcb377097ddeae8c9bbb7d689033d23c", "sha256": "3e6e9e9c6fc00fa03ca09ab8c2b985a70a452a4b42372dd6eba1853cb844ec1c" }, "downloads": -1, "filename": "django-image-cropper-0.1.1.zip", "has_sig": false, "md5_digest": "fcb377097ddeae8c9bbb7d689033d23c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60745, "upload_time": "2011-10-30T21:39:35", "url": "https://files.pythonhosted.org/packages/95/cd/4d147d7eb63bf849ffdc0ebd9f6f1ec127546e71d6af8f4380d2871f1a39/django-image-cropper-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "bd9bcb43096179a253abbe9640fddf82", "sha256": "fc3939790d323d1071cefdd246ced9abfb9212e21283f7b3c8eedb01b464ddc2" }, "downloads": -1, "filename": "django-image-cropper-0.1.2.tar.bz2", "has_sig": false, "md5_digest": "bd9bcb43096179a253abbe9640fddf82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 47382, "upload_time": "2011-10-31T05:53:51", "url": "https://files.pythonhosted.org/packages/66/86/9ae0095ed91a9979a613e8cb4ba70b987e997042a664f068a4ab73dded49/django-image-cropper-0.1.2.tar.bz2" }, { "comment_text": "", "digests": { "md5": "39112a03dd10680a161a79c2c2b948f9", "sha256": "c507278d33f6fbd307f656e85976767ab37d3b97db4bbccf2abc0eba9af2dd3c" }, "downloads": -1, "filename": "django-image-cropper-0.1.2.tar.gz", "has_sig": false, "md5_digest": "39112a03dd10680a161a79c2c2b948f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50798, "upload_time": "2011-10-31T05:53:52", "url": "https://files.pythonhosted.org/packages/4a/b2/31c99470bb7eb2c28fb40951cb566ff08766dea3d2d35b8d0f7a2ca103eb/django-image-cropper-0.1.2.tar.gz" }, { "comment_text": "", "digests": { "md5": "05d0759a32a7ece2f9a9d1926fc97e81", "sha256": "36177c155f64c8fa3ce62cfc5ce697580cee66acff5c221bd95e2ddfea0b58d4" }, "downloads": -1, "filename": "django-image-cropper-0.1.2.zip", "has_sig": false, "md5_digest": "05d0759a32a7ece2f9a9d1926fc97e81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 62726, "upload_time": "2011-10-31T05:53:53", "url": "https://files.pythonhosted.org/packages/66/dd/c695853258ae61ff40002a45fb7074df3b1ba7ce15e80b56a379415b9885/django-image-cropper-0.1.2.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "4b424860de0ce97d3d80b62c9ad1a5e4", "sha256": "bf2371a26289309395abeb283dd3e486372420f325cc665051d5a64b9d12e224" }, "downloads": -1, "filename": "django-image-cropper-0.3.0.tar.bz2", "has_sig": false, "md5_digest": "4b424860de0ce97d3d80b62c9ad1a5e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51397, "upload_time": "2013-06-28T05:22:56", "url": "https://files.pythonhosted.org/packages/7b/6f/5bf12ae45a06b89764f4edd6a97e05ce91b85c0d6356299dd4a0fbfcb4bb/django-image-cropper-0.3.0.tar.bz2" }, { "comment_text": "", "digests": { "md5": "4297ff285b277bc357165c8a289be81b", "sha256": "cea000af7eceadb21188df67ac5811a68c8c3d2a7170beb10a17ecf521385eea" }, "downloads": -1, "filename": "django-image-cropper-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4297ff285b277bc357165c8a289be81b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57700, "upload_time": "2013-06-28T05:22:59", "url": "https://files.pythonhosted.org/packages/d0/1d/e0d47691410cd152134406e287ccbd47e37e0e050ec658c67b81f51ad064/django-image-cropper-0.3.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "93caa811839d3ddeda6ec768bd1e77e7", "sha256": "75d832981c201f2d35a37374025ca08048e7042f1719dca3ec54548115b5f1d4" }, "downloads": -1, "filename": "django-image-cropper-0.3.0.zip", "has_sig": false, "md5_digest": "93caa811839d3ddeda6ec768bd1e77e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67648, "upload_time": "2013-06-28T05:22:54", "url": "https://files.pythonhosted.org/packages/06/83/39d51af3e4896cb7b52b9c25ca0efd3ab471687e1ff02bbbf23e579b9265/django-image-cropper-0.3.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b424860de0ce97d3d80b62c9ad1a5e4", "sha256": "bf2371a26289309395abeb283dd3e486372420f325cc665051d5a64b9d12e224" }, "downloads": -1, "filename": "django-image-cropper-0.3.0.tar.bz2", "has_sig": false, "md5_digest": "4b424860de0ce97d3d80b62c9ad1a5e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51397, "upload_time": "2013-06-28T05:22:56", "url": "https://files.pythonhosted.org/packages/7b/6f/5bf12ae45a06b89764f4edd6a97e05ce91b85c0d6356299dd4a0fbfcb4bb/django-image-cropper-0.3.0.tar.bz2" }, { "comment_text": "", "digests": { "md5": "4297ff285b277bc357165c8a289be81b", "sha256": "cea000af7eceadb21188df67ac5811a68c8c3d2a7170beb10a17ecf521385eea" }, "downloads": -1, "filename": "django-image-cropper-0.3.0.tar.gz", "has_sig": false, "md5_digest": "4297ff285b277bc357165c8a289be81b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57700, "upload_time": "2013-06-28T05:22:59", "url": "https://files.pythonhosted.org/packages/d0/1d/e0d47691410cd152134406e287ccbd47e37e0e050ec658c67b81f51ad064/django-image-cropper-0.3.0.tar.gz" }, { "comment_text": "", "digests": { "md5": "93caa811839d3ddeda6ec768bd1e77e7", "sha256": "75d832981c201f2d35a37374025ca08048e7042f1719dca3ec54548115b5f1d4" }, "downloads": -1, "filename": "django-image-cropper-0.3.0.zip", "has_sig": false, "md5_digest": "93caa811839d3ddeda6ec768bd1e77e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67648, "upload_time": "2013-06-28T05:22:54", "url": "https://files.pythonhosted.org/packages/06/83/39d51af3e4896cb7b52b9c25ca0efd3ab471687e1ff02bbbf23e579b9265/django-image-cropper-0.3.0.zip" } ] }