From f96b8d9784cdbc86d7282c4b046f6592b7541634 Mon Sep 17 00:00:00 2001 From: Andres Vargas Date: Sat, 28 Nov 2020 21:34:34 -0600 Subject: [PATCH 1/9] initial demo part --- .gitignore | 1 + app/urls.py | 2 ++ core/javascript/chat.js | 10 +++++++++ .../javascript/controllers/chat_controller.js | 14 +++++++++++++ core/reflexes/chat_reflex.py | 6 ++++++ core/templates/_chat_demo.html | 5 +++++ core/templates/base.html | 3 ++- core/templates/chat.html | 12 +++++++++++ core/views/chat.py | 21 +++++++++++++++++++ 9 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 core/javascript/chat.js create mode 100644 core/javascript/controllers/chat_controller.js create mode 100644 core/reflexes/chat_reflex.py create mode 100644 core/templates/_chat_demo.html create mode 100644 core/templates/chat.html create mode 100644 core/views/chat.py diff --git a/.gitignore b/.gitignore index 9785c98..0b3ff61 100644 --- a/.gitignore +++ b/.gitignore @@ -154,3 +154,4 @@ dmypy.json node_modules /static /core/static/dist +.env/ diff --git a/app/urls.py b/app/urls.py index fa8bc0f..c89a875 100644 --- a/app/urls.py +++ b/app/urls.py @@ -5,6 +5,7 @@ import core.views.example import core.views.book_search +import core.views.chat urlpatterns = [ @@ -13,4 +14,5 @@ path('book-search/', core.views.book_search.book_search, name='book_search'), path('example/', core.views.example.example, name='example'), + path('chat/', core.views.chat.chat, name='chat'), ] + staticfiles_urlpatterns() diff --git a/core/javascript/chat.js b/core/javascript/chat.js new file mode 100644 index 0000000..82f77e3 --- /dev/null +++ b/core/javascript/chat.js @@ -0,0 +1,10 @@ +import { Application } from 'stimulus' +import StimulusReflex from 'stimulus_reflex' +import WebsocketConsumer from 'sockpuppet-js' +import ChatController from './controllers/chat_controller' + +const application = Application.start() +const consumer = new WebsocketConsumer('ws://localhost:8000/ws/sockpuppet-sync') + +application.register("chat", ChatController) +StimulusReflex.initialize(application, { consumer }) diff --git a/core/javascript/controllers/chat_controller.js b/core/javascript/controllers/chat_controller.js new file mode 100644 index 0000000..f7dd935 --- /dev/null +++ b/core/javascript/controllers/chat_controller.js @@ -0,0 +1,14 @@ +import { Controller } from 'stimulus'; +import StimulusReflex from 'stimulus_reflex'; + +export default class extends Controller { + connect() { + StimulusReflex.register(this) + } + + increment(event) { + console.log('increment') + event.preventDefault() + this.stimulate('ChatReflex#increment', 1) + } +} diff --git a/core/reflexes/chat_reflex.py b/core/reflexes/chat_reflex.py new file mode 100644 index 0000000..a79cd9c --- /dev/null +++ b/core/reflexes/chat_reflex.py @@ -0,0 +1,6 @@ +from sockpuppet.reflex import Reflex + + +class ChatReflex(Reflex): + def increment(self, step=1): + self.count = int(self.element.dataset['count']) + step diff --git a/core/templates/_chat_demo.html b/core/templates/_chat_demo.html new file mode 100644 index 0000000..730a71b --- /dev/null +++ b/core/templates/_chat_demo.html @@ -0,0 +1,5 @@ +{% extends "base.html" %} + +{% block main %} + +{% endblock main %} diff --git a/core/templates/base.html b/core/templates/base.html index 793d5f4..1965c50 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -34,6 +34,7 @@

@@ -45,7 +46,7 @@

{% block subtitle %}

Django Sockpuppet

{% endblock subtitle %}