{ "info": { "author": "City of Helsinki", "author_email": "dev@hel.fi", "bugtrack_url": null, "classifiers": [ "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.6", "Topic :: Internet :: WWW/HTTP", "Topic :: Internet :: WWW/HTTP :: Dynamic Content" ], "description": "# django-ilmoitin\n\n[![Latest PyPI version](https://badge.fury.io/py/django-ilmoitin.svg)](https://pypi.python.org/pypi/django-ilmoitin)\n[![Python versions](https://img.shields.io/pypi/pyversions/django-ilmoitin.svg)](https://pypi.python.org/pypi/django-ilmoitin)\n\nA templated Django messaging library\n\n# Installation\n\n1. `pip install django-ilmoitin`\n\n2. Add `django_ilmoitin` to `INSTALLED_APPS`.\n\n3. Run migrations\n\n ```python\n python manage.py migrate ilmoitin\n ```\n\nUse version >=0.6.x for a project based on Django 3.x\n\nUse version 0.5.x for a project based on Django 2.x.\n\nIf you need to make changes to `django-ilmoitin` and your project uses Django 2.x, add your changes to the branch [stable/0.5.x](https://github.com/City-of-Helsinki/django-ilmoitin/tree/stable/0.5.x) and then make a new 0.5.x release from it.\n\n# Usage\n\n1. `django-ilmoitin` uses [`django-mailer`](https://github.com/pinax/django-mailer)\nto send emails, so you need to configure the `MAILER_EMAIL_BACKEND` setting to let\n[`django-mailer`](https://github.com/pinax/django-mailer) know, how to actually\nsend the mail:\n\n ```python\n MAILER_EMAIL_BACKEND = \"your.actual.EmailBackend\"\n ```\n\n2. Define default from address in settings\n\n ```python\n DEFAULT_FROM_EMAIL = \"Ilmoitin \"\n ```\n In case you need translated from addresses, those can be defined like\n ```python\n ILMOITIN_TRANSLATED_FROM_EMAIL: {\n \"fi\": \"Yrj\u00f6 \",\n \"en\": \"George \",\n }\n ```\n The value from `DEFAULT_FROM_EMAIL` will be used for languages not defined in that dict.\n\n3. Create a `notifications.py` file in django app and register your notification types:\n\n ```python\n from django_ilmoitin.registry import notifications\n \n notifications.register(\"event_created\", \"Event created\")\n notifications.register(\"event_deleted\", \"Event deleted\")\n ```\n\n4. Create a `dummy_context.py` file in django app and add dummy context data.\nEither use the codes of notifications that you registered in the previous step, or\nuse the const `COMMON_CONTEXT` to make some variables available for all templates:\n\n ```python\n from django_ilmoitin.dummy_context import COMMON_CONTEXT, dummy_context\n \n from .models import MyModel\n \n my_object = MyModel(foo=\"bar\")\n \n dummy_context.update({\n COMMON_CONTEXT: {\"my_object\": my_object},\n \"event_created\": {\n \"foo\": \"bar\"\n },\n \"event_deleted\": {\n \"fizz\": \"buzz\"\n }\n })\n ```\n\n5. Import notifications and dummy context in your apps.py:\n\n ```python\n from django.apps import AppConfig\n \n \n class ExampleConfig(AppConfig):\n name = \"example\"\n\n def ready(self):\n import example.notifications\n import example.dummy_context\n ```\n\n6. Go to django admin and add notification templates to your notifications\n\n7. Send notifications. List of attachment files can be passed as last optional argument:\n\n ```python\n from django_ilmoitin.utils import send_notification\n \n context = {\n \"foo\": \"bar\",\n }\n attachment = \"test.txt\", \"foo bar\", \"text/plain\"\n\n send_notification(\"foo@bar.com\", \"event_created\", context, [attachment])\n \n ```\n\n8. By default, notifications will be sent immediately, if you only want to add notification to the message queue\n and send it later, configure `ILMOITIN_QUEUE_NOTIFICATIONS`:\n ```python\n ILMOITIN_QUEUE_NOTIFICATIONS = True\n ```\n\n## Using the GraphQL API\nThe package provides an optional GraphQL API that requires a working [graphene](https://graphene-python.org/) API\nto work, and it needs additional dependencies.\n\n1. To install them, run: `pip install django-ilmoitin[graphql_api]`\n\n2. Add the `Query` to the entrypoint where you build your schema:\n\n```python\n# my_app/schema.py\nimport django_ilmoitin.api.schema as django_ilmoitin_schema\n\nclass Query(\n # other extended classes\n django_ilmoitin_schema.Query,\n graphene.ObjectType,\n):\n pass\n\n```\n\n### Adding authentication to the queries\nAll the queries are public by default. The way to protect them is to override the resolvers on your app and call the \"parent\" query on the new resolver.\n\nAn example of how to protect a query would be as follows:\n```python\nclass Query(\n # other extended classes\n django_ilmoitin_schema.Query,\n graphene.ObjectType,\n):\n\n @staticmethod\n @login_required\n def resolve_notification_templates(parent, info, **kwargs):\n return django_ilmoitin_schema.Query.resolve_notification_templates(\n parent, info, **kwargs\n )\n```\n\nIf you need more specific permission checking, you can also do\n```python\nclass Query(\n # other extended classes\n django_ilmoitin_schema.Query,\n graphene.ObjectType,\n):\n\n @staticmethod\n def resolve_notification_templates(parent, info, **kwargs):\n user = info.context.user\n if user.has_perms([\"very_specific_permission\"]):\n return django_ilmoitin_schema.Query.resolve_notification_templates(\n parent, info, **kwargs\n )\n raise PermissionError(\"User not authorised\")\n```\n\n\n## Code format\n\nThis project uses [`black`](https://github.com/ambv/black) for Python code formatting.\nWe follow the basic config, without any modifications. Basic `black` commands:\n\n* To let `black` do its magic: `black .`\n* To see which files `black` would change: `black --check .`\n\n\n## Troubleshooting guide\n1. Cannot receive email even though it was sent successfully\n\n- Some strict spam filter might mark email as spam if its Message-ID header has suspicious domain name (e.g\n _158431519447.10.15335486611387428798@**qa-staging-i09m9b-staging-77bd999444-p2497**_) \n- This is because Python tries to generate messsage id base on the FQDN of the local machine before sending email\n. Fortunately most of Email Sending services (Mailgun, MailChimp, Sendgrid,..) have a way to generate a reliable\n message-id that will likely pass spam filter, so we better let them do it.\n- If you are using `django-anymail` as the email backend, there is an easy way to remove the auto-generated Message\n ID using `pre_send` signal\n \n- Example:\n \n```python\n from anymail.signals import pre_send\n @receiver(pre_send)\n def remove_message_id(sender, message, **kwargs):\n message.extra_headers.pop(\"Message-ID\", None)\n```\n\n\nNote that it only works if you are using `django-anymail` as your email backend", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/City-of-Helsinki/django-ilmoitin", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "django-ilmoitin", "package_url": "https://pypi.org/project/django-ilmoitin/", "platform": "", "project_url": "https://pypi.org/project/django-ilmoitin/", "project_urls": { "Homepage": "https://github.com/City-of-Helsinki/django-ilmoitin" }, "release_url": "https://pypi.org/project/django-ilmoitin/0.6.0/", "requires_dist": null, "requires_python": "", "summary": "Django app for sending notifications.", "version": "0.6.0", "yanked": false, "yanked_reason": null }, "last_serial": 7854288, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "864c8297ec1cbe001ef3655266c28bf1", "sha256": "bf1ad82ee08b1102d554915fd6632ea7e29c1f223de813bfb493e74e20549943" }, "downloads": -1, "filename": "django_ilmoitin-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "864c8297ec1cbe001ef3655266c28bf1", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 7276, "upload_time": "2019-06-12T14:22:39", "upload_time_iso_8601": "2019-06-12T14:22:39.369877Z", "url": "https://files.pythonhosted.org/packages/0a/39/fb2eaddb945e11be2ce41f472a0f69168031aed501dad86530dd7cac24b9/django_ilmoitin-0.1.0-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "6fdb6ed850760690321c41431dea06b2", "sha256": "d7427a8dd47289597b394c8217c0541d89a6ce5a95aeab134760a15e1737daf6" }, "downloads": -1, "filename": "django_ilmoitin-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6fdb6ed850760690321c41431dea06b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6044, "upload_time": "2019-06-12T14:22:41", "upload_time_iso_8601": "2019-06-12T14:22:41.570360Z", "url": "https://files.pythonhosted.org/packages/a9/89/819e518a1b7e4cf516b441b9fe6d26096cb1a3af2ec818d8d9a58aeddc49/django_ilmoitin-0.1.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "5d3a8dd585c4c85d6416f6ec4aeaa673", "sha256": "664bf8b11cbcda610c543dac982c57cba0a40a6ec2a86b5f1f95bb28be437e8d" }, "downloads": -1, "filename": "django_ilmoitin-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "5d3a8dd585c4c85d6416f6ec4aeaa673", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9005, "upload_time": "2019-08-14T19:45:39", "upload_time_iso_8601": "2019-08-14T19:45:39.898557Z", "url": "https://files.pythonhosted.org/packages/9f/d0/f5f9db2a77030c2065bfbcac2bc33b8f09e77f5c9c51803de9f2cba13ca6/django_ilmoitin-0.1.1-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f92f0a47485fdafb36bcc66693f0f43b", "sha256": "3ae4158746ee57bdd1b48f26661c528f9470b4d0f733fd230cb30d0657ceba37" }, "downloads": -1, "filename": "django_ilmoitin-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f92f0a47485fdafb36bcc66693f0f43b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8351, "upload_time": "2019-08-14T19:45:41", "upload_time_iso_8601": "2019-08-14T19:45:41.440734Z", "url": "https://files.pythonhosted.org/packages/2b/40/45c7283348afc9e337e8d2dac7f0b13f87a705ef54d2ae13d5f4100751c5/django_ilmoitin-0.1.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "abbcd3e15951e9caf25d739553f41415", "sha256": "f203a677175e8c6032e20afbe884be7eaa91f9f3d1537c7c439429ddbe1b4959" }, "downloads": -1, "filename": "django_ilmoitin-0.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "abbcd3e15951e9caf25d739553f41415", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9511, "upload_time": "2019-08-14T20:21:22", "upload_time_iso_8601": "2019-08-14T20:21:22.149033Z", "url": "https://files.pythonhosted.org/packages/7b/39/71fb42aa10fdced555287f8e08503c08df85c90dbcafeb878ec021dfe491/django_ilmoitin-0.1.2-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "d424a99eb662404b3108bcbef1405875", "sha256": "bb856bc37e7da2e8e69d94fa3aa5838429885c9650506982690b3fc2a449498b" }, "downloads": -1, "filename": "django_ilmoitin-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d424a99eb662404b3108bcbef1405875", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8625, "upload_time": "2019-08-14T20:21:23", "upload_time_iso_8601": "2019-08-14T20:21:23.874050Z", "url": "https://files.pythonhosted.org/packages/e9/6d/f37b6218ea4698f1a10584799ffedb7e67d5f14d6d5ee5859d551a106d93/django_ilmoitin-0.1.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1433ec74613536eff03b16c1cce26c7b", "sha256": "3a9c26f4ff089b8ad5e6a3bcc81b80edb4cf3659fa7c7ce4a01bc1cff2b7e4d7" }, "downloads": -1, "filename": "django_ilmoitin-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1433ec74613536eff03b16c1cce26c7b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10976, "upload_time": "2019-08-20T12:00:48", "upload_time_iso_8601": "2019-08-20T12:00:48.518788Z", "url": "https://files.pythonhosted.org/packages/40/22/35876786fc4a61bb6bcfc4575204241dcc7625f3fca890cac713a44bde92/django_ilmoitin-0.1.3-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "f7cc07c271e3d2bf6c3498e79657be40", "sha256": "73b8dabf74414f56d548773a506c576f667fd6822601fc0affd33d83a4c66183" }, "downloads": -1, "filename": "django_ilmoitin-0.1.3.tar.gz", "has_sig": false, "md5_digest": "f7cc07c271e3d2bf6c3498e79657be40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9578, "upload_time": "2019-08-20T12:00:50", "upload_time_iso_8601": "2019-08-20T12:00:50.062773Z", "url": "https://files.pythonhosted.org/packages/66/97/c93cef087a4f80f989135b2df3fb924fe96412b0f088cfad33c633ff2925/django_ilmoitin-0.1.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "3fcf58d2b74ae712988e6b1ed76d4232", "sha256": "214dcab0683df88ca21de90939810bca1f453f1bfe72c64251ed3d9f9536b972" }, "downloads": -1, "filename": "django_ilmoitin-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "3fcf58d2b74ae712988e6b1ed76d4232", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10912, "upload_time": "2019-09-24T07:58:23", "upload_time_iso_8601": "2019-09-24T07:58:23.594920Z", "url": "https://files.pythonhosted.org/packages/e3/8f/da4cd18040b3fb8c561ef4ca22d85d2443653c441f4a72d021cbfc75b201/django_ilmoitin-0.1.4-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "33b55ca57f51638d82e9158c89efe9b5", "sha256": "e6a7519c2c053690f0cd82693a392344d670f2630d8b266379335f37e8a92c70" }, "downloads": -1, "filename": "django_ilmoitin-0.1.4.tar.gz", "has_sig": false, "md5_digest": "33b55ca57f51638d82e9158c89efe9b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9545, "upload_time": "2019-09-24T07:58:25", "upload_time_iso_8601": "2019-09-24T07:58:25.592231Z", "url": "https://files.pythonhosted.org/packages/eb/b0/85208c43fc2c37b976c7e2d4ed9cbcac5832ee24d31cbd46c5a090cdc60a/django_ilmoitin-0.1.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "1ef51919a7ba20e6923f7c1ea5bbbc75", "sha256": "dd554dfd930ee58ad0bd32fc49aede3fe6f72aa08bbbd96a8a3d08f5a61614ee" }, "downloads": -1, "filename": "django_ilmoitin-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "1ef51919a7ba20e6923f7c1ea5bbbc75", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11800, "upload_time": "2019-10-28T14:09:49", "upload_time_iso_8601": "2019-10-28T14:09:49.345192Z", "url": "https://files.pythonhosted.org/packages/97/4a/03a68c6be63039a1dd0f925c51cec78a0a3afb8328a8a567bfa1e3b72b6e/django_ilmoitin-0.2.0-py2-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "e91562db20400a46836158305f0e8fd8", "sha256": "075bf9fb2beaa324af2b0e156ad31f3ac7f16b0cbfcea870cbd77c4232ba86ec" }, "downloads": -1, "filename": "django_ilmoitin-0.2.0.tar.gz", "has_sig": false, "md5_digest": "e91562db20400a46836158305f0e8fd8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10336, "upload_time": "2019-10-28T14:09:51", "upload_time_iso_8601": "2019-10-28T14:09:51.137612Z", "url": "https://files.pythonhosted.org/packages/fa/d4/c5eb4d519b12b0dffb98c1171b7a88cc19d134bc8766cf3d6883d955ff59/django_ilmoitin-0.2.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "0aa7ab944405cc412faf0c417b53d744", "sha256": "0649fcbe0cd9f3e950efd05eded0a6934e9ad615c8a13ffa95ce6ec9894f47a6" }, "downloads": -1, "filename": "django_ilmoitin-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "0aa7ab944405cc412faf0c417b53d744", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12164, "upload_time": "2020-01-08T20:13:19", "upload_time_iso_8601": "2020-01-08T20:13:19.914338Z", "url": "https://files.pythonhosted.org/packages/58/7e/8ab1531f3246e1986c5357a683504f9647d8876a5f50f7c23d4665b8b1cc/django_ilmoitin-0.3.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c07ec1dfbc7b1d9d74c2da1ebeff3c3e", "sha256": "f24d88292b27be4099f7d3def04fd99b74c189a424b7f797efdbbd26de7a7fcb" }, "downloads": -1, "filename": "django_ilmoitin-0.3.0.tar.gz", "has_sig": false, "md5_digest": "c07ec1dfbc7b1d9d74c2da1ebeff3c3e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9574, "upload_time": "2020-01-08T20:13:21", "upload_time_iso_8601": "2020-01-08T20:13:21.381287Z", "url": "https://files.pythonhosted.org/packages/d9/85/bc9bf9e9df2ed816852579c8b8bb2e4e63f88e2a154a5ec51df2e48827b2/django_ilmoitin-0.3.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ba3be3c00179c81dbc061df16b3524ce", "sha256": "d8fdd4883592a1873471f0266da4f36d2b5eb0595f5682a5af382cd349f531da" }, "downloads": -1, "filename": "django_ilmoitin-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ba3be3c00179c81dbc061df16b3524ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12303, "upload_time": "2020-02-18T11:21:09", "upload_time_iso_8601": "2020-02-18T11:21:09.798173Z", "url": "https://files.pythonhosted.org/packages/b7/49/37b2cf45cedbcd94831b9a1d971faf30ec7114f36caf7eb6188a588a7832/django_ilmoitin-0.4.0-py3-none-any.whl", "yanked": false, "yanked_reason": null }, { "comment_text": "", "digests": { "md5": "c288e7c0b28251d8bef54adfe6cb1918", "sha256": "fb6a4ef4fc1f29c03f4133bfe732601a533ecf145ece5217819e1a8b0b5e2dd8" }, "downloads": -1, "filename": "django_ilmoitin-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c288e7c0b28251d8bef54adfe6cb1918", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9806, "upload_time": "2020-02-18T11:21:11", "upload_time_iso_8601": "2020-02-18T11:21:11.004492Z", "url": "https://files.pythonhosted.org/packages/3a/ad/c2fc6953f9efe4a5a6773d3bb9bd105d1313217f225b5b184b907a849b0c/django_ilmoitin-0.4.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "2b63c1f6100080db772bce2a3fda7f03", "sha256": "0b637c8a5693a427cfeb113add9aeda05e2eff7ffc6582524d8bc6f4ec283ea3" }, "downloads": -1, "filename": "django_ilmoitin-0.5.0.tar.gz", "has_sig": false, "md5_digest": "2b63c1f6100080db772bce2a3fda7f03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14790, "upload_time": "2020-07-13T09:01:18", "upload_time_iso_8601": "2020-07-13T09:01:18.406211Z", "url": "https://files.pythonhosted.org/packages/c6/69/fd58b0af144a99f3280afa5670f827c733840211b94c8318d44eda2d966f/django_ilmoitin-0.5.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "8c97f9ad7182d94d2d5e9ff0e7fb3320", "sha256": "6da9756fcf2a9d659947a7a740d375c038bc3009291910294febb7c8cffc74c2" }, "downloads": -1, "filename": "django_ilmoitin-0.5.1.tar.gz", "has_sig": false, "md5_digest": "8c97f9ad7182d94d2d5e9ff0e7fb3320", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12434, "upload_time": "2020-07-13T09:02:55", "upload_time_iso_8601": "2020-07-13T09:02:55.533816Z", "url": "https://files.pythonhosted.org/packages/68/e3/f0bd438280ec8ba7637c0eb5083155eb6b1f4edb78c7b8e89d855f9650e4/django_ilmoitin-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "3b07e9d3c8042c221643c8e5a3049900", "sha256": "00639de93fdfb5b4cb9601fc91f1832af1b711929f10157178237fcc36f0c4b8" }, "downloads": -1, "filename": "django_ilmoitin-0.5.2.tar.gz", "has_sig": false, "md5_digest": "3b07e9d3c8042c221643c8e5a3049900", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12443, "upload_time": "2020-07-14T10:35:44", "upload_time_iso_8601": "2020-07-14T10:35:44.821515Z", "url": "https://files.pythonhosted.org/packages/3a/5e/968507fc2e606554ad121ddcb60a0ee49125e2e0e8313a042ead43552002/django_ilmoitin-0.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "3b8ff6b623a0dc2787197fdace5ad14c", "sha256": "460d7d2d7afd416d6ee75994b4615d145fcd92e609e96fe0eaffe5b8de717b37" }, "downloads": -1, "filename": "django_ilmoitin-0.5.3.tar.gz", "has_sig": false, "md5_digest": "3b8ff6b623a0dc2787197fdace5ad14c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13100, "upload_time": "2020-07-20T07:48:18", "upload_time_iso_8601": "2020-07-20T07:48:18.743408Z", "url": "https://files.pythonhosted.org/packages/5e/78/5c12c09984be82bd7301260e914f6f6fbae7a3ef28dc7f766a53ce54bae3/django_ilmoitin-0.5.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "f4292d690f9a8e57d1f2913479a27154", "sha256": "68c77fe13a849fb0564d7c0fe097a564de15511431b77fc45f8444959c202662" }, "downloads": -1, "filename": "django_ilmoitin-0.6.0.tar.gz", "has_sig": false, "md5_digest": "f4292d690f9a8e57d1f2913479a27154", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13434, "upload_time": "2020-07-31T11:56:03", "upload_time_iso_8601": "2020-07-31T11:56:03.790784Z", "url": "https://files.pythonhosted.org/packages/26/02/ec12ff73c527bcaee04267ad99ac98e99dc5fd59ed9df7b3a52d180ce9b0/django_ilmoitin-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f4292d690f9a8e57d1f2913479a27154", "sha256": "68c77fe13a849fb0564d7c0fe097a564de15511431b77fc45f8444959c202662" }, "downloads": -1, "filename": "django_ilmoitin-0.6.0.tar.gz", "has_sig": false, "md5_digest": "f4292d690f9a8e57d1f2913479a27154", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13434, "upload_time": "2020-07-31T11:56:03", "upload_time_iso_8601": "2020-07-31T11:56:03.790784Z", "url": "https://files.pythonhosted.org/packages/26/02/ec12ff73c527bcaee04267ad99ac98e99dc5fd59ed9df7b3a52d180ce9b0/django_ilmoitin-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }