New stuff.
This commit is contained in:
		
							parent
							
								
									5b78165fb7
								
							
						
					
					
						commit
						a1afaacb2e
					
				| @ -1,7 +1,9 @@ | ||||
| import pathlib | ||||
| import asyncio | ||||
| 
 | ||||
| import logging  | ||||
| import logging | ||||
| 
 | ||||
| from snek.view.threads import ThreadsView  | ||||
| 
 | ||||
| logging.basicConfig(level=logging.DEBUG) | ||||
| 
 | ||||
| @ -112,6 +114,7 @@ class Application(BaseApplication): | ||||
|         self.router.add_get("/http-photo", self.handle_http_photo) | ||||
|         self.router.add_get("/rpc.ws", RPCView) | ||||
|         self.router.add_view("/channel/{channel}.html", WebView) | ||||
|         self.router.add_view("/threads.html", ThreadsView) | ||||
| 
 | ||||
|         self.add_subapp( | ||||
|             "/docs", | ||||
|  | ||||
| @ -1,3 +1,4 @@ | ||||
| from snek.model.channel_message import ChannelMessageModel | ||||
| from snek.system.model import BaseModel, ModelField | ||||
| 
 | ||||
| 
 | ||||
| @ -10,3 +11,11 @@ class ChannelModel(BaseModel): | ||||
|     is_listed = ModelField(name="is_listed", required=True, kind=bool, value=True) | ||||
|     index = ModelField(name="index", required=True, kind=int, value=1000) | ||||
|     last_message_on = ModelField(name="last_message_on", required=False, kind=str) | ||||
| 
 | ||||
|     async def get_last_message(self)->ChannelMessageModel: | ||||
|         async for model in self.app.services.channel_message.query("SELECT * FROM channel_message WHERE channel_uid=:channel_uid ORDER BY created_at DESC LIMIT 1",dict(channel_uid=self['uid'])): | ||||
|             return model  | ||||
|         return None | ||||
| 
 | ||||
|     async def get_members(self): | ||||
|         return await self.app.services.channel_member.find(channel_uid=self['uid'],deleted_at=None,is_banned=False) | ||||
| @ -14,3 +14,27 @@ class ChannelMemberModel(BaseModel): | ||||
|     is_muted = ModelField(name="is_muted", required=True, kind=bool, value=False) | ||||
|     is_banned = ModelField(name="is_banned", required=True, kind=bool, value=False) | ||||
|     new_count = ModelField(name="new_count", required=False, kind=int, value=0) | ||||
| 
 | ||||
|     async def get_user(self): | ||||
|         return await self.app.services.user.get(uid=self['user_uid']) | ||||
|      | ||||
|     async def get_channel(self): | ||||
|         return await self.app.services.channel.get(uid=self['channel_uid']) | ||||
| 
 | ||||
|     async def get_name(self): | ||||
|         if self["channel_uid"] == "dm": | ||||
|             user = await self.get_other_dm_user() | ||||
|             return user['nick'] | ||||
|         channel = await self.get_channel() | ||||
|         return channel['name'] | ||||
| 
 | ||||
|     async def get_other_dm_user(self): | ||||
|         channel = await self.get_channel() | ||||
|         if channel["tag"] != "dm": | ||||
|             return None | ||||
|          | ||||
|         async for model in self.app.services.channel_member.find(channel_uid=channel['uid']): | ||||
|             if model["uid"] != self['uid']: | ||||
|                 return await self.app.services.user.get(uid=model["user_uid"]) | ||||
|         return await self.get_user() | ||||
|          | ||||
| @ -1,3 +1,4 @@ | ||||
| from snek.model.user import UserModel | ||||
| from snek.system.model import BaseModel, ModelField | ||||
| 
 | ||||
| 
 | ||||
| @ -6,3 +7,9 @@ class ChannelMessageModel(BaseModel): | ||||
|     user_uid = ModelField(name="user_uid", required=True, kind=str) | ||||
|     message = ModelField(name="message", required=True, kind=str) | ||||
|     html = ModelField(name="html", required=False, kind=str) | ||||
| 
 | ||||
|     async def get_user(self)->UserModel: | ||||
|         return await self.app.services.user.get(uid=self["user_uid"]) | ||||
|      | ||||
|     async def get_channel(self): | ||||
|         return await self.app.services.channel.get(uid=self["channel_uid"]) | ||||
| @ -31,3 +31,7 @@ class UserModel(BaseModel): | ||||
|     password = ModelField(name="password", required=True, min_length=1) | ||||
| 
 | ||||
|     last_ping = ModelField(name="last_ping", required=False, kind=str) | ||||
| 
 | ||||
|     async def get_channel_members(self): | ||||
|         async for channel_member in self.app.services.channel_member.find(user_uid=self['uid'],is_banned=False,deleted_at=None): | ||||
|             yield channel_member | ||||
|  | ||||
| @ -32,9 +32,9 @@ class NotificationService(BaseService): | ||||
|         user = await self.services.user.get(uid=channel_message["user_uid"]) | ||||
|         async for channel_member in self.services.channel_member.find( | ||||
|             channel_uid=channel_message["channel_uid"], | ||||
|             #is_banned=False, | ||||
|             #is_muted=False, | ||||
|             #deleted_at=None, | ||||
|             is_banned=False, | ||||
|             is_muted=False, | ||||
|             deleted_at=None, | ||||
|         ): | ||||
|             if not channel_member['new_count']: | ||||
|                 channel_member['new_count'] = 0 | ||||
|  | ||||
| @ -20,7 +20,7 @@ class BaseMapper: | ||||
|         return self.app.db | ||||
| 
 | ||||
|     async def new(self): | ||||
|         return self.model_class(mapper=self) | ||||
|         return self.model_class(mapper=self, app=self.app) | ||||
| 
 | ||||
|     @property | ||||
|     def table(self): | ||||
|  | ||||
| @ -270,7 +270,8 @@ class BaseModel: | ||||
|         return self | ||||
| 
 | ||||
|     def __init__(self, *args, **kwargs): | ||||
|         self._mapper = None | ||||
|         self._mapper = kwargs.get("mapper") | ||||
|         self.app = kwargs.get("app") | ||||
|         self.fields = {} | ||||
|         for key in dir(self.__class__): | ||||
|             obj = getattr(self.__class__, key) | ||||
|  | ||||
| @ -26,7 +26,7 @@ | ||||
|       <a class="no-select" href="/web.html">🏠</a> | ||||
|       <a class="no-select" href="/search-user.html">🔍</a> | ||||
|       <a class="no-select" style="display:none" id="install-button" href="#">📥</a> | ||||
|       <a class="no-select" href="/web.html">👥</a> | ||||
|       <a class="no-select" href="/threads.html">👥</a> | ||||
|       <a class="no-select" href="#">⚙️</a> | ||||
|       <a class="no-select" href="/logout.html">🔒</a> | ||||
|     </nav> | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user