Skip to content

Commit

Permalink
Fix update bug
Browse files Browse the repository at this point in the history
  • Loading branch information
brodokk committed Dec 3, 2022
1 parent cad59b0 commit eac7a7b
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 78 deletions.
8 changes: 4 additions & 4 deletions bots/apollo.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,18 +120,18 @@ async def get_events(self, guild):
api_ver = 2
)
_events_v2.append(event_v2)
self.rclient.write('events_v1', _events_v1, api_ver=1, community=guild.community_name)
self.rclient.write('events_v2', _events_v2, api_ver=2, community=guild.community_name)
self.rclient.write('events_v1', _events_v1, api_ver=1, communities=[guild.community_name])
self.rclient.write('events_v2', _events_v2, api_ver=2, communities=[guild.community_name])

_aggregated_events_v1 = self.get_aggregated_events(api_ver=1)
if _aggregated_events_v1:
_events_v1.extend(_aggregated_events_v1)
self.rclient.write('aggregated_events_v1', _events_v1, api_ver=1, local_communities=self.communities_name)
self.rclient.write('aggregated_events_v1', _events_v1, api_ver=1, communities=[guild.community_name])

_aggregated_events_v2 = self.get_aggregated_events(api_ver=2)
if _aggregated_events_v2:
_events_v2.extend(_aggregated_events_v2)
self.rclient.write('aggregated_events_v2', _events_v2, api_ver=2, local_communities=self.communities_name)
self.rclient.write('aggregated_events_v2', _events_v2, api_ver=2, communities=[guild.community_name])

async def get_data(self, dclient):
print("update apollo events")
Expand Down
30 changes: 5 additions & 25 deletions bots/discord.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ def __init__(self, bot, config, sched, dclient, rclient):
def format_event(self, event, api_ver):
location_web_session_url = self.get_location_web_session_url(event.description)
location_session_url = self.get_location_session_url(event.description)
print(self.guilds)
if event.image:
session_image = event.image.url
else:
Expand All @@ -85,7 +84,7 @@ def format_event(self, event, api_ver):
location_str = location_str,
start_time = event.scheduled_start_time,
end_time = event.scheduled_end_time,
community_name = event.guild.name,
community_name = self.guilds[event.guild.id].community_name,
api_ver = 1
)
if api_ver == 2:
Expand All @@ -105,25 +104,6 @@ def format_event(self, event, api_ver):
)
return event

@commands.Cog.listener('on_guild_scheduled_event_create')
async def on_scheduled_event_create(self, event):
logging.info('event created in cog')
self.rclient.write('events_v1', self.format_event(event, api_ver=1), api_ver=1)
self.rclient.write('events_v2', self.format_event(event, api_ver=2), api_ver=2)

@commands.Cog.listener()
async def on_guild_scheduled_event_delete(self, event):
logging.error('event delete in cog')
self.rclient.delete('events_v1', self.format_event(event, api_ver=1), api_ver=1)
self.rclient.delete('events_v2', self.format_event(event, api_ver=2), api_ver=2)


@commands.Cog.listener('on_guild_scheduled_event_update')
async def on_scheduled_event_update(self, event_before, event_after):
logging.info('event updated in cog')
self.rclient.update('events_v1', self.format_event(event_before, api_ver=1), self.format_event(event_after, 1), api_ver=1)
self.rclient.update('events_v2', self.format_event(event_before, api_ver=2), self.format_event(event_after, 2), api_ver=2)

@commands.Cog.listener()
async def on_ready(self):
logging.info(f'{self.name} bot ready')
Expand All @@ -142,18 +122,18 @@ async def get_events(self, guild):
if _event_v2:
_events_v2.append(_event_v2)

self.rclient.write('events_v1', _events_v1, api_ver=1, community=self.guilds[guild.id].community_name)
self.rclient.write('events_v2', _events_v2, api_ver=2, community=self.guilds[guild.id].community_name)
self.rclient.write('events_v1', _events_v1, api_ver=1, communities=[self.guilds[guild.id].community_name])
self.rclient.write('events_v2', _events_v2, api_ver=2, communities=[self.guilds[guild.id].community_name])

_aggregated_events_v1 = self.get_aggregated_events(api_ver=1)
if _aggregated_events_v1:
_events_v1.extend(_aggregated_events_v1)
self.rclient.write('aggregated_events_v1', _events_v1, api_ver=1, local_communities=self.communities_name)
self.rclient.write('aggregated_events_v1', _events_v1, api_ver=1, communities=[self.guilds[guild.id].community_name])

_aggregated_events_v2 = self.get_aggregated_events(api_ver=2)
if _aggregated_events_v2:
_events_v2.extend(_aggregated_events_v2)
self.rclient.write('aggregated_events_v2', _events_v2, api_ver=2, local_communities=self.communities_name)
self.rclient.write('aggregated_events_v2', _events_v2, api_ver=2, communities=[self.guilds[guild.id].community_name])

async def get_data(self, dclient):
print('update discord events')
Expand Down
4 changes: 2 additions & 2 deletions bots/google.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,9 +149,9 @@ async def get_data(self, dclient):
_aggregated_events_v1 = self.get_aggregated_events(api_ver=1)
if _aggregated_events_v1:
_events_v1.extend(_aggregated_events_v1)
self.rclient.write('aggregated_events_v1', _events_v1, api_ver=1, local_communities=self.communities_name)
self.rclient.write('aggregated_events_v1', _events_v1, api_ver=1, communities=self.communities_name)

_aggregated_events_v2 = self.get_aggregated_events(api_ver=2)
if _aggregated_events_v2:
_events_v2.extend(_aggregated_events_v2)
self.rclient.write('aggregated_events_v2', _events_v2, api_ver=2, local_communities=self.communities_name)
self.rclient.write('aggregated_events_v2', _events_v2, api_ver=2, communities=self.communities_name)
2 changes: 1 addition & 1 deletion templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ <h3 class="subsubtitle">— by GrayBoltWolf and Brodokk</h3>

<p>For now the two domains <code>neos.boltwolf.net</code> and <code>neos-community.events</code> are delivering the same service run by the same group of person.</p>
<h2>News</h2>

<div class="box">
<div class="content">
<strong>Release 2.4.0</strong>
Expand Down
70 changes: 24 additions & 46 deletions utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,64 +36,42 @@ def __init__(self, host='127.0.0.1', port=6379):
def get(self, key):
return self.client.get(key)

def write(self, key, data, api_ver, community=None, deletion=False, local_communities=[]):
def write(self, key, new_events, api_ver, communities=[]):

dt_now = datetime.now(timezone.utc)

old_data = self.get(key)
updated_data = []
if old_data:
updated_data = old_data.decode("utf-8").split('\n')
old_events = self.get(key)
if old_events:
old_events = old_events.decode("utf-8").split('\n')
else:
old_events = []

if isinstance(new_events, str):
new_events = [new_events]

if isinstance(data, str):
data = [data]
for community in communities:
old_events = [ x for x in old_events if x.split('`')[ekey[api_ver]["community_name"]] != community ]

data = list(set(data))
events = old_events
for event in new_events:
if event not in old_events:
events.append(event)

if community:
updated_data = [ x for x in updated_data if x.split('`')[ekey[api_ver]["community_name"]] != community ]

for event in data:
if event not in updated_data:
updated_data.append(event)

if deletion:
for event in updated_data:
if event not in data:
updated_data.remove(event)

if local_communities:
for event in updated_data:
if event.split('`')[ekey[api_ver]["community_name"]] not in local_communities and event not in data:
updated_data.remove(event)

data = []
for x in updated_data:
for x in old_events:
try:
if parse(x.split('`')[ekey[api_ver]["end_time"]]).replace(tzinfo=pytz.UTC) > dt_now:
data.append(x)
if parse(x.split('`')[ekey[api_ver]["end_time"]]).replace(tzinfo=pytz.UTC) < dt_now:
old_events.remove(x)
except dateutil.parser._parser.ParserError:
continue

old_events = self.sort_events(old_events, api_ver)
old_events = "\n".join(d for d in old_events if d)
self.client.set(key, old_events.encode('utf-8'))

def sort_events(self, events, api_ver):
def sorting(key):
if key:
return key.split('`')[ekey[api_ver]["start_time"]]
return ''
data.sort(key=sorting)

data = "\n".join(d for d in data if d)
self.client.set(key, data.encode('utf-8'))

def update(self, key, event_before, event_after, api_ver):
print('update data')
updated_data = self.get(key).decode("utf-8").split('\n')
if event_before in updated_data and event_after not in updated_data:
updated_data.remove(event_before)
updated_data.append(event_after)
self.write(key, updated_data, api_ver, community=event_after.split('`')[ekey[api_ver]["community_name"]])

def delete(self, key, new_data, api_ver):
updated_data = self.get(key).decode("utf-8").split('\n')
events = [x for x in updated_data if new_data != x]
self.write(key, events, api_ver, deletion=True)
events.sort(key=sorting)
return events

0 comments on commit eac7a7b

Please sign in to comment.