|pypi| |actions| |codecov| |downloads|
django-revision
---------------
Add a Django field class to your models to track the git revision with every model instance saved.
python 3.7, Django 3.0+. Uses `GitPython`.
For example:
.. code-block:: python
from django.db import models
from django_revision import RevisionField
class TestModel(models.Model):
revision = RevisionField()
.. code-block:: python
>>> test_model = TestModel.objects.create()
>>>test_model.revision
'0.1dev0'
If the source is modified after the git tag was applied:
.. code-block:: python
>>> test_model = TestModel.objects.create()
>>>test_model.revision
>>> '0.1dev0-35-ge9f632e:develop:e9f632e92143c53411290b576487f48c15156603'
Reference git information from anywhere in your app:
.. code-block:: python
>>> from django_revision import site_revision
>>> site_revision.tag
'0.1dev0'
>>>site_revision.revision
'0.1dev0'
For research trial data, we need to track the source code revision at time of data collection. We deploy our source as a git branch and django-revision picks up the tag:branch:commit and updates
each saved model instance as data is collected.
Installation
------------
Add to settings:
.. code-block:: python
INSTALLED_APPS = [
...
'django_revision.apps.AppConfig',
...
]
If your `git` working directory is something other than ``settings.BASE_DIR`` add ``GIT_DIR`` to ``settings`` with the path to your `git` working directory. For example:
.. code-block:: python
GIT_DIR = BASE_DIR.ancestor(2)
If you have a deployment case where the source folder is not a `git` repo, you can set the revision manually in settings:
.. code-block:: python
REVISION = '0.1.3'
Using in a View and Template
----------------------------
In the view's ``get_context_data`` set a context attribute to ``revision.tag`` or just use the ``RevisionMixin``:
.. code-block:: python
from django_revision.views import RevisionMixin
class MyView(RevisionMixin, TemplateView):
...
In your template:
.. code-block:: python
{% block footer %}
<footer class="footer">
<div class="container">
<div class="col-md-4"><p class="text-muted text-center"><small>{{ year }} {{ institution }}</small></p></div>
<div class="col-md-4"><p class="text-muted text-center"><small>Revision: {{ revision }}</small></p></div>
<div class="col-md-4"><p class="text-muted text-center"><small>For Research Purposes Only</small></p></div>
</div>
</footer>
{% endblock footer %}
.. |pypi| image:: https://img.shields.io/pypi/v/django-revision.svg
:target: https://pypi.python.org/pypi/django-revision
.. |actions| image:: https://github.com/erikvw/django-revision/workflows/build/badge.svg?branch=develop
:target: https://github.com/erikvw/django-revision/actions?query=workflow:build
.. |codecov| image:: https://codecov.io/gh/erikvw/django-revision/branch/develop/graph/badge.svg
:target: https://codecov.io/gh/erikvw/django-revision
.. |downloads| image:: https://pepy.tech/badge/django-revision
:target: https://pepy.tech/project/django-revision
Raw data
{
"_id": null,
"home_page": "http://github.com/erikvw/django-revision",
"name": "django-revision",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": "",
"keywords": "django Edc fields git",
"author": "Erik van Widenfelt",
"author_email": "ew2789@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/7a/95/23f2c0464ef5253038b7d3d498fb51ea9be3c9d8af34d458595b63eabd60/django-revision-0.3.7.tar.gz",
"platform": null,
"description": "|pypi| |actions| |codecov| |downloads|\n\ndjango-revision\n---------------\n\nAdd a Django field class to your models to track the git revision with every model instance saved.\n\npython 3.7, Django 3.0+. Uses `GitPython`.\n\nFor example:\n\n.. code-block:: python\n\n from django.db import models\n\n from django_revision import RevisionField\n\n class TestModel(models.Model):\n\n revision = RevisionField()\n\n.. code-block:: python\n\n >>> test_model = TestModel.objects.create()\n >>>test_model.revision\n '0.1dev0'\n\nIf the source is modified after the git tag was applied:\n\n.. code-block:: python\n\n >>> test_model = TestModel.objects.create()\n >>>test_model.revision\n >>> '0.1dev0-35-ge9f632e:develop:e9f632e92143c53411290b576487f48c15156603'\n\nReference git information from anywhere in your app:\n\n.. code-block:: python\n\n >>> from django_revision import site_revision\n >>> site_revision.tag\n '0.1dev0'\n >>>site_revision.revision\n '0.1dev0'\n\n\nFor research trial data, we need to track the source code revision at time of data collection. We deploy our source as a git branch and django-revision picks up the tag:branch:commit and updates\neach saved model instance as data is collected.\n\nInstallation\n------------\n\nAdd to settings:\n\n.. code-block:: python\n\n INSTALLED_APPS = [\n ...\n 'django_revision.apps.AppConfig',\n ...\n ]\n\nIf your `git` working directory is something other than ``settings.BASE_DIR`` add ``GIT_DIR`` to ``settings`` with the path to your `git` working directory. For example:\n\n.. code-block:: python\n\n GIT_DIR = BASE_DIR.ancestor(2)\n\nIf you have a deployment case where the source folder is not a `git` repo, you can set the revision manually in settings:\n\n.. code-block:: python\n\n REVISION = '0.1.3'\n\nUsing in a View and Template\n----------------------------\n\nIn the view's ``get_context_data`` set a context attribute to ``revision.tag`` or just use the ``RevisionMixin``:\n\n.. code-block:: python\n\n from django_revision.views import RevisionMixin\n\n class MyView(RevisionMixin, TemplateView):\n ...\n\nIn your template:\n\n.. code-block:: python\n\n {% block footer %}\n\t<footer class=\"footer\">\n\t <div class=\"container\">\n\t <div class=\"col-md-4\"><p class=\"text-muted text-center\"><small>{{ year }} {{ institution }}</small></p></div>\n\t <div class=\"col-md-4\"><p class=\"text-muted text-center\"><small>Revision: {{ revision }}</small></p></div>\n\t <div class=\"col-md-4\"><p class=\"text-muted text-center\"><small>For Research Purposes Only</small></p></div>\n\t </div>\n\t</footer>\n {% endblock footer %}\n\n.. |pypi| image:: https://img.shields.io/pypi/v/django-revision.svg\n :target: https://pypi.python.org/pypi/django-revision\n\n.. |actions| image:: https://github.com/erikvw/django-revision/workflows/build/badge.svg?branch=develop\n :target: https://github.com/erikvw/django-revision/actions?query=workflow:build\n\n.. |codecov| image:: https://codecov.io/gh/erikvw/django-revision/branch/develop/graph/badge.svg\n :target: https://codecov.io/gh/erikvw/django-revision\n\n.. |downloads| image:: https://pepy.tech/badge/django-revision\n :target: https://pepy.tech/project/django-revision\n",
"bugtrack_url": null,
"license": "GPL license, see LICENSE",
"summary": "Track the git revision with every model instance saved",
"version": "0.3.7",
"project_urls": {
"Homepage": "http://github.com/erikvw/django-revision"
},
"split_keywords": [
"django",
"edc",
"fields",
"git"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4605b4392c5aebe8eab18d23db87cee176ab8946cb86e0daf5380ebd55119994",
"md5": "f2fc6fbc203593dba53d820923bef7a8",
"sha256": "5a423fd1dbdc8c67fa1a2582809783ca19e4923f8bf2eec21aadb060f7046a1c"
},
"downloads": -1,
"filename": "django_revision-0.3.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f2fc6fbc203593dba53d820923bef7a8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 16574,
"upload_time": "2024-02-11T16:08:48",
"upload_time_iso_8601": "2024-02-11T16:08:48.836793Z",
"url": "https://files.pythonhosted.org/packages/46/05/b4392c5aebe8eab18d23db87cee176ab8946cb86e0daf5380ebd55119994/django_revision-0.3.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7a9523f2c0464ef5253038b7d3d498fb51ea9be3c9d8af34d458595b63eabd60",
"md5": "16494e2fc1d579847a376d312dfd6ae3",
"sha256": "bf0dec38fb00601ec0967a12ab95ea2058b25b092b632c76c803de42595c744b"
},
"downloads": -1,
"filename": "django-revision-0.3.7.tar.gz",
"has_sig": false,
"md5_digest": "16494e2fc1d579847a376d312dfd6ae3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 18608,
"upload_time": "2024-02-11T16:08:50",
"upload_time_iso_8601": "2024-02-11T16:08:50.634179Z",
"url": "https://files.pythonhosted.org/packages/7a/95/23f2c0464ef5253038b7d3d498fb51ea9be3c9d8af34d458595b63eabd60/django-revision-0.3.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-11 16:08:50",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "erikvw",
"github_project": "django-revision",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "django-revision"
}