Skip to content

Commit 3cda81d

Browse files
committed
convert to building standard js app
1 parent 78369ea commit 3cda81d

File tree

24 files changed

+733
-60
lines changed

24 files changed

+733
-60
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
# Django #
32
logs
43
*.log
@@ -125,4 +124,4 @@ GitHub.sublime-settings
125124
%SystemDrive%
126125

127126
# Mac file system
128-
.DS_Store
127+
.DS_Store

noxfile.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,20 @@
1414
POSARGS_PATTERN = re.compile(r"^(\w+)\[(.+)\]$")
1515

1616

17+
@nox.session(reuse_venv=True)
18+
def manage(session: Session) -> None:
19+
session.install("-r", "requirements.txt")
20+
session.install("idom[stable]")
21+
session.install("-e", ".")
22+
session.chdir("tests")
23+
24+
build_js_on_commands = ["runserver"]
25+
if set(session.posargs).intersection(build_js_on_commands):
26+
session.run("python", "manage.py", "build_js")
27+
28+
session.run("python", "manage.py", *session.posargs)
29+
30+
1731
@nox.session(reuse_venv=True)
1832
def format(session: Session) -> None:
1933
install_requirements_file(session, "check-style")
@@ -35,6 +49,7 @@ def test_suite(session: Session) -> None:
3549
session.env["IDOM_DEBUG_MODE"] = "1"
3650
install_requirements_file(session, "test-env")
3751
session.install(".[all]")
52+
session.chdir("tests")
3853
session.run("figure-it-out")
3954

4055

requirements/test-env.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
django<4.0.0 # Django Library
2-
daphne<4.0.0 # Production ASGI webserver
1+
django

src/django_idom/websocket_consumer.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from channels.generic.websocket import AsyncJsonWebsocketConsumer
66

7+
from idom.core.layout import Layout
78
from idom.core.dispatcher import dispatch_single_view
89
from idom.core.component import ComponentConstructor
910

@@ -18,17 +19,23 @@ def __init__(
1819
super().__init__(*args, **kwargs)
1920

2021
async def connect(self) -> None:
22+
await super().connect()
2123
self._idom_recv_queue = recv_queue = asyncio.Queue()
22-
self._idom_dispatcher_future = dispatch_single_view(
23-
self._idom_component_constructor,
24-
self.send_json,
25-
recv_queue.get,
24+
self._idom_dispatcher_future = asyncio.ensure_future(
25+
dispatch_single_view(
26+
Layout(self._idom_component_constructor()),
27+
self.send_json,
28+
recv_queue.get,
29+
)
2630
)
2731

2832
async def close(self, *args: Any, **kwargs: Any) -> None:
29-
self._idom_dispatcher_future.cancel()
33+
if self._idom_dispatcher_future.done():
34+
await self._idom_dispatcher_future
35+
else:
36+
self._idom_dispatcher_future.cancel()
3037
await asyncio.wait([self._idom_dispatcher_future])
31-
super().close(*args, **kwargs)
38+
await super().close(*args, **kwargs)
3239

3340
async def receive_json(self, content: Any, **kwargs: Any) -> None:
3441
await self._idom_recv_queue.put(content)

tests/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
test_app/static/build.js

tests/js/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Javascript
2+
node_modules

0 commit comments

Comments
 (0)