Commit 265a159
authored
feat: MPV 2 Done, Getting ready for deploy
* feat: admin panel, meetings list
* feat: meeting info, get title
* feat: assign tutor & refactor
* feat: dynamic meetings list
* feat: meetinf info change, categories
* fix(prepare.py): poetry > uv in ensure_pre_commit_hooks
* chore(showcase): admin logic on /start
* feat: authentication
* feat: logging to AutoAuth and AuthGuard middlewares
* feat: tutors repository
* feat: use cases for tutors repository
* feat: tutors list in dialog
* feat: meetings_repo
* feat: tutors router
* feat: datepicker for admin
* feat: RedisStorage, DTOs
* refactor: meetings, meeting_change dialogs extracted
* refactor: tutors dialog, funcs of admin is extracted
* feat: meetings functionality for tutors
* feat: announce meetings logic, notifications about tutors
* feat: meeting deletion
* feat: time (not only date) added to meeting
* feat: meeting scheduling
* feat: attendance system
* feat: room data in meeting_change
* refactor: handles in dialogs
* refactor: dialog_extensions and handles
* feat: student_meetings
* feat: tutors_profile dialog
* feat: support_daemon
* refactor: use_cases
* docs: database design (erd, tables)
* feat: updated database
lets not talk about the size of this
* feat: mock auth middleware
Added MockAutoAuthMiddleware that bypasses InNoHassle Accounts for easier testing
* feat: student disciplines
* feat: NotificationManager initialised
- done 50% of messages
* feat: notifications done 90%
- on startup/shutdown notifications are sent
- practically all texts are written
* feat: notifications in scheduler
* feat: refactor attendance and meeting handling logic; improve notification system
* feat: enhance meeting notifications; add discipline info and update notification logic
* fix: meeting retrieval join discipline table
* feat: working links from notifications via start payload
* feat: add tutor profile visibility and control logic in meetings and student meetings
* fix: computed_field to full_name in models
* feat: implement open_tutor_profile function and update profile button logic
* fix: add room validation to meeting announcement logic
* feat: tutor profile list for students
* refactor: remove support daemon functionality and related configurations
it become obvious, that mock auth middleware is way more effecient :)
* feat: student meetings list filtered and sorted
* fix: HTML escaping and data formatting
* feat: notification bot polling and /start handling
* fix: exclude unnecessary fields from meeting model dump in update method
* fix: delete webhook in notification_manager start_polling
* feat: tutor now can create meetings
tutors are autoassigned to created meetings
* fix: admin notified only after meeting approval (announce)
* feat: add MeetingState APPROVING
* feat: meeting approval process 50%
* feat: implement meeting approval request and notification system
* feat: meeting discard reason input and formatting
* feat: list of Approving meetings
* feat: sort by datetime for tutor&admin meetings list
* feat: rename delete_meeting to cancel_meeting and update related notifications
* chore(launch.json): debug in internalConsole instead of integratedTerminal
should I even commit this?
* feat: full house logging
- logging for most of the bot functions
- removed unused functions from utils.py
* refactor: unite student, tutor, admin routers into root dialog, fixed auth issues
* feat: integration of notifications with settings
- link to bot in settings
- query answers on notifications toggle
- special answers on links from control bot
- redirect from notifications bot directly to settings
* docs: generate bot features and texts document for meeting soon
* feat: add notification_bot_status to student model and database schema
* feat: notification_manager can change notification_bot_status for students
* feat: receive_notifications setting now does checks via notification_manager
* feat: add saw_guide field to Student model and database schema
* feat: implement guide dialog with states, getters, and handlers
* docs: texts_translation.csv for the meeting
* fix: check if meeting not APPROVING (issue #52)
* feat: sync admins in db with config file
* feat: enhance admin and student repositories with sync functionality
* chore: add logging to file
* fix: fixes after AT meeting
- #55
- #56
- #59
* feat: i18n middlewares, other utils; cover root dialog
* feat: i18n for root handles
* fix: correct translation return value in ExtendedDialogManager
* feat: i18n for discipline picker; UnpackedList widget
* feat: i18n for authentication dialog
* feat: implement i18n for meetings dialog, MeetingInfo widget
* feat: i18n for change_meeting dialog
* feat: i18n for guide dialog
* feat: i18n for student_meetings dialog
* feat: i18n for attendance dialog
* feat: i18n for tutors and tutors_profile dialogs, bugfix in discipline_picker
* fix: some fixes to current layout
* feat: i18n for notifications
* feat: changes in meeting_change, title & discipline, room & date
TODO:
- create new notification for room & date change
- create the admin approval mechanism
* feat: MeetingUpdate model
* feat: approve updates to meetings
- Implemented `clear_aiogram_redis.py` to remove specific keys from Redis related to aiogram and aiogram_dialog.
- Added functionality for dry-run mode to preview keys without deletion.
fix: Improve meeting info text rendering
- Updated `MeetingInfoText` to return "Meeting" if rendered text is empty.
fix: Prevent multiple pending updates for meetings
- Added check in `on_date_room_btn` to ensure no pending updates exist before allowing changes.
refactor: Consolidate meeting update logic
- Removed redundant methods for updating meeting date and room.
- Introduced `approve_meeting_update` to handle applying updates and notifying participants.
feat: Enhance notification system for meeting updates
- Added new notification texts and methods for sending update requests and approvals.
- Updated notification manager to handle meeting update notifications.
fix: Update i18n files to include new notification texts
- Added new keys for meeting update notifications in `notifications.ftl`.
refactor: Clean up meeting repository methods
- Renamed `del_update` to `remove_update` for clarity.
* feat: better l10n for notifications
* feat: add language selection feature and update localization
* feat: implement meeting reminders with 24h and 1h notifications
* feat: deploy preparations
- Changed project name in pyproject.toml from "aiogram-template" to "academic-tutorship-bot".
- Added proxy_url field to settings.schema.yaml and updated config_schema.py.
- Implemented proxy support in app.py for the bot session.
- Updated i18n.py to use the new locales directory path.
- Enhanced logging configuration to handle permission errors for file handlers.
- Updated dependencies in uv.lock and pyproject.toml, including beanie and aiohttp-socks.
* fix: before the deploy
* fix: improve shutdown process with error handling for notifications and scheduler1 parent dd311c5 commit 265a159
158 files changed
Lines changed: 13050 additions & 662 deletions
File tree
- .vscode
- alembic
- versions
- docs
- locales
- en/LC_MESSAGES
- ru/LC_MESSAGES
- scripts
- src
- bot
- custom_widgets
- dialog_extension
- dialogs
- attendance
- authentication
- change_meeting
- discipline_picker
- guide
- meetings
- root
- student_meetings
- tutors_profile
- tutors
- routers
- db
- repositories
- domain
- notifications
- scheduling
- utils
- tests
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
7 | 8 | | |
8 | 9 | | |
9 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
| 55 | + | |
56 | 56 | | |
57 | 57 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
Whitespace-only changes.
0 commit comments