Update.
This commit is contained in:
parent
0341e2f2d8
commit
9d1f6831df
src/snek
@ -6,8 +6,10 @@ class ChannelMessageService(BaseService):
|
|||||||
mapper_name = "channel_message"
|
mapper_name = "channel_message"
|
||||||
|
|
||||||
async def maintenance(self):
|
async def maintenance(self):
|
||||||
|
args = {}
|
||||||
async for message in self.find():
|
async for message in self.find():
|
||||||
updated_at = message["updated_at"]
|
updated_at = message["updated_at"]
|
||||||
|
message["is_final"] = True
|
||||||
html = message["html"]
|
html = message["html"]
|
||||||
await self.save(message)
|
await self.save(message)
|
||||||
|
|
||||||
@ -20,8 +22,21 @@ class ChannelMessageService(BaseService):
|
|||||||
)
|
)
|
||||||
if html != message["html"]:
|
if html != message["html"]:
|
||||||
print("Reredefined message", message["uid"])
|
print("Reredefined message", message["uid"])
|
||||||
|
|
||||||
|
while True:
|
||||||
|
changed = 0
|
||||||
|
async for message in self.find(is_final=False):
|
||||||
|
message["is_final"] = True
|
||||||
|
await self.save(message)
|
||||||
|
changed += 1
|
||||||
|
async for message in self.find(is_final=None):
|
||||||
|
message["is_final"] = False
|
||||||
|
await self.save(message)
|
||||||
|
changed += 1
|
||||||
|
if not changed:
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
async def create(self, channel_uid, user_uid, message, is_final=True):
|
async def create(self, channel_uid, user_uid, message, is_final=True):
|
||||||
model = await self.new()
|
model = await self.new()
|
||||||
|
|
||||||
@ -87,6 +102,7 @@ class ChannelMessageService(BaseService):
|
|||||||
model["html"] = whitelist_attributes(model["html"])
|
model["html"] = whitelist_attributes(model["html"])
|
||||||
return await super().save(model)
|
return await super().save(model)
|
||||||
|
|
||||||
|
|
||||||
async def offset(self, channel_uid, page=0, timestamp=None, page_size=30):
|
async def offset(self, channel_uid, page=0, timestamp=None, page_size=30):
|
||||||
channel = await self.services.channel.get(uid=channel_uid)
|
channel = await self.services.channel.get(uid=channel_uid)
|
||||||
if not channel:
|
if not channel:
|
||||||
|
@ -44,7 +44,6 @@ class ChatService(BaseService):
|
|||||||
channel_message["is_final"] = is_final
|
channel_message["is_final"] = is_final
|
||||||
if not channel_message["is_final"]:
|
if not channel_message["is_final"]:
|
||||||
async with self.app.no_save():
|
async with self.app.no_save():
|
||||||
channel_message["updated_at"] = now()
|
|
||||||
await self.services.channel_message.save(channel_message)
|
await self.services.channel_message.save(channel_message)
|
||||||
else:
|
else:
|
||||||
await self.services.channel_message.save(channel_message)
|
await self.services.channel_message.save(channel_message)
|
||||||
|
@ -31,7 +31,11 @@ class BaseMapper:
|
|||||||
database_exception = None
|
database_exception = None
|
||||||
for x in range(20):
|
for x in range(20):
|
||||||
try:
|
try:
|
||||||
|
print("happeninggg!!")
|
||||||
|
print(*args,**kwargs)
|
||||||
|
print(self.table_name)
|
||||||
result = func(*args, **kwargs)
|
result = func(*args, **kwargs)
|
||||||
|
print("REsult:",result)
|
||||||
self.db.commit()
|
self.db.commit()
|
||||||
return result
|
return result
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
@ -267,6 +267,15 @@ class RPCView(BaseView):
|
|||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
async def send_message(self, channel_uid, message, is_final=True):
|
||||||
|
self._require_login()
|
||||||
|
message = await self.services.chat.send(
|
||||||
|
self.user_uid, channel_uid, message, is_final
|
||||||
|
)
|
||||||
|
|
||||||
|
return message["uid"]
|
||||||
|
|
||||||
|
|
||||||
async def start_container(self, channel_uid):
|
async def start_container(self, channel_uid):
|
||||||
self._require_login()
|
self._require_login()
|
||||||
channel_member = await self.services.channel_member.get(
|
channel_member = await self.services.channel_member.get(
|
||||||
@ -294,6 +303,8 @@ class RPCView(BaseView):
|
|||||||
raise Exception("Not allowed")
|
raise Exception("Not allowed")
|
||||||
return await self.services.container.get_status(channel_uid)
|
return await self.services.container.get_status(channel_uid)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def finalize_message(self, message_uid):
|
async def finalize_message(self, message_uid):
|
||||||
self._require_login()
|
self._require_login()
|
||||||
message = await self.services.channel_message.get(message_uid)
|
message = await self.services.channel_message.get(message_uid)
|
||||||
@ -308,32 +319,17 @@ class RPCView(BaseView):
|
|||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
async def _finalize_message_task(self, message_uid, timeout=5):
|
|
||||||
if self._finalize_task:
|
|
||||||
self._finalize_task.cancel()
|
|
||||||
await asyncio.sleep(timeout)
|
|
||||||
await self.services.chat.finalize(message_uid)
|
|
||||||
|
|
||||||
async def update_message_text(self, message_uid, text):
|
async def update_message_text(self, message_uid, text):
|
||||||
self._require_login()
|
|
||||||
message = await self.services.channel_message.get(message_uid, user_uid=None)
|
|
||||||
if message and message['message'] == text:
|
|
||||||
return message_uid
|
|
||||||
if not message or message["is_final"]:
|
|
||||||
return await self.create_message(text)
|
|
||||||
async with self.app.no_save():
|
async with self.app.no_save():
|
||||||
|
self._require_login()
|
||||||
|
message = await self.services.channel_message.get(message_uid)
|
||||||
if message["user_uid"] != self.user_uid:
|
if message["user_uid"] != self.user_uid:
|
||||||
raise Exception("Not allowed")
|
raise Exception("Not allowed")
|
||||||
|
|
||||||
if hasattr(message, "get_seconds_since_last_update"):
|
if message.get_seconds_since_last_update() > 5:
|
||||||
seconds_since_last_update = message.get_seconds_since_last_update()
|
|
||||||
else:
|
|
||||||
seconds_since_last_update = 0
|
|
||||||
|
|
||||||
if seconds_since_last_update > 5:
|
|
||||||
return {
|
return {
|
||||||
"error": "Message too old",
|
"error": "Message too old",
|
||||||
"seconds_since_last_update": seconds_since_last_update,
|
"seconds_since_last_update": message.get_seconds_since_last_update(),
|
||||||
"success": False,
|
"success": False,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +340,7 @@ class RPCView(BaseView):
|
|||||||
message["deleted_at"] = None
|
message["deleted_at"] = None
|
||||||
|
|
||||||
await self.services.channel_message.save(message)
|
await self.services.channel_message.save(message)
|
||||||
data = dict(message.record)
|
data = message.record
|
||||||
data["text"] = message["message"]
|
data["text"] = message["message"]
|
||||||
data["message_uid"] = message_uid
|
data["message_uid"] = message_uid
|
||||||
|
|
||||||
@ -353,16 +349,15 @@ class RPCView(BaseView):
|
|||||||
{
|
{
|
||||||
"channel_uid": message["channel_uid"],
|
"channel_uid": message["channel_uid"],
|
||||||
"event": "update_message_text",
|
"event": "update_message_text",
|
||||||
"data": data,
|
"data": message.record,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
if self._finalize_task:
|
return {"success": True}
|
||||||
self._finalize_task.cancel()
|
|
||||||
self._finalize_task = asyncio.create_task(self._finalize_message_task(message_uid, timeout=5))
|
|
||||||
|
|
||||||
|
|
||||||
return {"success": True}
|
|
||||||
|
|
||||||
async def clear_channel(self, channel_uid):
|
async def clear_channel(self, channel_uid):
|
||||||
self._require_login()
|
self._require_login()
|
||||||
user = await self.services.user.get(uid=self.user_uid)
|
user = await self.services.user.get(uid=self.user_uid)
|
||||||
@ -375,13 +370,6 @@ class RPCView(BaseView):
|
|||||||
await self.services.channel.save(channel)
|
await self.services.channel.save(channel)
|
||||||
return await self.services.channel_message.clear(channel_uid)
|
return await self.services.channel_message.clear(channel_uid)
|
||||||
|
|
||||||
async def send_message(self, channel_uid, message, is_final=True):
|
|
||||||
self._require_login()
|
|
||||||
message = await self.services.chat.send(
|
|
||||||
self.user_uid, channel_uid, message, is_final
|
|
||||||
)
|
|
||||||
|
|
||||||
return message["uid"]
|
|
||||||
|
|
||||||
async def echo(self, *args):
|
async def echo(self, *args):
|
||||||
self._require_login()
|
self._require_login()
|
||||||
|
Loading…
Reference in New Issue
Block a user