-
Notifications
You must be signed in to change notification settings - Fork 9
Hyperion configuration using yaml file #756
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 7298663 | Triggered | RSA Private Key | 4384338 | .env.test.yaml | View secret |
| 7298668 | Triggered | Generic High Entropy Secret | 4384338 | .env.test.yaml | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secrets safely. Learn here the best practices.
- Revoke and rotate these secrets.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
bc2b8d7 to
2eca868
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #756 +/- ##
=======================================
Coverage 85.30% 85.31%
=======================================
Files 163 163
Lines 11568 11575 +7
=======================================
+ Hits 9868 9875 +7
Misses 1700 1700 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
instead of a list of list This PR introduce a breaking change Requires #756
### Description Hyperion will try to load its configuration, using, by precedence: - environment variables - .env.yaml file - .env file
instead of a list of list This PR introduce a breaking change Requires aeecleclair#756
commit 2701650 Author: Foucauld Bellanger <63885990+foucblg@users.noreply.github.com> Date: Thu Jul 17 17:49:13 2025 +0200 Notification topics refactorization using a db table (#680) Change completely the structure of topics in Hyperion. Instead of using an Enum difficult to edit, we have a table in db with all existing topics. This allows to ensure that users can only subscribe to *real* topics. Topics can be created either in the module definition (ex: `cinema`), or using a utils from an endpoint (creation of a new topic each time we create an advertiser in `announce`). Topics can now be restricted to a specific group. By default, all users are subscribed to each topic, they can unsubscribe manually if they want. A change in the frontend is required: - using `/notification/topics` the client will get all available topics - it could be nice to group topics by `module_root` This PR will reset existing subscriptions. All users will be subscribed to all topics, except for `advert` Fix #479 Requires #768 --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> commit b43d58b Author: Timothée Robert <114694873+Rotheem@users.noreply.github.com> Date: Thu Jul 17 09:31:25 2025 +0200 Removed old init.py (#773) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary commit c98eef6 Author: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Sat Jul 12 14:43:02 2025 +0200 Use an existing default file for raid rules (#771) commit efb3d0f Author: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Fri Jul 11 14:36:19 2025 +0200 Refactor app state using dependencies and state (#769) Instead of initiating objects like redis client or db connection when the dependency is called for the first time, we create a dedicated `init_app_state` dependency to initialize all these objects. These objects are stored in the application state instead of global variables. This ensures that an object may not be reused in another Hyperion app instance, which would have its own event loop. This previously caused issues for tests Requires #768 --------- Co-authored-by: Thonyk <timr.web@free.fr> commit bec30ba Author: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Thu Jul 10 12:25:11 2025 +0200 Acquire a lock before running initialization steps (#768) If multiple workers are detected, and a Redis client, Hyperion will raise an error. Otherwise the server won't be able to: - run initialization steps - send messages over WebSocket reliably. The logic is extracted from the great #375 --------- Co-authored-by: Thonyk <timr.web@free.fr> Co-authored-by: Timothée Robert <114694873+Rotheem@users.noreply.github.com> commit c588fc8 Author: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Wed Jul 9 19:51:13 2025 +0200 Allow to configure AuthClients using a dictionnary (#757) instead of a list of list This PR introduce a breaking change Requires #756 commit 06892dd Author: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Date: Sun Jul 6 13:47:45 2025 +0200 Hyperion configuration using yaml file (#756) Hyperion will try to load its configuration, using, by precedence: - environment variables - .env.yaml file - .env file
* Set REFRESH_TOKEN_EXPIRE_MINUTES to 60 days (aeecleclair#753) * raid-registering: Generate PDF from HTML template with weasyprint (aeecleclair#739) ### Description Generate PDF using Jinja templates and WeasyPrint. We use: - PyMuPDF for PDF manipulation, and conversion between image and PDF - WeasyPrint for PDF generation from HTML We remove fpdf2 which html engine was too simple for complex templates --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: Thonyk <timr.web@free.fr> * feat: support multiple HelloAsso configurations (aeecleclair#750) ### Description Please explain the changes you made here. ### Checklist - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Accept all schools accounts for WikijsAuthClient (aeecleclair#752) * MyECLPay: use new CalypSSO UI for text assets (aeecleclair#763) ### Description The link in the mail asserting you signed the ToS now brings to a less austere page. ### Checklist - [x] Bump CalypSSO to 2.2.0 - [x] Update mail link - [x] Use CalypSSO methods to build the URL --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Hyperion 4.6.0 (aeecleclair#762) * Admin endpoint to send notification to group (aeecleclair#765) * Hyperion configuration using yaml file (aeecleclair#756) ### Description Hyperion will try to load its configuration, using, by precedence: - environment variables - .env.yaml file - .env file * Allow to configure AuthClients using a dictionnary (aeecleclair#757) instead of a list of list This PR introduce a breaking change Requires aeecleclair#756 * Acquire a lock before running initialization steps (aeecleclair#768) ### Description If multiple workers are detected, and a Redis client, Hyperion will raise an error. Otherwise the server won't be able to: - run initialization steps - send messages over WebSocket reliably. The logic is extracted from the great aeecleclair#375 --------- Co-authored-by: Thonyk <timr.web@free.fr> Co-authored-by: Timothée Robert <114694873+Rotheem@users.noreply.github.com> * Refactor app state using dependencies and state (aeecleclair#769) ### Description Instead of initiating objects like redis client or db connection when the dependency is called for the first time, we create a dedicated `init_app_state` dependency to initialize all these objects. These objects are stored in the application state instead of global variables. This ensures that an object may not be reused in another Hyperion app instance, which would have its own event loop. This previously caused issues for tests Requires aeecleclair#768 --------- Co-authored-by: Thonyk <timr.web@free.fr> * Use an existing default file for raid rules (aeecleclair#771) * Removed old init.py (aeecleclair#773) ### Description Please explain the changes you made here. ### Checklist - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Notification topics refactorization using a db table (aeecleclair#680) Change completely the structure of topics in Hyperion. Instead of using an Enum difficult to edit, we have a table in db with all existing topics. This allows to ensure that users can only subscribe to *real* topics. Topics can be created either in the module definition (ex: `cinema`), or using a utils from an endpoint (creation of a new topic each time we create an advertiser in `announce`). Topics can now be restricted to a specific group. By default, all users are subscribed to each topic, they can unsubscribe manually if they want. A change in the frontend is required: - using `/notification/topics` the client will get all available topics - it could be nice to group topics by `module_root` This PR will reset existing subscriptions. All users will be subscribed to all topics, except for `advert` Fix aeecleclair#479 Requires aeecleclair#768 --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Optional HA api-base (aeecleclair#774) * Only hash a global password for all test users (aeecleclair#776) as hashing password is a time consuming operation. We expect a 2 min gain over our test suite. * Dotenv for Docker variables in addition to yaml config file (aeecleclair#778) ### Description Please explain the changes you made here. ### Checklist - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Feat : Add base to allow factory setup (aeecleclair#375) Co-authored-by: Warix <39554785+warix8@users.noreply.github.com> Co-authored-by: cotanoine <tan.maillard@gmail.com> * Change Dockerfile entrypoint to adapt new env_file parameter (aeecleclair#781) ### Description Please explain the changes you made here. ### Checklist - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Invert logic for unlock_key (aeecleclair#782) ### Description Please explain the changes you made here. ### Checklist - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Allow to restrict registration to invited users (#6) * Allow to restrict registration to invited users * Add user to default_group on activation * Invite users * Queued emails * Lint * Cron for send mail task * Lint * Pass args directly instead of model in cruds * Test batch invite user * Docstring * Don't send emails if the address is empty * Only remove send mails from the queue * Only send 100 email per hours * Calypsso 2.3.0 * Fix * Fixup * Migration * Lint * Format * Optional default_group_id * Comment * PROXI-54: modular association groupements (#9) * feat: use modular association groupements * typo * fix: adapt factories to new system * fix: rebase * feat: change default logo * fix: rebase * fix: correct worker count when using --worker option (#10) * School configuration (#7) * Add user to default_group on activation * Configurable email regex * Configurable email regex * Parametrize application name * Configure the email regex directly in settings * Rename centrale_lyon to this_school * Import Pattern from re * Use simple quotes for regex * base_school * Rename base_school in test * Migration * Self registration in config template * Serve color and name of the project * Remove unused css file and fix yaml template * pydantic-extra-types==2.10.5 * Entity name * Remove unused imports * Rename is_user_a_school_member * Rename get_school_account_types * Rename is_user_an_ecl_member * Documentation * Lint * Rename is_user_a_school_member * fixup * Remove unused code * Validate users * fix: rebase --------- Co-authored-by: Thonyk <timr.web@free.fr> * PROXI-61: rename payment files (#11) * feat: rename payment part * feat: rename tables * fix: rebase * feat: change routes * fix: test * Fix(state management): store state in global variable to allow the scheduler to access db (#8) * Fix user batch invitation response model * Fix: add missing param in send_emails_from_queue_task * Get db directly using SessionLocal * Store state in global Python variable * Use arq 0.26.3 * Don't keep arq job results after completion to be able to queue new jobs with the same id * Cancel planned notification with the same job_id before queuing a new one * fixup state * Access GLOBAL_STATE in tests init * Remove unexpected state param while disconnecting * Lint * Parametrize test_factory fixture * Lint * Refactor test settings * Lint * Return email placeholder in variables (#15) * Feed and feed from advert (#4) * Feed * Image endpoint and location and action fields * Lint * fix: rebase * Add a logo for groups * Feed: rename image_folder to image_directory * Advert post to feed and remove tag * Fix rebase * Lint and migration * Rebase migration --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Thonyk <timr.web@free.fr> * CoreAssociation (#13) * CoreAssociation # Conflicts: # app/utils/tools.py * Migration * Rebase migration * Rename migration file 40 to 41 (#16) * remove tags in update model (#17) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * fix: circular import on windows (#20) * remove status in admin query (#21) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Super admin (#22) * feat: add super admin attribute * feat: remove admin bypass * fix: tests * super user in factory (#23) * super user in factory * copilot this fyot --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Add for front (#24) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * PROXI-71: patch legal texts on request and update them (#12) * feat: patch legals text on request # Conflicts: # app/core/utils/config.py # config.template.yaml * feat: add end of support * fix: typo * Account deletion * Apply suggestions from code review Co-authored-by: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> * fixes * add email_placeholder to school * fix config.yaml * Fix indentation --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Refactor Calendar to use associations and feed (#14) * Refactor Calendar to use associations and feed * Lint * Migration * Fix calendar factory condition * Add a daylong event in calendar factory * ical: use date for daylong events instead of datetime * Parametrize ical id * Ticket url * lint * bump revision number * remove description * add post feed image * fix : add image directory * fix : use image id * update factory * admin id from GroupType enum * post feed image in calendar * Event image * Lint * Test * fixup --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Refactor advert to use associations (#18) * Refactor Calendar to use associations and feed * Migration * Refactor advert to use associations * fixup * Migration * Rebase migration * rebase migration * CalypSSO 2.4.0 (#25) * typo (#26) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * typo (#29) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * fix: replace placeholder in tos (#30) * fix: replace placeholder in tos * feat: prevent event with ticket and missing ticket field * fix: typo * feat: add tests * PROXI 79: mypayment multi structure (#19) * feat: add mypayment invoices * fix: clean up * Export PDF documentation * Fix migration * fix: typo * fix: use structure as bank account holder * fix: add missing config.template * fix: extend s3 directory null check to empty string * feat: add mypayment factory * fix: rebase and correct factory * fix: typo * fix: missing function call * fix: invoice pdf data * fix: typo * fix: use utils * feat: add delay penalty * fix: tests and rebase * fix: move dependency --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Fix MyPayment Invoices (#33) * fix: apply suggestions * fix: typo * fix: remove useless schema * fix: typo * Don't raise when feed picture does not exist and create data/campaigns folder at launch (#32) * Don't raise when feed picture does not exist but return an HTTPException * Create data/campaigns folder at launch --------- Co-authored-by: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Marc-Andrieu <146140470+Marc-Andrieu@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+foucblg@users.noreply.github.com> Co-authored-by: Warix <39554785+warix8@users.noreply.github.com> Co-authored-by: cotanoine <tan.maillard@gmail.com>
* Set REFRESH_TOKEN_EXPIRE_MINUTES to 60 days (aeecleclair#753) * raid-registering: Generate PDF from HTML template with weasyprint (aeecleclair#739) Generate PDF using Jinja templates and WeasyPrint. We use: - PyMuPDF for PDF manipulation, and conversion between image and PDF - WeasyPrint for PDF generation from HTML We remove fpdf2 which html engine was too simple for complex templates --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: Thonyk <timr.web@free.fr> * feat: support multiple HelloAsso configurations (aeecleclair#750) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Accept all schools accounts for WikijsAuthClient (aeecleclair#752) * MyECLPay: use new CalypSSO UI for text assets (aeecleclair#763) The link in the mail asserting you signed the ToS now brings to a less austere page. - [x] Bump CalypSSO to 2.2.0 - [x] Update mail link - [x] Use CalypSSO methods to build the URL --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Hyperion 4.6.0 (aeecleclair#762) * Admin endpoint to send notification to group (aeecleclair#765) * Hyperion configuration using yaml file (aeecleclair#756) Hyperion will try to load its configuration, using, by precedence: - environment variables - .env.yaml file - .env file * Allow to configure AuthClients using a dictionnary (aeecleclair#757) instead of a list of list This PR introduce a breaking change Requires aeecleclair#756 * Acquire a lock before running initialization steps (aeecleclair#768) If multiple workers are detected, and a Redis client, Hyperion will raise an error. Otherwise the server won't be able to: - run initialization steps - send messages over WebSocket reliably. The logic is extracted from the great aeecleclair#375 --------- Co-authored-by: Thonyk <timr.web@free.fr> Co-authored-by: Timothée Robert <114694873+Rotheem@users.noreply.github.com> * Refactor app state using dependencies and state (aeecleclair#769) Instead of initiating objects like redis client or db connection when the dependency is called for the first time, we create a dedicated `init_app_state` dependency to initialize all these objects. These objects are stored in the application state instead of global variables. This ensures that an object may not be reused in another Hyperion app instance, which would have its own event loop. This previously caused issues for tests Requires aeecleclair#768 --------- Co-authored-by: Thonyk <timr.web@free.fr> * Use an existing default file for raid rules (aeecleclair#771) * Removed old init.py (aeecleclair#773) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Notification topics refactorization using a db table (aeecleclair#680) Change completely the structure of topics in Hyperion. Instead of using an Enum difficult to edit, we have a table in db with all existing topics. This allows to ensure that users can only subscribe to *real* topics. Topics can be created either in the module definition (ex: `cinema`), or using a utils from an endpoint (creation of a new topic each time we create an advertiser in `announce`). Topics can now be restricted to a specific group. By default, all users are subscribed to each topic, they can unsubscribe manually if they want. A change in the frontend is required: - using `/notification/topics` the client will get all available topics - it could be nice to group topics by `module_root` This PR will reset existing subscriptions. All users will be subscribed to all topics, except for `advert` Fix aeecleclair#479 Requires aeecleclair#768 --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Optional HA api-base (aeecleclair#774) * Only hash a global password for all test users (aeecleclair#776) as hashing password is a time consuming operation. We expect a 2 min gain over our test suite. * Dotenv for Docker variables in addition to yaml config file (aeecleclair#778) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Feat : Add base to allow factory setup (aeecleclair#375) Co-authored-by: Warix <39554785+warix8@users.noreply.github.com> Co-authored-by: cotanoine <tan.maillard@gmail.com> * Change Dockerfile entrypoint to adapt new env_file parameter (aeecleclair#781) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Invert logic for unlock_key (aeecleclair#782) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Allow to restrict registration to invited users (#6) * Allow to restrict registration to invited users * Add user to default_group on activation * Invite users * Queued emails * Lint * Cron for send mail task * Lint * Pass args directly instead of model in cruds * Test batch invite user * Docstring * Don't send emails if the address is empty * Only remove send mails from the queue * Only send 100 email per hours * Calypsso 2.3.0 * Fix * Fixup * Migration * Lint * Format * Optional default_group_id * Comment * PROXI-54: modular association groupements (#9) * feat: use modular association groupements * typo * fix: adapt factories to new system * fix: rebase * feat: change default logo * fix: rebase * fix: correct worker count when using --worker option (#10) * School configuration (#7) * Add user to default_group on activation * Configurable email regex * Configurable email regex * Parametrize application name * Configure the email regex directly in settings * Rename centrale_lyon to this_school * Import Pattern from re * Use simple quotes for regex * base_school * Rename base_school in test * Migration * Self registration in config template * Serve color and name of the project * Remove unused css file and fix yaml template * pydantic-extra-types==2.10.5 * Entity name * Remove unused imports * Rename is_user_a_school_member * Rename get_school_account_types * Rename is_user_an_ecl_member * Documentation * Lint * Rename is_user_a_school_member * fixup * Remove unused code * Validate users * fix: rebase --------- Co-authored-by: Thonyk <timr.web@free.fr> * PROXI-61: rename payment files (#11) * feat: rename payment part * feat: rename tables * fix: rebase * feat: change routes * fix: test * Fix(state management): store state in global variable to allow the scheduler to access db (#8) * Fix user batch invitation response model * Fix: add missing param in send_emails_from_queue_task * Get db directly using SessionLocal * Store state in global Python variable * Use arq 0.26.3 * Don't keep arq job results after completion to be able to queue new jobs with the same id * Cancel planned notification with the same job_id before queuing a new one * fixup state * Access GLOBAL_STATE in tests init * Remove unexpected state param while disconnecting * Lint * Parametrize test_factory fixture * Lint * Refactor test settings * Lint * Return email placeholder in variables (#15) * Feed and feed from advert (#4) * Feed * Image endpoint and location and action fields * Lint * fix: rebase * Add a logo for groups * Feed: rename image_folder to image_directory * Advert post to feed and remove tag * Fix rebase * Lint and migration * Rebase migration --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Thonyk <timr.web@free.fr> * CoreAssociation (#13) * CoreAssociation * Migration * Rebase migration * Rename migration file 40 to 41 (#16) * remove tags in update model (#17) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * fix: circular import on windows (#20) * remove status in admin query (#21) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Super admin (#22) * feat: add super admin attribute * feat: remove admin bypass * fix: tests * super user in factory (#23) * super user in factory * copilot this fyot --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Add for front (#24) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * PROXI-71: patch legal texts on request and update them (#12) * feat: patch legals text on request * feat: add end of support * fix: typo * Account deletion * Apply suggestions from code review Co-authored-by: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> * fixes * add email_placeholder to school * fix config.yaml * Fix indentation --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Refactor Calendar to use associations and feed (#14) * Refactor Calendar to use associations and feed * Lint * Migration * Fix calendar factory condition * Add a daylong event in calendar factory * ical: use date for daylong events instead of datetime * Parametrize ical id * Ticket url * lint * bump revision number * remove description * add post feed image * fix : add image directory * fix : use image id * update factory * admin id from GroupType enum * post feed image in calendar * Event image * Lint * Test * fixup --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Refactor advert to use associations (#18) * Refactor Calendar to use associations and feed * Migration * Refactor advert to use associations * fixup * Migration * Rebase migration * rebase migration * CalypSSO 2.4.0 (#25) * typo (#26) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * typo (#29) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * fix: replace placeholder in tos (#30) * fix: replace placeholder in tos * feat: prevent event with ticket and missing ticket field * fix: typo * feat: add tests * PROXI 79: mypayment multi structure (#19) * feat: add mypayment invoices * fix: clean up * Export PDF documentation * Fix migration * fix: typo * fix: use structure as bank account holder * fix: add missing config.template * fix: extend s3 directory null check to empty string * feat: add mypayment factory * fix: rebase and correct factory * fix: typo * fix: missing function call * fix: invoice pdf data * fix: typo * fix: use utils * feat: add delay penalty * fix: tests and rebase * fix: move dependency --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Fix MyPayment Invoices (#33) * fix: apply suggestions * fix: typo * fix: remove useless schema * fix: typo * Don't raise when feed picture does not exist and create data/campaigns folder at launch (#32) * Don't raise when feed picture does not exist but return an HTTPException * Create data/campaigns folder at launch --------- Co-authored-by: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Marc-Andrieu <146140470+Marc-Andrieu@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+foucblg@users.noreply.github.com> Co-authored-by: Warix <39554785+warix8@users.noreply.github.com> Co-authored-by: cotanoine <tan.maillard@gmail.com>
* v2.0.0 (#35) * Set REFRESH_TOKEN_EXPIRE_MINUTES to 60 days (aeecleclair#753) * raid-registering: Generate PDF from HTML template with weasyprint (aeecleclair#739) Generate PDF using Jinja templates and WeasyPrint. We use: - PyMuPDF for PDF manipulation, and conversion between image and PDF - WeasyPrint for PDF generation from HTML We remove fpdf2 which html engine was too simple for complex templates --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: Thonyk <timr.web@free.fr> * feat: support multiple HelloAsso configurations (aeecleclair#750) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Accept all schools accounts for WikijsAuthClient (aeecleclair#752) * MyECLPay: use new CalypSSO UI for text assets (aeecleclair#763) The link in the mail asserting you signed the ToS now brings to a less austere page. - [x] Bump CalypSSO to 2.2.0 - [x] Update mail link - [x] Use CalypSSO methods to build the URL --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Hyperion 4.6.0 (aeecleclair#762) * Admin endpoint to send notification to group (aeecleclair#765) * Hyperion configuration using yaml file (aeecleclair#756) Hyperion will try to load its configuration, using, by precedence: - environment variables - .env.yaml file - .env file * Allow to configure AuthClients using a dictionnary (aeecleclair#757) instead of a list of list This PR introduce a breaking change Requires aeecleclair#756 * Acquire a lock before running initialization steps (aeecleclair#768) If multiple workers are detected, and a Redis client, Hyperion will raise an error. Otherwise the server won't be able to: - run initialization steps - send messages over WebSocket reliably. The logic is extracted from the great aeecleclair#375 --------- Co-authored-by: Thonyk <timr.web@free.fr> Co-authored-by: Timothée Robert <114694873+Rotheem@users.noreply.github.com> * Refactor app state using dependencies and state (aeecleclair#769) Instead of initiating objects like redis client or db connection when the dependency is called for the first time, we create a dedicated `init_app_state` dependency to initialize all these objects. These objects are stored in the application state instead of global variables. This ensures that an object may not be reused in another Hyperion app instance, which would have its own event loop. This previously caused issues for tests Requires aeecleclair#768 --------- Co-authored-by: Thonyk <timr.web@free.fr> * Use an existing default file for raid rules (aeecleclair#771) * Removed old init.py (aeecleclair#773) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Notification topics refactorization using a db table (aeecleclair#680) Change completely the structure of topics in Hyperion. Instead of using an Enum difficult to edit, we have a table in db with all existing topics. This allows to ensure that users can only subscribe to *real* topics. Topics can be created either in the module definition (ex: `cinema`), or using a utils from an endpoint (creation of a new topic each time we create an advertiser in `announce`). Topics can now be restricted to a specific group. By default, all users are subscribed to each topic, they can unsubscribe manually if they want. A change in the frontend is required: - using `/notification/topics` the client will get all available topics - it could be nice to group topics by `module_root` This PR will reset existing subscriptions. All users will be subscribed to all topics, except for `advert` Fix aeecleclair#479 Requires aeecleclair#768 --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Optional HA api-base (aeecleclair#774) * Only hash a global password for all test users (aeecleclair#776) as hashing password is a time consuming operation. We expect a 2 min gain over our test suite. * Dotenv for Docker variables in addition to yaml config file (aeecleclair#778) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Feat : Add base to allow factory setup (aeecleclair#375) Co-authored-by: Warix <39554785+warix8@users.noreply.github.com> Co-authored-by: cotanoine <tan.maillard@gmail.com> * Change Dockerfile entrypoint to adapt new env_file parameter (aeecleclair#781) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Invert logic for unlock_key (aeecleclair#782) Please explain the changes you made here. - [ ] Created tests which fail without the change (if possible) - [ ] All tests passing - [ ] Extended the documentation, if necessary * Allow to restrict registration to invited users (#6) * Allow to restrict registration to invited users * Add user to default_group on activation * Invite users * Queued emails * Lint * Cron for send mail task * Lint * Pass args directly instead of model in cruds * Test batch invite user * Docstring * Don't send emails if the address is empty * Only remove send mails from the queue * Only send 100 email per hours * Calypsso 2.3.0 * Fix * Fixup * Migration * Lint * Format * Optional default_group_id * Comment * PROXI-54: modular association groupements (#9) * feat: use modular association groupements * typo * fix: adapt factories to new system * fix: rebase * feat: change default logo * fix: rebase * fix: correct worker count when using --worker option (#10) * School configuration (#7) * Add user to default_group on activation * Configurable email regex * Configurable email regex * Parametrize application name * Configure the email regex directly in settings * Rename centrale_lyon to this_school * Import Pattern from re * Use simple quotes for regex * base_school * Rename base_school in test * Migration * Self registration in config template * Serve color and name of the project * Remove unused css file and fix yaml template * pydantic-extra-types==2.10.5 * Entity name * Remove unused imports * Rename is_user_a_school_member * Rename get_school_account_types * Rename is_user_an_ecl_member * Documentation * Lint * Rename is_user_a_school_member * fixup * Remove unused code * Validate users * fix: rebase --------- Co-authored-by: Thonyk <timr.web@free.fr> * PROXI-61: rename payment files (#11) * feat: rename payment part * feat: rename tables * fix: rebase * feat: change routes * fix: test * Fix(state management): store state in global variable to allow the scheduler to access db (#8) * Fix user batch invitation response model * Fix: add missing param in send_emails_from_queue_task * Get db directly using SessionLocal * Store state in global Python variable * Use arq 0.26.3 * Don't keep arq job results after completion to be able to queue new jobs with the same id * Cancel planned notification with the same job_id before queuing a new one * fixup state * Access GLOBAL_STATE in tests init * Remove unexpected state param while disconnecting * Lint * Parametrize test_factory fixture * Lint * Refactor test settings * Lint * Return email placeholder in variables (#15) * Feed and feed from advert (#4) * Feed * Image endpoint and location and action fields * Lint * fix: rebase * Add a logo for groups * Feed: rename image_folder to image_directory * Advert post to feed and remove tag * Fix rebase * Lint and migration * Rebase migration --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Thonyk <timr.web@free.fr> * CoreAssociation (#13) * CoreAssociation * Migration * Rebase migration * Rename migration file 40 to 41 (#16) * remove tags in update model (#17) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * fix: circular import on windows (#20) * remove status in admin query (#21) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Super admin (#22) * feat: add super admin attribute * feat: remove admin bypass * fix: tests * super user in factory (#23) * super user in factory * copilot this fyot --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Add for front (#24) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * PROXI-71: patch legal texts on request and update them (#12) * feat: patch legals text on request * feat: add end of support * fix: typo * Account deletion * Apply suggestions from code review Co-authored-by: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> * fixes * add email_placeholder to school * fix config.yaml * Fix indentation --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Refactor Calendar to use associations and feed (#14) * Refactor Calendar to use associations and feed * Lint * Migration * Fix calendar factory condition * Add a daylong event in calendar factory * ical: use date for daylong events instead of datetime * Parametrize ical id * Ticket url * lint * bump revision number * remove description * add post feed image * fix : add image directory * fix : use image id * update factory * admin id from GroupType enum * post feed image in calendar * Event image * Lint * Test * fixup --------- Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * Refactor advert to use associations (#18) * Refactor Calendar to use associations and feed * Migration * Refactor advert to use associations * fixup * Migration * Rebase migration * rebase migration * CalypSSO 2.4.0 (#25) * typo (#26) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * typo (#29) Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> * fix: replace placeholder in tos (#30) * fix: replace placeholder in tos * feat: prevent event with ticket and missing ticket field * fix: typo * feat: add tests * PROXI 79: mypayment multi structure (#19) * feat: add mypayment invoices * fix: clean up * Export PDF documentation * Fix migration * fix: typo * fix: use structure as bank account holder * fix: add missing config.template * fix: extend s3 directory null check to empty string * feat: add mypayment factory * fix: rebase and correct factory * fix: typo * fix: missing function call * fix: invoice pdf data * fix: typo * fix: use utils * feat: add delay penalty * fix: tests and rebase * fix: move dependency --------- Co-authored-by: armanddidierjean <95971503+armanddidierjean@users.noreply.github.com> * Fix MyPayment Invoices (#33) * fix: apply suggestions * fix: typo * fix: remove useless schema * fix: typo * Don't raise when feed picture does not exist and create data/campaigns folder at launch (#32) * Don't raise when feed picture does not exist but return an HTTPException * Create data/campaigns folder at launch --------- Co-authored-by: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Marc-Andrieu <146140470+Marc-Andrieu@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+foucblg@users.noreply.github.com> Co-authored-by: Warix <39554785+warix8@users.noreply.github.com> Co-authored-by: cotanoine <tan.maillard@gmail.com> * fix: remove invalid config attribute --------- Co-authored-by: Armand Didierjean <95971503+armanddidierjean@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+Foukki@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Marc-Andrieu <146140470+Marc-Andrieu@users.noreply.github.com> Co-authored-by: Foucauld Bellanger <63885990+foucblg@users.noreply.github.com> Co-authored-by: Warix <39554785+warix8@users.noreply.github.com> Co-authored-by: cotanoine <tan.maillard@gmail.com>
Description
Hyperion will try to load its configuration, using, by precedence: