使用shup通道将通用和可扩展通道添加到管理模块。

shuup-admin-channel的Python项目详细描述


#Shup管理频道

:警告alpha版本

通知,无需重新加载页面。

安装"pip install shup admin channel"
2。将"shuup admin channel"添加到"已安装的应用程序"设置中
3。利润!这将使shuup在每个管理页面上加载脚本并连接到管理通道。

p<;shop-id>;\d+/`url模式。

这个加载项已经提供了一个js库来连接、监听和发送消息到频道。

xtheme resource injection用于将这个小库附加到每个shup管理请求。如果你不想注射,你必须黑名单"shup_admin_channel.resources:add_resources"`在你的设置中提供条目(请参见此处的操作方法)(https://shup.readthedocs.io/en/latest/ref/provides.html黑名单提供)。)


执行以下操作:

``js
///侦听"警报"命令消息
shuupadminchannel.events.on("已接收",(有效负载)=>;{
if(有效负载.command=="警报"){
messages.enqueue({
标记:有效负载.level,
text:payload.message
});
}
};
```

`payload`是通道发送的json对象。` payload.command`将包含从通道发送的命令,您可以检查是否有自定义命令。


\
消息:"员工用户您好!",
级别:"info"
};
```

这将向所有已登录的员工用户发送一条信息消息。` handler`是现有的使用者处理程序。如果不存在具有该名称的处理程序,不会执行任何操作。

我们的处理程序。

简单来说:我们基本上有两种类型的消息:

-从javascript发送到消费者的消息
-从后端发送到所有消费者(或一组消费者)的消息

其他员工用户(比如内部消息)。然后,您发送一条要广播的websocket消息,这里我们将介绍上面列出的两条可能的消息。

1。工作人员用户向频道发送消息
2。频道接收到消息并将其重新传输给所有连接的用户

现在假设您想要一个报告,该报告需要一段时间才能完成,但您不想让页面长时间加载。您可以编写使用者来处理此消息,并在报告完成时将消息发送回用户。这不需要将消息分发给其他使用者,您只需实现一个接收器处理程序即可。

只要发挥你的想象力:)

SendAlertReceiverHandler(对象):
name="send_alert"

@classmethod
异步定义句柄(cls,consumer,有效载荷:
消息=有效载荷。获取("消息")
级别=有效载荷。获取("级别")
如果没有(消息和级别):
返回

使用"handle""send""alert"类型将消息发送到房间组
waitconsumer.channel_layer.group_send(consumer.shop_room_name,{
"type":"handle_send_alert",
"message":消息,
"level":level
}
```

向管理通道的所有使用者发送消息,其中处理程序名称应为"handle\u send\u alert"。它基本上是一个消息广播器,它接收一条消息并重新传输给所有消费者。它可以直接返回某些内容给用户,但在本例中,我们将其传递给其他消费者。


\给那些信息。对于这些情况,必须实现使用者处理程序对象并将其添加到"管理通道使用者处理程序"提供的密钥中。

``py
Class OrderReceivedConsumerhandler(对象):
name="handle\u Order\u Received"

async def handle(self,有效载荷:
等待self.send(text_data=json.dumps({
"command":"alert",
"message":ugettext("收到新订单!"),
"level":"info"
})

```

当Django信号发送新订单时,将发送此特定的订单。


每个用户都连接到一个消费者,并且所有用户都将收到相同的消息。

检查[`handlers.py`](./shup-admin-u channel/handlers.py)。


\settings

-`shup-admin-u channel-order-received-u-enabled`启用/禁用新的order-received通知
-`shup-admin-u-channel-layer`-发送消息时要使用的通道层的名称
-` shup_admin_channel_settings_provider`-将向管理频道提供配置的对象。


\features

-添加通知以警告用户收到的新订单
-添加websocket命令以通过javascript
-添加一种解释频道的方法

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java理解泛型   java Guava:如何自定义减少多重映射?   java无法构建实体管理器工厂JPA/Hibernate   不区分大小写的LDAP搜索   在java中同时调用所有类对象中的方法   java做高级数字计算?2.1k等于2100等。。?   java Camel netty组件:未能创建选择器   exceljava。lang.ClassCastException:ExcelStreamAction无法强制转换为com。开放交响乐团。xwork2。行动   java避免对嵌套a4j:区域进行验证   java如何使一帧在1秒内显示50次,每次显示时消失   java一个HashMap的遍历,我得到NullPointerException   windows HP Stream 8平板电脑。。。Java swing JScrollPane滚动在触摸屏上不工作   java如何在运行时根据用户/程序员的需要自动增加数组的大小?