parent
4ae5ff5fcb
commit
b334590d1f
@ -1,32 +1,35 @@
|
||||
from werobot.session import SessionStorage
|
||||
from werobot.utils import json_loads, json_dumps
|
||||
|
||||
from djangoblog.utils import cache
|
||||
|
||||
from djangoblog.utils import cache # 假设这是一个封装了 Django 缓存的工具模块
|
||||
|
||||
class MemcacheStorage(SessionStorage):
|
||||
def __init__(self, prefix='ws_'):
|
||||
self.prefix = prefix
|
||||
self.cache = cache
|
||||
self.prefix = prefix # 会话键前缀,避免与其他缓存冲突
|
||||
self.cache = cache # Django 缓存实例,如 Redis 或 Memcached
|
||||
|
||||
@property
|
||||
def is_available(self):
|
||||
# 检查当前存储是否可用,通过设置和获取一个测试值
|
||||
value = "1"
|
||||
self.set('checkavaliable', value=value)
|
||||
return value == self.get('checkavaliable')
|
||||
|
||||
def key_name(self, s):
|
||||
return '{prefix}{s}'.format(prefix=self.prefix, s=s)
|
||||
# 为每个会话 ID 添加前缀,生成唯一的缓存键
|
||||
return f'{self.prefix}{s}'
|
||||
|
||||
def get(self, id):
|
||||
# 根据 ID 获取会话数据,如果不存在则返回空字典字符串 '{}'
|
||||
id = self.key_name(id)
|
||||
session_json = self.cache.get(id) or '{}'
|
||||
return json_loads(session_json)
|
||||
return json_loads(session_json) # 反序列化为 Python 字典
|
||||
|
||||
def set(self, id, value):
|
||||
# 将会话数据序列化后存入缓存
|
||||
id = self.key_name(id)
|
||||
self.cache.set(id, json_dumps(value))
|
||||
|
||||
def delete(self, id):
|
||||
# 删除指定的会话数据
|
||||
id = self.key_name(id)
|
||||
self.cache.delete(id)
|
||||
self.cache.delete(id)
|
||||
@ -1,5 +1,5 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class ServermanagerConfig(AppConfig):
|
||||
name = 'servermanager'
|
||||
# 定义本 Django app 的名称,需与项目中的 app 文件夹名称一致
|
||||
name = 'servermanager'
|
||||
@ -1,33 +1,32 @@
|
||||
from django.db import models
|
||||
|
||||
|
||||
# Create your models here.
|
||||
# 命令模型,用于存储可在微信中执行的系统命令
|
||||
class commands(models.Model):
|
||||
title = models.CharField('命令标题', max_length=300)
|
||||
command = models.CharField('命令', max_length=2000)
|
||||
describe = models.CharField('命令描述', max_length=300)
|
||||
creation_time = models.DateTimeField('创建时间', auto_now_add=True)
|
||||
last_modify_time = models.DateTimeField('修改时间', auto_now=True)
|
||||
title = models.CharField('命令标题', max_length=300) # 命令展示名称
|
||||
command = models.CharField('命令', max_length=2000) # 实际要执行的命令内容
|
||||
describe = models.CharField('命令描述', max_length=300) # 命令用途描述
|
||||
creation_time = models.DateTimeField('创建时间', auto_now_add=True) # 创建时间(自动)
|
||||
last_modify_time = models.DateTimeField('修改时间', auto_now=True) # 最后修改时间(自动)
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
return self.title # 在后台等地方显示命令标题
|
||||
|
||||
class Meta:
|
||||
verbose_name = '命令'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
verbose_name = '命令' # 单数显示名
|
||||
verbose_name_plural = verbose_name # 复数显示名(与单数相同)
|
||||
|
||||
# 邮件发送日志模型,记录每次邮件发送的详情
|
||||
class EmailSendLog(models.Model):
|
||||
emailto = models.CharField('收件人', max_length=300)
|
||||
title = models.CharField('邮件标题', max_length=2000)
|
||||
content = models.TextField('邮件内容')
|
||||
send_result = models.BooleanField('结果', default=False)
|
||||
creation_time = models.DateTimeField('创建时间', auto_now_add=True)
|
||||
emailto = models.CharField('收件人', max_length=300) # 收件人邮箱地址
|
||||
title = models.CharField('邮件标题', max_length=2000) # 邮件标题
|
||||
content = models.TextField('邮件内容') # 邮件正文内容
|
||||
send_result = models.BooleanField('结果', default=False) # 发送是否成功
|
||||
creation_time = models.DateTimeField('创建时间', auto_now_add=True) # 发送时间
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
return self.title # 显示邮件标题
|
||||
|
||||
class Meta:
|
||||
verbose_name = '邮件发送log'
|
||||
verbose_name_plural = verbose_name
|
||||
ordering = ['-creation_time']
|
||||
verbose_name = '邮件发送log' # 单数显示名
|
||||
verbose_name_plural = verbose_name # 复数显示名
|
||||
ordering = ['-creation_time'] # 默认按创建时间倒序排列(最新的在前)
|
||||
@ -1,10 +1,11 @@
|
||||
from django.urls import path
|
||||
from werobot.contrib.django import make_view
|
||||
from werobot.contrib.django import make_view # WeRoBot 提供的 Django 视图适配器
|
||||
|
||||
from .robot import robot
|
||||
from .robot import robot # 导入我们初始化的机器人实例
|
||||
|
||||
app_name = "servermanager" # 应用命名空间
|
||||
|
||||
app_name = "servermanager"
|
||||
urlpatterns = [
|
||||
# 将 /robot 路径映射到 WeRoBot 的处理视图
|
||||
path(r'robot', make_view(robot)),
|
||||
|
||||
]
|
||||
]
|
||||
Loading…
Reference in new issue