Added channel list.
This commit is contained in:
parent
b6eba60843
commit
3baa6e53df
@ -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
|
||||
|
@ -33,11 +33,9 @@
|
||||
<aside class="sidebar">
|
||||
<h2 class="no-select">Chat Rooms</h2>
|
||||
<ul>
|
||||
<li><a class="no-select" href="#">General</a></li>
|
||||
<li><a class="no-select" href="#">Development</a></li>
|
||||
<li><a class="no-select" href="#">Support</a></li>
|
||||
<li><a class="no-select" href="#">Random</a></li>
|
||||
|
||||
{% for channel in channels %}
|
||||
<li><a class="no-select" href="/web/{{channel['channel_uid']}}.html">{{channel['label']}}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</aside>
|
||||
{% endblock %}
|
||||
|
@ -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})
|
Loading…
Reference in New Issue
Block a user