{ "info": { "author": "Ramon Saraiva", "author_email": "ramonsaraiva@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# django-expiry\n\nExpiry rules for Django sessions.\n\n## Installation\n\nInstall using `pip`\n\n pip install django-expiry\n\nor `Pipenv`\n\n pipenv install django-expiry\n\nAdd `expiry` to your `INSTALLED_APPS` setting\n\n INSTALLED_APPS = (\n ...\n 'expiry',\n )\n\nAdd `expiry.middleware.ExpirySessionMiddleware` to your middleware setting\n\n MIDDLEWARE = (\n ...\n 'expiry.middleware.ExpirySessionMiddleware',\n )\n\nor to middleware classes if your Django is <= 1.9\n\n MIDDLEWARE_CLASSES = (\n ...\n 'expiry.middleware.ExpirySessionMiddleware',\n )\n\nThe middleware will process rules and default ages for fresh sessions.\n\n## Usage\n\n### Ages\n\nDefault ages can be set for anonymous and authenticated users. When not set, the session age behaviour will default to Django.\n\n`EXPIRY_ANON_SESSION_AGE` \nDefault: not set.\n\nThe default age of an anonymous session, in seconds.\n\n`EXPIRY_ANON_KEEP_ALIVE` \nDefault: `False`\n\nKeeps the authenticated session alive, refreshing its expiry for every request, according to its default value and rules.\n\n`EXPIRY_AUTH_SESSION_AGE` \nDefault: not set.\n\nThe default age of an authenticated session, in seconds.\n\n`EXPIRY_AUTH_KEEP_ALIVE` \nDefault: `False`\n\nKeeps the anonymous session alive, refreshing its expiry for every request, according to its default value and rules.\n\n### Rules\n\nA set of rules should be defined in your settings file.\nYou can have rules for anonymous users and authenticated users, handled separately.\n\n#### Expiry rules for authenticated users only\n\nProcessed whenever an user logs in. Its callable should always accept an `user` and a `request` object.\n\n EXPIRY_AUTH_SESSION_RULES = (\n (lambda request, user: user.is_staff, 300),\n (lambda request, user: user.is_superuser, datetime.timedelta(weeks=2)),\n (lambda request, user: user.has_perms('hero'), 99999999),\n )\n\n#### Expiry rules for anonymous users only\n\nProcessed whenever a session is fresh. Rules are triggered in `ExpirySessionMiddleware`.\n\n EXPIRY_ANON_SESSION_RULES = (\n (lambda request: request.META.get('REMOTE_ADDR') == '192.168.0.1', 999)\n )\n\n#### Rule composition\n\nA rule is a tuple composed by:\n* A callable or the path to a callable that will validate it\n* An expiry (seconds, datetime, timedelta)\n\nNote that, for `datetime` and `timedelta` expiries, serialization won't work unless you are using the `PickleSerializer`. \nRead more about it [here](https://docs.djangoproject.com/en/2.1/topics/http/sessions/#django.contrib.sessions.backends.base.SessionBase.set_expiry).\n\nIn the examples above, all rules are lambdas, but you can also send the path to a function that will validate it.\n\n EXPIRY_AUTH_SESSION_RULES = (\n ('app.module.complex_rule', datetime.timedelta(days=64)),\n )\n\nThen define the rule in that specific module:\n\n def complex_rule(user, request):\n ...\n\n\n", "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/ramonsaraiva/django-expiry", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "django-expiry", "package_url": "https://pypi.org/project/django-expiry/", "platform": "", "project_url": "https://pypi.org/project/django-expiry/", "project_urls": { "Homepage": "https://github.com/ramonsaraiva/django-expiry" }, "release_url": "https://pypi.org/project/django-expiry/0.2.2/", "requires_dist": null, "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "summary": "Expiry rules for Django sessions.", "version": "0.2.2" }, "last_serial": 4321169, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2552be8517869385ced5986c4c498b10", "sha256": "7d0dd9e6bd2b23ce1bdeb67930eb7dcd31d70ae0d49089d43d5a2d453369f39c" }, "downloads": -1, "filename": "django_expiry-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2552be8517869385ced5986c4c498b10", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4392, "upload_time": "2018-09-03T04:04:31", "url": "https://files.pythonhosted.org/packages/6e/7b/777ce23955c23f3a40b2ec2986d423ac6ece43a3aa5a3707324105a57431/django_expiry-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fa20d7b77d260f204a4b88bf3e380765", "sha256": "2640df8e03c262c9c8f55e3c686a418d951bdc97ae4e4c921dc61881043e6184" }, "downloads": -1, "filename": "django-expiry-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fa20d7b77d260f204a4b88bf3e380765", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3528, "upload_time": "2018-09-03T04:04:32", "url": "https://files.pythonhosted.org/packages/48/2b/2914fbb0de8de17cda6db1494a6c3ab4f8d5221c9ebb25fd14bfea9d1e34/django-expiry-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "f84ecc060c2b843f12abedfa4f6ebef3", "sha256": "22bd30e223867159eb4c1ff1e446bb13580d5c3ed85b238cf3fd3f05a2714e92" }, "downloads": -1, "filename": "django_expiry-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f84ecc060c2b843f12abedfa4f6ebef3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4622, "upload_time": "2018-09-12T02:55:18", "url": "https://files.pythonhosted.org/packages/c1/1a/d6beb8e9aa63c0325afff47f8117893ae9658157a8c8f3a0a8e79a92076c/django_expiry-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2ac0574d7bbc1a283f6b180437747e0c", "sha256": "ee2af5b195c6dfe1c799d70d981f14d75e332f763836cf12dc1d0d09e8a173a9" }, "downloads": -1, "filename": "django-expiry-0.2.0.tar.gz", "has_sig": false, "md5_digest": "2ac0574d7bbc1a283f6b180437747e0c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3852, "upload_time": "2018-09-12T02:55:20", "url": "https://files.pythonhosted.org/packages/95/c2/bc43d4f6dc5c54c473cdf7caddffc2ebd992a3a672f8dafd583112763f0c/django-expiry-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "b1151eb83906c6ce4abede313da981c6", "sha256": "c22b9caa8400d044df4d67eb753281a5a823a0be1d37b8ca3d31e479c7c724f4" }, "downloads": -1, "filename": "django_expiry-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "b1151eb83906c6ce4abede313da981c6", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4614, "upload_time": "2018-09-28T17:31:51", "url": "https://files.pythonhosted.org/packages/58/7a/cdd323d05112ab4cb14e3e692ca17404cacd886d4a5bde135673fbded64c/django_expiry-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9593352125e109e75da35e21f5151062", "sha256": "b37386f384d52b93f4ef91d4ec59c92c646e8e8813f94f2e674b35c024429131" }, "downloads": -1, "filename": "django-expiry-0.2.1.tar.gz", "has_sig": false, "md5_digest": "9593352125e109e75da35e21f5151062", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3835, "upload_time": "2018-09-28T17:31:52", "url": "https://files.pythonhosted.org/packages/05/26/9c396abd9a0aebe4fc2e5e13e9d7ed1c052f1935f245f08f0ef4bf29e7d3/django-expiry-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "99f1ee7bf5502662bf651443eb05c080", "sha256": "6f7b2a3ef3a482082fc83d616b031fd011f4d0cf93521f571e019842c07d7669" }, "downloads": -1, "filename": "django_expiry-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "99f1ee7bf5502662bf651443eb05c080", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4613, "upload_time": "2018-09-28T20:12:35", "url": "https://files.pythonhosted.org/packages/b8/5f/d154272dbddb625d596338726afc251ba09f4e56548ec8ad5e54e0ddf184/django_expiry-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76a8c3b329361fd9f09e9f0057d11448", "sha256": "c88b1152b3bb15a71c7f1ccf516f2241baac73b050cf201528c876f88da90580" }, "downloads": -1, "filename": "django-expiry-0.2.2.tar.gz", "has_sig": false, "md5_digest": "76a8c3b329361fd9f09e9f0057d11448", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3839, "upload_time": "2018-09-28T20:12:36", "url": "https://files.pythonhosted.org/packages/87/44/353393254a6da0777164a4ef108535e971e54fee1183e9202c3b85caf81e/django-expiry-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "99f1ee7bf5502662bf651443eb05c080", "sha256": "6f7b2a3ef3a482082fc83d616b031fd011f4d0cf93521f571e019842c07d7669" }, "downloads": -1, "filename": "django_expiry-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "99f1ee7bf5502662bf651443eb05c080", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 4613, "upload_time": "2018-09-28T20:12:35", "url": "https://files.pythonhosted.org/packages/b8/5f/d154272dbddb625d596338726afc251ba09f4e56548ec8ad5e54e0ddf184/django_expiry-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76a8c3b329361fd9f09e9f0057d11448", "sha256": "c88b1152b3bb15a71c7f1ccf516f2241baac73b050cf201528c876f88da90580" }, "downloads": -1, "filename": "django-expiry-0.2.2.tar.gz", "has_sig": false, "md5_digest": "76a8c3b329361fd9f09e9f0057d11448", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*", "size": 3839, "upload_time": "2018-09-28T20:12:36", "url": "https://files.pythonhosted.org/packages/87/44/353393254a6da0777164a4ef108535e971e54fee1183e9202c3b85caf81e/django-expiry-0.2.2.tar.gz" } ] }