diff --git a/run.py b/run.py deleted file mode 100644 index 71805b04..00000000 --- a/run.py +++ /dev/null @@ -1,6 +0,0 @@ -import sys -import os - -sys.path.insert(0, os.path.join(os.getcwd(), "bot")) - -from bot import main diff --git a/run_analytics.py b/run_analytics.py deleted file mode 100755 index 461052a3..00000000 --- a/run_analytics.py +++ /dev/null @@ -1,12 +0,0 @@ -import sys -import os -import asyncio - -sys.path.insert(0, os.path.join(os.getcwd(), "bot")) - -from bot.analytics.server import AnalyticsServer - - -if __name__ == '__main__': - server = AnalyticsServer() - asyncio.run(server.run()) diff --git a/run_server.py b/run_server.py deleted file mode 100644 index e4ffd6e4..00000000 --- a/run_server.py +++ /dev/null @@ -1,20 +0,0 @@ -import sys -import os -import argparse -import asyncio - - -sys.path.insert(0, os.path.join(os.getcwd(), "bot")) - -from bot.meta.ipc.server import AppServer -from bot.meta import conf - - -async def main(): - address = {'host': conf.appipc['server_host'], 'port': int(conf.appipc['server_port'])} - server = AppServer() - await server.start(address) - - -if __name__ == '__main__': - asyncio.run(main()) diff --git a/scripts/makestrings.sh b/scripts/makestrings.sh new file mode 100755 index 00000000..126da276 --- /dev/null +++ b/scripts/makestrings.sh @@ -0,0 +1,3 @@ +xgettext bot/modules/sysadmin/exec_cog.py -o locales/templates/exec.pot --keyword=_p:1c,2 --keyword=_n:1,2 --keyword=_np:1c,2,3 +xgettext bot/babel/*.py -o locales/templates/babel.pot --keyword=_p:1c,2 --keyword=_n:1,2 --keyword=_np:1c,2,3 +xgettext bot/modules/reminders/*.py -o locales/templates/reminders.pot --keyword=_p:1c,2 --keyword=_n:1,2 --keyword=_np:1c,2,3 diff --git a/scripts/start_analytics.py b/scripts/start_analytics.py new file mode 100755 index 00000000..2c6d9249 --- /dev/null +++ b/scripts/start_analytics.py @@ -0,0 +1,14 @@ +# !/bin/python3 + +import sys +import os +import asyncio + +sys.path.insert(0, os.path.join(os.getcwd())) +sys.path.insert(0, os.path.join(os.getcwd(), "src")) + + +if __name__ == '__main__': + from analytics.server import AnalyticsServer + server = AnalyticsServer() + asyncio.run(server.run()) diff --git a/scripts/start_gui.py b/scripts/start_gui.py new file mode 100755 index 00000000..0e615398 --- /dev/null +++ b/scripts/start_gui.py @@ -0,0 +1,6 @@ +import asyncio +from src.server import main + + +if __name__ == '__main__': + asyncio.run(main()) diff --git a/scripts/start_leo.py b/scripts/start_leo.py new file mode 100755 index 00000000..49d6ad1d --- /dev/null +++ b/scripts/start_leo.py @@ -0,0 +1,12 @@ +# !/bin/python3 + +import sys +import os + +sys.path.insert(0, os.path.join(os.getcwd())) +sys.path.insert(0, os.path.join(os.getcwd(), "src")) + + +if __name__ == '__main__': + from bot import _main + _main() diff --git a/scripts/start_registry.py b/scripts/start_registry.py new file mode 100755 index 00000000..6510edbf --- /dev/null +++ b/scripts/start_registry.py @@ -0,0 +1,16 @@ +# !/bin/python3 + +import sys +import os +import asyncio + +sys.path.insert(0, os.path.join(os.getcwd())) +sys.path.insert(0, os.path.join(os.getcwd(), "src")) + + +if __name__ == '__main__': + from meta.ipc.server import AppServer + from meta import conf + address = {'host': conf.appipc['server_host'], 'port': int(conf.appipc['server_port'])} + server = AppServer() + asyncio.run(server.start(address)) diff --git a/src/gui b/src/gui index 76659f11..fd34ea70 160000 --- a/src/gui +++ b/src/gui @@ -1 +1 @@ -Subproject commit 76659f119397c80c2d53decbc74564f3c7e24fb2 +Subproject commit fd34ea70d62d83ce90b49e17ab74d8f73154ca93 diff --git a/tests/gui/cards/__init__.py b/tests/gui/cards/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/gui/cards/goal_sample.py b/tests/gui/cards/goal_sample.py new file mode 100644 index 00000000..7395e83f --- /dev/null +++ b/tests/gui/cards/goal_sample.py @@ -0,0 +1,12 @@ +import asyncio +import datetime as dt +from src.cards import WeeklyGoalCard + + +async def get_card(): + card = await WeeklyGoalCard.generate_sample() + with open('samples/weekly-sample.png', 'wb') as image_file: + image_file.write(card.fp.read()) + +if __name__ == '__main__': + asyncio.run(get_card()) diff --git a/tests/gui/cards/leaderboard_sample.py b/tests/gui/cards/leaderboard_sample.py new file mode 100644 index 00000000..b75a6bcf --- /dev/null +++ b/tests/gui/cards/leaderboard_sample.py @@ -0,0 +1,12 @@ +import asyncio +import datetime as dt +from src.cards import LeaderboardCard + + +async def get_card(): + card = await LeaderboardCard.generate_sample() + with open('samples/leaderboard-sample.png', 'wb') as image_file: + image_file.write(card.fp.read()) + +if __name__ == '__main__': + asyncio.run(get_card()) diff --git a/tests/gui/cards/leaderboard_spec_sample.py b/tests/gui/cards/leaderboard_spec_sample.py new file mode 100644 index 00000000..2491a1d0 --- /dev/null +++ b/tests/gui/cards/leaderboard_spec_sample.py @@ -0,0 +1,45 @@ +import asyncio +import random +import datetime as dt +from src.cards import LeaderboardCard as _Card + + +highlights = [ + "header_text_colour", + "subheader_name_colour", + "subheader_value_colour", + "top_position_colour", + "top_name_colour", + "top_hours_colour", + "entry_position_colour", + "entry_position_highlight_colour", + "entry_name_colour", + "entry_hours_colour", + "entry_bg_colour", + "entry_bg_highlight_colour" +] +highlight_colour = "#E84727" +card_name = "leaderboard" + + +async def get_cards(): + strings = [] + random.seed(0) + for highlight in highlights: + card = await _Card.generate_sample( + skin={highlight: highlight_colour} + ) + with open(f"../skins/spec/images/{card_name}/{highlight}.png", 'wb') as image_file: + image_file.write(card.fp.read()) + + esc_highlight = highlight.replace('_', '\\_') + string = f"""\ +\\hypertarget{{{card_name}-{highlight.replace('_', '-')}}}{{\\texttt{{{esc_highlight}}}}} & & +\\includegraphics[width=.25\\textwidth,valign=m]{{images/{card_name}/{highlight}.png}} +\\\\""" + strings.append(string) + + print('\n'.join(strings)) + +if __name__ == '__main__': + asyncio.run(get_cards()) diff --git a/tests/gui/cards/monthly_spec_sample.py b/tests/gui/cards/monthly_spec_sample.py new file mode 100644 index 00000000..4ac27883 --- /dev/null +++ b/tests/gui/cards/monthly_spec_sample.py @@ -0,0 +1,54 @@ +import asyncio +import random +import datetime as dt +from src.cards import MonthlyStatsCard as _Card + + +highlights = [ + 'title_colour', + 'top_hours_colour', + 'top_hours_bg_colour', + 'top_line_colour', + 'top_date_colour', + 'top_this_colour', + 'top_last_colour', + 'top_this_hours_colour', + 'top_last_hours_colour', + 'this_month_colour', + 'last_month_colour', + 'heatmap_empty_colour', + 'weekday_background_colour', + 'weekday_colour', + 'month_background_colour', + 'month_colour', + 'stats_key_colour', + 'stats_value_colour', + 'footer_colour', +] +highlight_colour = "#E84727" +card_name = "monthly" + +highlights = ['heatmap_colours'] +highlight_colour = ["#E84727"] + +async def get_cards(): + strings = [] + random.seed(0) + for highlight in highlights: + card = await _Card.generate_sample( + skin={highlight: highlight_colour} + ) + with open(f"../skins/spec/images/{card_name}/{highlight}.png", 'wb') as image_file: + image_file.write(card.fp.read()) + + esc_highlight = highlight.replace('_', '\\_') + string = f"""\ +\\hypertarget{{{card_name}-{highlight.replace('_', '-')}}}{{\\texttt{{{esc_highlight}}}}} & & +\\includegraphics[width=.25\\textwidth,valign=m]{{images/{card_name}/{highlight}.png}} +\\\\""" + strings.append(string) + + print('\n'.join(strings)) + +if __name__ == '__main__': + asyncio.run(get_cards()) diff --git a/tests/gui/cards/profile_spec_sample.py b/tests/gui/cards/profile_spec_sample.py new file mode 100644 index 00000000..2c1b2d50 --- /dev/null +++ b/tests/gui/cards/profile_spec_sample.py @@ -0,0 +1,44 @@ +import asyncio +import datetime as dt +from src.cards import ProfileCard as _Card + + +highlights = [ + "header_colour_1", + "header_colour_2", + "counter_bg_colour", + "counter_colour", + "subheader_colour", + "badge_text_colour", + "badge_blob_colour", + "rank_name_colour", + "rank_hours_colour", + "bar_full_colour", + "bar_empty_colour", + "next_rank_colour" +] +highlight_colour = "#E84727" +card_name = "profile" + + +async def get_cards(): + strings = [] + for highlight in highlights: + card = await _Card.generate_sample( + skin={highlight: highlight_colour} + ) + with open(f"../skins/spec/images/{card_name}/{highlight}.png", 'wb') as image_file: + image_file.write(card.fp.read()) + + esc_highlight = highlight.replace('_', '\\_') + string = f""" +\\hypertarget{{{card_name}-{highlight.replace('_', '-')}}}{{\\texttt{{{esc_highlight}}}}} & & +\\includegraphics[width=.25\\textwidth,valign=m]{{images/{card_name}/{highlight}.png}} +\\\\ + """ + strings.append(string) + + print('\n'.join(strings)) + +if __name__ == '__main__': + asyncio.run(get_cards()) diff --git a/tests/gui/cards/stats_spec_sample.py b/tests/gui/cards/stats_spec_sample.py new file mode 100644 index 00000000..ed844e1c --- /dev/null +++ b/tests/gui/cards/stats_spec_sample.py @@ -0,0 +1,30 @@ +import asyncio +import datetime as dt +from src.cards import StatsCard + + +highlights = [ + 'header_colour', + 'stats_subheader_colour', + 'stats_text_colour', + 'col2_date_colour', + 'col2_hours_colour', + 'cal_weekday_colour', + 'cal_number_colour', + 'cal_number_end_colour', + 'cal_streak_end_colour', + 'cal_streak_middle_colour', +] +highlight_colour = "#E84727" + + +async def get_cards(): + for highlight in highlights: + card = await StatsCard.generate_sample( + skin={highlight: highlight_colour} + ) + with open('../skins/spec/images/stats/{}.png'.format(highlight), 'wb') as image_file: + image_file.write(card.fp.read()) + +if __name__ == '__main__': + asyncio.run(get_cards()) diff --git a/tests/gui/cards/tasklist_sample.py b/tests/gui/cards/tasklist_sample.py new file mode 100644 index 00000000..d2e82b4f --- /dev/null +++ b/tests/gui/cards/tasklist_sample.py @@ -0,0 +1,17 @@ +import asyncio +import datetime as dt +from src.cards import TasklistCard + + +highlight = "mini_profile_badge_text_colour" +highlight_colour = "#E84727" + +async def get_card(): + card = await TasklistCard.generate_sample( + skin={highlight: highlight_colour} + ) + with open('samples/tasklist-sample.png', 'wb') as image_file: + image_file.write(card.fp.read()) + +if __name__ == '__main__': + asyncio.run(get_card()) diff --git a/tests/gui/cards/tasklist_spec_sample.py b/tests/gui/cards/tasklist_spec_sample.py new file mode 100644 index 00000000..27ddb0c8 --- /dev/null +++ b/tests/gui/cards/tasklist_spec_sample.py @@ -0,0 +1,28 @@ +import asyncio +import datetime as dt +from src.cards import TasklistCard + + +highlights = [ + 'mini_profile_badge_colour', + 'mini_profile_name_colour', + 'mini_profile_discrim_colour', + 'task_done_number_colour', + 'task_done_text_colour', + 'task_undone_text_colour', + 'task_undone_number_colour', + 'footer_colour' +] +highlight_colour = "#E84727" + + +async def get_cards(): + for highlight in highlights: + card = await TasklistCard.generate_sample( + skin={highlight: highlight_colour} + ) + with open('../skins/spec/images/tasklist/{}.png'.format(highlight), 'wb') as image_file: + image_file.write(card.fp.read()) + +if __name__ == '__main__': + asyncio.run(get_cards()) diff --git a/tests/gui/cards/weekly_spec_sample.py b/tests/gui/cards/weekly_spec_sample.py new file mode 100644 index 00000000..58a9eef6 --- /dev/null +++ b/tests/gui/cards/weekly_spec_sample.py @@ -0,0 +1,49 @@ +import asyncio +import datetime as dt +from src.cards import WeeklyStatsCard as _Card + + +highlights = [ + 'title_colour', + 'top_hours_colour', + 'top_hours_bg_colour', + 'top_line_colour', + 'top_weekday_colour', + 'top_date_colour', + 'top_this_colour', + 'top_last_colour', + 'btm_weekly_background_colour', + 'btm_this_colour', + 'btm_last_colour', + 'btm_weekday_colour', + 'btm_day_colour', + 'btm_bar_horiz_colour', + 'btm_bar_vert_colour', + 'this_week_colour', + 'last_week_colour', + 'footer_colour' +] +highlight_colour = "#E84727" +card_name = "weekly" + + +async def get_cards(): + strings = [] + for highlight in highlights: + card = await _Card.generate_sample( + skin={highlight: highlight_colour} + ) + with open(f"../skins/spec/images/{card_name}/{highlight}.png", 'wb') as image_file: + image_file.write(card.fp.read()) + + esc_highlight = highlight.replace('_', '\\_') + string = f"""\ +\\hypertarget{{{card_name}-{highlight.replace('_', '-')}}}{{\\texttt{{{esc_highlight}}}}} & & +\\includegraphics[width=.25\\textwidth,valign=m]{{images/{card_name}/{highlight}.png}} +\\\\""" + strings.append(string) + + print('\n'.join(strings)) + +if __name__ == '__main__': + asyncio.run(get_cards()) diff --git a/tests/gui/cards/weeklygoals_spec_sample.py b/tests/gui/cards/weeklygoals_spec_sample.py new file mode 100644 index 00000000..a66b1242 --- /dev/null +++ b/tests/gui/cards/weeklygoals_spec_sample.py @@ -0,0 +1,54 @@ +import asyncio +import random +import datetime as dt +from src.cards import WeeklyGoalCard as _Card + + +highlights = [ + 'title_colour', + 'mini_profile_name_colour', + 'mini_profile_discrim_colour', + 'mini_profile_badge_colour', + 'mini_profile_badge_text_colour', + 'progress_bg_colour', + 'progress_colour', + 'task_count_colour', + 'task_done_colour', + 'task_goal_colour', + 'task_goal_number_colour', + 'attendance_rate_colour', + 'attendance_colour', + 'studied_text_colour', + 'studied_hour_colour', + 'task_header_colour', + 'task_done_number_colour', + 'task_done_text_colour', + 'task_undone_number_colour', + 'task_undone_text_colour', + 'footer_colour' +] +highlight_colour = "#E84727" +card_name = "weeklygoals" + + +async def get_cards(): + strings = [] + random.seed(0) + for highlight in highlights: + card = await _Card.generate_sample( + skin={highlight: highlight_colour} + ) + with open(f"../skins/spec/images/{card_name}/{highlight}.png", 'wb') as image_file: + image_file.write(card.fp.read()) + + esc_highlight = highlight.replace('_', '\\_') + string = f"""\ +\\hypertarget{{{card_name}-{highlight.replace('_', '-')}}}{{\\texttt{{{esc_highlight}}}}} & & +\\includegraphics[width=.25\\textwidth,valign=m]{{images/{card_name}/{highlight}.png}} +\\\\""" + strings.append(string) + + print('\n'.join(strings)) + +if __name__ == '__main__': + asyncio.run(get_cards()) diff --git a/tests/gui/output/example_avatar.png b/tests/gui/output/example_avatar.png new file mode 100644 index 00000000..bf561c90 Binary files /dev/null and b/tests/gui/output/example_avatar.png differ diff --git a/tests/gui/output/profile_sample.py b/tests/gui/output/profile_sample.py new file mode 100644 index 00000000..99433c92 --- /dev/null +++ b/tests/gui/output/profile_sample.py @@ -0,0 +1,19 @@ +from profile import ProfileCard + + +card = ProfileCard( + name='ARI HORESH', + discrim='#0001', + avatar=open('samples/example_avatar.png', 'rb'), + coins=58596, + time=3750 * 3600, + answers=10, + attendance=0.9, + badges=('MEDICINE', 'NEUROSCIENCE', 'BIO', 'MATHS', 'BACHELOR\'S DEGREE', 'VEGAN SOMETIMES', 'EUROPE'), + achievements=(0, 2, 5, 7), + current_rank=('VAMPIRE', 3000, 4000), + next_rank=('WIZARD', 4000, 8000), + draft=False +) +image = card.draw() +image.save('profilecard.png', dpi=(150, 150)) diff --git a/tests/gui/output/profilecard.png b/tests/gui/output/profilecard.png new file mode 100644 index 00000000..e97da312 Binary files /dev/null and b/tests/gui/output/profilecard.png differ diff --git a/tests/gui/output/stats_sample.py b/tests/gui/output/stats_sample.py new file mode 100644 index 00000000..aebf93d4 --- /dev/null +++ b/tests/gui/output/stats_sample.py @@ -0,0 +1,27 @@ +import datetime as dt +from stats import StatsCard + + +card = StatsCard( + (21, 123), + (3600, 5 * 24 * 3600, 1.5 * 24 * 3600, 100 * 24 * 3600), + 50, + [(1, 3), (7, 8), (10, 10), (12, 16), (18, 25), (27, 31)], + date=dt.datetime(2022, 1, 1), + # draft=True +) + +image = card.draw() +image.save('statscard_alt.png', dpi=(150, 150)) + +card = StatsCard( + (21, 123), + (3600, 5 * 24 * 3600, 1.5 * 24 * 3600, 100 * 24 * 3600), + 50, + [(1, 3), (7, 8), (10, 10), (12, 16), (18, 25), (27, 31)], + date=dt.datetime(2022, 2, 1), + # draft=True +) + +image = card.draw() +image.save('statscard.png', dpi=(150, 150)) diff --git a/tests/gui/output/statscard.png b/tests/gui/output/statscard.png new file mode 100644 index 00000000..ef19543c Binary files /dev/null and b/tests/gui/output/statscard.png differ diff --git a/tests/gui/output/statscard_alt.png b/tests/gui/output/statscard_alt.png new file mode 100644 index 00000000..95593976 Binary files /dev/null and b/tests/gui/output/statscard_alt.png differ