{ "info": { "author": "Dennis Kaarsemaker", "author_email": "dennis@kaarsemaker.net", "bugtrack_url": null, "classifiers": [ "Framework :: Django", "Intended Audience :: Developers", "Operating System :: OS Independent", "Topic :: Software Development" ], "description": "Django-echelon - BIg Brother for your Django projects\n\nCopyright (c) 2009-2011 Dennis Kaarsemaker \n 2011 Atamert \u00d6l\u00e7gun \n\nOverview\n--------\n\nEchelon does what its name implies: it keeps an eye on users. It allows you to\nfind out the current user from anywehere in your code and it tracks every\naction users do.\n\nInstalling\n----------\n\nInstall: python setup.py install\n- Add 'echelon' to INSTALLED_APPS in your settings.py\n- Add 'echelon.middleware.EchelonMiddleware' to MIDDLEWARE_CLASSES after the\n authentication and session middleware\n\nWho is the current user\n-----------------------\n\nTo set/get the user info, there is the following API:\n\nfrom echelon.middleware import EchelonMiddleware\n\n# Set the current user for this thread. Accepts user objects and loginnames.\nEchelonMiddleware.set_user(some_user)\n\n# Get the current user or None\nuser = EchelonMiddleware.get_user()\n\n# This will return some_user if there is no current user\nuser = EchelonMiddleware.get_user(some_user)\n\n# Forget the current user. It is always safe to call this, even if there is no\n# current user.\nEchelonMiddleware.del_user()\n\nThe middleware automatically sets/deletes the current user for HTTP requests.\nFor other uses (management commands, scripts), you will need to do this\nyourself.\n\nechelon also provides a CurrentUserField, which can be used for auditing\npurposes. Use it as follows:\n\nfrom echelon.fields import CurrentUserField\n\nclass MyModel(models.Model):\n ....\n creator = CurrentUserField(add_only=True, related_name=\"created_mymodels\")\n last_editor = CurrentUserField(related_name=\"last_edited_mymodels\")\n ...\n\nThis field is a ForeignKey to the django.contrib.auth.models.User model and you\ncan treat it as such.\n\nAutomatic change logging\n------------------------\nEchelon will also automatically log all changes to almost all objects. Only\nsessions and contenttypes are not logged. If you want to exclude other objects,\nyou can set this in settings.py. For example, if you don't want changes to\nPermission objects logged you can add this:\n\nECHELON_LOGGING_BLACKLIST = (\n ('auth', 'Permission'),\n)\n\nYou can also set an attribute in your model class to prevent logging:\n\nclass MyModel(models.Model):\n ...\n echelon_log_changes = False\n\nThe first method is prefered for models you don't control, the second is better\nfor your own models.\n\nTo be able to review the changelog, add this pattern to the patterns in your\nurls.py:\n\n ('^changelog/', include('echelon.urls'))\n", "description_content_type": null, "docs_url": "https://pythonhosted.org/django-echelon/", "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/seveas/django-echelon", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "django-echelon", "package_url": "https://pypi.org/project/django-echelon/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-echelon/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://github.com/seveas/django-echelon" }, "release_url": "https://pypi.org/project/django-echelon/1.2/", "requires_dist": null, "requires_python": null, "summary": "Middleware to make user information always available and to automatically log changes", "version": "1.2" }, "last_serial": 789536, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "baaf1aedee65a0480ffa2f0e0344f59e", "sha256": "d3eb66e1a44f1bf7d5f1c647f62aaf84eb6db2becc18ac1c03a784aebe2b36cf" }, "downloads": -1, "filename": "django-echelon-1.1.tar.gz", "has_sig": false, "md5_digest": "baaf1aedee65a0480ffa2f0e0344f59e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6882, "upload_time": "2011-06-27T00:13:48", "url": "https://files.pythonhosted.org/packages/41/e6/68040b4e66b362ea794273a130d3a1d0ca9c292066e41362a041e250c268/django-echelon-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "983d1c70cb331dc30c4129eb59ee24ab", "sha256": "b342802932d716b124b991e03ace21351c28e02fe53710c29b434b2e6ffaa62e" }, "downloads": -1, "filename": "django-echelon-1.2.tar.gz", "has_sig": false, "md5_digest": "983d1c70cb331dc30c4129eb59ee24ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7947, "upload_time": "2013-03-26T10:53:18", "url": "https://files.pythonhosted.org/packages/de/30/43a5628c75ae37709902e22b75e6c990ec395e1b191c148b4c3be79ff39b/django-echelon-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "983d1c70cb331dc30c4129eb59ee24ab", "sha256": "b342802932d716b124b991e03ace21351c28e02fe53710c29b434b2e6ffaa62e" }, "downloads": -1, "filename": "django-echelon-1.2.tar.gz", "has_sig": false, "md5_digest": "983d1c70cb331dc30c4129eb59ee24ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7947, "upload_time": "2013-03-26T10:53:18", "url": "https://files.pythonhosted.org/packages/de/30/43a5628c75ae37709902e22b75e6c990ec395e1b191c148b4c3be79ff39b/django-echelon-1.2.tar.gz" } ] }