===========================
Welcome to Django-Atlassian
===========================
.. image:: https://img.shields.io/pypi/djversions/djangorestframework.svg
.. image:: https://img.shields.io/github/license/fluendo/django-atlassian.svg
Django-atlassian allows you to build a Atlassian Connect apps using Django, it includes:
- JWT support
- Jira's django db backend
- Confluence's django db backend
Installation
------------
Download and install using ``pip install django-atlassina``
.. code-block:: bash
$ pip install django-atlassian
Example Configuration
---------------------
Backend mode
~~~~~~~~~~~~
.. code-block:: python
DATABASES = {
'jira': {
'ENGINE': 'django_atlassian.backends.jira',
'NAME': 'https://your-site.atlassian.net',
'USER': '', # Your user
'PASSWORD': '', # Your password
'SECURITY': '',
},
DATABASE_ROUTERS = ['django_atlassian.router.Router']
Application mode
~~~~~~~~~~~~~~~~
In this mode, you setup a database configuration to connect to a specific Jira/Confluence
cloud instance. All custom fields will be automatically introspected.
Setup the router to make the connected host model be accessed through their own database:
.. code-block:: python
DATABASE_ROUTERS = ['django_atlassian.router.Router']
ALLOWED_HOSTS = ['<ID>.ngrok.io']
Create a basic ``atlassian-connect.json`` template file:
.. code-block:: json
{
"name": "<Your app name>",
"description": "<Your app description>",
"key": "<Your app private key>",
"baseUrl": "<Your host set on ALLOWED_HOSTS>",
"vendor": {
"name": "<Your company>",
"url": "<Your website>",
},
"authentication": {
"type": "jwt"
},
"lifecycle": {
"installed": "{% url 'django-atlassian-installed' %}"
},
"scopes": [
"read", "write"
],
"apiVersion": 1,
"modules": {
}
}
Contributing
------------
If you'd like to contribute, the best approach is to send a well-formed pull
request, complete with tests and documentation. Pull requests should be
focused: trying to do more than one thing in a single request will make it more
difficult to process.
References
----------
Database implementation:
- https://simpleisbetterthancomplex.com/media/2016/11/db.pdf
Dynamic model field injection:
- http://blog.jupo.org/2011/11/10/django-model-field-injection/
- https://github.com/Zagrebelin/smyt_test/tree/master/msyt
- https://code.djangoproject.com/wiki/DynamicModels
- http://lazypython.blogspot.com/2008/11/django-models-digging-little-deeper.html
- https://code.djangoproject.com/ticket/22555
- https://stackoverflow.com/questions/2357528/explanation-of-contribute-to-class
- https://code.djangoproject.com/wiki/DevModelCreation