Package: django-private-chat
Please also check out our another packagehttps://github.com/Bearle/django_mail_adminDjango one-to-one Websocket-based Asyncio-handled chat, developed by Bearle teamImportant NotesThis app uses separate management command, run_chat_server for running Websockets in Django context. It is intended to be used with something like Supervisor or Systemd to run asyncio webserver as a separate one from Django.
We didn’t want our app to be limited to be used together with Django Channels - that’s why we did it that way.You can find an example Systemd config to run it as a service athttps://github.com/Bearle/django-private-chat/blob/dev/example.serviceP.S. Don’t forget to change CHAT_WS_SERVER_HOST && CHAT_WS_SERVER_PORT && CHAT_WS_SERVER_PROTOCOL settings!DocumentationThe full documentation is (finally) athttps://django-private-chat.readthedocs.io. You can also check the docstrings & this readme.Example projectYou can check out our example project by cloning the repo and heading into example/ directory.
There is a README file for you to check, initial data to check out the chat included.Customize the templatesHow to customize the template?
Just copy:venv/lib/pythonX.X/site-packages/django_private_chat/templates/django_private_chat/dialogs.html
to
yourapp/templates/django_private_chat/dialogs.htmlAnd feel free to edit it as you like!
We intentionally left the JS code inside for it to be editable easily.Exsiting project quickstartInstall django-private-chat:pip install django-private-chatMigrate:python manage.py migrate django-private-chatNote: you can use this package with or without uvloop, just run eitherpythonmanage.pyrun_chat_serveror runpythonmanage.pyrun_chat_server_uvloopAdd it to yourINSTALLED_APPS:INSTALLED_APPS=(...'django_private_chat',...)Add the server & port for your asyncio server to settings:CHAT_WS_SERVER_HOST='localhost'CHAT_WS_SERVER_PORT=5002CHAT_WS_SERVER_PROTOCOL='ws'It is possible to change messages datetime format usingDATETIME_FORMATAdd django-private-chat’s URL patterns:fromdjango_private_chatimporturlsasdjango_private_chat_urlsurlpatterns=[...url(r'^',include('django_private_chat.urls')),...]Add{%blockextra_js%}{%endblockextra_js%}to your base templateNow you can start a dialog using/dialogs/some_existing_usernameTo create a WSS (TLS) server instead:pythonmanage.pyrun_chat_server"path/to/cert.pem"(also works with uvloop).
The “cert.pem” file should be a plaintext PEM file containing first a private key, then a certificate (may be a concatenation of a .key and a .crt file).
Please note that wss will use TLSv1 by default for python 3.5 & 3.4 and will use ssl.PROTOCOL_TLS_SERVER for 3.6 and above.
Features
——–-:white_check_mark: Uses current app model (get_user_model() and settings.AUTH_USER_MODEL)-:white_check_mark: Translatable (uses ugettext and {% trans %} )-:white_check_mark: One-to-one user chat-:white_check_mark: Works using WebSockets-:white_check_mark: Works (optionally) using WSS (TLS) connections (disclaimer - security not guaranteed)-:white_check_mark: Displays online/offline status-:white_check_mark: Display typing/not typing status-:white_check_mark: Soft deletable message model - be sure to keep messages to comply with message-keeping laws-:white_check_mark: Flash the dialog button when the user you are not currently talking to wrote you a message-:point_right: TODO: add a dialog to the list when new one started-:point_right: TODO: add user-not-found and other alerts-:point_right: possible Redis backend intergrationRunning TestsDoes the code actually work?source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install tox
(myenv) $ toxCreditsTools used in rendering this package:Cookiecuttercookiecutter-djangopackageHistory0.3.0 (2020-05-03)Update deps, example to Django 2.2.12Move to async/await syntax0.2.2 (2018-12-12)Fix read_message_handler by idonoso0.2.1 (2018-12-07)Compatibility with python3.7 by Emeka Icha0.2.0 (2018-10-22)Added WSS fix for python 3.4 & 3.50.1.9 (2018-07-16)Added WSS support by @zsmith30.1.8 (2018-03-23)Fixed time in Message model to be timezone-aware0.1.7 (2018-03-20)Additions for django 2.00.1.6 (2017-04-11)Fixed bugs with static files and added comment about extra_js block to readme0.1.5 (2017-03-11)Added flashing other user button when he sent you a message and you’re in another dialog0.1.4 (2017-02-12)Added support for django 1.8,1.90.1.3 (2017-02-11)Removed uvloop from requirements0.1.2 (2017-02-11)Fixed i18n not loaded in dialogs template bug0.1.1 (2017-02-10)Added migrations.0.1.0 (2017-02-10)First release on PyPI.