django-revision


Namedjango-revision JSON
Version 0.3.7 PyPI version JSON
download
home_pagehttp://github.com/erikvw/django-revision
SummaryTrack the git revision with every model instance saved
upload_time2024-02-11 16:08:50
maintainer
docs_urlNone
authorErik van Widenfelt
requires_python>=3.11
licenseGPL license, see LICENSE
keywords django edc fields git
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            |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 }}&nbsp;{{ 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 }}&nbsp;{{ 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"
}
        
Elapsed time: 2.19389s