diff --git a/src/snek/service/channel.py b/src/snek/service/channel.py index a1ff9e6..95ceef7 100644 --- a/src/snek/service/channel.py +++ b/src/snek/service/channel.py @@ -86,6 +86,15 @@ class ChannelService(BaseService): if (datetime.fromisoformat(now()) - datetime.fromisoformat(user["last_ping"])).total_seconds() < 20: yield user + async def get_for_user(self, user_uid): + async for channel_member in self.services.channel_member.find( + user_uid=user_uid, + is_banned=False, + deleted_at=None, + ): + channel = await self.get(uid=channel_member["channel_uid"]) + yield channel + async def ensure_public_channel(self, created_by_uid): model = await self.get(is_listed=True, tag="public") is_moderator = False diff --git a/src/snek/templates/app.html b/src/snek/templates/app.html index 07fda6d..c50ff60 100644 --- a/src/snek/templates/app.html +++ b/src/snek/templates/app.html @@ -33,11 +33,9 @@ {% endblock %} diff --git a/src/snek/view/web.py b/src/snek/view/web.py index 8643b6d..412ba7d 100644 --- a/src/snek/view/web.py +++ b/src/snek/view/web.py @@ -46,121 +46,8 @@ class WebView(BaseView): messages = [await self.app.services.channel_message.to_extended_dict(message) for message in await self.app.services.channel_message.offset( channel["uid"] )] - return await self.render_template("web.html", {"channel": channel,"user": user,"messages": messages}) - - - - - async def get2(self): - - if self.login_required and not self.session.get("logged_in"): - return web.HTTPFound("/") - - channel = None - - if not self.request.match_info.get("channel"): - channel = await self.app.services.channel.get( - tag="public",deleted_at=None - ) - if channel: - return web.HTTPFound("/channel/{}.html".format(channel["uid"])) - if not channel: - print(self.request.match_info.get("channel"), flush=True) - channel = await self.app.services.channel.get( - uid=str(self.request.match_info.get("channel")) - ) - if channel: - print(f'found {channel["uid"]} {channel["name"]}', flush=True) - if not channel: - - name = "#" + str(self.request.match_info.get("channel")).lstrip("#") - - print("TADAAA:",name, flush=True) - - channel = await self.app.services.channel.get( - label=name,deleted_at=None - ) - if not channel: - user = await self.app.services.user.get(uid=self.request.match_info.get("channel")) - if not user: - print("HIERRR EXIT\n",flush=True) - return web.HTTPNotFound() - - print("FOUND USer: ",user['username'],flush=True) - own_channels = self.app.services.channel_member.find( - user_uid=self.session.get("uid"),deleted_at=None - ) - user_channels = self.app.services.channel_member.find( - user_uid=user['uid'],deleted_at=None - ) - found_channel = False - async for user_channel in user_channels: - if found_channel: - break - async for own_channel in own_channels: - if user_channel["channel_uid"] == own_channel["channel_uid"]: - channel = await self.app.services.channel.get(uid=user_channel["channel_uid"]) - if channel['tag'] == 'dm': - found_channel = True - print("FOUND DM\n",flush=True) - break - channel = None - else: - print("Channel mistmatch!\n",flush=True) - if found_channel: - print(f"FOUND CHANNEL; {channel['uid']}\n",flush=True) - return web.HTTPFound("/channel/{}.html".format(channel["uid"])) - - channel = await self.app.services.channel.create( - label="Direct Message", - created_by_uid=self.session.get("uid"), - tag="dm", - description="Direct Chat", - is_private=True, - is_listed=True - ) - print(f"UID NEW CHANNELr: {channel['uid']}\n",flush=True) - channel_member_self = await self.app.services.channel_member.create( - channel_uid=channel['uid'], - user_uid=self.session.get("uid"), - is_moderator=True - ) - print(f"UID NEW CHANNEL_MEMBER SELF: {channel_member_self['uid']}\n",flush=True) - channel_member_user = await self.app.services.channel_member.create( - channel_uid=channel['uid'], - user_uid=user["uid"], - is_moderator=True - ) - print(f"UID NEW CHANNEL_MEMBER USER: {channel_member_user['uid']}\n",flush=True) - self.app.db.commit() - print(f"REDIRECT NAAR GOEDE: {channel['uid']}\n",flush=True) - return web.HTTPFound("/channel/{}.html".format(channel["uid"])) - - if not channel: - print("NOT found!\n",flush=True) - return web.HTTPNotFound() - print(channel['uid'],":",self.session.get('uid'),flush=True) - from pprint import pprint as pp - pp(channel) - channel_member = await self.app.services.channel_member.get( - channel_uid=channel["uid"], user_uid=self.session.get("uid"),deleted_at=None - ) - if not channel_member: - print("NO CHANNEL_MEMBER") - return web.HTTPNotFound() - - print("HIER\n",flush=True) - print("UUID=",self.session.get("uid"),flush=True) - user = await self.app.services.user.get(uid=self.session.get("uid")) - if not user: - return web.HTTPNotFound() - - if self.request.path.endswith(".json"): - return await super().get() - - messages = [await self.app.services.channel_message.to_extended_dict(message) for message in await self.app.services.channel_message.offset( - channel["uid"] - )] - - - return await self.render_template("web.html", {"channel": channel_member,"user": user,"messages": messages}) + channels = [] + async for subscribed_channel in self.app.services.channel_member.find(user_uid=self.session.get("uid"), deleted_at=None, is_banned=False): + print("CHANNELL!!\n",flush=True) + channels.append(subscribed_channel) + return await self.render_template("web.html", {"channel": channel,"user": user,"messages": messages , "channels": channels}) \ No newline at end of file