Metadata-Version: 2.1
Name: django-tsp
Version: 3.14.8
Summary: django-tsp is a django travel salesman problem.
Home-page: https://github.com/TravelSalesmanProblem/django_tsp
Author: AmirBahador Bahadori
Author-email: amirbahador.pv@gmail.com
Maintainer: AmirBahador Bahadori
Maintainer-email: amirbahador.pv@gmail.com
License: MIT
Project-URL: Twitter, https://twitter.com/AmirBahadordev
Keywords: django,tsp
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 3.2
Classifier: Framework :: Django :: 4.0
Classifier: Framework :: Django :: 4.1
Classifier: Framework :: Django :: 4.2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Typing :: Typed
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Django (>=3.2)
Requires-Dist: tsp-wrapper (>=1.0.5)

# django_tsp
django_tsp is a wrapper build on top of the tsp_wrapper

* Provide apis for calling the tsp_wrapper
* Provide django commands for tsp_wrapper
* Provide websocket template for tsp sloutions

## Installation
```bash
pip install django-tsp
```

## Getting started
* Add django_tsp to your install apps
```python
INSTALLED_APPS = [
    'daphne',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django_tsp', # <--- here we added our package
]
```
* fill up the require variables in settings.py
```python
TSP_HOOK_URL="http://django:8000/api/tsp/hook/" # your webhook link
TSP_BROKER_URL = "amqp://guest:guest@rabbitmq:5672/"
```
* install django_channels and use following view in your routing
```python
from django_tsp.routing import ws_urlpatterns


application = ProtocolTypeRouter({
    "http": django_asgi_app,
    "websocket": AuthMiddlewareStack(URLRouter(ws_urlpatterns))
})
```
* use add following apis to your urls.py (needs drf and drf_docs)
```python
from django_tsp.apis import WebhookApi, SolverApi 

urlpatterns = [
    path('tsp/', include(([
        path('solver/', SolverApi.as_view(), name="solver"),
        path('hook/', WebhookApi.as_view(), name="hook"),
    ], "tsp")), ),
]

```
* for the template websocket add following views inside of your urls.py
```python
from django_tsp.views import index
from drf_spectacular.views import (
    SpectacularAPIView,
    SpectacularRedocView,
    SpectacularSwaggerView,
)

urlpatterns = [
    path('', index, name="index"), # the improtant template one
    path("schema/", SpectacularAPIView.as_view(api_version="v1"), name="schema"),
    path("doc/", SpectacularSwaggerView.as_view(url_name="schema"), name="swagger-ui"),
    path("redoc/", SpectacularRedocView.as_view(url_name="schema"), name="redoc"),
]
```

## Usage
* for running the bridge
```
python manage.py bridge
```
* for running the reciver
```
python manage.py reciver
```
