Commit Graph

314 Commits

Author SHA1 Message Date
Andrew Godwin
f9ef08b0aa Flake8 fix 2016-10-05 15:37:55 -07:00
Andrew Godwin
0ed04a9c06 Fix tests for new non-immediate sending 2016-10-05 15:32:37 -07:00
Andrew Godwin
0826b7997f Send messages after the end of consumers 2016-10-05 14:49:46 -07:00
Andrew Godwin
db0d2975a0 Remove middleware approach, change to simpler one 2016-10-05 12:06:34 -07:00
Andrew Godwin
0fcb93acc2 Mostly-complete middleware version 2016-10-05 11:42:46 -07:00
Andrew Godwin
dcfaf4122b Work in progress towards accepting websockets explicitly 2016-10-05 10:45:51 -07:00
Sam Bolgert
b115f8fa04 Update channel_session decorator to rehydrate http_session (#348)
* Update channel_session decorator to rehydrate http_session

Update the http_session decorator to write the http session key
to the channel_session when available. This allows the channel_session
decorator to rehydrate the http_session after the initial websocket
connection.

closes #318

* Add persist=True option to http_session

* Add explicit option to store the session key in the channel session
* Update docs
* Add test case

* Add channel_and_http_session decorator

This decorator enables both sessions and maintains
the http_session for the lifetime of the websocket connection.
2016-09-29 11:08:44 -07:00
Carles Barrobés
d4f7125cd5 Fix type for request.META['SERVER_PORT'] (#378)
Django documentation states that it is a string.
Fixes #366
2016-09-23 11:37:45 -07:00
Benjamin Bach
06fd1f8ada Add conventional request.META['PATH_INFO'] - fixes benjaoming/django-nyt#27 (#375) 2016-09-22 13:57:30 -07:00
Krukov D
5464cba742 Iimprovements for test client (#352)
* Json encoding only for not string text at HttpClient

* Decode received content if possible

* Check that content received

* Using json kwarg at receive method to decode message text content

* Wrap decorator function at channel_session_user_from_http

* Cleanup

* Arbitrary indent. sorry
2016-09-12 11:28:12 +01:00
Krukov D
075897d910 Inbound tests (#351)
* Added groups as Binding attr for easy groups_names definition

* Binding: inbound - updating fields that only in fields attribute

* Added tests for inbound part of binding #343

* Fix for flake8 checker

* Revert "Added groups as Binding attr for easy groups_names definition"

This reverts commit 009b4adbee534d4ccbea191ce2523a0edb09d407.

* Using group_names at inbound tests
2016-09-12 11:27:42 +01:00
Luke Hodkinson
079558d5b5 Too many threads bug in threaded worker. (#334)
* Use a mixin for common test-case code. This way we can have both
a regular channels test-case, and a transaction test-case, too.

* Adding a reference to django-cq.

* Adding the ability to launch a number of workers in threads.
This is to try and help reduce memory consumption.

* Adding a signal for process level worker startups.

* Cleaning up the threaded worker code.

* Use Python 2.7 friendly code.

* Making the runworker command show a little more information
about how many threads are running.

* Moving the worker ready signal into a method in order to support
polymorphic behavior.

* Ugh, I'm an idiot. Was launching the wrong run.

* Adding a call to the workers' `ready` in `runserver`.

* Fixed a bug whereby too many threads were being
used when threaded workers were used.
2016-09-02 08:02:29 -07:00
Luke Hodkinson
0d25860cf2 Run workers in threads. (#322)
* Use a mixin for common test-case code. This way we can have both
a regular channels test-case, and a transaction test-case, too.

* Adding a reference to django-cq.

* Adding the ability to launch a number of workers in threads.
This is to try and help reduce memory consumption.

* Adding a signal for process level worker startups.

* Cleaning up the threaded worker code.

* Use Python 2.7 friendly code.

* Making the runworker command show a little more information
about how many threads are running.

* Moving the worker ready signal into a method in order to support
polymorphic behavior.

* Ugh, I'm an idiot. Was launching the wrong run.

* Adding a call to the workers' `ready` in `runserver`.
2016-08-31 21:26:03 -07:00
Krukov D
b62ea7dd0a Naming consumers that are classmethods (#324) 2016-08-29 10:37:09 -07:00
Krukov D
e6236f79e6 Move the groups at class definition (#321) 2016-08-26 12:12:14 -07:00
Frank Pape
c8fdea6460 Add send_and_consume method to HttpClient to match base Client behavior. Change argument ordering in send method to match base client. Fix repeated "live cycle" error in docstrings. (#320) 2016-08-26 12:04:38 -07:00
Tim Watts
39339e66bc Remove invalid test. FileResponse requires a file object. (#311)
* Remove invalid test. FileResponse requires a file object.

* rm unused imports
2016-08-24 17:39:18 -07:00
Andrew Godwin
f699d112b0 Fixed #309: Missed a double decode for header coalescing 2016-08-23 20:10:15 -07:00
AlexejStukov
fcb2875b53 fixed usage of group_names in *_change_receiver (#306)
* fixed usage of group_names in *_change_receiver

group_names was missing second arg (action)

* fixed group_names to include action

* made group_names a classmethod
2016-08-23 10:13:46 -07:00
Luke Hodkinson
6649afce8e Use a mixin for common test-case code. This way we can have both (#305)
a regular channels test-case, and a transaction test-case, too.
2016-08-20 17:53:54 -07:00
Tyson Clugg
57fa3bed67 Implement the data binding behaviour from Django DDP. (#301)
* Implement the data binding behaviour from Django DDP.

Correct dispatch of create/update/delete according to how group_names change
when compared between pre and post save/delete.

* Fix tests for databinding improvements.
2016-08-16 16:49:18 +10:00
Oskar Hahn
32568dc879 Start only one worker with the nothreading option. (#298)
Reuse the nothreading option of the runserver command to only start one
worker.
2016-08-15 11:18:24 +10:00
Francis Mwangi
fb2e9320c2 fixed typo (#296) 2016-08-14 12:08:00 +10:00
AlexejStukov
0f1ac3d08b Fix member serialization in WebsocketBindingWithMembers (#292)
* Fix member serialization in WebsocketBindingWithMembers

* pep fixes

* allow usage of 'dot'-notation in send_members

* replace dots for dictionary

* single quotes
2016-08-10 21:55:51 -07:00
Andrew Godwin
f682298341 Show daphne server logs in runserver 2016-08-05 22:17:59 -07:00
AlexejStukov
0bc1cee103 Easy application of decorators to Bindings (#281)
* Added get_handler

Added a get_handler method that applies decorators to the consumer-classmethod

* added imports for decorators

* Added get_handler to WebsocketBinding

* Fixed missing import

* channel_session_user defaults to True

* removed user-transfer from http

would only work in a connect-method

* removed unused import
2016-08-05 00:12:59 -07:00
Andrew Godwin
2d97ab2cc7 Releasing version 0.17.2 2016-08-04 16:55:43 -07:00
Flavio Curella
9bd8bcf652 pass subprotocols if defined (#282) 2016-08-04 15:30:52 -07:00
Andrew Godwin
4724ee4529 Mark WebsocketBindingWithMembers as abstract 2016-07-28 11:12:51 +01:00
AlexejStukov
77f41ce1a9 Added WebsocketBindingWithMembers (#262)
* Added WebsocketBindingWithMembers

WebsocketBindingWithMembers inherits WebsocketBinding and additionally enables sending of member variables, properties and methods.

* pep fixes

* pep fixes

* Changed to Mixin

More flexible this way; also checking if members are callable now, not just a try-except.

* moved BindingWithMembersMixin to base.py

* moved BindingWithMembersMixin to base.py

* undo moving to base.py

* undo moving to base.py; undo Mixin

* use DjangoJSONEncoder to serialize members

* missing self

* removed nasty whitespace
2016-07-28 10:55:28 +01:00
Andrew Godwin
d027c57dbf Fix typo in attrs error message 2016-07-28 10:49:37 +01:00
Krukov D
d9a943a2d5 as_route method for class based consumers (#266)
* Relative imports at the base of generic

* Added as_route method to generic consumers

* Tests for as_route method for generic consumers

* Now as_route method does not create new object + less verbose creating new object (tests)

* Fix flake8 version

* Fix blank line (flake8)

* Separate kwargs of as_route method as filters and nonfilters kwargs.

* `kwargs` for filters and `attrs` for class body at `as_route` method
2016-07-28 10:48:57 +01:00
Emett Speer
efee5e0d34 Fixed issue 272 2016-07-26 17:05:18 -07:00
Krukov Dima
72039cd3e9 A few tests for binding (outbound) 2016-07-24 13:13:21 +00:00
Krukov Dima
05b0073d8e Fix calling class registration 2016-07-24 13:11:58 +00:00
Krukov Dima
a3e779fe9c Json encoding/decoding for send/receive content at the HttpClient 2016-07-24 13:10:57 +00:00
Krukov Dima
3c03b44af7 Added method join_group to the test Client 2016-07-24 13:08:31 +00:00
Andrew Godwin
04cfafeaf5 Releasing 0.17.1 2016-07-22 21:57:26 -04:00
Andrew Godwin
b76bf3c1cc Add worker_ready signal 2016-07-22 21:51:28 -04:00
Andrew Godwin
a4c8602ea1 Move fields check to register so it happens on server start 2016-07-22 21:40:51 -04:00
AlexejStukov
4625266db6 raise error if self.fields is empty 2016-07-22 08:17:49 +02:00
AlexejStukov
6eda634746 whitespace 2016-07-21 21:08:47 +02:00
AlexejStukov
d07600f04b Security fix - every field of a model is send - even password
Atm WebsocketBinding sends every field of a model, even the password of a user. Users of the class should have to think about which fields they want to send to the user. Also added a more intuitive option for sending all fields.
2016-07-21 21:06:25 +02:00
Andrew Godwin
435fd89be8 Merge pull request #261 from AlexejStukov/patch-8
move encoding from serialize to trigger_outbound
2016-07-21 11:30:48 -04:00
AlexejStukov
16c80c3900 fixed whitespace 2016-07-21 09:52:43 +02:00
AlexejStukov
014afb8b63 fixed whitespace 2016-07-21 09:51:51 +02:00
AlexejStukov
38430b41d1 add encode to WbesocketBinding 2016-07-21 09:33:28 +02:00
AlexejStukov
d7b99fa935 added encode to Binding 2016-07-21 09:29:44 +02:00
AlexejStukov
74c72f0126 move assert where it is needed 2016-07-21 08:55:30 +02:00
AlexejStukov
6104f89925 added encoding and self.stream-check to trigger_outbound 2016-07-21 08:53:24 +02:00