-
Notifications
You must be signed in to change notification settings - Fork 8
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
Feature/mailcow email lists #289
Conversation
Connecting to the mailcow API is possible and data can be properly read from it. Not all API endpoints are properly documented, but a somewhat good overview can be found here: https://mailcow.docs.apiary.io/# For Rspamd settings specifically, their API endpoint was extracted manually by making requests in the Mailcow admin panel. Note: Mailcow also uses an IP whitelist for its API in addition to an API key. Only ipv4 address can be added to this whitelist.
Changed file organisation. Added an API route for changing rspamd setting maps (requires read/write API access).
Squire can read, update, or create an rspamd setting that marks an alias as 'internal'. Inernal aliases can only be emailed from within the domain.
When a new member is added, or when the email address of an existing member changes, changes a "members"-alias in Mailcow. Does not handle deletions yet, nor is it made "internal".
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## master #289 +/- ##
==========================================
+ Coverage 95.84% 95.86% +0.01%
==========================================
Files 145 161 +16
Lines 6113 7106 +993
Branches 968 1164 +196
==========================================
+ Hits 5859 6812 +953
- Misses 174 193 +19
- Partials 80 101 +21
Flags with carried forward coverage won't be shown. Click here to find out more.
☔ View full report in Codecov by Sentry. |
Added a status page listing all member aliases, and whether they are up-to-date.
Moved the mailcow config to a separate json file, and added this to the gitignore. Included a sample config to show the formatting. Added a page that allows users to set their preferences for each of the member aliases. Aliases that do not allow opt-outs are still shown, though their settings are disabled.
Label-formatting is now already done at the preference itself, rather than its form.
Users' preferences now sync with Mailcow.
Added a button that updates all member preferences. Member aliases are now finished, with the exception of proper error handling and additional verification (e.g. users setting a member-alias as their own email)
Also removed unused imports.
Allow updating and viewing the status of committee aliases. If an alias is not managed by Squire, it now instead lists the emails present in Mailcow. Pre-existing mailboxes break the system, as Squire still attempts to create an alias for those. Split off a separate alias-list template from the status template.
Added an interface for Mailcow Mailboxes (and friends). Added a management command that allows retrieving responses from the Mailcow API.
Results for fetching mailboxes and aliases are cached. If a member adds one of the member-aliases as their email address, then this email address is ignored.
If a committee alias address is identical to one of the member aliases, it is not updated. This is also reflected in the UI.
Aliases for which a mailbox with the same name exists are ignored. This is also indicated in the UI.
Internal aliases can still be emailed from outside the domain if another (non-internal) alias has the internal alias in its goto addresses. A warning is now issued if this is the case, along with the "routes" that allow emailing internal aliases from outside.
Added archive addresses to the config. All aliases contain such an archive addresses. The status page now also lists orphan data. That is, aliases that indicate they are managed by Squire, even though Squire doesn't actually use them.
Allows emailing all committees and workgroups through a single send-address.
Added tests for barebone requests and validation in the MailcowClient
Subscribed members are now retrieved properly, regardless of the default opt-in/opt-out status, even if they do not have explicit preferences set up.
Resolved code duplication by unifying data read by the template.
Uses the same interface/template as those for committees and global member-addresses.
Created a viewCollective for admin pages. Nextcloud status (not in this branch yet) can be added here later too. Modified mentioned payment amount on membership extension page. This should be changed to a global preference later on.
Added various signals for detecting changes for Mailcow aliases. Minor problem: Cascade deletes can cause multiple signals to run. For example, deleting a committee activates the deletion signal for the committee itself and for all attached members. This causes multiple (duplicate) requests to the API that aren't needed.
CASCADE deletion greatly complicates signal logic (see previous commit). Deletion behaviour was set to PROTECT or SET_NULL where possible.
Added a global preference that disables all of the signals. Global committee aliases no longer throw an exception in the status view. Global committee aliases no longer blocklist themselves. Alias deletion API updated. It does not match up with how it's done in the Mailcow admin panel though.
Untestable code does not count towards coverage. Added new greeting lines.
committees/committeecollective.py
Outdated
def check_access_validity(self, request, association_group=None): | ||
if not super(CommitteeBaseConfig, self).check_access_validity(request): | ||
def is_accessible(self, request, association_group=None): | ||
if not super(CommitteeBaseConfig, self).is_accessible(request): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I get why you did this namechange, but I think it conflicts with general property_naming. is_x is generally more used for get-properties. Similar to how you changed is_considered_member() to is_active on the Member model. That is why is purposely started with check_x. If you don't like the original name, maybe change it to validate_access() or something like that (i.e. a more active-sounding name)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess I'm a bit confused about the intent of the method in itself. Take this snippet in committees.committeecollective.CommitteeBaseConfig.is_accessible
:
def is_accessible(self, request, association_group=None):
if not super(CommitteeBaseConfig, self).is_accessible(request):
return False
if not user_in_association_group(request.user, association_group):
raise PermissionDenied()
# Check group permission
if self.group_requires_permission is not None:
app_label, codename = self.group_requires_permission.split('.', maxsplit=1)
if not Permission.objects.filter(
content_type__app_label=app_label,
codename=codename,
group__associationgroup=association_group
): return False
return True
In one case it raises an exception (user is not in the committee), while in other cases it returns a boolean (committee/group does not have a specific permission). Why the difference?
In some of the calling code the boolean value is checked, and a Permission-denied exception is raised if it's false. Right now there seems to be a bit of a mismatch somewhere.
but I think it conflicts with general property_naming. is_x is generally more used for get-properties
I disagree on this. Imo, method names should roughly indicate what they do and what is returned. My assumption that the return value of this method would always be a boolean wasn't correct though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I may have to straighten that issue out. I agree that it should not work with both returning booleans and throw erros, that is just confusing. I'll do that in another PR though one day.
# Mailcow client must be set up if this view can be accessed | ||
config = apps.get_app_config("mailcow_integration") | ||
mailcow_client: SquireMailcowManager = config.mailcow_client | ||
mailcow_client.update_member_aliases() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it not better to add this to the form?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed; views in general shouldn't make changes to the database themselves. Same goes for the statusview, which currently doesn't use a form class at all.
@@ -229,7 +252,8 @@ def __str__(self): | |||
|
|||
class Membership(models.Model): | |||
""" Defines membership details of a member in a certain memberyear""" | |||
member = models.ForeignKey(Member, on_delete=models.CASCADE) | |||
# NULL-value allows keeping track of membership numbers over the years, even when members are deleted | |||
member = models.ForeignKey(Member, on_delete=models.SET_NULL, null=True) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 Sounds good, but check if it does not cause conflicts with the unique_together property as it could cause multiple null- instances to exist
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good call. It seems like NULL-values aren't considered for unique_together. Judging from various StackOverflow threads that seems to be a common thing people don't realise.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you write a testcase to validate that (and catch any non-intended Django changes in the future?)
Tests various init_<foo>_alias_list methods. Added tests for get_context_data. Added tests for the status view's POST request handling.
Added a link to the server status page in the hamburger menu. Addressed review comments.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
blackfmt
mailcow_integration/admin_status/views.py|38|
mailcow_integration/admin_status/views.py|42 col 1|
mailcow_integration/admin_status/views.py|44|
mailcow_integration/admin_status/views.py|47|
mailcow_integration/admin_status/views.py|60 col 1|
mailcow_integration/admin_status/views.py|61|
mailcow_integration/admin_status/views.py|64 col 1|
mailcow_integration/admin_status/views.py|71|
mailcow_integration/admin_status/views.py|88|
mailcow_integration/admin_status/views.py|105|
mailcow_integration/admin_status/views.py|113|
mailcow_integration/admin_status/views.py|124|
mailcow_integration/admin_status/views.py|129|
mailcow_integration/admin_status/views.py|144|
mailcow_integration/admin_status/views.py|156|
mailcow_integration/admin_status/views.py|158|
mailcow_integration/admin_status/views.py|160|
mailcow_integration/admin_status/views.py|164|
mailcow_integration/admin_status/views.py|168|
mailcow_integration/admin_status/views.py|174|
mailcow_integration/admin_status/views.py|180|
mailcow_integration/admin_status/views.py|183|
mailcow_integration/admin_status/views.py|186|
mailcow_integration/admin_status/views.py|191|
mailcow_integration/admin_status/views.py|197|
mailcow_integration/admin_status/views.py|199|
mailcow_integration/admin_status/views.py|203|
mailcow_integration/admin_status/views.py|211|
mailcow_integration/admin_status/views.py|216|
mailcow_integration/admin_status/views.py|218|
mailcow_integration/admin_status/views.py|220|
mailcow_integration/admin_status/views.py|222|
mailcow_integration/admin_status/views.py|225|
mailcow_integration/admin_status/views.py|235|
mailcow_integration/admin_status/views.py|241|
mailcow_integration/admin_status/views.py|243|
mailcow_integration/admin_status/views.py|246|
mailcow_integration/admin_status/views.py|250|
mailcow_integration/admin_status/views.py|252|
mailcow_integration/admin_status/views.py|287 col 1|
mailcow_integration/admin_status/views.py|288|
mailcow_integration/api/client.py|14 col 1|
mailcow_integration/api/client.py|15|
mailcow_integration/api/client.py|19 col 1|
mailcow_integration/api/client.py|20|
mailcow_integration/api/client.py|24|
mailcow_integration/api/client.py|26|
mailcow_integration/api/client.py|31 col 1|
mailcow_integration/api/client.py|38|
mailcow_integration/api/client.py|46|
mailcow_integration/api/client.py|49|
mailcow_integration/api/client.py|54|
mailcow_integration/api/client.py|57|
mailcow_integration/api/client.py|63|
mailcow_integration/api/client.py|69|
mailcow_integration/api/client.py|71|
mailcow_integration/api/client.py|97|
mailcow_integration/api/client.py|102|
mailcow_integration/api/client.py|107|
mailcow_integration/api/client.py|111|
mailcow_integration/api/client.py|124|
mailcow_integration/api/client.py|126|
mailcow_integration/api/client.py|128|
mailcow_integration/api/client.py|130|
mailcow_integration/api/client.py|136|
mailcow_integration/api/client.py|139|
mailcow_integration/api/client.py|148|
mailcow_integration/api/client.py|150|
mailcow_integration/api/client.py|152|
mailcow_integration/api/client.py|154|
mailcow_integration/api/client.py|160|
mailcow_integration/api/client.py|175|
mailcow_integration/api/client.py|183|
mailcow_integration/api/client.py|188|
mailcow_integration/api/client.py|193|
mailcow_integration/api/client.py|195|
mailcow_integration/api/client.py|202|
mailcow_integration/api/client.py|207|
mailcow_integration/api/client.py|209|
mailcow_integration/api/exceptions.py|1|
mailcow_integration/api/exceptions.py|3|
mailcow_integration/api/exceptions.py|6|
mailcow_integration/api/exceptions.py|9|
mailcow_integration/api/exceptions.py|12|
mailcow_integration/api/exceptions.py|15|
mailcow_integration/api/exceptions.py|18|
mailcow_integration/api/interface/alias.py|9 col 1|
mailcow_integration/api/interface/alias.py|18|
mailcow_integration/api/interface/alias.py|24|
mailcow_integration/api/interface/alias.py|33|
mailcow_integration/api/interface/alias.py|55|
mailcow_integration/api/interface/base.py|3 col 1|
mailcow_integration/api/interface/base.py|4|
mailcow_integration/api/interface/base.py|8|
mailcow_integration/api/interface/mailbox.py|8 col 1|
mailcow_integration/api/interface/mailbox.py|9|
mailcow_integration/api/interface/mailbox.py|14 col 1|
mailcow_integration/api/interface/mailbox.py|15|
mailcow_integration/api/interface/mailbox.py|21 col 1|
mailcow_integration/api/interface/mailbox.py|22|
mailcow_integration/api/interface/mailbox.py|29|
mailcow_integration/api/interface/mailbox.py|39|
mailcow_integration/api/interface/mailbox.py|44|
mailcow_integration/api/interface/mailbox.py|63|
mailcow_integration/api/interface/mailbox.py|70|
mailcow_integration/api/interface/mailbox.py|72|
mailcow_integration/api/interface/mailbox.py|78|
mailcow_integration/api/interface/mailbox.py|87|
mailcow_integration/api/interface/mailbox.py|89|
mailcow_integration/api/interface/mailbox.py|98|
mailcow_integration/api/interface/mailbox.py|107|
mailcow_integration/api/interface/rspamd.py|6 col 1|
mailcow_integration/api/interface/rspamd.py|8|
mailcow_integration/api/interface/rspamd.py|11|
mailcow_integration/api/interface/rspamd.py|15|
mailcow_integration/apps.py|8 col 1|
mailcow_integration/apps.py|10 col 1|
mailcow_integration/apps.py|11|
mailcow_integration/apps.py|22|
mailcow_integration/apps.py|29|
mailcow_integration/dynamic_preferences_registry.py|10|
mailcow_integration/dynamic_preferences_registry.py|16|
mailcow_integration/dynamic_preferences_registry.py|18|
mailcow_integration/dynamic_preferences_registry.py|21 col 1|
mailcow_integration/dynamic_preferences_registry.py|22|
mailcow_integration/dynamic_preferences_registry.py|25 col 1|
mailcow_integration/dynamic_preferences_registry.py|26|
mailcow_integration/dynamic_preferences_registry.py|31|
mailcow_integration/dynamic_preferences_registry.py|33|
mailcow_integration/dynamic_preferences_registry.py|37|
mailcow_integration/dynamic_preferences_registry.py|41|
mailcow_integration/dynamic_preferences_registry.py|46|
mailcow_integration/dynamic_preferences_registry.py|52|
mailcow_integration/dynamic_preferences_registry.py|58|
mailcow_integration/dynamic_preferences_registry.py|61 col 1|
mailcow_integration/management/commands/mailcow_api_request.py|6|
mailcow_integration/management/commands/mailcow_api_request.py|10|
mailcow_integration/management/commands/mailcow_api_request.py|16|
mailcow_integration/signals.py|11|
mailcow_integration/signals.py|16|
mailcow_integration/signals.py|20 col 1|
mailcow_integration/signals.py|21|
mailcow_integration/signals.py|30 col 1|
mailcow_integration/signals.py|38 col 1|
mailcow_integration/signals.py|45 col 1|
mailcow_integration/signals.py|50|
mailcow_integration/signals.py|68 col 1|
mailcow_integration/signals.py|70|
mailcow_integration/signals.py|76|
mailcow_integration/signals.py|94 col 1|
mailcow_integration/signals.py|96|
mailcow_integration/signals.py|105 col 1|
mailcow_integration/signals.py|107|
mailcow_integration/signals.py|127|
mailcow_integration/signals.py|147 col 1|
mailcow_integration/signals.py|149|
mailcow_integration/signals.py|184 col 1|
mailcow_integration/signals.py|186|
mailcow_integration/signals.py|188|
mailcow_integration/signals.py|196 col 1|
mailcow_integration/signals.py|201|
mailcow_integration/signals.py|220 col 1|
mailcow_integration/signals.py|222|
mailcow_integration/signals.py|234|
mailcow_integration/signals.py|238|
mailcow_integration/signals.py|248 col 1|
mailcow_integration/signals.py|250|
mailcow_integration/signals.py|264|
mailcow_integration/signals.py|282 col 1|
mailcow_integration/signals.py|284|
mailcow_integration/signals.py|299 col 1|
mailcow_integration/signals.py|301|
mailcow_integration/signals.py|309 col 1|
mailcow_integration/signals.py|314|
mailcow_integration/signals.py|332 col 1|
mailcow_integration/signals.py|334|
mailcow_integration/signals.py|345|
mailcow_integration/signals.py|355 col 1|
mailcow_integration/signals.py|357|
mailcow_integration/signals.py|365 col 1|
mailcow_integration/signals.py|375|
mailcow_integration/signals.py|380|
mailcow_integration/signals.py|382|
mailcow_integration/signals.py|390|
mailcow_integration/squire_mailcow.py|21|
mailcow_integration/squire_mailcow.py|25 col 1|
mailcow_integration/squire_mailcow.py|26|
mailcow_integration/squire_mailcow.py|32|
mailcow_integration/squire_mailcow.py|37|
mailcow_integration/squire_mailcow.py|48 col 1|
mailcow_integration/squire_mailcow.py|64|
mailcow_integration/squire_mailcow.py|85|
mailcow_integration/squire_mailcow.py|91|
mailcow_integration/squire_mailcow.py|99|
mailcow_integration/squire_mailcow.py|105|
mailcow_integration/squire_mailcow.py|119|
mailcow_integration/squire_mailcow.py|144|
mailcow_integration/squire_mailcow.py|159|
mailcow_integration/squire_mailcow.py|167|
mailcow_integration/squire_mailcow.py|176|
mailcow_integration/squire_mailcow.py|180|
mailcow_integration/squire_mailcow.py|185|
mailcow_integration/squire_mailcow.py|189|
mailcow_integration/squire_mailcow.py|192|
mailcow_integration/squire_mailcow.py|209|
mailcow_integration/squire_mailcow.py|221|
mailcow_integration/squire_mailcow.py|228|
mailcow_integration/squire_mailcow.py|243|
mailcow_integration/squire_mailcow.py|246|
mailcow_integration/squire_mailcow.py|256|
mailcow_integration/squire_mailcow.py|271|
mailcow_integration/squire_mailcow.py|279|
mailcow_integration/squire_mailcow.py|292|
mailcow_integration/squire_mailcow.py|300|
mailcow_integration/squire_mailcow.py|304|
mailcow_integration/squire_mailcow.py|307|
mailcow_integration/squire_mailcow.py|317|
mailcow_integration/squire_mailcow.py|322|
mailcow_integration/squire_mailcow.py|324|
mailcow_integration/squire_mailcow.py|328|
mailcow_integration/tests/api/test_interfaces.py|6|
mailcow_integration/tests/api/test_interfaces.py|11|
mailcow_integration/tests/api/test_interfaces.py|30|
mailcow_integration/tests/api/test_interfaces.py|71|
mailcow_integration/tests/api/test_interfaces.py|81|
mailcow_integration/tests/api/test_interfaces.py|83|
mailcow_integration/tests/api/test_interfaces.py|90|
mailcow_integration/tests/api/test_interfaces.py|92|
mailcow_integration/tests/api/test_interfaces.py|100|
mailcow_integration/tests/api/test_interfaces.py|128|
mailcow_integration/tests/api/test_interfaces.py|133|
mailcow_integration/tests/api/tests_mailcow_client.py|23 col 1|
mailcow_integration/tests/api/tests_mailcow_client.py|24|
mailcow_integration/tests/api/tests_mailcow_client.py|31|
mailcow_integration/tests/api/tests_mailcow_client.py|34|
mailcow_integration/tests/api/tests_mailcow_client.py|38|
mailcow_integration/tests/api/tests_mailcow_client.py|46|
mailcow_integration/tests/api/tests_mailcow_client.py|48|
mailcow_integration/tests/api/tests_mailcow_client.py|50|
mailcow_integration/tests/api/tests_mailcow_client.py|55|
mailcow_integration/tests/api/tests_mailcow_client.py|62|
mailcow_integration/tests/api/tests_mailcow_client.py|66|
mailcow_integration/tests/api/tests_mailcow_client.py|75|
mailcow_integration/tests/api/tests_mailcow_client.py|80|
mailcow_integration/tests/api/tests_mailcow_client.py|87|
mailcow_integration/tests/api/tests_mailcow_client.py|89|
mailcow_integration/tests/api/tests_mailcow_client.py|91|
mailcow_integration/tests/api/tests_mailcow_client.py|93|
mailcow_integration/tests/api/tests_mailcow_client.py|96|
mailcow_integration/tests/api/tests_mailcow_client.py|100|
mailcow_integration/tests/api/tests_mailcow_client.py|107|
mailcow_integration/tests/api/tests_mailcow_client.py|114|
mailcow_integration/tests/api/tests_mailcow_client.py|121|
mailcow_integration/tests/api/tests_mailcow_client.py|128|
mailcow_integration/tests/api/tests_mailcow_client.py|135|
mailcow_integration/tests/api/tests_mailcow_client.py|142|
mailcow_integration/tests/api/tests_mailcow_client.py|152|
mailcow_integration/tests/api/tests_mailcow_client.py|157|
mailcow_integration/tests/api/tests_mailcow_client.py|168|
mailcow_integration/tests/api/tests_mailcow_client.py|172|
mailcow_integration/tests/api/tests_mailcow_client.py|182|
mailcow_integration/tests/api/tests_mailcow_client.py|187|
mailcow_integration/tests/api/tests_mailcow_client.py|199|
mailcow_integration/tests/api/tests_mailcow_client.py|212|
mailcow_integration/tests/api/tests_mailcow_client.py|221|
mailcow_integration/tests/api/tests_mailcow_client.py|234|
mailcow_integration/tests/api/tests_mailcow_client.py|240|
mailcow_integration/tests/api/tests_mailcow_client.py|242|
mailcow_integration/tests/api/tests_mailcow_client.py|247|
mailcow_integration/tests/api/tests_mailcow_client.py|253|
mailcow_integration/tests/api/tests_mailcow_client.py|255|
mailcow_integration/tests/api/tests_mailcow_client.py|260|
mailcow_integration/tests/api/tests_mailcow_client.py|265|
mailcow_integration/tests/api/tests_mailcow_client.py|277|
mailcow_integration/tests/api/tests_mailcow_client.py|287|
mailcow_integration/tests/api/tests_mailcow_client.py|296|
mailcow_integration/tests/api/tests_mailcow_client.py|306|
mailcow_integration/tests/api/tests_mailcow_client.py|312|
mailcow_integration/tests/api/tests_mailcow_client.py|314|
mailcow_integration/tests/api/tests_mailcow_client.py|319|
mailcow_integration/tests/api/tests_mailcow_client.py|325|
mailcow_integration/tests/api/tests_mailcow_client.py|327|
mailcow_integration/tests/api/tests_mailcow_client.py|332|
mailcow_integration/tests/api/tests_mailcow_client.py|339|
mailcow_integration/tests/api/tests_mailcow_client.py|356|
mailcow_integration/tests/api/tests_mailcow_client.py|361|
mailcow_integration/tests/api/tests_mailcow_client.py|372|
mailcow_integration/tests/api/tests_mailcow_client.py|376|
mailcow_integration/tests/api/tests_mailcow_client.py|381|
mailcow_integration/tests/api/tests_mailcow_client.py|393|
mailcow_integration/tests/api/tests_mailcow_client.py|397|
mailcow_integration/tests/api/tests_mailcow_client.py|407|
mailcow_integration/tests/api/tests_mailcow_client.py|410|
mailcow_integration/tests/api/tests_mailcow_client.py|422|
mailcow_integration/tests/api/tests_mailcow_client.py|432|
mailcow_integration/tests/api/tests_mailcow_client.py|435|
mailcow_integration/tests/api/tests_mailcow_client.py|447|
mailcow_integration/tests/tests_preferences.py|13 col 1|
mailcow_integration/tests/tests_preferences.py|14|
mailcow_integration/tests/tests_preferences.py|16|
mailcow_integration/tests/tests_preferences.py|23|
mailcow_integration/tests/tests_preferences.py|27|
mailcow_integration/tests/tests_preferences.py|31|
mailcow_integration/tests/tests_squire_mailcow.py|26|
mailcow_integration/tests/tests_squire_mailcow.py|32|
mailcow_integration/tests/tests_squire_mailcow.py|39|
mailcow_integration/tests/tests_squire_mailcow.py|45|
mailcow_integration/tests/tests_squire_mailcow.py|47|
mailcow_integration/tests/tests_squire_mailcow.py|53|
mailcow_integration/tests/tests_squire_mailcow.py|59|
mailcow_integration/tests/tests_squire_mailcow.py|63|
mailcow_integration/tests/tests_squire_mailcow.py|69|
mailcow_integration/tests/tests_squire_mailcow.py|73|
mailcow_integration/tests/tests_squire_mailcow.py|77|
mailcow_integration/tests/tests_squire_mailcow.py|81|
mailcow_integration/tests/tests_squire_mailcow.py|103|
mailcow_integration/tests/tests_squire_mailcow.py|107|
mailcow_integration/tests/tests_squire_mailcow.py|112|
mailcow_integration/tests/tests_squire_mailcow.py|134|
mailcow_integration/tests/tests_squire_mailcow.py|142|
mailcow_integration/tests/tests_squire_mailcow.py|150|
mailcow_integration/tests/tests_squire_mailcow.py|153|
mailcow_integration/tests/tests_squire_mailcow.py|156|
mailcow_integration/tests/tests_squire_mailcow.py|162|
mailcow_integration/tests/tests_squire_mailcow.py|173|
mailcow_integration/tests/tests_squire_mailcow.py|186|
mailcow_integration/tests/tests_squire_mailcow.py|193|
mailcow_integration/tests/tests_squire_mailcow.py|197|
mailcow_integration/tests/tests_squire_mailcow.py|207|
mailcow_integration/tests/tests_squire_mailcow.py|212|
mailcow_integration/tests/tests_squire_mailcow.py|228|
mailcow_integration/tests/tests_squire_mailcow.py|238|
mailcow_integration/tests/tests_squire_mailcow.py|243|
mailcow_integration/tests/tests_squire_mailcow.py|250|
mailcow_integration/tests/tests_squire_mailcow.py|259|
mailcow_integration/tests/tests_squire_mailcow.py|269|
mailcow_integration/tests/tests_squire_mailcow.py|274|
mailcow_integration/tests/tests_squire_mailcow.py|289|
mailcow_integration/tests/tests_squire_mailcow.py|298|
mailcow_integration/tests/tests_squire_mailcow.py|303|
mailcow_integration/tests/tests_squire_mailcow.py|318|
mailcow_integration/tests/tests_squire_mailcow.py|330|
mailcow_integration/tests/tests_squire_mailcow.py|335|
mailcow_integration/tests/tests_squire_mailcow.py|351|
mailcow_integration/tests/tests_squire_mailcow.py|358|
mailcow_integration/tests/tests_squire_mailcow.py|383|
mailcow_integration/tests/tests_squire_mailcow.py|395|
mailcow_integration/tests/tests_squire_mailcow.py|398|
mailcow_integration/tests/tests_squire_mailcow.py|400|
mailcow_integration/tests/tests_squire_mailcow.py|404|
mailcow_integration/tests/tests_squire_mailcow.py|413|
mailcow_integration/tests/tests_squire_mailcow.py|419|
mailcow_integration/tests/tests_squire_mailcow.py|438|
mailcow_integration/tests/tests_squire_mailcow.py|451|
mailcow_integration/tests/tests_squire_mailcow.py|467|
mailcow_integration/tests/tests_squire_mailcow.py|478|
mailcow_integration/tests/tests_squire_mailcow.py|481|
mailcow_integration/tests/tests_squire_mailcow.py|484|
mailcow_integration/tests/tests_squire_mailcow.py|491|
mailcow_integration/tests/tests_squire_mailcow.py|499|
mailcow_integration/tests/tests_squire_mailcow.py|507|
mailcow_integration/tests/tests_squire_mailcow.py|511|
mailcow_integration/tests/tests_squire_mailcow.py|513|
mailcow_integration/tests/tests_squire_mailcow.py|516|
mailcow_integration/tests/tests_squire_mailcow.py|525|
mailcow_integration/tests/tests_squire_mailcow.py|527|
mailcow_integration/tests/tests_squire_mailcow.py|530|
mailcow_integration/tests/tests_squire_mailcow.py|544|
mailcow_integration/tests/tests_squire_mailcow.py|549|
mailcow_integration/tests/tests_squire_mailcow.py|553|
mailcow_integration/tests/tests_squire_mailcow.py|556|
mailcow_integration/tests/tests_view_status.py|11|
mailcow_integration/tests/tests_view_status.py|25 col 1|
mailcow_integration/tests/tests_view_status.py|26|
mailcow_integration/tests/tests_view_status.py|28|
mailcow_integration/tests/tests_view_status.py|33 col 1|
mailcow_integration/tests/tests_view_status.py|34|
mailcow_integration/tests/tests_view_status.py|46|
mailcow_integration/tests/tests_view_status.py|51|
mailcow_integration/tests/tests_view_status.py|53|
mailcow_integration/tests/tests_view_status.py|59|
mailcow_integration/tests/tests_view_status.py|64|
mailcow_integration/tests/tests_view_status.py|66|
mailcow_integration/tests/tests_view_status.py|70|
mailcow_integration/tests/tests_view_status.py|77|
mailcow_integration/tests/tests_view_status.py|79|
mailcow_integration/tests/tests_view_status.py|85|
mailcow_integration/tests/tests_view_status.py|88|
mailcow_integration/tests/tests_view_status.py|95|
mailcow_integration/tests/tests_view_status.py|98|
mailcow_integration/tests/tests_view_status.py|105|
mailcow_integration/tests/tests_view_status.py|107|
mailcow_integration/tests/tests_view_status.py|116|
mailcow_integration/tests/tests_view_status.py|123|
mailcow_integration/tests/tests_view_status.py|126|
mailcow_integration/tests/tests_view_status.py|133|
mailcow_integration/tests/tests_view_status.py|135|
mailcow_integration/tests/tests_view_status.py|144|
mailcow_integration/tests/tests_view_status.py|150 col 1|
mailcow_integration/tests/tests_view_status.py|151|
mailcow_integration/tests/tests_view_status.py|153|
mailcow_integration/tests/tests_view_status.py|155|
mailcow_integration/tests/tests_view_status.py|161|
mailcow_integration/tests/tests_view_status.py|163|
mailcow_integration/tests/tests_view_status.py|167|
mailcow_integration/tests/tests_view_status.py|171|
mailcow_integration/tests/tests_view_status.py|174|
mailcow_integration/tests/tests_view_status.py|180|
mailcow_integration/tests/tests_view_status.py|184|
mailcow_integration/tests/tests_view_status.py|188|
mailcow_integration/tests/tests_view_status.py|191|
mailcow_integration/tests/tests_view_status.py|198|
mailcow_integration/tests/tests_view_status.py|207|
mailcow_integration/tests/tests_view_status.py|214|
mailcow_integration/tests/tests_view_status.py|218|
mailcow_integration/tests/tests_view_status.py|223|
mailcow_integration/tests/tests_view_status.py|230|
mailcow_integration/tests/tests_view_status.py|243|
mailcow_integration/tests/tests_view_status.py|270|
mailcow_integration/tests/tests_view_status.py|279|
mailcow_integration/tests/tests_view_status.py|285|
mailcow_integration/tests/tests_view_status.py|287|
mailcow_integration/tests/tests_view_status.py|291|
mailcow_integration/tests/tests_view_status.py|299|
mailcow_integration/tests/tests_view_status.py|314|
mailcow_integration/tests/tests_view_status.py|325|
mailcow_integration/tests/tests_view_status.py|339|
mailcow_integration/tests/tests_view_status.py|344|
mailcow_integration/tests/tests_view_status.py|348|
mailcow_integration/tests/tests_view_status.py|357|
mailcow_integration/tests/tests_view_status.py|372|
mailcow_integration/tests/tests_view_status.py|376|
mailcow_integration/tests/tests_view_status.py|381|
mailcow_integration/tests/tests_view_status.py|390|
mailcow_integration/tests/tests_view_status.py|400|
mailcow_integration/tests/tests_view_status.py|406|
mailcow_integration/tests/tests_view_status.py|415|
mailcow_integration/tests/tests_view_status.py|420|
mailcow_integration/tests/tests_view_status.py|431|
mailcow_integration/tests/tests_view_status.py|449|
mailcow_integration/tests/tests_view_status.py|464|
mailcow_integration/tests/tests_view_status.py|469|
mailcow_integration/tests/tests_view_status.py|475|
mailcow_integration/tests/tests_view_status.py|477|
mailcow_integration/tests/tests_view_status.py|481|
mailcow_integration/tests/tests_view_status.py|483|
mailcow_integration/tests/tests_view_status.py|487|
mailcow_integration/tests/tests_view_status.py|489|
mailcow_integration/tests/tests_view_status.py|492|
mailcow_integration/tests/tests_view_status.py|501|
mailcow_integration/tests/tests_view_status.py|517|
mailcow_integration/tests/tests_view_status.py|532|
mailcow_integration/tests/tests_view_status.py|547|
mailcow_integration/tests/tests_view_status.py|563|
mailcow_integration/tests/tests_view_status.py|576|
membership_file/models.py|19 col 1|
membership_file/models.py|21|
membership_file/models.py|25|
membership_file/models.py|33 col 1|
membership_file/models.py|41|
membership_file/models.py|149|
membership_file/models.py|253|
membership_file/models.py|257|
membership_file/models.py|264|
membership_file/models.py|268|
membership_file/tests/tests_model.py|13 col 1|
membership_file/tests/tests_model.py|14|
membership_file/tests/tests_model.py|17|
membership_file/tests/tests_model.py|26|
membership_file/tests/tests_model.py|31|
membership_file/tests/tests_model.py|42|
membership_file/tests/tests_model.py|51|
membership_file/tests/tests_model.py|67|
squire/settings.py|243|
squire/settings.py|375|
squire/settings.py|385|
squire/settings_mailcow.py|30|
squire/settings_mailcow.py|33|
squire/settings_mailcow.py|40|
utils/tests/test_views.py|139|
utils/tests/test_views.py|141 col 1|
utils/tests/test_views.py|170 col 1|
utils/tests/test_views.py|171|
utils/tests/test_views.py|181|
utils/tests/test_views.py|185|
utils/tests/test_views.py|191|
utils/tests/test_views.py|197|
utils/viewcollectives.py|57|
utils/viewcollectives.py|61|
utils/viewcollectives.py|65|
utils/viewcollectives.py|71|
utils/viewcollectives.py|77|
utils/viewcollectives.py|101 col 1|
utils/viewcollectives.py|103|
utils/viewcollectives.py|112|
utils/viewcollectives.py|156|
utils/viewcollectives.py|171|
utils/viewcollectives.py|207|
utils/viewcollectives.py|225|
utils/views.py|119|
@@ -84,9 +84,12 @@ class AssociationGroupMembership(models.Model): | |||
For another we want additional information stored that is difficult when attempting to override the link between | |||
user and group. | |||
""" | |||
member = models.ForeignKey(Member, on_delete=models.CASCADE, blank=True, null=True) | |||
# PROTECT prevents accidental deletion of a member while it is still in a committee. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
# PROTECT prevents accidental deletion of a member while it is still in a committee. | |
# PROTECT prevents accidental deletion of a member while it is still in a committee. |
# PROTECT prevents accidental deletion of a member while it is still in a committee. | ||
# It also serves as a way to prevent deletion-signals to fire at the same | ||
# time when a committee is deleted (once for member, and then the committee) | ||
member = models.ForeignKey(Member, on_delete=models.PROTECT, blank=True, null=True) | ||
external_person = models.CharField(max_length=64, help_text="Name of a person who is not a registered member", blank=True) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
external_person = models.CharField(max_length=64, help_text="Name of a person who is not a registered member", blank=True) | |
external_person = models.CharField( | |
max_length=64, help_text="Name of a person who is not a registered member", blank=True | |
) |
@@ -30,26 +30,26 @@ def test_check_access_super(self): | |||
# New request with no info WILL fail at the parent | |||
request = RequestFactory().get(path='') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
request = RequestFactory().get(path='') | |
request = RequestFactory().get(path="") |
|
||
def test_check_access_without_permission_requirement(self): | ||
self.assertEqual(self.config.check_access_validity(self.request, self.association_group), True) | ||
self.assertEqual(self.config.is_accessible(self.request, self.association_group), True) | ||
|
||
def test_check_access_permission_requirement_fails(self): | ||
self.config.group_requires_permission = 'auth.change_user' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
self.config.group_requires_permission = 'auth.change_user' | |
self.config.group_requires_permission = "auth.change_user" |
|
||
def test_check_access_permission_requirement_fails(self): | ||
self.config.group_requires_permission = 'auth.change_user' | ||
self.assertEqual(self.config.check_access_validity(self.request, self.association_group), False) | ||
self.assertEqual(self.config.is_accessible(self.request, self.association_group), False) | ||
|
||
def test_check_access_permission_requirement_success(self): | ||
self.config.group_requires_permission = 'auth.change_user' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
self.config.group_requires_permission = 'auth.change_user' | |
self.config.group_requires_permission = "auth.change_user" |
|
||
def get_urls(self): | ||
return [ | ||
path('', MailcowTabbedStatusView.as_view(config=self), name='mailcow_status'), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
path('', MailcowTabbedStatusView.as_view(config=self), name='mailcow_status'), | |
path("", MailcowTabbedStatusView.as_view(config=self), name="mailcow_status"), |
from committees.models import AssociationGroup | ||
from core.status_collective import AdminStatusViewMixin | ||
|
||
from mailcow_integration.api.exceptions import MailcowAPIAccessDenied, MailcowAPIReadWriteAccessDenied, MailcowAuthException, MailcowException |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
from mailcow_integration.api.exceptions import MailcowAPIAccessDenied, MailcowAPIReadWriteAccessDenied, MailcowAuthException, MailcowException | |
from mailcow_integration.api.exceptions import ( | |
MailcowAPIAccessDenied, | |
MailcowAPIReadWriteAccessDenied, | |
MailcowAuthException, | |
MailcowException, | |
) |
|
||
logger = logging.getLogger(__name__) | ||
|
||
class AliasStatus(Enum): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
class AliasStatus(Enum): | |
class AliasStatus(Enum): |
""" Aliases that should exist according to Squire may not be in sync with those in Mailcow. | ||
This Enum indicates the disparity between the two. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Aliases that should exist according to Squire may not be in sync with those in Mailcow. | |
This Enum indicates the disparity between the two. | |
"""Aliases that should exist according to Squire may not be in sync with those in Mailcow. | |
This Enum indicates the disparity between the two. |
VALID = 0 # Squire and mailcow are in sync | ||
MISSING = 1 # Alias is not in Mailcow, but should exist | ||
NOT_MANAGED_BY_SQUIRE = 2 # Alias is in Mailcow, but does not have a public comment indicating it is managed by Squire | ||
OUTDATED = 3 # Alias goto-addresses do not match up with Squire | ||
RESERVED = 4 # Alias already reserved for a member-alias, but a committee has it as their contact info | ||
MAILBOX = 5 # Mailbox with the same name already exists; not managed by Squire | ||
ORPHAN = 6 # Alias is not needed by Squire, but existed in Mailcow |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
VALID = 0 # Squire and mailcow are in sync | |
MISSING = 1 # Alias is not in Mailcow, but should exist | |
NOT_MANAGED_BY_SQUIRE = 2 # Alias is in Mailcow, but does not have a public comment indicating it is managed by Squire | |
OUTDATED = 3 # Alias goto-addresses do not match up with Squire | |
RESERVED = 4 # Alias already reserved for a member-alias, but a committee has it as their contact info | |
MAILBOX = 5 # Mailbox with the same name already exists; not managed by Squire | |
ORPHAN = 6 # Alias is not needed by Squire, but existed in Mailcow | |
VALID = 0 # Squire and mailcow are in sync | |
MISSING = 1 # Alias is not in Mailcow, but should exist | |
NOT_MANAGED_BY_SQUIRE = ( | |
2 # Alias is in Mailcow, but does not have a public comment indicating it is managed by Squire | |
) | |
OUTDATED = 3 # Alias goto-addresses do not match up with Squire | |
RESERVED = 4 # Alias already reserved for a member-alias, but a committee has it as their contact info | |
MAILBOX = 5 # Mailbox with the same name already exists; not managed by Squire | |
ORPHAN = 6 # Alias is not needed by Squire, but existed in Mailcow | |
Moved member aliases update call to a form when a member updates their email preferences. Added tests for this form and the corresponding view. Honorary members are considered active members. Renamed is_accessble to is_accessible_for
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
blackfmt
mailcow_integration/admin_status/views.py|183|
mailcow_integration/admin_status/views.py|186|
mailcow_integration/admin_status/views.py|191|
mailcow_integration/admin_status/views.py|197|
mailcow_integration/admin_status/views.py|199|
mailcow_integration/admin_status/views.py|203|
mailcow_integration/admin_status/views.py|211|
mailcow_integration/admin_status/views.py|216|
mailcow_integration/admin_status/views.py|218|
mailcow_integration/admin_status/views.py|220|
mailcow_integration/admin_status/views.py|222|
mailcow_integration/admin_status/views.py|225|
mailcow_integration/admin_status/views.py|235|
mailcow_integration/admin_status/views.py|241|
mailcow_integration/admin_status/views.py|243|
mailcow_integration/admin_status/views.py|246|
mailcow_integration/admin_status/views.py|250|
mailcow_integration/admin_status/views.py|252|
mailcow_integration/admin_status/views.py|287 col 1|
mailcow_integration/admin_status/views.py|288|
mailcow_integration/api/client.py|14 col 1|
mailcow_integration/api/client.py|15|
mailcow_integration/api/client.py|19 col 1|
mailcow_integration/api/client.py|20|
mailcow_integration/api/client.py|24|
mailcow_integration/api/client.py|26|
mailcow_integration/api/client.py|31 col 1|
mailcow_integration/api/client.py|38|
mailcow_integration/api/client.py|46|
mailcow_integration/api/client.py|49|
mailcow_integration/api/client.py|54|
mailcow_integration/api/client.py|57|
mailcow_integration/api/client.py|63|
mailcow_integration/api/client.py|69|
mailcow_integration/api/client.py|71|
mailcow_integration/api/client.py|97|
mailcow_integration/api/client.py|102|
mailcow_integration/api/client.py|107|
mailcow_integration/api/client.py|111|
mailcow_integration/api/client.py|124|
mailcow_integration/api/client.py|126|
mailcow_integration/api/client.py|128|
mailcow_integration/api/client.py|130|
mailcow_integration/api/client.py|136|
mailcow_integration/api/client.py|139|
mailcow_integration/api/client.py|148|
mailcow_integration/api/client.py|150|
mailcow_integration/api/client.py|152|
mailcow_integration/api/client.py|154|
mailcow_integration/api/client.py|160|
mailcow_integration/api/client.py|175|
mailcow_integration/api/client.py|183|
mailcow_integration/api/client.py|188|
mailcow_integration/api/client.py|193|
mailcow_integration/api/client.py|195|
mailcow_integration/api/client.py|202|
mailcow_integration/api/client.py|207|
mailcow_integration/api/client.py|209|
mailcow_integration/api/exceptions.py|1|
mailcow_integration/api/exceptions.py|3|
mailcow_integration/api/exceptions.py|6|
mailcow_integration/api/exceptions.py|9|
mailcow_integration/api/exceptions.py|12|
mailcow_integration/api/exceptions.py|15|
mailcow_integration/api/exceptions.py|18|
mailcow_integration/api/interface/alias.py|9 col 1|
mailcow_integration/api/interface/alias.py|18|
mailcow_integration/api/interface/alias.py|24|
mailcow_integration/api/interface/alias.py|33|
mailcow_integration/api/interface/alias.py|55|
mailcow_integration/api/interface/base.py|3 col 1|
mailcow_integration/api/interface/base.py|4|
mailcow_integration/api/interface/base.py|8|
mailcow_integration/api/interface/mailbox.py|8 col 1|
mailcow_integration/api/interface/mailbox.py|9|
mailcow_integration/api/interface/mailbox.py|14 col 1|
mailcow_integration/api/interface/mailbox.py|15|
mailcow_integration/api/interface/mailbox.py|21 col 1|
mailcow_integration/api/interface/mailbox.py|22|
mailcow_integration/api/interface/mailbox.py|29|
mailcow_integration/api/interface/mailbox.py|39|
mailcow_integration/api/interface/mailbox.py|44|
mailcow_integration/api/interface/mailbox.py|63|
mailcow_integration/api/interface/mailbox.py|70|
mailcow_integration/api/interface/mailbox.py|72|
mailcow_integration/api/interface/mailbox.py|78|
mailcow_integration/api/interface/mailbox.py|87|
mailcow_integration/api/interface/mailbox.py|89|
mailcow_integration/api/interface/mailbox.py|98|
mailcow_integration/api/interface/mailbox.py|107|
mailcow_integration/api/interface/rspamd.py|6 col 1|
mailcow_integration/api/interface/rspamd.py|8|
mailcow_integration/api/interface/rspamd.py|11|
mailcow_integration/api/interface/rspamd.py|15|
mailcow_integration/apps.py|8 col 1|
mailcow_integration/apps.py|10 col 1|
mailcow_integration/apps.py|11|
mailcow_integration/apps.py|22|
mailcow_integration/apps.py|29|
mailcow_integration/dynamic_preferences_registry.py|10|
mailcow_integration/dynamic_preferences_registry.py|16|
mailcow_integration/dynamic_preferences_registry.py|18|
mailcow_integration/dynamic_preferences_registry.py|21 col 1|
mailcow_integration/dynamic_preferences_registry.py|22|
mailcow_integration/dynamic_preferences_registry.py|25 col 1|
mailcow_integration/dynamic_preferences_registry.py|26|
mailcow_integration/dynamic_preferences_registry.py|31|
mailcow_integration/dynamic_preferences_registry.py|33|
mailcow_integration/dynamic_preferences_registry.py|37|
mailcow_integration/dynamic_preferences_registry.py|41|
mailcow_integration/dynamic_preferences_registry.py|46|
mailcow_integration/dynamic_preferences_registry.py|52|
mailcow_integration/dynamic_preferences_registry.py|58|
mailcow_integration/dynamic_preferences_registry.py|61 col 1|
mailcow_integration/management/commands/mailcow_api_request.py|6|
mailcow_integration/management/commands/mailcow_api_request.py|10|
mailcow_integration/management/commands/mailcow_api_request.py|16|
mailcow_integration/signals.py|11|
mailcow_integration/signals.py|16|
mailcow_integration/signals.py|20 col 1|
mailcow_integration/signals.py|21|
mailcow_integration/signals.py|30 col 1|
mailcow_integration/signals.py|38 col 1|
mailcow_integration/signals.py|45 col 1|
mailcow_integration/signals.py|50|
mailcow_integration/signals.py|68 col 1|
mailcow_integration/signals.py|70|
mailcow_integration/signals.py|76|
mailcow_integration/signals.py|91 col 1|
mailcow_integration/signals.py|93|
mailcow_integration/signals.py|102 col 1|
mailcow_integration/signals.py|104|
mailcow_integration/signals.py|121|
mailcow_integration/signals.py|141 col 1|
mailcow_integration/signals.py|143|
mailcow_integration/signals.py|178 col 1|
mailcow_integration/signals.py|180|
mailcow_integration/signals.py|182|
mailcow_integration/signals.py|190 col 1|
mailcow_integration/signals.py|195|
mailcow_integration/signals.py|214 col 1|
mailcow_integration/signals.py|216|
mailcow_integration/signals.py|228|
mailcow_integration/signals.py|232|
mailcow_integration/signals.py|242 col 1|
mailcow_integration/signals.py|244|
mailcow_integration/signals.py|258|
mailcow_integration/signals.py|276 col 1|
mailcow_integration/signals.py|278|
mailcow_integration/signals.py|293 col 1|
mailcow_integration/signals.py|295|
mailcow_integration/signals.py|303 col 1|
mailcow_integration/signals.py|308|
mailcow_integration/signals.py|326 col 1|
mailcow_integration/signals.py|328|
mailcow_integration/signals.py|339|
mailcow_integration/signals.py|353 col 1|
mailcow_integration/signals.py|355|
mailcow_integration/signals.py|365 col 1|
mailcow_integration/signals.py|375|
mailcow_integration/signals.py|380|
mailcow_integration/signals.py|382|
mailcow_integration/signals.py|390|
mailcow_integration/squire_mailcow.py|21|
mailcow_integration/squire_mailcow.py|25 col 1|
mailcow_integration/squire_mailcow.py|26|
mailcow_integration/squire_mailcow.py|32|
mailcow_integration/squire_mailcow.py|37|
mailcow_integration/squire_mailcow.py|48 col 1|
mailcow_integration/squire_mailcow.py|64|
mailcow_integration/squire_mailcow.py|85|
mailcow_integration/squire_mailcow.py|91|
mailcow_integration/squire_mailcow.py|99|
mailcow_integration/squire_mailcow.py|105|
mailcow_integration/squire_mailcow.py|119|
mailcow_integration/squire_mailcow.py|144|
mailcow_integration/squire_mailcow.py|159|
mailcow_integration/squire_mailcow.py|167|
mailcow_integration/squire_mailcow.py|176|
mailcow_integration/squire_mailcow.py|180|
mailcow_integration/squire_mailcow.py|185|
mailcow_integration/squire_mailcow.py|189|
mailcow_integration/squire_mailcow.py|192|
mailcow_integration/squire_mailcow.py|209|
mailcow_integration/squire_mailcow.py|221|
mailcow_integration/squire_mailcow.py|228|
mailcow_integration/squire_mailcow.py|243|
mailcow_integration/squire_mailcow.py|246|
mailcow_integration/squire_mailcow.py|256|
mailcow_integration/squire_mailcow.py|271|
mailcow_integration/squire_mailcow.py|279|
mailcow_integration/squire_mailcow.py|292|
mailcow_integration/squire_mailcow.py|300|
mailcow_integration/squire_mailcow.py|304|
mailcow_integration/squire_mailcow.py|307|
mailcow_integration/squire_mailcow.py|317|
mailcow_integration/squire_mailcow.py|322|
mailcow_integration/squire_mailcow.py|324|
mailcow_integration/squire_mailcow.py|328|
mailcow_integration/tests/api/test_interfaces.py|6|
mailcow_integration/tests/api/test_interfaces.py|11|
mailcow_integration/tests/api/test_interfaces.py|30|
mailcow_integration/tests/api/test_interfaces.py|71|
mailcow_integration/tests/api/test_interfaces.py|81|
mailcow_integration/tests/api/test_interfaces.py|83|
mailcow_integration/tests/api/test_interfaces.py|90|
mailcow_integration/tests/api/test_interfaces.py|92|
mailcow_integration/tests/api/test_interfaces.py|100|
mailcow_integration/tests/api/test_interfaces.py|128|
mailcow_integration/tests/api/test_interfaces.py|133|
mailcow_integration/tests/api/tests_mailcow_client.py|23 col 1|
mailcow_integration/tests/api/tests_mailcow_client.py|24|
mailcow_integration/tests/api/tests_mailcow_client.py|31|
mailcow_integration/tests/api/tests_mailcow_client.py|34|
mailcow_integration/tests/api/tests_mailcow_client.py|38|
mailcow_integration/tests/api/tests_mailcow_client.py|46|
mailcow_integration/tests/api/tests_mailcow_client.py|48|
mailcow_integration/tests/api/tests_mailcow_client.py|50|
mailcow_integration/tests/api/tests_mailcow_client.py|55|
mailcow_integration/tests/api/tests_mailcow_client.py|62|
mailcow_integration/tests/api/tests_mailcow_client.py|66|
mailcow_integration/tests/api/tests_mailcow_client.py|75|
mailcow_integration/tests/api/tests_mailcow_client.py|80|
mailcow_integration/tests/api/tests_mailcow_client.py|87|
mailcow_integration/tests/api/tests_mailcow_client.py|89|
mailcow_integration/tests/api/tests_mailcow_client.py|91|
mailcow_integration/tests/api/tests_mailcow_client.py|93|
mailcow_integration/tests/api/tests_mailcow_client.py|96|
mailcow_integration/tests/api/tests_mailcow_client.py|100|
mailcow_integration/tests/api/tests_mailcow_client.py|107|
mailcow_integration/tests/api/tests_mailcow_client.py|114|
mailcow_integration/tests/api/tests_mailcow_client.py|121|
mailcow_integration/tests/api/tests_mailcow_client.py|128|
mailcow_integration/tests/api/tests_mailcow_client.py|135|
mailcow_integration/tests/api/tests_mailcow_client.py|142|
mailcow_integration/tests/api/tests_mailcow_client.py|152|
mailcow_integration/tests/api/tests_mailcow_client.py|157|
mailcow_integration/tests/api/tests_mailcow_client.py|168|
mailcow_integration/tests/api/tests_mailcow_client.py|172|
mailcow_integration/tests/api/tests_mailcow_client.py|182|
mailcow_integration/tests/api/tests_mailcow_client.py|187|
mailcow_integration/tests/api/tests_mailcow_client.py|199|
mailcow_integration/tests/api/tests_mailcow_client.py|212|
mailcow_integration/tests/api/tests_mailcow_client.py|221|
mailcow_integration/tests/api/tests_mailcow_client.py|234|
mailcow_integration/tests/api/tests_mailcow_client.py|240|
mailcow_integration/tests/api/tests_mailcow_client.py|242|
mailcow_integration/tests/api/tests_mailcow_client.py|247|
mailcow_integration/tests/api/tests_mailcow_client.py|253|
mailcow_integration/tests/api/tests_mailcow_client.py|255|
mailcow_integration/tests/api/tests_mailcow_client.py|260|
mailcow_integration/tests/api/tests_mailcow_client.py|265|
mailcow_integration/tests/api/tests_mailcow_client.py|277|
mailcow_integration/tests/api/tests_mailcow_client.py|287|
mailcow_integration/tests/api/tests_mailcow_client.py|296|
mailcow_integration/tests/api/tests_mailcow_client.py|306|
mailcow_integration/tests/api/tests_mailcow_client.py|312|
mailcow_integration/tests/api/tests_mailcow_client.py|314|
mailcow_integration/tests/api/tests_mailcow_client.py|319|
mailcow_integration/tests/api/tests_mailcow_client.py|325|
mailcow_integration/tests/api/tests_mailcow_client.py|327|
mailcow_integration/tests/api/tests_mailcow_client.py|332|
mailcow_integration/tests/api/tests_mailcow_client.py|339|
mailcow_integration/tests/api/tests_mailcow_client.py|356|
mailcow_integration/tests/api/tests_mailcow_client.py|361|
mailcow_integration/tests/api/tests_mailcow_client.py|372|
mailcow_integration/tests/api/tests_mailcow_client.py|376|
mailcow_integration/tests/api/tests_mailcow_client.py|381|
mailcow_integration/tests/api/tests_mailcow_client.py|393|
mailcow_integration/tests/api/tests_mailcow_client.py|397|
mailcow_integration/tests/api/tests_mailcow_client.py|407|
mailcow_integration/tests/api/tests_mailcow_client.py|410|
mailcow_integration/tests/api/tests_mailcow_client.py|422|
mailcow_integration/tests/api/tests_mailcow_client.py|432|
mailcow_integration/tests/api/tests_mailcow_client.py|435|
mailcow_integration/tests/api/tests_mailcow_client.py|447|
mailcow_integration/tests/tests_member_preferences.py|13|
mailcow_integration/tests/tests_member_preferences.py|24|
mailcow_integration/tests/tests_member_preferences.py|27|
mailcow_integration/tests/tests_member_preferences.py|35|
mailcow_integration/tests/tests_member_preferences.py|38|
mailcow_integration/tests/tests_member_preferences.py|44|
mailcow_integration/tests/tests_member_preferences.py|46|
mailcow_integration/tests/tests_member_preferences.py|48|
mailcow_integration/tests/tests_member_preferences.py|56|
mailcow_integration/tests/tests_member_preferences.py|58|
mailcow_integration/tests/tests_member_preferences.py|60|
mailcow_integration/tests/tests_preferences.py|13 col 1|
mailcow_integration/tests/tests_preferences.py|14|
mailcow_integration/tests/tests_preferences.py|16|
mailcow_integration/tests/tests_preferences.py|23|
mailcow_integration/tests/tests_preferences.py|27|
mailcow_integration/tests/tests_preferences.py|31|
mailcow_integration/tests/tests_squire_mailcow.py|26|
mailcow_integration/tests/tests_squire_mailcow.py|32|
mailcow_integration/tests/tests_squire_mailcow.py|39|
mailcow_integration/tests/tests_squire_mailcow.py|45|
mailcow_integration/tests/tests_squire_mailcow.py|47|
mailcow_integration/tests/tests_squire_mailcow.py|53|
mailcow_integration/tests/tests_squire_mailcow.py|59|
mailcow_integration/tests/tests_squire_mailcow.py|63|
mailcow_integration/tests/tests_squire_mailcow.py|69|
mailcow_integration/tests/tests_squire_mailcow.py|73|
mailcow_integration/tests/tests_squire_mailcow.py|77|
mailcow_integration/tests/tests_squire_mailcow.py|81|
mailcow_integration/tests/tests_squire_mailcow.py|103|
mailcow_integration/tests/tests_squire_mailcow.py|107|
mailcow_integration/tests/tests_squire_mailcow.py|112|
mailcow_integration/tests/tests_squire_mailcow.py|134|
mailcow_integration/tests/tests_squire_mailcow.py|142|
mailcow_integration/tests/tests_squire_mailcow.py|150|
mailcow_integration/tests/tests_squire_mailcow.py|153|
mailcow_integration/tests/tests_squire_mailcow.py|156|
mailcow_integration/tests/tests_squire_mailcow.py|162|
mailcow_integration/tests/tests_squire_mailcow.py|173|
mailcow_integration/tests/tests_squire_mailcow.py|186|
mailcow_integration/tests/tests_squire_mailcow.py|193|
mailcow_integration/tests/tests_squire_mailcow.py|197|
mailcow_integration/tests/tests_squire_mailcow.py|207|
mailcow_integration/tests/tests_squire_mailcow.py|212|
mailcow_integration/tests/tests_squire_mailcow.py|228|
mailcow_integration/tests/tests_squire_mailcow.py|238|
mailcow_integration/tests/tests_squire_mailcow.py|243|
mailcow_integration/tests/tests_squire_mailcow.py|250|
mailcow_integration/tests/tests_squire_mailcow.py|259|
mailcow_integration/tests/tests_squire_mailcow.py|269|
mailcow_integration/tests/tests_squire_mailcow.py|274|
mailcow_integration/tests/tests_squire_mailcow.py|289|
mailcow_integration/tests/tests_squire_mailcow.py|298|
mailcow_integration/tests/tests_squire_mailcow.py|303|
mailcow_integration/tests/tests_squire_mailcow.py|318|
mailcow_integration/tests/tests_squire_mailcow.py|330|
mailcow_integration/tests/tests_squire_mailcow.py|335|
mailcow_integration/tests/tests_squire_mailcow.py|351|
mailcow_integration/tests/tests_squire_mailcow.py|358|
mailcow_integration/tests/tests_squire_mailcow.py|383|
mailcow_integration/tests/tests_squire_mailcow.py|395|
mailcow_integration/tests/tests_squire_mailcow.py|398|
mailcow_integration/tests/tests_squire_mailcow.py|400|
mailcow_integration/tests/tests_squire_mailcow.py|404|
mailcow_integration/tests/tests_squire_mailcow.py|413|
mailcow_integration/tests/tests_squire_mailcow.py|419|
mailcow_integration/tests/tests_squire_mailcow.py|438|
mailcow_integration/tests/tests_squire_mailcow.py|451|
mailcow_integration/tests/tests_squire_mailcow.py|467|
mailcow_integration/tests/tests_squire_mailcow.py|478|
mailcow_integration/tests/tests_squire_mailcow.py|481|
mailcow_integration/tests/tests_squire_mailcow.py|484|
mailcow_integration/tests/tests_squire_mailcow.py|491|
mailcow_integration/tests/tests_squire_mailcow.py|499|
mailcow_integration/tests/tests_squire_mailcow.py|507|
mailcow_integration/tests/tests_squire_mailcow.py|511|
mailcow_integration/tests/tests_squire_mailcow.py|513|
mailcow_integration/tests/tests_squire_mailcow.py|516|
mailcow_integration/tests/tests_squire_mailcow.py|525|
mailcow_integration/tests/tests_squire_mailcow.py|527|
mailcow_integration/tests/tests_squire_mailcow.py|530|
mailcow_integration/tests/tests_squire_mailcow.py|544|
mailcow_integration/tests/tests_squire_mailcow.py|549|
mailcow_integration/tests/tests_squire_mailcow.py|553|
mailcow_integration/tests/tests_squire_mailcow.py|556|
mailcow_integration/tests/tests_view_status.py|11|
mailcow_integration/tests/tests_view_status.py|25 col 1|
mailcow_integration/tests/tests_view_status.py|26|
mailcow_integration/tests/tests_view_status.py|28|
mailcow_integration/tests/tests_view_status.py|33 col 1|
mailcow_integration/tests/tests_view_status.py|34|
mailcow_integration/tests/tests_view_status.py|46|
mailcow_integration/tests/tests_view_status.py|51|
mailcow_integration/tests/tests_view_status.py|53|
mailcow_integration/tests/tests_view_status.py|59|
mailcow_integration/tests/tests_view_status.py|64|
mailcow_integration/tests/tests_view_status.py|66|
mailcow_integration/tests/tests_view_status.py|70|
mailcow_integration/tests/tests_view_status.py|77|
mailcow_integration/tests/tests_view_status.py|79|
mailcow_integration/tests/tests_view_status.py|85|
mailcow_integration/tests/tests_view_status.py|88|
mailcow_integration/tests/tests_view_status.py|95|
mailcow_integration/tests/tests_view_status.py|98|
mailcow_integration/tests/tests_view_status.py|105|
mailcow_integration/tests/tests_view_status.py|107|
mailcow_integration/tests/tests_view_status.py|116|
mailcow_integration/tests/tests_view_status.py|123|
mailcow_integration/tests/tests_view_status.py|126|
mailcow_integration/tests/tests_view_status.py|133|
mailcow_integration/tests/tests_view_status.py|135|
mailcow_integration/tests/tests_view_status.py|144|
mailcow_integration/tests/tests_view_status.py|150 col 1|
mailcow_integration/tests/tests_view_status.py|151|
mailcow_integration/tests/tests_view_status.py|153|
mailcow_integration/tests/tests_view_status.py|155|
mailcow_integration/tests/tests_view_status.py|161|
mailcow_integration/tests/tests_view_status.py|163|
mailcow_integration/tests/tests_view_status.py|167|
mailcow_integration/tests/tests_view_status.py|171|
mailcow_integration/tests/tests_view_status.py|174|
mailcow_integration/tests/tests_view_status.py|180|
mailcow_integration/tests/tests_view_status.py|184|
mailcow_integration/tests/tests_view_status.py|188|
mailcow_integration/tests/tests_view_status.py|191|
mailcow_integration/tests/tests_view_status.py|198|
mailcow_integration/tests/tests_view_status.py|207|
mailcow_integration/tests/tests_view_status.py|214|
mailcow_integration/tests/tests_view_status.py|218|
mailcow_integration/tests/tests_view_status.py|223|
mailcow_integration/tests/tests_view_status.py|230|
mailcow_integration/tests/tests_view_status.py|243|
mailcow_integration/tests/tests_view_status.py|270|
mailcow_integration/tests/tests_view_status.py|279|
mailcow_integration/tests/tests_view_status.py|285|
mailcow_integration/tests/tests_view_status.py|287|
mailcow_integration/tests/tests_view_status.py|291|
mailcow_integration/tests/tests_view_status.py|299|
mailcow_integration/tests/tests_view_status.py|314|
mailcow_integration/tests/tests_view_status.py|325|
mailcow_integration/tests/tests_view_status.py|339|
mailcow_integration/tests/tests_view_status.py|344|
mailcow_integration/tests/tests_view_status.py|348|
mailcow_integration/tests/tests_view_status.py|357|
mailcow_integration/tests/tests_view_status.py|372|
mailcow_integration/tests/tests_view_status.py|376|
mailcow_integration/tests/tests_view_status.py|381|
mailcow_integration/tests/tests_view_status.py|390|
mailcow_integration/tests/tests_view_status.py|400|
mailcow_integration/tests/tests_view_status.py|406|
mailcow_integration/tests/tests_view_status.py|415|
mailcow_integration/tests/tests_view_status.py|420|
mailcow_integration/tests/tests_view_status.py|431|
mailcow_integration/tests/tests_view_status.py|449|
mailcow_integration/tests/tests_view_status.py|464|
mailcow_integration/tests/tests_view_status.py|469|
mailcow_integration/tests/tests_view_status.py|475|
mailcow_integration/tests/tests_view_status.py|477|
mailcow_integration/tests/tests_view_status.py|481|
mailcow_integration/tests/tests_view_status.py|483|
mailcow_integration/tests/tests_view_status.py|487|
mailcow_integration/tests/tests_view_status.py|489|
mailcow_integration/tests/tests_view_status.py|492|
mailcow_integration/tests/tests_view_status.py|501|
mailcow_integration/tests/tests_view_status.py|517|
mailcow_integration/tests/tests_view_status.py|532|
mailcow_integration/tests/tests_view_status.py|547|
mailcow_integration/tests/tests_view_status.py|563|
mailcow_integration/tests/tests_view_status.py|576|
membership_file/models.py|19 col 1|
membership_file/models.py|21|
membership_file/models.py|27|
membership_file/models.py|36 col 1|
membership_file/models.py|44|
membership_file/models.py|152|
membership_file/models.py|260|
membership_file/models.py|264|
membership_file/models.py|271|
membership_file/models.py|275|
membership_file/tests/tests_model.py|13 col 1|
membership_file/tests/tests_model.py|14|
membership_file/tests/tests_model.py|17|
membership_file/tests/tests_model.py|26|
membership_file/tests/tests_model.py|31|
membership_file/tests/tests_model.py|42|
membership_file/tests/tests_model.py|51|
membership_file/tests/tests_model.py|67|
squire/settings.py|243|
squire/settings.py|375|
squire/settings.py|385|
squire/settings_mailcow.py|30|
squire/settings_mailcow.py|33|
squire/settings_mailcow.py|40|
utils/tests/test_views.py|139|
utils/tests/test_views.py|141 col 1|
utils/tests/test_views.py|170 col 1|
utils/tests/test_views.py|171|
utils/tests/test_views.py|181|
utils/tests/test_views.py|185|
utils/tests/test_views.py|191|
utils/tests/test_views.py|197|
utils/viewcollectives.py|57|
utils/viewcollectives.py|61|
utils/viewcollectives.py|65|
utils/viewcollectives.py|71|
utils/viewcollectives.py|77|
utils/viewcollectives.py|101 col 1|
utils/viewcollectives.py|103|
utils/viewcollectives.py|112|
utils/viewcollectives.py|156|
utils/viewcollectives.py|171|
utils/viewcollectives.py|207|
utils/viewcollectives.py|225|
utils/views.py|119|
|
||
def get_urls(self): | ||
return [ | ||
path('', TabbedEmailPreferencesChangeView.as_view(config=self), name='email_preferences'), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
path('', TabbedEmailPreferencesChangeView.as_view(config=self), name='email_preferences'), | |
path("", TabbedEmailPreferencesChangeView.as_view(config=self), name="email_preferences"), |
|
||
from mailcow_integration.squire_mailcow import SquireMailcowManager, get_mailcow_manager | ||
|
||
class MemberMailPreferencesForm(UserPreferenceForm): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
class MemberMailPreferencesForm(UserPreferenceForm): | |
class MemberMailPreferencesForm(UserPreferenceForm): |
""" Form that allows changing member mail preferences """ | ||
def __init__(self, *args, mailcow_manager:SquireMailcowManager=None, **kwargs): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Form that allows changing member mail preferences """ | |
def __init__(self, *args, mailcow_manager:SquireMailcowManager=None, **kwargs): | |
"""Form that allows changing member mail preferences""" | |
def __init__(self, *args, mailcow_manager: SquireMailcowManager = None, **kwargs): |
super().__init__(*args, **kwargs) | ||
|
||
def update_preferences(self, **kwargs): | ||
""" Update mail preferences and invokes the SquireMailcowManager """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Update mail preferences and invokes the SquireMailcowManager """ | |
"""Update mail preferences and invokes the SquireMailcowManager""" |
|
||
from user_interaction.accountcollective import AccountViewMixin | ||
|
||
class EmailPreferencesChangeView(FormView): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
class EmailPreferencesChangeView(FormView): | |
class EmailPreferencesChangeView(FormView): |
status, alias, mailbox = self._get_alias_status(address, subscribers, AliasCategory.MEMBER, | ||
aliases, mailboxes, self.mailcow_manager.ALIAS_MEMBERS_PUBLIC_COMMENT) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
status, alias, mailbox = self._get_alias_status(address, subscribers, AliasCategory.MEMBER, | |
aliases, mailboxes, self.mailcow_manager.ALIAS_MEMBERS_PUBLIC_COMMENT) |
aliases, mailboxes, self.mailcow_manager.ALIAS_MEMBERS_PUBLIC_COMMENT) | ||
|
||
exposure_routes = [] | ||
if config['internal']: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
if config['internal']: | |
if config["internal"]: |
info = AliasInfos(status.name, subscribers, address, "m_" + alias_address_to_id(address), config['title'], config['description'], | ||
alias or mailbox, config['internal'], exposure_routes, config['allow_opt_out'], archive_addresses=config['archive_addresses'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
info = AliasInfos(status.name, subscribers, address, "m_" + alias_address_to_id(address), config['title'], config['description'], | |
alias or mailbox, config['internal'], exposure_routes, config['allow_opt_out'], archive_addresses=config['archive_addresses'] | |
info = AliasInfos( | |
status.name, | |
subscribers, | |
address, | |
"m_" + alias_address_to_id(address), | |
config["title"], | |
config["description"], | |
alias or mailbox, | |
config["internal"], | |
exposure_routes, | |
config["allow_opt_out"], | |
archive_addresses=config["archive_addresses"], |
def _init_global_committee_alias_list(self, aliases: List[MailcowAlias], mailboxes: List[MailcowMailbox]) -> List[AliasInfos]: | ||
""" Initialize global committee aliases. e.g. commissies@example.com """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
def _init_global_committee_alias_list(self, aliases: List[MailcowAlias], mailboxes: List[MailcowMailbox]) -> List[AliasInfos]: | |
""" Initialize global committee aliases. e.g. commissies@example.com """ | |
def _init_global_committee_alias_list( | |
self, aliases: List[MailcowAlias], mailboxes: List[MailcowMailbox] | |
) -> List[AliasInfos]: | |
"""Initialize global committee aliases. e.g. commissies@example.com""" |
status, alias, mailbox = self._get_alias_status(address, subscribers, AliasCategory.GLOBAL_COMMITTEE, | ||
aliases, mailboxes, self.mailcow_manager.ALIAS_GLOBAL_COMMITTEE_PUBLIC_COMMENT) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
status, alias, mailbox = self._get_alias_status(address, subscribers, AliasCategory.GLOBAL_COMMITTEE, | |
aliases, mailboxes, self.mailcow_manager.ALIAS_GLOBAL_COMMITTEE_PUBLIC_COMMENT) | |
status, alias, mailbox = self._get_alias_status( | |
address, | |
subscribers, | |
AliasCategory.GLOBAL_COMMITTEE, | |
aliases, | |
mailboxes, | |
self.mailcow_manager.ALIAS_GLOBAL_COMMITTEE_PUBLIC_COMMENT, | |
) |
Added tests for alias signals, fixing a small collection of related bugs in the process.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
blackfmt
mailcow_integration/api/client.py|54|
mailcow_integration/api/client.py|57|
mailcow_integration/api/client.py|63|
mailcow_integration/api/client.py|69|
mailcow_integration/api/client.py|71|
mailcow_integration/api/client.py|97|
mailcow_integration/api/client.py|102|
mailcow_integration/api/client.py|107|
mailcow_integration/api/client.py|111|
mailcow_integration/api/client.py|124|
mailcow_integration/api/client.py|126|
mailcow_integration/api/client.py|128|
mailcow_integration/api/client.py|130|
mailcow_integration/api/client.py|136|
mailcow_integration/api/client.py|139|
mailcow_integration/api/client.py|148|
mailcow_integration/api/client.py|150|
mailcow_integration/api/client.py|152|
mailcow_integration/api/client.py|154|
mailcow_integration/api/client.py|160|
mailcow_integration/api/client.py|175|
mailcow_integration/api/client.py|183|
mailcow_integration/api/client.py|188|
mailcow_integration/api/client.py|193|
mailcow_integration/api/client.py|195|
mailcow_integration/api/client.py|202|
mailcow_integration/api/client.py|207|
mailcow_integration/api/client.py|209|
mailcow_integration/api/exceptions.py|1|
mailcow_integration/api/exceptions.py|3|
mailcow_integration/api/exceptions.py|6|
mailcow_integration/api/exceptions.py|9|
mailcow_integration/api/exceptions.py|12|
mailcow_integration/api/exceptions.py|15|
mailcow_integration/api/exceptions.py|18|
mailcow_integration/api/interface/alias.py|9 col 1|
mailcow_integration/api/interface/alias.py|18|
mailcow_integration/api/interface/alias.py|24|
mailcow_integration/api/interface/alias.py|33|
mailcow_integration/api/interface/alias.py|55|
mailcow_integration/api/interface/base.py|3 col 1|
mailcow_integration/api/interface/base.py|4|
mailcow_integration/api/interface/base.py|8|
mailcow_integration/api/interface/mailbox.py|8 col 1|
mailcow_integration/api/interface/mailbox.py|9|
mailcow_integration/api/interface/mailbox.py|14 col 1|
mailcow_integration/api/interface/mailbox.py|15|
mailcow_integration/api/interface/mailbox.py|21 col 1|
mailcow_integration/api/interface/mailbox.py|22|
mailcow_integration/api/interface/mailbox.py|29|
mailcow_integration/api/interface/mailbox.py|39|
mailcow_integration/api/interface/mailbox.py|44|
mailcow_integration/api/interface/mailbox.py|63|
mailcow_integration/api/interface/mailbox.py|70|
mailcow_integration/api/interface/mailbox.py|72|
mailcow_integration/api/interface/mailbox.py|78|
mailcow_integration/api/interface/mailbox.py|87|
mailcow_integration/api/interface/mailbox.py|89|
mailcow_integration/api/interface/mailbox.py|98|
mailcow_integration/api/interface/mailbox.py|107|
mailcow_integration/api/interface/rspamd.py|6 col 1|
mailcow_integration/api/interface/rspamd.py|8|
mailcow_integration/api/interface/rspamd.py|11|
mailcow_integration/api/interface/rspamd.py|15|
mailcow_integration/apps.py|8 col 1|
mailcow_integration/apps.py|10 col 1|
mailcow_integration/apps.py|11|
mailcow_integration/apps.py|22|
mailcow_integration/apps.py|29|
mailcow_integration/dynamic_preferences_registry.py|10|
mailcow_integration/dynamic_preferences_registry.py|16|
mailcow_integration/dynamic_preferences_registry.py|18|
mailcow_integration/dynamic_preferences_registry.py|21 col 1|
mailcow_integration/dynamic_preferences_registry.py|22|
mailcow_integration/dynamic_preferences_registry.py|25 col 1|
mailcow_integration/dynamic_preferences_registry.py|26|
mailcow_integration/dynamic_preferences_registry.py|31|
mailcow_integration/dynamic_preferences_registry.py|33|
mailcow_integration/dynamic_preferences_registry.py|37|
mailcow_integration/dynamic_preferences_registry.py|41|
mailcow_integration/dynamic_preferences_registry.py|46|
mailcow_integration/dynamic_preferences_registry.py|52|
mailcow_integration/dynamic_preferences_registry.py|58|
mailcow_integration/dynamic_preferences_registry.py|61 col 1|
mailcow_integration/management/commands/mailcow_api_request.py|6|
mailcow_integration/management/commands/mailcow_api_request.py|10|
mailcow_integration/management/commands/mailcow_api_request.py|16|
mailcow_integration/signals.py|11|
mailcow_integration/signals.py|16|
mailcow_integration/signals.py|20 col 1|
mailcow_integration/signals.py|21|
mailcow_integration/signals.py|30 col 1|
mailcow_integration/signals.py|38 col 1|
mailcow_integration/signals.py|45 col 1|
mailcow_integration/signals.py|50|
mailcow_integration/signals.py|68 col 1|
mailcow_integration/signals.py|70|
mailcow_integration/signals.py|76|
mailcow_integration/signals.py|92 col 1|
mailcow_integration/signals.py|94|
mailcow_integration/signals.py|112|
mailcow_integration/signals.py|132 col 1|
mailcow_integration/signals.py|134|
mailcow_integration/signals.py|167|
mailcow_integration/signals.py|177 col 1|
mailcow_integration/signals.py|179|
mailcow_integration/signals.py|181|
mailcow_integration/signals.py|189 col 1|
mailcow_integration/signals.py|194|
mailcow_integration/signals.py|213 col 1|
mailcow_integration/signals.py|215|
mailcow_integration/signals.py|226|
mailcow_integration/signals.py|231|
mailcow_integration/signals.py|242 col 1|
mailcow_integration/signals.py|244|
mailcow_integration/signals.py|257|
mailcow_integration/signals.py|275 col 1|
mailcow_integration/signals.py|277|
mailcow_integration/signals.py|284|
mailcow_integration/signals.py|299 col 1|
mailcow_integration/signals.py|301|
mailcow_integration/signals.py|309 col 1|
mailcow_integration/signals.py|314|
mailcow_integration/signals.py|332 col 1|
mailcow_integration/signals.py|334|
mailcow_integration/signals.py|345|
mailcow_integration/signals.py|362 col 1|
mailcow_integration/signals.py|364|
mailcow_integration/signals.py|371 col 1|
mailcow_integration/signals.py|373|
mailcow_integration/signals.py|383 col 1|
mailcow_integration/signals.py|392|
mailcow_integration/signals.py|397|
mailcow_integration/signals.py|399|
mailcow_integration/signals.py|407|
mailcow_integration/squire_mailcow.py|21|
mailcow_integration/squire_mailcow.py|25 col 1|
mailcow_integration/squire_mailcow.py|26|
mailcow_integration/squire_mailcow.py|32|
mailcow_integration/squire_mailcow.py|37|
mailcow_integration/squire_mailcow.py|48 col 1|
mailcow_integration/squire_mailcow.py|64|
mailcow_integration/squire_mailcow.py|85|
mailcow_integration/squire_mailcow.py|91|
mailcow_integration/squire_mailcow.py|99|
mailcow_integration/squire_mailcow.py|105|
mailcow_integration/squire_mailcow.py|119|
mailcow_integration/squire_mailcow.py|144|
mailcow_integration/squire_mailcow.py|159|
mailcow_integration/squire_mailcow.py|167|
mailcow_integration/squire_mailcow.py|176|
mailcow_integration/squire_mailcow.py|180|
mailcow_integration/squire_mailcow.py|185|
mailcow_integration/squire_mailcow.py|189|
mailcow_integration/squire_mailcow.py|192|
mailcow_integration/squire_mailcow.py|209|
mailcow_integration/squire_mailcow.py|221|
mailcow_integration/squire_mailcow.py|228|
mailcow_integration/squire_mailcow.py|243|
mailcow_integration/squire_mailcow.py|246|
mailcow_integration/squire_mailcow.py|256|
mailcow_integration/squire_mailcow.py|271|
mailcow_integration/squire_mailcow.py|279|
mailcow_integration/squire_mailcow.py|292|
mailcow_integration/squire_mailcow.py|300|
mailcow_integration/squire_mailcow.py|304|
mailcow_integration/squire_mailcow.py|307|
mailcow_integration/squire_mailcow.py|317|
mailcow_integration/squire_mailcow.py|322|
mailcow_integration/squire_mailcow.py|324|
mailcow_integration/squire_mailcow.py|328|
mailcow_integration/tests/api/test_interfaces.py|6|
mailcow_integration/tests/api/test_interfaces.py|11|
mailcow_integration/tests/api/test_interfaces.py|30|
mailcow_integration/tests/api/test_interfaces.py|71|
mailcow_integration/tests/api/test_interfaces.py|81|
mailcow_integration/tests/api/test_interfaces.py|83|
mailcow_integration/tests/api/test_interfaces.py|90|
mailcow_integration/tests/api/test_interfaces.py|92|
mailcow_integration/tests/api/test_interfaces.py|100|
mailcow_integration/tests/api/test_interfaces.py|128|
mailcow_integration/tests/api/test_interfaces.py|133|
mailcow_integration/tests/api/tests_mailcow_client.py|23 col 1|
mailcow_integration/tests/api/tests_mailcow_client.py|24|
mailcow_integration/tests/api/tests_mailcow_client.py|31|
mailcow_integration/tests/api/tests_mailcow_client.py|34|
mailcow_integration/tests/api/tests_mailcow_client.py|38|
mailcow_integration/tests/api/tests_mailcow_client.py|46|
mailcow_integration/tests/api/tests_mailcow_client.py|48|
mailcow_integration/tests/api/tests_mailcow_client.py|50|
mailcow_integration/tests/api/tests_mailcow_client.py|55|
mailcow_integration/tests/api/tests_mailcow_client.py|62|
mailcow_integration/tests/api/tests_mailcow_client.py|66|
mailcow_integration/tests/api/tests_mailcow_client.py|75|
mailcow_integration/tests/api/tests_mailcow_client.py|80|
mailcow_integration/tests/api/tests_mailcow_client.py|87|
mailcow_integration/tests/api/tests_mailcow_client.py|89|
mailcow_integration/tests/api/tests_mailcow_client.py|91|
mailcow_integration/tests/api/tests_mailcow_client.py|93|
mailcow_integration/tests/api/tests_mailcow_client.py|96|
mailcow_integration/tests/api/tests_mailcow_client.py|100|
mailcow_integration/tests/api/tests_mailcow_client.py|107|
mailcow_integration/tests/api/tests_mailcow_client.py|114|
mailcow_integration/tests/api/tests_mailcow_client.py|121|
mailcow_integration/tests/api/tests_mailcow_client.py|128|
mailcow_integration/tests/api/tests_mailcow_client.py|135|
mailcow_integration/tests/api/tests_mailcow_client.py|142|
mailcow_integration/tests/api/tests_mailcow_client.py|152|
mailcow_integration/tests/api/tests_mailcow_client.py|157|
mailcow_integration/tests/api/tests_mailcow_client.py|168|
mailcow_integration/tests/api/tests_mailcow_client.py|172|
mailcow_integration/tests/api/tests_mailcow_client.py|182|
mailcow_integration/tests/api/tests_mailcow_client.py|187|
mailcow_integration/tests/api/tests_mailcow_client.py|199|
mailcow_integration/tests/api/tests_mailcow_client.py|212|
mailcow_integration/tests/api/tests_mailcow_client.py|221|
mailcow_integration/tests/api/tests_mailcow_client.py|234|
mailcow_integration/tests/api/tests_mailcow_client.py|240|
mailcow_integration/tests/api/tests_mailcow_client.py|242|
mailcow_integration/tests/api/tests_mailcow_client.py|247|
mailcow_integration/tests/api/tests_mailcow_client.py|253|
mailcow_integration/tests/api/tests_mailcow_client.py|255|
mailcow_integration/tests/api/tests_mailcow_client.py|260|
mailcow_integration/tests/api/tests_mailcow_client.py|265|
mailcow_integration/tests/api/tests_mailcow_client.py|277|
mailcow_integration/tests/api/tests_mailcow_client.py|287|
mailcow_integration/tests/api/tests_mailcow_client.py|296|
mailcow_integration/tests/api/tests_mailcow_client.py|306|
mailcow_integration/tests/api/tests_mailcow_client.py|312|
mailcow_integration/tests/api/tests_mailcow_client.py|314|
mailcow_integration/tests/api/tests_mailcow_client.py|319|
mailcow_integration/tests/api/tests_mailcow_client.py|325|
mailcow_integration/tests/api/tests_mailcow_client.py|327|
mailcow_integration/tests/api/tests_mailcow_client.py|332|
mailcow_integration/tests/api/tests_mailcow_client.py|339|
mailcow_integration/tests/api/tests_mailcow_client.py|356|
mailcow_integration/tests/api/tests_mailcow_client.py|361|
mailcow_integration/tests/api/tests_mailcow_client.py|372|
mailcow_integration/tests/api/tests_mailcow_client.py|376|
mailcow_integration/tests/api/tests_mailcow_client.py|381|
mailcow_integration/tests/api/tests_mailcow_client.py|393|
mailcow_integration/tests/api/tests_mailcow_client.py|397|
mailcow_integration/tests/api/tests_mailcow_client.py|407|
mailcow_integration/tests/api/tests_mailcow_client.py|410|
mailcow_integration/tests/api/tests_mailcow_client.py|422|
mailcow_integration/tests/api/tests_mailcow_client.py|432|
mailcow_integration/tests/api/tests_mailcow_client.py|435|
mailcow_integration/tests/api/tests_mailcow_client.py|447|
mailcow_integration/tests/tests_member_preferences.py|13|
mailcow_integration/tests/tests_member_preferences.py|24|
mailcow_integration/tests/tests_member_preferences.py|27|
mailcow_integration/tests/tests_member_preferences.py|35|
mailcow_integration/tests/tests_member_preferences.py|38|
mailcow_integration/tests/tests_member_preferences.py|44|
mailcow_integration/tests/tests_member_preferences.py|46|
mailcow_integration/tests/tests_member_preferences.py|48|
mailcow_integration/tests/tests_member_preferences.py|56|
mailcow_integration/tests/tests_member_preferences.py|58|
mailcow_integration/tests/tests_member_preferences.py|60|
mailcow_integration/tests/tests_preferences.py|13 col 1|
mailcow_integration/tests/tests_preferences.py|14|
mailcow_integration/tests/tests_preferences.py|16|
mailcow_integration/tests/tests_preferences.py|23|
mailcow_integration/tests/tests_preferences.py|27|
mailcow_integration/tests/tests_preferences.py|31|
mailcow_integration/tests/tests_signals.py|12 col 1|
mailcow_integration/tests/tests_signals.py|13|
mailcow_integration/tests/tests_signals.py|31 col 1|
mailcow_integration/tests/tests_signals.py|34 col 1|
mailcow_integration/tests/tests_signals.py|46|
mailcow_integration/tests/tests_signals.py|53|
mailcow_integration/tests/tests_signals.py|66|
mailcow_integration/tests/tests_signals.py|70|
mailcow_integration/tests/tests_signals.py|77|
mailcow_integration/tests/tests_signals.py|79|
mailcow_integration/tests/tests_signals.py|81|
mailcow_integration/tests/tests_signals.py|86|
mailcow_integration/tests/tests_signals.py|91|
mailcow_integration/tests/tests_signals.py|111|
mailcow_integration/tests/tests_signals.py|120|
mailcow_integration/tests/tests_signals.py|127|
mailcow_integration/tests/tests_signals.py|129|
mailcow_integration/tests/tests_signals.py|143|
mailcow_integration/tests/tests_signals.py|150|
mailcow_integration/tests/tests_signals.py|217|
mailcow_integration/tests/tests_signals.py|219|
mailcow_integration/tests/tests_signals.py|237|
mailcow_integration/tests/tests_signals.py|244|
mailcow_integration/tests/tests_signals.py|251|
mailcow_integration/tests/tests_signals.py|253|
mailcow_integration/tests/tests_signals.py|257|
mailcow_integration/tests/tests_signals.py|282|
mailcow_integration/tests/tests_signals.py|315|
mailcow_integration/tests/tests_signals.py|317|
mailcow_integration/tests/tests_signals.py|324|
mailcow_integration/tests/tests_signals.py|331|
mailcow_integration/tests/tests_signals.py|338|
mailcow_integration/tests/tests_signals.py|340|
mailcow_integration/tests/tests_signals.py|358|
mailcow_integration/tests/tests_signals.py|376|
mailcow_integration/tests/tests_signals.py|391|
mailcow_integration/tests/tests_signals.py|398|
mailcow_integration/tests/tests_signals.py|400|
mailcow_integration/tests/tests_signals.py|403|
mailcow_integration/tests/tests_signals.py|429|
mailcow_integration/tests/tests_signals.py|433|
mailcow_integration/tests/tests_signals.py|480|
mailcow_integration/tests/tests_signals.py|483|
mailcow_integration/tests/tests_squire_mailcow.py|26|
mailcow_integration/tests/tests_squire_mailcow.py|32|
mailcow_integration/tests/tests_squire_mailcow.py|39|
mailcow_integration/tests/tests_squire_mailcow.py|45|
mailcow_integration/tests/tests_squire_mailcow.py|47|
mailcow_integration/tests/tests_squire_mailcow.py|53|
mailcow_integration/tests/tests_squire_mailcow.py|59|
mailcow_integration/tests/tests_squire_mailcow.py|63|
mailcow_integration/tests/tests_squire_mailcow.py|69|
mailcow_integration/tests/tests_squire_mailcow.py|73|
mailcow_integration/tests/tests_squire_mailcow.py|77|
mailcow_integration/tests/tests_squire_mailcow.py|81|
mailcow_integration/tests/tests_squire_mailcow.py|103|
mailcow_integration/tests/tests_squire_mailcow.py|107|
mailcow_integration/tests/tests_squire_mailcow.py|112|
mailcow_integration/tests/tests_squire_mailcow.py|134|
mailcow_integration/tests/tests_squire_mailcow.py|142|
mailcow_integration/tests/tests_squire_mailcow.py|150|
mailcow_integration/tests/tests_squire_mailcow.py|153|
mailcow_integration/tests/tests_squire_mailcow.py|156|
mailcow_integration/tests/tests_squire_mailcow.py|162|
mailcow_integration/tests/tests_squire_mailcow.py|173|
mailcow_integration/tests/tests_squire_mailcow.py|186|
mailcow_integration/tests/tests_squire_mailcow.py|193|
mailcow_integration/tests/tests_squire_mailcow.py|197|
mailcow_integration/tests/tests_squire_mailcow.py|207|
mailcow_integration/tests/tests_squire_mailcow.py|212|
mailcow_integration/tests/tests_squire_mailcow.py|228|
mailcow_integration/tests/tests_squire_mailcow.py|238|
mailcow_integration/tests/tests_squire_mailcow.py|243|
mailcow_integration/tests/tests_squire_mailcow.py|250|
mailcow_integration/tests/tests_squire_mailcow.py|259|
mailcow_integration/tests/tests_squire_mailcow.py|269|
mailcow_integration/tests/tests_squire_mailcow.py|274|
mailcow_integration/tests/tests_squire_mailcow.py|289|
mailcow_integration/tests/tests_squire_mailcow.py|298|
mailcow_integration/tests/tests_squire_mailcow.py|303|
mailcow_integration/tests/tests_squire_mailcow.py|318|
mailcow_integration/tests/tests_squire_mailcow.py|330|
mailcow_integration/tests/tests_squire_mailcow.py|335|
mailcow_integration/tests/tests_squire_mailcow.py|351|
mailcow_integration/tests/tests_squire_mailcow.py|358|
mailcow_integration/tests/tests_squire_mailcow.py|383|
mailcow_integration/tests/tests_squire_mailcow.py|395|
mailcow_integration/tests/tests_squire_mailcow.py|398|
mailcow_integration/tests/tests_squire_mailcow.py|400|
mailcow_integration/tests/tests_squire_mailcow.py|404|
mailcow_integration/tests/tests_squire_mailcow.py|413|
mailcow_integration/tests/tests_squire_mailcow.py|419|
mailcow_integration/tests/tests_squire_mailcow.py|438|
mailcow_integration/tests/tests_squire_mailcow.py|451|
mailcow_integration/tests/tests_squire_mailcow.py|475|
mailcow_integration/tests/tests_squire_mailcow.py|478|
mailcow_integration/tests/tests_squire_mailcow.py|481|
mailcow_integration/tests/tests_squire_mailcow.py|484|
mailcow_integration/tests/tests_squire_mailcow.py|491|
mailcow_integration/tests/tests_squire_mailcow.py|499|
mailcow_integration/tests/tests_squire_mailcow.py|508|
mailcow_integration/tests/tests_squire_mailcow.py|512|
mailcow_integration/tests/tests_squire_mailcow.py|514|
mailcow_integration/tests/tests_squire_mailcow.py|517|
mailcow_integration/tests/tests_squire_mailcow.py|526|
mailcow_integration/tests/tests_squire_mailcow.py|528|
mailcow_integration/tests/tests_squire_mailcow.py|531|
mailcow_integration/tests/tests_squire_mailcow.py|546|
mailcow_integration/tests/tests_squire_mailcow.py|551|
mailcow_integration/tests/tests_squire_mailcow.py|555|
mailcow_integration/tests/tests_squire_mailcow.py|558|
mailcow_integration/tests/tests_view_status.py|11|
mailcow_integration/tests/tests_view_status.py|25 col 1|
mailcow_integration/tests/tests_view_status.py|26|
mailcow_integration/tests/tests_view_status.py|28|
mailcow_integration/tests/tests_view_status.py|33 col 1|
mailcow_integration/tests/tests_view_status.py|34|
mailcow_integration/tests/tests_view_status.py|46|
mailcow_integration/tests/tests_view_status.py|51|
mailcow_integration/tests/tests_view_status.py|53|
mailcow_integration/tests/tests_view_status.py|59|
mailcow_integration/tests/tests_view_status.py|64|
mailcow_integration/tests/tests_view_status.py|66|
mailcow_integration/tests/tests_view_status.py|70|
mailcow_integration/tests/tests_view_status.py|77|
mailcow_integration/tests/tests_view_status.py|79|
mailcow_integration/tests/tests_view_status.py|85|
mailcow_integration/tests/tests_view_status.py|88|
mailcow_integration/tests/tests_view_status.py|95|
mailcow_integration/tests/tests_view_status.py|98|
mailcow_integration/tests/tests_view_status.py|105|
mailcow_integration/tests/tests_view_status.py|107|
mailcow_integration/tests/tests_view_status.py|116|
mailcow_integration/tests/tests_view_status.py|123|
mailcow_integration/tests/tests_view_status.py|126|
mailcow_integration/tests/tests_view_status.py|133|
mailcow_integration/tests/tests_view_status.py|135|
mailcow_integration/tests/tests_view_status.py|144|
mailcow_integration/tests/tests_view_status.py|150 col 1|
mailcow_integration/tests/tests_view_status.py|151|
mailcow_integration/tests/tests_view_status.py|153|
mailcow_integration/tests/tests_view_status.py|155|
mailcow_integration/tests/tests_view_status.py|161|
mailcow_integration/tests/tests_view_status.py|163|
mailcow_integration/tests/tests_view_status.py|167|
mailcow_integration/tests/tests_view_status.py|171|
mailcow_integration/tests/tests_view_status.py|174|
mailcow_integration/tests/tests_view_status.py|180|
mailcow_integration/tests/tests_view_status.py|184|
mailcow_integration/tests/tests_view_status.py|188|
mailcow_integration/tests/tests_view_status.py|191|
mailcow_integration/tests/tests_view_status.py|198|
mailcow_integration/tests/tests_view_status.py|207|
mailcow_integration/tests/tests_view_status.py|214|
mailcow_integration/tests/tests_view_status.py|218|
mailcow_integration/tests/tests_view_status.py|223|
mailcow_integration/tests/tests_view_status.py|230|
mailcow_integration/tests/tests_view_status.py|243|
mailcow_integration/tests/tests_view_status.py|270|
mailcow_integration/tests/tests_view_status.py|279|
mailcow_integration/tests/tests_view_status.py|285|
mailcow_integration/tests/tests_view_status.py|287|
mailcow_integration/tests/tests_view_status.py|291|
mailcow_integration/tests/tests_view_status.py|299|
mailcow_integration/tests/tests_view_status.py|314|
mailcow_integration/tests/tests_view_status.py|325|
mailcow_integration/tests/tests_view_status.py|339|
mailcow_integration/tests/tests_view_status.py|344|
mailcow_integration/tests/tests_view_status.py|348|
mailcow_integration/tests/tests_view_status.py|357|
mailcow_integration/tests/tests_view_status.py|372|
mailcow_integration/tests/tests_view_status.py|376|
mailcow_integration/tests/tests_view_status.py|381|
mailcow_integration/tests/tests_view_status.py|390|
mailcow_integration/tests/tests_view_status.py|400|
mailcow_integration/tests/tests_view_status.py|406|
mailcow_integration/tests/tests_view_status.py|415|
mailcow_integration/tests/tests_view_status.py|420|
mailcow_integration/tests/tests_view_status.py|431|
mailcow_integration/tests/tests_view_status.py|449|
mailcow_integration/tests/tests_view_status.py|464|
mailcow_integration/tests/tests_view_status.py|469|
mailcow_integration/tests/tests_view_status.py|475|
mailcow_integration/tests/tests_view_status.py|477|
mailcow_integration/tests/tests_view_status.py|481|
mailcow_integration/tests/tests_view_status.py|483|
mailcow_integration/tests/tests_view_status.py|487|
mailcow_integration/tests/tests_view_status.py|489|
mailcow_integration/tests/tests_view_status.py|492|
mailcow_integration/tests/tests_view_status.py|501|
mailcow_integration/tests/tests_view_status.py|517|
mailcow_integration/tests/tests_view_status.py|532|
mailcow_integration/tests/tests_view_status.py|547|
mailcow_integration/tests/tests_view_status.py|563|
mailcow_integration/tests/tests_view_status.py|576|
membership_file/models.py|19 col 1|
membership_file/models.py|21|
membership_file/models.py|27|
membership_file/models.py|36 col 1|
membership_file/models.py|44|
membership_file/models.py|152|
membership_file/models.py|260|
membership_file/models.py|264|
membership_file/models.py|271|
membership_file/models.py|275|
membership_file/tests/tests_model.py|13 col 1|
membership_file/tests/tests_model.py|14|
membership_file/tests/tests_model.py|17|
membership_file/tests/tests_model.py|26|
membership_file/tests/tests_model.py|31|
membership_file/tests/tests_model.py|42|
membership_file/tests/tests_model.py|51|
membership_file/tests/tests_model.py|67|
squire/settings.py|243|
squire/settings.py|375|
squire/settings.py|385|
squire/settings_mailcow.py|30|
squire/settings_mailcow.py|33|
squire/settings_mailcow.py|40|
utils/tests/test_views.py|139|
utils/tests/test_views.py|141 col 1|
utils/tests/test_views.py|170 col 1|
utils/tests/test_views.py|171|
utils/tests/test_views.py|181|
utils/tests/test_views.py|185|
utils/tests/test_views.py|191|
utils/tests/test_views.py|197|
utils/viewcollectives.py|57|
utils/viewcollectives.py|61|
utils/viewcollectives.py|65|
utils/viewcollectives.py|71|
utils/viewcollectives.py|77|
utils/viewcollectives.py|101 col 1|
utils/viewcollectives.py|103|
utils/viewcollectives.py|112|
utils/viewcollectives.py|156|
utils/viewcollectives.py|171|
utils/viewcollectives.py|207|
utils/viewcollectives.py|225|
utils/views.py|119|
subscribers = self._get_subscriberinfos_by_status(status, subscribers, alias, alias_type=AliasCategory.GLOBAL_COMMITTEE) | ||
info = AliasInfos(status.name, subscribers, address, "gc_" + alias_address_to_id(address), address, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
subscribers = self._get_subscriberinfos_by_status(status, subscribers, alias, alias_type=AliasCategory.GLOBAL_COMMITTEE) | |
info = AliasInfos(status.name, subscribers, address, "gc_" + alias_address_to_id(address), address, | |
subscribers = self._get_subscriberinfos_by_status( | |
status, subscribers, alias, alias_type=AliasCategory.GLOBAL_COMMITTEE | |
) | |
info = AliasInfos( | |
status.name, | |
subscribers, | |
address, | |
"gc_" + alias_address_to_id(address), | |
address, |
subscribers = self._get_subscriberinfos_by_status(status, subscribers, alias, alias_type=AliasCategory.GLOBAL_COMMITTEE) | ||
info = AliasInfos(status.name, subscribers, address, "gc_" + alias_address_to_id(address), address, | ||
"Allows mailing all committees at the same time.", | ||
alias or mailbox, internal=False, allow_opt_out=False, archive_addresses=settings.COMMITTEE_CONFIGS['global_archive_addresses'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
alias or mailbox, internal=False, allow_opt_out=False, archive_addresses=settings.COMMITTEE_CONFIGS['global_archive_addresses'] | |
alias or mailbox, | |
internal=False, | |
allow_opt_out=False, | |
archive_addresses=settings.COMMITTEE_CONFIGS["global_archive_addresses"], |
def _init_committee_alias_list(self, aliases: List[MailcowAlias], mailboxes: List[MailcowMailbox]) -> List[AliasInfos]: | ||
""" Initialize committee aliases. e.g. bg@example.com """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
def _init_committee_alias_list(self, aliases: List[MailcowAlias], mailboxes: List[MailcowMailbox]) -> List[AliasInfos]: | |
""" Initialize committee aliases. e.g. bg@example.com """ | |
def _init_committee_alias_list( | |
self, aliases: List[MailcowAlias], mailboxes: List[MailcowMailbox] | |
) -> List[AliasInfos]: | |
"""Initialize committee aliases. e.g. bg@example.com""" |
|
||
for assoc_group in self.mailcow_manager.get_active_committees(): | ||
address = assoc_group.contact_email | ||
subscribers = assoc_group.members.filter_active().order_by('email') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
subscribers = assoc_group.members.filter_active().order_by('email') | |
subscribers = assoc_group.members.filter_active().order_by("email") |
status, alias, mailbox = self._get_alias_status(address, subscribers, AliasCategory.COMMITTEE, | ||
aliases, mailboxes, self.mailcow_manager.ALIAS_COMMITTEE_PUBLIC_COMMENT) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
status, alias, mailbox = self._get_alias_status(address, subscribers, AliasCategory.COMMITTEE, | |
aliases, mailboxes, self.mailcow_manager.ALIAS_COMMITTEE_PUBLIC_COMMENT) | |
status, alias, mailbox = self._get_alias_status( | |
address, | |
subscribers, | |
AliasCategory.COMMITTEE, | |
aliases, | |
mailboxes, | |
self.mailcow_manager.ALIAS_COMMITTEE_PUBLIC_COMMENT, | |
) |
In order to connect to a `host`'s API, an `api_key` needs to be generated in the | ||
Mailcow admin. Additionally, the API needs to be activated, and the ipv4 and/or ipv6 | ||
addresses of the client needs to be added to an IP whitelist (alternatively, the | ||
IP whitelist can be disabled entirely). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
In order to connect to a `host`'s API, an `api_key` needs to be generated in the | |
Mailcow admin. Additionally, the API needs to be activated, and the ipv4 and/or ipv6 | |
addresses of the client needs to be added to an IP whitelist (alternatively, the | |
IP whitelist can be disabled entirely). | |
In order to connect to a `host`'s API, an `api_key` needs to be generated in the | |
Mailcow admin. Additionally, the API needs to be activated, and the ipv4 and/or ipv6 | |
addresses of the client needs to be added to an IP whitelist (alternatively, the | |
IP whitelist can be disabled entirely). |
addresses of the client needs to be added to an IP whitelist (alternatively, the | ||
IP whitelist can be disabled entirely). | ||
""" | ||
API_FORMAT = "%(host)s/api/v1/" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
API_FORMAT = "%(host)s/api/v1/" | |
API_FORMAT = "%(host)s/api/v1/" |
self.api_key = api_key | ||
|
||
def _get_headers(self) -> dict: | ||
""" Retrieves the headers required to fetch info from the Mailcow API. """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Retrieves the headers required to fetch info from the Mailcow API. """ | |
"""Retrieves the headers required to fetch info from the Mailcow API.""" |
""" Checks some response data, and generates an appropriate exception based on it """ | ||
if content.get('type', None) == "error": |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Checks some response data, and generates an appropriate exception based on it """ | |
if content.get('type', None) == "error": | |
"""Checks some response data, and generates an appropriate exception based on it""" | |
if content.get("type", None) == "error": |
""" Checks some response data, and generates an appropriate exception based on it """ | ||
if content.get('type', None) == "error": | ||
# API returned an error | ||
if content.get('msg', None) == "authentication failed": |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
if content.get('msg', None) == "authentication failed": | |
if content.get("msg", None) == "authentication failed": |
Rspamd setting that makes aliases internal can be viewed on the status page. "Internal" aliases now indicate they're exposed when this rspamd setting is missing or inactive. Aliases now indicate if they're inactive. Added a few more missing tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
blackfmt
mailcow_integration/api/exceptions.py|1|
mailcow_integration/api/exceptions.py|3|
mailcow_integration/api/exceptions.py|6|
mailcow_integration/api/exceptions.py|9|
mailcow_integration/api/exceptions.py|12|
mailcow_integration/api/exceptions.py|15|
mailcow_integration/api/exceptions.py|18|
mailcow_integration/api/interface/alias.py|9 col 1|
mailcow_integration/api/interface/alias.py|18|
mailcow_integration/api/interface/alias.py|24|
mailcow_integration/api/interface/alias.py|33|
mailcow_integration/api/interface/alias.py|55|
mailcow_integration/api/interface/base.py|3 col 1|
mailcow_integration/api/interface/base.py|4|
mailcow_integration/api/interface/base.py|8|
mailcow_integration/api/interface/mailbox.py|8 col 1|
mailcow_integration/api/interface/mailbox.py|9|
mailcow_integration/api/interface/mailbox.py|14 col 1|
mailcow_integration/api/interface/mailbox.py|15|
mailcow_integration/api/interface/mailbox.py|21 col 1|
mailcow_integration/api/interface/mailbox.py|22|
mailcow_integration/api/interface/mailbox.py|29|
mailcow_integration/api/interface/mailbox.py|39|
mailcow_integration/api/interface/mailbox.py|44|
mailcow_integration/api/interface/mailbox.py|63|
mailcow_integration/api/interface/mailbox.py|70|
mailcow_integration/api/interface/mailbox.py|72|
mailcow_integration/api/interface/mailbox.py|78|
mailcow_integration/api/interface/mailbox.py|87|
mailcow_integration/api/interface/mailbox.py|89|
mailcow_integration/api/interface/mailbox.py|98|
mailcow_integration/api/interface/mailbox.py|107|
mailcow_integration/api/interface/rspamd.py|6 col 1|
mailcow_integration/api/interface/rspamd.py|8|
mailcow_integration/api/interface/rspamd.py|11|
mailcow_integration/api/interface/rspamd.py|15|
mailcow_integration/apps.py|8 col 1|
mailcow_integration/apps.py|10 col 1|
mailcow_integration/apps.py|11|
mailcow_integration/apps.py|22|
mailcow_integration/apps.py|29|
mailcow_integration/dynamic_preferences_registry.py|10|
mailcow_integration/dynamic_preferences_registry.py|16|
mailcow_integration/dynamic_preferences_registry.py|18|
mailcow_integration/dynamic_preferences_registry.py|21 col 1|
mailcow_integration/dynamic_preferences_registry.py|22|
mailcow_integration/dynamic_preferences_registry.py|25 col 1|
mailcow_integration/dynamic_preferences_registry.py|26|
mailcow_integration/dynamic_preferences_registry.py|31|
mailcow_integration/dynamic_preferences_registry.py|33|
mailcow_integration/dynamic_preferences_registry.py|37|
mailcow_integration/dynamic_preferences_registry.py|41|
mailcow_integration/dynamic_preferences_registry.py|46|
mailcow_integration/dynamic_preferences_registry.py|52|
mailcow_integration/dynamic_preferences_registry.py|58|
mailcow_integration/dynamic_preferences_registry.py|61 col 1|
mailcow_integration/management/commands/mailcow_api_request.py|6|
mailcow_integration/management/commands/mailcow_api_request.py|10|
mailcow_integration/management/commands/mailcow_api_request.py|16|
mailcow_integration/signals.py|11|
mailcow_integration/signals.py|16|
mailcow_integration/signals.py|20 col 1|
mailcow_integration/signals.py|21|
mailcow_integration/signals.py|30 col 1|
mailcow_integration/signals.py|38 col 1|
mailcow_integration/signals.py|45 col 1|
mailcow_integration/signals.py|50|
mailcow_integration/signals.py|68 col 1|
mailcow_integration/signals.py|70|
mailcow_integration/signals.py|76|
mailcow_integration/signals.py|92 col 1|
mailcow_integration/signals.py|94|
mailcow_integration/signals.py|112|
mailcow_integration/signals.py|132 col 1|
mailcow_integration/signals.py|134|
mailcow_integration/signals.py|167|
mailcow_integration/signals.py|177 col 1|
mailcow_integration/signals.py|179|
mailcow_integration/signals.py|181|
mailcow_integration/signals.py|189 col 1|
mailcow_integration/signals.py|194|
mailcow_integration/signals.py|213 col 1|
mailcow_integration/signals.py|215|
mailcow_integration/signals.py|226|
mailcow_integration/signals.py|231|
mailcow_integration/signals.py|242 col 1|
mailcow_integration/signals.py|244|
mailcow_integration/signals.py|257|
mailcow_integration/signals.py|275 col 1|
mailcow_integration/signals.py|277|
mailcow_integration/signals.py|284|
mailcow_integration/signals.py|299 col 1|
mailcow_integration/signals.py|301|
mailcow_integration/signals.py|309 col 1|
mailcow_integration/signals.py|314|
mailcow_integration/signals.py|332 col 1|
mailcow_integration/signals.py|334|
mailcow_integration/signals.py|345|
mailcow_integration/signals.py|362 col 1|
mailcow_integration/signals.py|364|
mailcow_integration/signals.py|371 col 1|
mailcow_integration/signals.py|373|
mailcow_integration/signals.py|383 col 1|
mailcow_integration/signals.py|392|
mailcow_integration/signals.py|397|
mailcow_integration/signals.py|399|
mailcow_integration/signals.py|407|
mailcow_integration/squire_mailcow.py|21|
mailcow_integration/squire_mailcow.py|25 col 1|
mailcow_integration/squire_mailcow.py|26|
mailcow_integration/squire_mailcow.py|32|
mailcow_integration/squire_mailcow.py|37|
mailcow_integration/squire_mailcow.py|48 col 1|
mailcow_integration/squire_mailcow.py|64|
mailcow_integration/squire_mailcow.py|86|
mailcow_integration/squire_mailcow.py|92|
mailcow_integration/squire_mailcow.py|100|
mailcow_integration/squire_mailcow.py|106|
mailcow_integration/squire_mailcow.py|124|
mailcow_integration/squire_mailcow.py|134|
mailcow_integration/squire_mailcow.py|138|
mailcow_integration/squire_mailcow.py|163|
mailcow_integration/squire_mailcow.py|178|
mailcow_integration/squire_mailcow.py|186|
mailcow_integration/squire_mailcow.py|195|
mailcow_integration/squire_mailcow.py|199|
mailcow_integration/squire_mailcow.py|204|
mailcow_integration/squire_mailcow.py|208|
mailcow_integration/squire_mailcow.py|211|
mailcow_integration/squire_mailcow.py|228|
mailcow_integration/squire_mailcow.py|240|
mailcow_integration/squire_mailcow.py|247|
mailcow_integration/squire_mailcow.py|262|
mailcow_integration/squire_mailcow.py|265|
mailcow_integration/squire_mailcow.py|275|
mailcow_integration/squire_mailcow.py|290|
mailcow_integration/squire_mailcow.py|298|
mailcow_integration/squire_mailcow.py|311|
mailcow_integration/squire_mailcow.py|319|
mailcow_integration/squire_mailcow.py|323|
mailcow_integration/squire_mailcow.py|326|
mailcow_integration/squire_mailcow.py|336|
mailcow_integration/squire_mailcow.py|341|
mailcow_integration/squire_mailcow.py|343|
mailcow_integration/squire_mailcow.py|347|
mailcow_integration/tests/api/test_interfaces.py|6|
mailcow_integration/tests/api/test_interfaces.py|11|
mailcow_integration/tests/api/test_interfaces.py|30|
mailcow_integration/tests/api/test_interfaces.py|71|
mailcow_integration/tests/api/test_interfaces.py|81|
mailcow_integration/tests/api/test_interfaces.py|83|
mailcow_integration/tests/api/test_interfaces.py|90|
mailcow_integration/tests/api/test_interfaces.py|92|
mailcow_integration/tests/api/test_interfaces.py|100|
mailcow_integration/tests/api/test_interfaces.py|128|
mailcow_integration/tests/api/test_interfaces.py|133|
mailcow_integration/tests/api/tests_mailcow_client.py|23 col 1|
mailcow_integration/tests/api/tests_mailcow_client.py|24|
mailcow_integration/tests/api/tests_mailcow_client.py|31|
mailcow_integration/tests/api/tests_mailcow_client.py|34|
mailcow_integration/tests/api/tests_mailcow_client.py|38|
mailcow_integration/tests/api/tests_mailcow_client.py|46|
mailcow_integration/tests/api/tests_mailcow_client.py|48|
mailcow_integration/tests/api/tests_mailcow_client.py|50|
mailcow_integration/tests/api/tests_mailcow_client.py|55|
mailcow_integration/tests/api/tests_mailcow_client.py|62|
mailcow_integration/tests/api/tests_mailcow_client.py|66|
mailcow_integration/tests/api/tests_mailcow_client.py|75|
mailcow_integration/tests/api/tests_mailcow_client.py|80|
mailcow_integration/tests/api/tests_mailcow_client.py|87|
mailcow_integration/tests/api/tests_mailcow_client.py|89|
mailcow_integration/tests/api/tests_mailcow_client.py|91|
mailcow_integration/tests/api/tests_mailcow_client.py|93|
mailcow_integration/tests/api/tests_mailcow_client.py|96|
mailcow_integration/tests/api/tests_mailcow_client.py|100|
mailcow_integration/tests/api/tests_mailcow_client.py|107|
mailcow_integration/tests/api/tests_mailcow_client.py|114|
mailcow_integration/tests/api/tests_mailcow_client.py|121|
mailcow_integration/tests/api/tests_mailcow_client.py|128|
mailcow_integration/tests/api/tests_mailcow_client.py|135|
mailcow_integration/tests/api/tests_mailcow_client.py|142|
mailcow_integration/tests/api/tests_mailcow_client.py|152|
mailcow_integration/tests/api/tests_mailcow_client.py|157|
mailcow_integration/tests/api/tests_mailcow_client.py|168|
mailcow_integration/tests/api/tests_mailcow_client.py|172|
mailcow_integration/tests/api/tests_mailcow_client.py|182|
mailcow_integration/tests/api/tests_mailcow_client.py|187|
mailcow_integration/tests/api/tests_mailcow_client.py|199|
mailcow_integration/tests/api/tests_mailcow_client.py|212|
mailcow_integration/tests/api/tests_mailcow_client.py|221|
mailcow_integration/tests/api/tests_mailcow_client.py|234|
mailcow_integration/tests/api/tests_mailcow_client.py|240|
mailcow_integration/tests/api/tests_mailcow_client.py|242|
mailcow_integration/tests/api/tests_mailcow_client.py|247|
mailcow_integration/tests/api/tests_mailcow_client.py|253|
mailcow_integration/tests/api/tests_mailcow_client.py|255|
mailcow_integration/tests/api/tests_mailcow_client.py|260|
mailcow_integration/tests/api/tests_mailcow_client.py|265|
mailcow_integration/tests/api/tests_mailcow_client.py|277|
mailcow_integration/tests/api/tests_mailcow_client.py|287|
mailcow_integration/tests/api/tests_mailcow_client.py|296|
mailcow_integration/tests/api/tests_mailcow_client.py|306|
mailcow_integration/tests/api/tests_mailcow_client.py|312|
mailcow_integration/tests/api/tests_mailcow_client.py|314|
mailcow_integration/tests/api/tests_mailcow_client.py|319|
mailcow_integration/tests/api/tests_mailcow_client.py|325|
mailcow_integration/tests/api/tests_mailcow_client.py|327|
mailcow_integration/tests/api/tests_mailcow_client.py|332|
mailcow_integration/tests/api/tests_mailcow_client.py|339|
mailcow_integration/tests/api/tests_mailcow_client.py|356|
mailcow_integration/tests/api/tests_mailcow_client.py|361|
mailcow_integration/tests/api/tests_mailcow_client.py|372|
mailcow_integration/tests/api/tests_mailcow_client.py|376|
mailcow_integration/tests/api/tests_mailcow_client.py|381|
mailcow_integration/tests/api/tests_mailcow_client.py|393|
mailcow_integration/tests/api/tests_mailcow_client.py|397|
mailcow_integration/tests/api/tests_mailcow_client.py|407|
mailcow_integration/tests/api/tests_mailcow_client.py|410|
mailcow_integration/tests/api/tests_mailcow_client.py|422|
mailcow_integration/tests/api/tests_mailcow_client.py|432|
mailcow_integration/tests/api/tests_mailcow_client.py|435|
mailcow_integration/tests/api/tests_mailcow_client.py|447|
mailcow_integration/tests/tests_member_preferences.py|13|
mailcow_integration/tests/tests_member_preferences.py|24|
mailcow_integration/tests/tests_member_preferences.py|27|
mailcow_integration/tests/tests_member_preferences.py|35|
mailcow_integration/tests/tests_member_preferences.py|38|
mailcow_integration/tests/tests_member_preferences.py|44|
mailcow_integration/tests/tests_member_preferences.py|46|
mailcow_integration/tests/tests_member_preferences.py|48|
mailcow_integration/tests/tests_member_preferences.py|56|
mailcow_integration/tests/tests_member_preferences.py|58|
mailcow_integration/tests/tests_member_preferences.py|60|
mailcow_integration/tests/tests_preferences.py|13 col 1|
mailcow_integration/tests/tests_preferences.py|14|
mailcow_integration/tests/tests_preferences.py|16|
mailcow_integration/tests/tests_preferences.py|23|
mailcow_integration/tests/tests_preferences.py|27|
mailcow_integration/tests/tests_preferences.py|31|
mailcow_integration/tests/tests_signals.py|12 col 1|
mailcow_integration/tests/tests_signals.py|13|
mailcow_integration/tests/tests_signals.py|31 col 1|
mailcow_integration/tests/tests_signals.py|34 col 1|
mailcow_integration/tests/tests_signals.py|46|
mailcow_integration/tests/tests_signals.py|53|
mailcow_integration/tests/tests_signals.py|66|
mailcow_integration/tests/tests_signals.py|70|
mailcow_integration/tests/tests_signals.py|77|
mailcow_integration/tests/tests_signals.py|79|
mailcow_integration/tests/tests_signals.py|81|
mailcow_integration/tests/tests_signals.py|86|
mailcow_integration/tests/tests_signals.py|91|
mailcow_integration/tests/tests_signals.py|111|
mailcow_integration/tests/tests_signals.py|113|
mailcow_integration/tests/tests_signals.py|120|
mailcow_integration/tests/tests_signals.py|127|
mailcow_integration/tests/tests_signals.py|134|
mailcow_integration/tests/tests_signals.py|136|
mailcow_integration/tests/tests_signals.py|150|
mailcow_integration/tests/tests_signals.py|157|
mailcow_integration/tests/tests_signals.py|224|
mailcow_integration/tests/tests_signals.py|226|
mailcow_integration/tests/tests_signals.py|244|
mailcow_integration/tests/tests_signals.py|251|
mailcow_integration/tests/tests_signals.py|258|
mailcow_integration/tests/tests_signals.py|260|
mailcow_integration/tests/tests_signals.py|264|
mailcow_integration/tests/tests_signals.py|289|
mailcow_integration/tests/tests_signals.py|322|
mailcow_integration/tests/tests_signals.py|324|
mailcow_integration/tests/tests_signals.py|331|
mailcow_integration/tests/tests_signals.py|338|
mailcow_integration/tests/tests_signals.py|345|
mailcow_integration/tests/tests_signals.py|347|
mailcow_integration/tests/tests_signals.py|365|
mailcow_integration/tests/tests_signals.py|383|
mailcow_integration/tests/tests_signals.py|398|
mailcow_integration/tests/tests_signals.py|405|
mailcow_integration/tests/tests_signals.py|407|
mailcow_integration/tests/tests_signals.py|410|
mailcow_integration/tests/tests_signals.py|436|
mailcow_integration/tests/tests_signals.py|440|
mailcow_integration/tests/tests_signals.py|487|
mailcow_integration/tests/tests_signals.py|490|
mailcow_integration/tests/tests_squire_mailcow.py|26|
mailcow_integration/tests/tests_squire_mailcow.py|32|
mailcow_integration/tests/tests_squire_mailcow.py|39|
mailcow_integration/tests/tests_squire_mailcow.py|45|
mailcow_integration/tests/tests_squire_mailcow.py|47|
mailcow_integration/tests/tests_squire_mailcow.py|53|
mailcow_integration/tests/tests_squire_mailcow.py|59|
mailcow_integration/tests/tests_squire_mailcow.py|63|
mailcow_integration/tests/tests_squire_mailcow.py|69|
mailcow_integration/tests/tests_squire_mailcow.py|73|
mailcow_integration/tests/tests_squire_mailcow.py|77|
mailcow_integration/tests/tests_squire_mailcow.py|81|
mailcow_integration/tests/tests_squire_mailcow.py|103|
mailcow_integration/tests/tests_squire_mailcow.py|107|
mailcow_integration/tests/tests_squire_mailcow.py|112|
mailcow_integration/tests/tests_squire_mailcow.py|134|
mailcow_integration/tests/tests_squire_mailcow.py|142|
mailcow_integration/tests/tests_squire_mailcow.py|150|
mailcow_integration/tests/tests_squire_mailcow.py|153|
mailcow_integration/tests/tests_squire_mailcow.py|156|
mailcow_integration/tests/tests_squire_mailcow.py|162|
mailcow_integration/tests/tests_squire_mailcow.py|173|
mailcow_integration/tests/tests_squire_mailcow.py|186|
mailcow_integration/tests/tests_squire_mailcow.py|193|
mailcow_integration/tests/tests_squire_mailcow.py|197|
mailcow_integration/tests/tests_squire_mailcow.py|207|
mailcow_integration/tests/tests_squire_mailcow.py|212|
mailcow_integration/tests/tests_squire_mailcow.py|228|
mailcow_integration/tests/tests_squire_mailcow.py|238|
mailcow_integration/tests/tests_squire_mailcow.py|243|
mailcow_integration/tests/tests_squire_mailcow.py|250|
mailcow_integration/tests/tests_squire_mailcow.py|259|
mailcow_integration/tests/tests_squire_mailcow.py|269|
mailcow_integration/tests/tests_squire_mailcow.py|274|
mailcow_integration/tests/tests_squire_mailcow.py|289|
mailcow_integration/tests/tests_squire_mailcow.py|298|
mailcow_integration/tests/tests_squire_mailcow.py|303|
mailcow_integration/tests/tests_squire_mailcow.py|318|
mailcow_integration/tests/tests_squire_mailcow.py|330|
mailcow_integration/tests/tests_squire_mailcow.py|335|
mailcow_integration/tests/tests_squire_mailcow.py|351|
mailcow_integration/tests/tests_squire_mailcow.py|358|
mailcow_integration/tests/tests_squire_mailcow.py|383|
mailcow_integration/tests/tests_squire_mailcow.py|395|
mailcow_integration/tests/tests_squire_mailcow.py|398|
mailcow_integration/tests/tests_squire_mailcow.py|400|
mailcow_integration/tests/tests_squire_mailcow.py|404|
mailcow_integration/tests/tests_squire_mailcow.py|413|
mailcow_integration/tests/tests_squire_mailcow.py|419|
mailcow_integration/tests/tests_squire_mailcow.py|438|
mailcow_integration/tests/tests_squire_mailcow.py|451|
mailcow_integration/tests/tests_squire_mailcow.py|475|
mailcow_integration/tests/tests_squire_mailcow.py|478|
mailcow_integration/tests/tests_squire_mailcow.py|481|
mailcow_integration/tests/tests_squire_mailcow.py|484|
mailcow_integration/tests/tests_squire_mailcow.py|491|
mailcow_integration/tests/tests_squire_mailcow.py|499|
mailcow_integration/tests/tests_squire_mailcow.py|508|
mailcow_integration/tests/tests_squire_mailcow.py|512|
mailcow_integration/tests/tests_squire_mailcow.py|514|
mailcow_integration/tests/tests_squire_mailcow.py|517|
mailcow_integration/tests/tests_squire_mailcow.py|526|
mailcow_integration/tests/tests_squire_mailcow.py|528|
mailcow_integration/tests/tests_squire_mailcow.py|531|
mailcow_integration/tests/tests_squire_mailcow.py|546|
mailcow_integration/tests/tests_squire_mailcow.py|551|
mailcow_integration/tests/tests_squire_mailcow.py|555|
mailcow_integration/tests/tests_squire_mailcow.py|558|
mailcow_integration/tests/tests_view_status.py|11|
mailcow_integration/tests/tests_view_status.py|25 col 1|
mailcow_integration/tests/tests_view_status.py|26|
mailcow_integration/tests/tests_view_status.py|28|
mailcow_integration/tests/tests_view_status.py|33 col 1|
mailcow_integration/tests/tests_view_status.py|34|
mailcow_integration/tests/tests_view_status.py|46|
mailcow_integration/tests/tests_view_status.py|51|
mailcow_integration/tests/tests_view_status.py|53|
mailcow_integration/tests/tests_view_status.py|59|
mailcow_integration/tests/tests_view_status.py|64|
mailcow_integration/tests/tests_view_status.py|66|
mailcow_integration/tests/tests_view_status.py|70|
mailcow_integration/tests/tests_view_status.py|77|
mailcow_integration/tests/tests_view_status.py|79|
mailcow_integration/tests/tests_view_status.py|85|
mailcow_integration/tests/tests_view_status.py|88|
mailcow_integration/tests/tests_view_status.py|95|
mailcow_integration/tests/tests_view_status.py|98|
mailcow_integration/tests/tests_view_status.py|105|
mailcow_integration/tests/tests_view_status.py|107|
mailcow_integration/tests/tests_view_status.py|116|
mailcow_integration/tests/tests_view_status.py|123|
mailcow_integration/tests/tests_view_status.py|126|
mailcow_integration/tests/tests_view_status.py|133|
mailcow_integration/tests/tests_view_status.py|135|
mailcow_integration/tests/tests_view_status.py|144|
mailcow_integration/tests/tests_view_status.py|150 col 1|
mailcow_integration/tests/tests_view_status.py|151|
mailcow_integration/tests/tests_view_status.py|153|
mailcow_integration/tests/tests_view_status.py|155|
mailcow_integration/tests/tests_view_status.py|161|
mailcow_integration/tests/tests_view_status.py|163|
mailcow_integration/tests/tests_view_status.py|167|
mailcow_integration/tests/tests_view_status.py|171|
mailcow_integration/tests/tests_view_status.py|174|
mailcow_integration/tests/tests_view_status.py|180|
mailcow_integration/tests/tests_view_status.py|184|
mailcow_integration/tests/tests_view_status.py|188|
mailcow_integration/tests/tests_view_status.py|191|
mailcow_integration/tests/tests_view_status.py|198|
mailcow_integration/tests/tests_view_status.py|207|
mailcow_integration/tests/tests_view_status.py|214|
mailcow_integration/tests/tests_view_status.py|218|
mailcow_integration/tests/tests_view_status.py|223|
mailcow_integration/tests/tests_view_status.py|230|
mailcow_integration/tests/tests_view_status.py|243|
mailcow_integration/tests/tests_view_status.py|270|
mailcow_integration/tests/tests_view_status.py|279|
mailcow_integration/tests/tests_view_status.py|285|
mailcow_integration/tests/tests_view_status.py|287|
mailcow_integration/tests/tests_view_status.py|291|
mailcow_integration/tests/tests_view_status.py|299|
mailcow_integration/tests/tests_view_status.py|314|
mailcow_integration/tests/tests_view_status.py|325|
mailcow_integration/tests/tests_view_status.py|339|
mailcow_integration/tests/tests_view_status.py|344|
mailcow_integration/tests/tests_view_status.py|348|
mailcow_integration/tests/tests_view_status.py|357|
mailcow_integration/tests/tests_view_status.py|372|
mailcow_integration/tests/tests_view_status.py|376|
mailcow_integration/tests/tests_view_status.py|381|
mailcow_integration/tests/tests_view_status.py|390|
mailcow_integration/tests/tests_view_status.py|400|
mailcow_integration/tests/tests_view_status.py|406|
mailcow_integration/tests/tests_view_status.py|415|
mailcow_integration/tests/tests_view_status.py|420|
mailcow_integration/tests/tests_view_status.py|431|
mailcow_integration/tests/tests_view_status.py|449|
mailcow_integration/tests/tests_view_status.py|464|
mailcow_integration/tests/tests_view_status.py|469|
mailcow_integration/tests/tests_view_status.py|475|
mailcow_integration/tests/tests_view_status.py|477|
mailcow_integration/tests/tests_view_status.py|481|
mailcow_integration/tests/tests_view_status.py|483|
mailcow_integration/tests/tests_view_status.py|487|
mailcow_integration/tests/tests_view_status.py|489|
mailcow_integration/tests/tests_view_status.py|492|
mailcow_integration/tests/tests_view_status.py|501|
mailcow_integration/tests/tests_view_status.py|517|
mailcow_integration/tests/tests_view_status.py|532|
mailcow_integration/tests/tests_view_status.py|547|
mailcow_integration/tests/tests_view_status.py|563|
mailcow_integration/tests/tests_view_status.py|576|
membership_file/models.py|19 col 1|
membership_file/models.py|21|
membership_file/models.py|27|
membership_file/models.py|36 col 1|
membership_file/models.py|44|
membership_file/models.py|152|
membership_file/models.py|260|
membership_file/models.py|264|
membership_file/models.py|271|
membership_file/models.py|275|
membership_file/tests/tests_model.py|13 col 1|
membership_file/tests/tests_model.py|14|
membership_file/tests/tests_model.py|17|
membership_file/tests/tests_model.py|27|
membership_file/tests/tests_model.py|32|
membership_file/tests/tests_model.py|44|
membership_file/tests/tests_model.py|54|
membership_file/tests/tests_model.py|70|
membership_file/tests/tests_model.py|112|
squire/settings.py|243|
squire/settings.py|375|
squire/settings.py|385|
squire/settings_mailcow.py|30|
squire/settings_mailcow.py|33|
squire/settings_mailcow.py|40|
utils/tests/test_views.py|139|
utils/tests/test_views.py|141 col 1|
utils/tests/test_views.py|170 col 1|
utils/tests/test_views.py|171|
utils/tests/test_views.py|181|
utils/tests/test_views.py|185|
utils/tests/test_views.py|191|
utils/tests/test_views.py|197|
utils/viewcollectives.py|57|
utils/viewcollectives.py|61|
utils/viewcollectives.py|65|
utils/viewcollectives.py|71|
utils/viewcollectives.py|77|
utils/viewcollectives.py|101 col 1|
utils/viewcollectives.py|103|
utils/viewcollectives.py|112|
utils/viewcollectives.py|156|
utils/viewcollectives.py|171|
utils/viewcollectives.py|207|
utils/viewcollectives.py|225|
utils/views.py|119|
subscribers = self._get_subscriberinfos_by_status(status, subscribers, alias, alias_type=AliasCategory.GLOBAL_COMMITTEE) | ||
info = AliasInfos(status.name, subscribers, address, "gc_" + alias_address_to_id(address), address, | ||
"Allows mailing all committees at the same time.", | ||
alias or mailbox, internal=True, exposure_routes=exp_routes, allow_opt_out=None, archive_addresses=settings.COMMITTEE_CONFIGS['global_archive_addresses'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
alias or mailbox, internal=True, exposure_routes=exp_routes, allow_opt_out=None, archive_addresses=settings.COMMITTEE_CONFIGS['global_archive_addresses'] | |
alias or mailbox, | |
internal=True, | |
exposure_routes=exp_routes, | |
allow_opt_out=None, | |
archive_addresses=settings.COMMITTEE_CONFIGS["global_archive_addresses"], |
context['internal_alias_rspamd_setting'] = self.mailcow_manager.internal_alias_rspamd_setting | ||
context['mailcow_host'] = self.mailcow_manager.mailcow_host |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
context['internal_alias_rspamd_setting'] = self.mailcow_manager.internal_alias_rspamd_setting | |
context['mailcow_host'] = self.mailcow_manager.mailcow_host | |
context["internal_alias_rspamd_setting"] = self.mailcow_manager.internal_alias_rspamd_setting | |
context["mailcow_host"] = self.mailcow_manager.mailcow_host |
raise MailcowAuthException(f"{request_url}: {content['msg']}") | ||
elif content.get("msg", "").startswith("API read/write access denied"): | ||
raise MailcowAPIReadWriteAccessDenied(f"{request_url}: {content['msg']}") | ||
elif content.get('msg', "").startswith("api access denied"): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
elif content.get('msg', "").startswith("api access denied"): | |
elif content.get("msg", "").startswith("api access denied"): |
elif content.get('msg', "").startswith("api access denied"): | ||
# IP is not whitelisted | ||
raise MailcowAPIAccessDenied(f"{request_url}: {content['msg']}") | ||
elif content.get('msg', None) == "route not found": |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
elif content.get('msg', None) == "route not found": | |
elif content.get("msg", None) == "route not found": |
# Some other error (should not happen) | ||
logger.error(content) | ||
raise MailcowException(f"{request_url}: {content['msg']}") | ||
elif content.get('type', None) == 'danger': |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
elif content.get('type', None) == 'danger': | |
elif content.get("type", None) == "danger": |
return RspamdSettings.from_json(content) | ||
|
||
def update_rspamd_setting(self, setting: RspamdSettings) -> dict: | ||
""" Updates the RspamdSetting associated to the given ID with the given data """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Updates the RspamdSetting associated to the given ID with the given data """ | |
"""Updates the RspamdSetting associated to the given ID with the given data""" |
data = json.dumps({ | ||
'items': [setting.id], | ||
'attr': { | ||
'active': int(setting.active), | ||
'desc': setting.desc, | ||
'content': setting.content, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
data = json.dumps({ | |
'items': [setting.id], | |
'attr': { | |
'active': int(setting.active), | |
'desc': setting.desc, | |
'content': setting.content, | |
data = json.dumps( | |
{ | |
"items": [setting.id], | |
"attr": { | |
"active": int(setting.active), | |
"desc": setting.desc, | |
"content": setting.content, | |
}, |
'desc': setting.desc, | ||
'content': setting.content, | ||
} | ||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
}) | |
) |
return self._make_request(f"edit/rsetting", request_type=RequestType.POST, data=data) | ||
|
||
def create_rspamd_setting(self, setting: RspamdSettings) -> dict: | ||
""" Creates a new Rspamd setting """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Creates a new Rspamd setting """ | |
"""Creates a new Rspamd setting""" |
data = json.dumps({ | ||
'desc': setting.desc, | ||
'content': setting.content, | ||
'active': int(setting.active), | ||
}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
data = json.dumps({ | |
'desc': setting.desc, | |
'content': setting.content, | |
'active': int(setting.active), | |
}) | |
data = json.dumps( | |
{ | |
"desc": setting.desc, | |
"content": setting.content, | |
"active": int(setting.active), | |
} | |
) |
Turned MailcowManager.internal_alias_rspamd_setting back into a method due to the extra cache-control parameter.
SquireMailcowManager.is_internal_alias Member.is_active
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
blackfmt
mailcow_integration/api/interface/mailbox.py|89|
mailcow_integration/api/interface/mailbox.py|98|
mailcow_integration/api/interface/mailbox.py|107|
mailcow_integration/api/interface/rspamd.py|6 col 1|
mailcow_integration/api/interface/rspamd.py|8|
mailcow_integration/api/interface/rspamd.py|11|
mailcow_integration/api/interface/rspamd.py|15|
mailcow_integration/apps.py|8 col 1|
mailcow_integration/apps.py|10 col 1|
mailcow_integration/apps.py|11|
mailcow_integration/apps.py|22|
mailcow_integration/apps.py|29|
mailcow_integration/dynamic_preferences_registry.py|10|
mailcow_integration/dynamic_preferences_registry.py|16|
mailcow_integration/dynamic_preferences_registry.py|18|
mailcow_integration/dynamic_preferences_registry.py|21 col 1|
mailcow_integration/dynamic_preferences_registry.py|22|
mailcow_integration/dynamic_preferences_registry.py|25 col 1|
mailcow_integration/dynamic_preferences_registry.py|26|
mailcow_integration/dynamic_preferences_registry.py|31|
mailcow_integration/dynamic_preferences_registry.py|33|
mailcow_integration/dynamic_preferences_registry.py|37|
mailcow_integration/dynamic_preferences_registry.py|41|
mailcow_integration/dynamic_preferences_registry.py|46|
mailcow_integration/dynamic_preferences_registry.py|52|
mailcow_integration/dynamic_preferences_registry.py|58|
mailcow_integration/dynamic_preferences_registry.py|61 col 1|
mailcow_integration/management/commands/mailcow_api_request.py|6|
mailcow_integration/management/commands/mailcow_api_request.py|10|
mailcow_integration/management/commands/mailcow_api_request.py|16|
mailcow_integration/signals.py|11|
mailcow_integration/signals.py|16|
mailcow_integration/signals.py|20 col 1|
mailcow_integration/signals.py|21|
mailcow_integration/signals.py|30 col 1|
mailcow_integration/signals.py|38 col 1|
mailcow_integration/signals.py|45 col 1|
mailcow_integration/signals.py|50|
mailcow_integration/signals.py|68 col 1|
mailcow_integration/signals.py|70|
mailcow_integration/signals.py|76|
mailcow_integration/signals.py|92 col 1|
mailcow_integration/signals.py|94|
mailcow_integration/signals.py|112|
mailcow_integration/signals.py|132 col 1|
mailcow_integration/signals.py|134|
mailcow_integration/signals.py|167|
mailcow_integration/signals.py|177 col 1|
mailcow_integration/signals.py|179|
mailcow_integration/signals.py|181|
mailcow_integration/signals.py|189 col 1|
mailcow_integration/signals.py|194|
mailcow_integration/signals.py|213 col 1|
mailcow_integration/signals.py|215|
mailcow_integration/signals.py|226|
mailcow_integration/signals.py|231|
mailcow_integration/signals.py|242 col 1|
mailcow_integration/signals.py|244|
mailcow_integration/signals.py|257|
mailcow_integration/signals.py|275 col 1|
mailcow_integration/signals.py|277|
mailcow_integration/signals.py|284|
mailcow_integration/signals.py|299 col 1|
mailcow_integration/signals.py|301|
mailcow_integration/signals.py|309 col 1|
mailcow_integration/signals.py|314|
mailcow_integration/signals.py|332 col 1|
mailcow_integration/signals.py|334|
mailcow_integration/signals.py|345|
mailcow_integration/signals.py|362 col 1|
mailcow_integration/signals.py|364|
mailcow_integration/signals.py|371 col 1|
mailcow_integration/signals.py|373|
mailcow_integration/signals.py|383 col 1|
mailcow_integration/signals.py|392|
mailcow_integration/signals.py|397|
mailcow_integration/signals.py|399|
mailcow_integration/signals.py|407|
mailcow_integration/squire_mailcow.py|21|
mailcow_integration/squire_mailcow.py|25 col 1|
mailcow_integration/squire_mailcow.py|26|
mailcow_integration/squire_mailcow.py|32|
mailcow_integration/squire_mailcow.py|37|
mailcow_integration/squire_mailcow.py|48 col 1|
mailcow_integration/squire_mailcow.py|64|
mailcow_integration/squire_mailcow.py|86|
mailcow_integration/squire_mailcow.py|92|
mailcow_integration/squire_mailcow.py|100|
mailcow_integration/squire_mailcow.py|105|
mailcow_integration/squire_mailcow.py|123|
mailcow_integration/squire_mailcow.py|133|
mailcow_integration/squire_mailcow.py|137|
mailcow_integration/squire_mailcow.py|162|
mailcow_integration/squire_mailcow.py|177|
mailcow_integration/squire_mailcow.py|185|
mailcow_integration/squire_mailcow.py|194|
mailcow_integration/squire_mailcow.py|198|
mailcow_integration/squire_mailcow.py|203|
mailcow_integration/squire_mailcow.py|207|
mailcow_integration/squire_mailcow.py|210|
mailcow_integration/squire_mailcow.py|227|
mailcow_integration/squire_mailcow.py|239|
mailcow_integration/squire_mailcow.py|246|
mailcow_integration/squire_mailcow.py|261|
mailcow_integration/squire_mailcow.py|264|
mailcow_integration/squire_mailcow.py|274|
mailcow_integration/squire_mailcow.py|289|
mailcow_integration/squire_mailcow.py|297|
mailcow_integration/squire_mailcow.py|310|
mailcow_integration/squire_mailcow.py|318|
mailcow_integration/squire_mailcow.py|322|
mailcow_integration/squire_mailcow.py|325|
mailcow_integration/squire_mailcow.py|335|
mailcow_integration/squire_mailcow.py|340|
mailcow_integration/squire_mailcow.py|342|
mailcow_integration/squire_mailcow.py|346|
mailcow_integration/tests/api/test_interfaces.py|6|
mailcow_integration/tests/api/test_interfaces.py|11|
mailcow_integration/tests/api/test_interfaces.py|30|
mailcow_integration/tests/api/test_interfaces.py|71|
mailcow_integration/tests/api/test_interfaces.py|81|
mailcow_integration/tests/api/test_interfaces.py|83|
mailcow_integration/tests/api/test_interfaces.py|90|
mailcow_integration/tests/api/test_interfaces.py|92|
mailcow_integration/tests/api/test_interfaces.py|100|
mailcow_integration/tests/api/test_interfaces.py|128|
mailcow_integration/tests/api/test_interfaces.py|133|
mailcow_integration/tests/api/tests_mailcow_client.py|23 col 1|
mailcow_integration/tests/api/tests_mailcow_client.py|24|
mailcow_integration/tests/api/tests_mailcow_client.py|31|
mailcow_integration/tests/api/tests_mailcow_client.py|34|
mailcow_integration/tests/api/tests_mailcow_client.py|38|
mailcow_integration/tests/api/tests_mailcow_client.py|46|
mailcow_integration/tests/api/tests_mailcow_client.py|48|
mailcow_integration/tests/api/tests_mailcow_client.py|50|
mailcow_integration/tests/api/tests_mailcow_client.py|55|
mailcow_integration/tests/api/tests_mailcow_client.py|62|
mailcow_integration/tests/api/tests_mailcow_client.py|66|
mailcow_integration/tests/api/tests_mailcow_client.py|75|
mailcow_integration/tests/api/tests_mailcow_client.py|80|
mailcow_integration/tests/api/tests_mailcow_client.py|87|
mailcow_integration/tests/api/tests_mailcow_client.py|89|
mailcow_integration/tests/api/tests_mailcow_client.py|91|
mailcow_integration/tests/api/tests_mailcow_client.py|93|
mailcow_integration/tests/api/tests_mailcow_client.py|96|
mailcow_integration/tests/api/tests_mailcow_client.py|100|
mailcow_integration/tests/api/tests_mailcow_client.py|107|
mailcow_integration/tests/api/tests_mailcow_client.py|114|
mailcow_integration/tests/api/tests_mailcow_client.py|121|
mailcow_integration/tests/api/tests_mailcow_client.py|128|
mailcow_integration/tests/api/tests_mailcow_client.py|135|
mailcow_integration/tests/api/tests_mailcow_client.py|142|
mailcow_integration/tests/api/tests_mailcow_client.py|152|
mailcow_integration/tests/api/tests_mailcow_client.py|157|
mailcow_integration/tests/api/tests_mailcow_client.py|168|
mailcow_integration/tests/api/tests_mailcow_client.py|172|
mailcow_integration/tests/api/tests_mailcow_client.py|182|
mailcow_integration/tests/api/tests_mailcow_client.py|187|
mailcow_integration/tests/api/tests_mailcow_client.py|199|
mailcow_integration/tests/api/tests_mailcow_client.py|212|
mailcow_integration/tests/api/tests_mailcow_client.py|221|
mailcow_integration/tests/api/tests_mailcow_client.py|234|
mailcow_integration/tests/api/tests_mailcow_client.py|240|
mailcow_integration/tests/api/tests_mailcow_client.py|242|
mailcow_integration/tests/api/tests_mailcow_client.py|247|
mailcow_integration/tests/api/tests_mailcow_client.py|253|
mailcow_integration/tests/api/tests_mailcow_client.py|255|
mailcow_integration/tests/api/tests_mailcow_client.py|260|
mailcow_integration/tests/api/tests_mailcow_client.py|265|
mailcow_integration/tests/api/tests_mailcow_client.py|277|
mailcow_integration/tests/api/tests_mailcow_client.py|287|
mailcow_integration/tests/api/tests_mailcow_client.py|296|
mailcow_integration/tests/api/tests_mailcow_client.py|306|
mailcow_integration/tests/api/tests_mailcow_client.py|312|
mailcow_integration/tests/api/tests_mailcow_client.py|314|
mailcow_integration/tests/api/tests_mailcow_client.py|319|
mailcow_integration/tests/api/tests_mailcow_client.py|325|
mailcow_integration/tests/api/tests_mailcow_client.py|327|
mailcow_integration/tests/api/tests_mailcow_client.py|332|
mailcow_integration/tests/api/tests_mailcow_client.py|339|
mailcow_integration/tests/api/tests_mailcow_client.py|356|
mailcow_integration/tests/api/tests_mailcow_client.py|361|
mailcow_integration/tests/api/tests_mailcow_client.py|372|
mailcow_integration/tests/api/tests_mailcow_client.py|376|
mailcow_integration/tests/api/tests_mailcow_client.py|381|
mailcow_integration/tests/api/tests_mailcow_client.py|393|
mailcow_integration/tests/api/tests_mailcow_client.py|397|
mailcow_integration/tests/api/tests_mailcow_client.py|407|
mailcow_integration/tests/api/tests_mailcow_client.py|410|
mailcow_integration/tests/api/tests_mailcow_client.py|422|
mailcow_integration/tests/api/tests_mailcow_client.py|432|
mailcow_integration/tests/api/tests_mailcow_client.py|435|
mailcow_integration/tests/api/tests_mailcow_client.py|447|
mailcow_integration/tests/tests_member_preferences.py|13|
mailcow_integration/tests/tests_member_preferences.py|24|
mailcow_integration/tests/tests_member_preferences.py|27|
mailcow_integration/tests/tests_member_preferences.py|35|
mailcow_integration/tests/tests_member_preferences.py|38|
mailcow_integration/tests/tests_member_preferences.py|44|
mailcow_integration/tests/tests_member_preferences.py|46|
mailcow_integration/tests/tests_member_preferences.py|48|
mailcow_integration/tests/tests_member_preferences.py|56|
mailcow_integration/tests/tests_member_preferences.py|58|
mailcow_integration/tests/tests_member_preferences.py|60|
mailcow_integration/tests/tests_preferences.py|13 col 1|
mailcow_integration/tests/tests_preferences.py|14|
mailcow_integration/tests/tests_preferences.py|16|
mailcow_integration/tests/tests_preferences.py|23|
mailcow_integration/tests/tests_preferences.py|27|
mailcow_integration/tests/tests_preferences.py|31|
mailcow_integration/tests/tests_signals.py|12 col 1|
mailcow_integration/tests/tests_signals.py|13|
mailcow_integration/tests/tests_signals.py|31 col 1|
mailcow_integration/tests/tests_signals.py|34 col 1|
mailcow_integration/tests/tests_signals.py|46|
mailcow_integration/tests/tests_signals.py|53|
mailcow_integration/tests/tests_signals.py|66|
mailcow_integration/tests/tests_signals.py|70|
mailcow_integration/tests/tests_signals.py|77|
mailcow_integration/tests/tests_signals.py|79|
mailcow_integration/tests/tests_signals.py|81|
mailcow_integration/tests/tests_signals.py|86|
mailcow_integration/tests/tests_signals.py|91|
mailcow_integration/tests/tests_signals.py|111|
mailcow_integration/tests/tests_signals.py|113|
mailcow_integration/tests/tests_signals.py|120|
mailcow_integration/tests/tests_signals.py|127|
mailcow_integration/tests/tests_signals.py|134|
mailcow_integration/tests/tests_signals.py|136|
mailcow_integration/tests/tests_signals.py|150|
mailcow_integration/tests/tests_signals.py|157|
mailcow_integration/tests/tests_signals.py|224|
mailcow_integration/tests/tests_signals.py|226|
mailcow_integration/tests/tests_signals.py|244|
mailcow_integration/tests/tests_signals.py|251|
mailcow_integration/tests/tests_signals.py|258|
mailcow_integration/tests/tests_signals.py|260|
mailcow_integration/tests/tests_signals.py|264|
mailcow_integration/tests/tests_signals.py|289|
mailcow_integration/tests/tests_signals.py|322|
mailcow_integration/tests/tests_signals.py|324|
mailcow_integration/tests/tests_signals.py|331|
mailcow_integration/tests/tests_signals.py|338|
mailcow_integration/tests/tests_signals.py|345|
mailcow_integration/tests/tests_signals.py|347|
mailcow_integration/tests/tests_signals.py|365|
mailcow_integration/tests/tests_signals.py|383|
mailcow_integration/tests/tests_signals.py|398|
mailcow_integration/tests/tests_signals.py|405|
mailcow_integration/tests/tests_signals.py|407|
mailcow_integration/tests/tests_signals.py|410|
mailcow_integration/tests/tests_signals.py|436|
mailcow_integration/tests/tests_signals.py|440|
mailcow_integration/tests/tests_signals.py|487|
mailcow_integration/tests/tests_signals.py|490|
mailcow_integration/tests/tests_squire_mailcow.py|26|
mailcow_integration/tests/tests_squire_mailcow.py|32|
mailcow_integration/tests/tests_squire_mailcow.py|39|
mailcow_integration/tests/tests_squire_mailcow.py|45|
mailcow_integration/tests/tests_squire_mailcow.py|47|
mailcow_integration/tests/tests_squire_mailcow.py|53|
mailcow_integration/tests/tests_squire_mailcow.py|59|
mailcow_integration/tests/tests_squire_mailcow.py|63|
mailcow_integration/tests/tests_squire_mailcow.py|69|
mailcow_integration/tests/tests_squire_mailcow.py|73|
mailcow_integration/tests/tests_squire_mailcow.py|77|
mailcow_integration/tests/tests_squire_mailcow.py|81|
mailcow_integration/tests/tests_squire_mailcow.py|103|
mailcow_integration/tests/tests_squire_mailcow.py|107|
mailcow_integration/tests/tests_squire_mailcow.py|112|
mailcow_integration/tests/tests_squire_mailcow.py|134|
mailcow_integration/tests/tests_squire_mailcow.py|142|
mailcow_integration/tests/tests_squire_mailcow.py|149|
mailcow_integration/tests/tests_squire_mailcow.py|152|
mailcow_integration/tests/tests_squire_mailcow.py|159|
mailcow_integration/tests/tests_squire_mailcow.py|165|
mailcow_integration/tests/tests_squire_mailcow.py|170|
mailcow_integration/tests/tests_squire_mailcow.py|185|
mailcow_integration/tests/tests_squire_mailcow.py|191|
mailcow_integration/tests/tests_squire_mailcow.py|197|
mailcow_integration/tests/tests_squire_mailcow.py|203|
mailcow_integration/tests/tests_squire_mailcow.py|208|
mailcow_integration/tests/tests_squire_mailcow.py|211|
mailcow_integration/tests/tests_squire_mailcow.py|217|
mailcow_integration/tests/tests_squire_mailcow.py|228|
mailcow_integration/tests/tests_squire_mailcow.py|241|
mailcow_integration/tests/tests_squire_mailcow.py|248|
mailcow_integration/tests/tests_squire_mailcow.py|252|
mailcow_integration/tests/tests_squire_mailcow.py|262|
mailcow_integration/tests/tests_squire_mailcow.py|267|
mailcow_integration/tests/tests_squire_mailcow.py|283|
mailcow_integration/tests/tests_squire_mailcow.py|293|
mailcow_integration/tests/tests_squire_mailcow.py|298|
mailcow_integration/tests/tests_squire_mailcow.py|305|
mailcow_integration/tests/tests_squire_mailcow.py|314|
mailcow_integration/tests/tests_squire_mailcow.py|324|
mailcow_integration/tests/tests_squire_mailcow.py|329|
mailcow_integration/tests/tests_squire_mailcow.py|344|
mailcow_integration/tests/tests_squire_mailcow.py|353|
mailcow_integration/tests/tests_squire_mailcow.py|358|
mailcow_integration/tests/tests_squire_mailcow.py|373|
mailcow_integration/tests/tests_squire_mailcow.py|385|
mailcow_integration/tests/tests_squire_mailcow.py|390|
mailcow_integration/tests/tests_squire_mailcow.py|406|
mailcow_integration/tests/tests_squire_mailcow.py|413|
mailcow_integration/tests/tests_squire_mailcow.py|438|
mailcow_integration/tests/tests_squire_mailcow.py|450|
mailcow_integration/tests/tests_squire_mailcow.py|453|
mailcow_integration/tests/tests_squire_mailcow.py|455|
mailcow_integration/tests/tests_squire_mailcow.py|459|
mailcow_integration/tests/tests_squire_mailcow.py|468|
mailcow_integration/tests/tests_squire_mailcow.py|474|
mailcow_integration/tests/tests_squire_mailcow.py|493|
mailcow_integration/tests/tests_squire_mailcow.py|506|
mailcow_integration/tests/tests_squire_mailcow.py|522|
mailcow_integration/tests/tests_squire_mailcow.py|533|
mailcow_integration/tests/tests_squire_mailcow.py|536|
mailcow_integration/tests/tests_squire_mailcow.py|539|
mailcow_integration/tests/tests_squire_mailcow.py|546|
mailcow_integration/tests/tests_squire_mailcow.py|554|
mailcow_integration/tests/tests_squire_mailcow.py|563|
mailcow_integration/tests/tests_squire_mailcow.py|567|
mailcow_integration/tests/tests_squire_mailcow.py|569|
mailcow_integration/tests/tests_squire_mailcow.py|572|
mailcow_integration/tests/tests_squire_mailcow.py|581|
mailcow_integration/tests/tests_squire_mailcow.py|583|
mailcow_integration/tests/tests_squire_mailcow.py|586|
mailcow_integration/tests/tests_squire_mailcow.py|601|
mailcow_integration/tests/tests_squire_mailcow.py|606|
mailcow_integration/tests/tests_squire_mailcow.py|610|
mailcow_integration/tests/tests_squire_mailcow.py|613|
mailcow_integration/tests/tests_view_status.py|11|
mailcow_integration/tests/tests_view_status.py|25 col 1|
mailcow_integration/tests/tests_view_status.py|26|
mailcow_integration/tests/tests_view_status.py|28|
mailcow_integration/tests/tests_view_status.py|33 col 1|
mailcow_integration/tests/tests_view_status.py|34|
mailcow_integration/tests/tests_view_status.py|46|
mailcow_integration/tests/tests_view_status.py|51|
mailcow_integration/tests/tests_view_status.py|53|
mailcow_integration/tests/tests_view_status.py|59|
mailcow_integration/tests/tests_view_status.py|64|
mailcow_integration/tests/tests_view_status.py|66|
mailcow_integration/tests/tests_view_status.py|70|
mailcow_integration/tests/tests_view_status.py|77|
mailcow_integration/tests/tests_view_status.py|79|
mailcow_integration/tests/tests_view_status.py|85|
mailcow_integration/tests/tests_view_status.py|88|
mailcow_integration/tests/tests_view_status.py|95|
mailcow_integration/tests/tests_view_status.py|98|
mailcow_integration/tests/tests_view_status.py|105|
mailcow_integration/tests/tests_view_status.py|107|
mailcow_integration/tests/tests_view_status.py|116|
mailcow_integration/tests/tests_view_status.py|123|
mailcow_integration/tests/tests_view_status.py|126|
mailcow_integration/tests/tests_view_status.py|133|
mailcow_integration/tests/tests_view_status.py|135|
mailcow_integration/tests/tests_view_status.py|144|
mailcow_integration/tests/tests_view_status.py|150 col 1|
mailcow_integration/tests/tests_view_status.py|151|
mailcow_integration/tests/tests_view_status.py|153|
mailcow_integration/tests/tests_view_status.py|155|
mailcow_integration/tests/tests_view_status.py|161|
mailcow_integration/tests/tests_view_status.py|163|
mailcow_integration/tests/tests_view_status.py|167|
mailcow_integration/tests/tests_view_status.py|171|
mailcow_integration/tests/tests_view_status.py|174|
mailcow_integration/tests/tests_view_status.py|180|
mailcow_integration/tests/tests_view_status.py|184|
mailcow_integration/tests/tests_view_status.py|188|
mailcow_integration/tests/tests_view_status.py|191|
mailcow_integration/tests/tests_view_status.py|198|
mailcow_integration/tests/tests_view_status.py|207|
mailcow_integration/tests/tests_view_status.py|214|
mailcow_integration/tests/tests_view_status.py|218|
mailcow_integration/tests/tests_view_status.py|223|
mailcow_integration/tests/tests_view_status.py|230|
mailcow_integration/tests/tests_view_status.py|243|
mailcow_integration/tests/tests_view_status.py|270|
mailcow_integration/tests/tests_view_status.py|279|
mailcow_integration/tests/tests_view_status.py|285|
mailcow_integration/tests/tests_view_status.py|287|
mailcow_integration/tests/tests_view_status.py|291|
mailcow_integration/tests/tests_view_status.py|299|
mailcow_integration/tests/tests_view_status.py|315|
mailcow_integration/tests/tests_view_status.py|326|
mailcow_integration/tests/tests_view_status.py|334|
mailcow_integration/tests/tests_view_status.py|337|
mailcow_integration/tests/tests_view_status.py|346|
mailcow_integration/tests/tests_view_status.py|356|
mailcow_integration/tests/tests_view_status.py|365|
mailcow_integration/tests/tests_view_status.py|374|
mailcow_integration/tests/tests_view_status.py|377|
mailcow_integration/tests/tests_view_status.py|386|
mailcow_integration/tests/tests_view_status.py|390|
mailcow_integration/tests/tests_view_status.py|395|
mailcow_integration/tests/tests_view_status.py|404|
mailcow_integration/tests/tests_view_status.py|414|
mailcow_integration/tests/tests_view_status.py|420|
mailcow_integration/tests/tests_view_status.py|429|
mailcow_integration/tests/tests_view_status.py|434|
mailcow_integration/tests/tests_view_status.py|445|
mailcow_integration/tests/tests_view_status.py|464|
mailcow_integration/tests/tests_view_status.py|479|
mailcow_integration/tests/tests_view_status.py|484|
mailcow_integration/tests/tests_view_status.py|490|
mailcow_integration/tests/tests_view_status.py|492|
mailcow_integration/tests/tests_view_status.py|496|
mailcow_integration/tests/tests_view_status.py|498|
mailcow_integration/tests/tests_view_status.py|502|
mailcow_integration/tests/tests_view_status.py|504|
mailcow_integration/tests/tests_view_status.py|507|
mailcow_integration/tests/tests_view_status.py|516|
mailcow_integration/tests/tests_view_status.py|532|
mailcow_integration/tests/tests_view_status.py|547|
mailcow_integration/tests/tests_view_status.py|562|
mailcow_integration/tests/tests_view_status.py|578|
mailcow_integration/tests/tests_view_status.py|591|
membership_file/models.py|19 col 1|
membership_file/models.py|21|
membership_file/models.py|27|
membership_file/models.py|36 col 1|
membership_file/models.py|44|
membership_file/models.py|152|
membership_file/models.py|260|
membership_file/models.py|264|
membership_file/models.py|271|
membership_file/models.py|275|
membership_file/tests/tests_model.py|13 col 1|
membership_file/tests/tests_model.py|14|
membership_file/tests/tests_model.py|17|
membership_file/tests/tests_model.py|27|
membership_file/tests/tests_model.py|32|
membership_file/tests/tests_model.py|44|
membership_file/tests/tests_model.py|54|
membership_file/tests/tests_model.py|70|
membership_file/tests/tests_model.py|78|
membership_file/tests/tests_model.py|93|
membership_file/tests/tests_model.py|126|
squire/settings.py|243|
squire/settings.py|375|
squire/settings.py|385|
squire/settings_mailcow.py|30|
squire/settings_mailcow.py|33|
squire/settings_mailcow.py|40|
utils/tests/test_views.py|139|
utils/tests/test_views.py|141 col 1|
utils/tests/test_views.py|170 col 1|
utils/tests/test_views.py|171|
utils/tests/test_views.py|181|
utils/tests/test_views.py|185|
utils/tests/test_views.py|191|
utils/tests/test_views.py|197|
utils/viewcollectives.py|57|
utils/viewcollectives.py|61|
utils/viewcollectives.py|65|
utils/viewcollectives.py|71|
utils/viewcollectives.py|77|
utils/viewcollectives.py|101 col 1|
utils/viewcollectives.py|103|
utils/viewcollectives.py|112|
utils/viewcollectives.py|156|
utils/viewcollectives.py|171|
utils/viewcollectives.py|207|
utils/viewcollectives.py|225|
utils/views.py|119|
context['internal_alias_rspamd_setting'] = self.mailcow_manager.get_internal_alias_rspamd_setting(use_cache=False) | ||
context['mailcow_host'] = self.mailcow_manager.mailcow_host |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
context['internal_alias_rspamd_setting'] = self.mailcow_manager.get_internal_alias_rspamd_setting(use_cache=False) | |
context['mailcow_host'] = self.mailcow_manager.mailcow_host | |
context["internal_alias_rspamd_setting"] = self.mailcow_manager.get_internal_alias_rspamd_setting( | |
use_cache=False | |
) | |
context["mailcow_host"] = self.mailcow_manager.mailcow_host |
@@ -0,0 +1,18 @@ | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
@@ -0,0 +1,18 @@ | |||
|
|||
class MailcowException(Exception): | |||
""" General exception class for errors raised by the Mailcow API """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" General exception class for errors raised by the Mailcow API """ | |
"""General exception class for errors raised by the Mailcow API""" | |
""" General exception class for errors raised by the Mailcow API """ | ||
|
||
class MailcowAuthException(MailcowException): | ||
""" Raised if authentication with the Mailcow server fails (invalid API key) """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Raised if authentication with the Mailcow server fails (invalid API key) """ | |
"""Raised if authentication with the Mailcow server fails (invalid API key)""" | |
""" Raised if authentication with the Mailcow server fails (invalid API key) """ | ||
|
||
class MailcowAPIAccessDenied(MailcowException): | ||
""" Raised if API access is denied for some IP """ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Raised if API access is denied for some IP """ | |
"""Raised if API access is denied for some IP""" | |
""" Mailcow Mailbox """ | ||
username: str # Username is the id | ||
name: str # Name appearing when sending an email | ||
local_part: str = None # everything before the @example.com |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
""" Mailcow Mailbox """ | |
username: str # Username is the id | |
name: str # Name appearing when sending an email | |
local_part: str = None # everything before the @example.com | |
"""Mailcow Mailbox""" | |
username: str # Username is the id | |
name: str # Name appearing when sending an email | |
local_part: str = None # everything before the @example.com |
domain: str = None | ||
|
||
active: MailboxStatus = MailboxStatus.ACTIVE | ||
active_int: int = None # ??? Always identical to active |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
active_int: int = None # ??? Always identical to active | |
active_int: int = None # ??? Always identical to active |
messages: int = 0 # Number of messages in the mailbox | ||
quota: int = 0 # in bytes; 0 for infinite | ||
quota_used: int = 0 # in bytes | ||
percent_in_use: Optional[int] = None # from 0-100, or None if N/A | ||
max_new_quota: int = 0 # in bytes; maximum possible quota |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
messages: int = 0 # Number of messages in the mailbox | |
quota: int = 0 # in bytes; 0 for infinite | |
quota_used: int = 0 # in bytes | |
percent_in_use: Optional[int] = None # from 0-100, or None if N/A | |
max_new_quota: int = 0 # in bytes; maximum possible quota | |
messages: int = 0 # Number of messages in the mailbox | |
quota: int = 0 # in bytes; 0 for infinite | |
quota_used: int = 0 # in bytes | |
percent_in_use: Optional[int] = None # from 0-100, or None if N/A | |
max_new_quota: int = 0 # in bytes; maximum possible quota |
rl: bool = False # ??? | ||
rl_scope: str = "domain" # ??? E.g. 'domain' | ||
is_relayed: bool = False # ??? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
rl: bool = False # ??? | |
rl_scope: str = "domain" # ??? E.g. 'domain' | |
is_relayed: bool = False # ??? | |
rl: bool = False # ??? | |
rl_scope: str = "domain" # ??? E.g. 'domain' | |
is_relayed: bool = False # ??? |
last_pop3_login: Optional[datetime] = None | ||
|
||
domain_xmpp: int = 0 | ||
domain_xmpp_prefix: str = "" # ??? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
domain_xmpp_prefix: str = "" # ??? | |
domain_xmpp_prefix: str = "" # ??? |
Catch MailcowExceptions when working with the API.
|
||
logger = logging.getLogger(__name__) | ||
|
||
class AliasStatus(Enum): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is a lot going on in this file that I don't believe should be in this file. Or at least not in this class. To me it feels like there should be a MailcowAlias class that contains all information such as status, info (currently AliasInfo) and even get_alias_status()
and get_alias_exposure_route()
logic. Otherwise I fear that the code may become hard to decipher/ update once we are gone.
That said, it's more about code clarity/readability than functionality, so I'm fine with approving this PR if you can refactor that in the coming months and update it in a later PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delaying to a future PR would be appreciated. There's a few other refactors I'd like to make as well.
- Take a stab at "merging" some of the tabs on the account page. There's little reason for email preferences to be a tab separate from the main account settings/preferences (like site theming).
- Play around with task queue systems like Celery. This should not only reduce HTTP traffic, but also ensure that signals from cascade deletes will never cause a headache again.
- (possibly) have an overview somewhere of aliases you're a part of (committee, global committee, and subbed member)
The require_membership parameter for ViewCollectives now requires an active membership, rather than any membership whatsoever. Adjusted testcases to ensure those members are active.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
blackfmt
mailcow_integration/management/commands/mailcow_api_request.py|6|
mailcow_integration/management/commands/mailcow_api_request.py|10|
mailcow_integration/management/commands/mailcow_api_request.py|16|
mailcow_integration/signals.py|11|
mailcow_integration/signals.py|16|
mailcow_integration/signals.py|20 col 1|
mailcow_integration/signals.py|21|
mailcow_integration/signals.py|30 col 1|
mailcow_integration/signals.py|38 col 1|
mailcow_integration/signals.py|45 col 1|
mailcow_integration/signals.py|50|
mailcow_integration/signals.py|68 col 1|
mailcow_integration/signals.py|70|
mailcow_integration/signals.py|76|
mailcow_integration/signals.py|92 col 1|
mailcow_integration/signals.py|94|
mailcow_integration/signals.py|112|
mailcow_integration/signals.py|132 col 1|
mailcow_integration/signals.py|134|
mailcow_integration/signals.py|167|
mailcow_integration/signals.py|177 col 1|
mailcow_integration/signals.py|179|
mailcow_integration/signals.py|181|
mailcow_integration/signals.py|189 col 1|
mailcow_integration/signals.py|194|
mailcow_integration/signals.py|213 col 1|
mailcow_integration/signals.py|215|
mailcow_integration/signals.py|226|
mailcow_integration/signals.py|231|
mailcow_integration/signals.py|242 col 1|
mailcow_integration/signals.py|244|
mailcow_integration/signals.py|257|
mailcow_integration/signals.py|275 col 1|
mailcow_integration/signals.py|277|
mailcow_integration/signals.py|284|
mailcow_integration/signals.py|299 col 1|
mailcow_integration/signals.py|301|
mailcow_integration/signals.py|309 col 1|
mailcow_integration/signals.py|314|
mailcow_integration/signals.py|332 col 1|
mailcow_integration/signals.py|334|
mailcow_integration/signals.py|345|
mailcow_integration/signals.py|362 col 1|
mailcow_integration/signals.py|364|
mailcow_integration/signals.py|371 col 1|
mailcow_integration/signals.py|373|
mailcow_integration/signals.py|383 col 1|
mailcow_integration/signals.py|392|
mailcow_integration/signals.py|397|
mailcow_integration/signals.py|399|
mailcow_integration/signals.py|407|
mailcow_integration/squire_mailcow.py|22|
mailcow_integration/squire_mailcow.py|26 col 1|
mailcow_integration/squire_mailcow.py|27|
mailcow_integration/squire_mailcow.py|33|
mailcow_integration/squire_mailcow.py|38|
mailcow_integration/squire_mailcow.py|49 col 1|
mailcow_integration/squire_mailcow.py|65|
mailcow_integration/squire_mailcow.py|87|
mailcow_integration/squire_mailcow.py|93|
mailcow_integration/squire_mailcow.py|101|
mailcow_integration/squire_mailcow.py|106|
mailcow_integration/squire_mailcow.py|124|
mailcow_integration/squire_mailcow.py|134|
mailcow_integration/squire_mailcow.py|138|
mailcow_integration/squire_mailcow.py|163|
mailcow_integration/squire_mailcow.py|178|
mailcow_integration/squire_mailcow.py|186|
mailcow_integration/squire_mailcow.py|195|
mailcow_integration/squire_mailcow.py|199|
mailcow_integration/squire_mailcow.py|204|
mailcow_integration/squire_mailcow.py|208|
mailcow_integration/squire_mailcow.py|211|
mailcow_integration/squire_mailcow.py|232|
mailcow_integration/squire_mailcow.py|244|
mailcow_integration/squire_mailcow.py|251|
mailcow_integration/squire_mailcow.py|266|
mailcow_integration/squire_mailcow.py|269|
mailcow_integration/squire_mailcow.py|279|
mailcow_integration/squire_mailcow.py|294|
mailcow_integration/squire_mailcow.py|302|
mailcow_integration/squire_mailcow.py|316|
mailcow_integration/squire_mailcow.py|327|
mailcow_integration/squire_mailcow.py|331|
mailcow_integration/squire_mailcow.py|334|
mailcow_integration/squire_mailcow.py|346|
mailcow_integration/squire_mailcow.py|351|
mailcow_integration/squire_mailcow.py|353|
mailcow_integration/squire_mailcow.py|360|
mailcow_integration/squire_mailcow.py|362|
mailcow_integration/squire_mailcow.py|373|
mailcow_integration/tests/api/test_interfaces.py|6|
mailcow_integration/tests/api/test_interfaces.py|11|
mailcow_integration/tests/api/test_interfaces.py|30|
mailcow_integration/tests/api/test_interfaces.py|71|
mailcow_integration/tests/api/test_interfaces.py|81|
mailcow_integration/tests/api/test_interfaces.py|83|
mailcow_integration/tests/api/test_interfaces.py|90|
mailcow_integration/tests/api/test_interfaces.py|92|
mailcow_integration/tests/api/test_interfaces.py|100|
mailcow_integration/tests/api/test_interfaces.py|128|
mailcow_integration/tests/api/test_interfaces.py|133|
mailcow_integration/tests/api/tests_mailcow_client.py|23 col 1|
mailcow_integration/tests/api/tests_mailcow_client.py|24|
mailcow_integration/tests/api/tests_mailcow_client.py|31|
mailcow_integration/tests/api/tests_mailcow_client.py|34|
mailcow_integration/tests/api/tests_mailcow_client.py|38|
mailcow_integration/tests/api/tests_mailcow_client.py|46|
mailcow_integration/tests/api/tests_mailcow_client.py|48|
mailcow_integration/tests/api/tests_mailcow_client.py|50|
mailcow_integration/tests/api/tests_mailcow_client.py|55|
mailcow_integration/tests/api/tests_mailcow_client.py|62|
mailcow_integration/tests/api/tests_mailcow_client.py|66|
mailcow_integration/tests/api/tests_mailcow_client.py|75|
mailcow_integration/tests/api/tests_mailcow_client.py|80|
mailcow_integration/tests/api/tests_mailcow_client.py|87|
mailcow_integration/tests/api/tests_mailcow_client.py|89|
mailcow_integration/tests/api/tests_mailcow_client.py|91|
mailcow_integration/tests/api/tests_mailcow_client.py|93|
mailcow_integration/tests/api/tests_mailcow_client.py|96|
mailcow_integration/tests/api/tests_mailcow_client.py|100|
mailcow_integration/tests/api/tests_mailcow_client.py|107|
mailcow_integration/tests/api/tests_mailcow_client.py|114|
mailcow_integration/tests/api/tests_mailcow_client.py|121|
mailcow_integration/tests/api/tests_mailcow_client.py|128|
mailcow_integration/tests/api/tests_mailcow_client.py|135|
mailcow_integration/tests/api/tests_mailcow_client.py|142|
mailcow_integration/tests/api/tests_mailcow_client.py|152|
mailcow_integration/tests/api/tests_mailcow_client.py|157|
mailcow_integration/tests/api/tests_mailcow_client.py|168|
mailcow_integration/tests/api/tests_mailcow_client.py|172|
mailcow_integration/tests/api/tests_mailcow_client.py|182|
mailcow_integration/tests/api/tests_mailcow_client.py|187|
mailcow_integration/tests/api/tests_mailcow_client.py|199|
mailcow_integration/tests/api/tests_mailcow_client.py|212|
mailcow_integration/tests/api/tests_mailcow_client.py|221|
mailcow_integration/tests/api/tests_mailcow_client.py|234|
mailcow_integration/tests/api/tests_mailcow_client.py|240|
mailcow_integration/tests/api/tests_mailcow_client.py|242|
mailcow_integration/tests/api/tests_mailcow_client.py|247|
mailcow_integration/tests/api/tests_mailcow_client.py|253|
mailcow_integration/tests/api/tests_mailcow_client.py|255|
mailcow_integration/tests/api/tests_mailcow_client.py|260|
mailcow_integration/tests/api/tests_mailcow_client.py|265|
mailcow_integration/tests/api/tests_mailcow_client.py|277|
mailcow_integration/tests/api/tests_mailcow_client.py|287|
mailcow_integration/tests/api/tests_mailcow_client.py|296|
mailcow_integration/tests/api/tests_mailcow_client.py|306|
mailcow_integration/tests/api/tests_mailcow_client.py|312|
mailcow_integration/tests/api/tests_mailcow_client.py|314|
mailcow_integration/tests/api/tests_mailcow_client.py|319|
mailcow_integration/tests/api/tests_mailcow_client.py|325|
mailcow_integration/tests/api/tests_mailcow_client.py|327|
mailcow_integration/tests/api/tests_mailcow_client.py|332|
mailcow_integration/tests/api/tests_mailcow_client.py|339|
mailcow_integration/tests/api/tests_mailcow_client.py|356|
mailcow_integration/tests/api/tests_mailcow_client.py|361|
mailcow_integration/tests/api/tests_mailcow_client.py|372|
mailcow_integration/tests/api/tests_mailcow_client.py|376|
mailcow_integration/tests/api/tests_mailcow_client.py|381|
mailcow_integration/tests/api/tests_mailcow_client.py|393|
mailcow_integration/tests/api/tests_mailcow_client.py|397|
mailcow_integration/tests/api/tests_mailcow_client.py|407|
mailcow_integration/tests/api/tests_mailcow_client.py|410|
mailcow_integration/tests/api/tests_mailcow_client.py|422|
mailcow_integration/tests/api/tests_mailcow_client.py|432|
mailcow_integration/tests/api/tests_mailcow_client.py|435|
mailcow_integration/tests/api/tests_mailcow_client.py|447|
mailcow_integration/tests/tests_member_preferences.py|13|
mailcow_integration/tests/tests_member_preferences.py|24|
mailcow_integration/tests/tests_member_preferences.py|27|
mailcow_integration/tests/tests_member_preferences.py|35|
mailcow_integration/tests/tests_member_preferences.py|38|
mailcow_integration/tests/tests_member_preferences.py|44|
mailcow_integration/tests/tests_member_preferences.py|46|
mailcow_integration/tests/tests_member_preferences.py|48|
mailcow_integration/tests/tests_member_preferences.py|56|
mailcow_integration/tests/tests_member_preferences.py|58|
mailcow_integration/tests/tests_member_preferences.py|60|
mailcow_integration/tests/tests_preferences.py|13 col 1|
mailcow_integration/tests/tests_preferences.py|14|
mailcow_integration/tests/tests_preferences.py|16|
mailcow_integration/tests/tests_preferences.py|23|
mailcow_integration/tests/tests_preferences.py|27|
mailcow_integration/tests/tests_preferences.py|31|
mailcow_integration/tests/tests_signals.py|14 col 1|
mailcow_integration/tests/tests_signals.py|15|
mailcow_integration/tests/tests_signals.py|27 col 1|
mailcow_integration/tests/tests_signals.py|28|
mailcow_integration/tests/tests_signals.py|35 col 1|
mailcow_integration/tests/tests_signals.py|38 col 1|
mailcow_integration/tests/tests_signals.py|50|
mailcow_integration/tests/tests_signals.py|57|
mailcow_integration/tests/tests_signals.py|59|
mailcow_integration/tests/tests_signals.py|63|
mailcow_integration/tests/tests_signals.py|70|
mailcow_integration/tests/tests_signals.py|72|
mailcow_integration/tests/tests_signals.py|74|
mailcow_integration/tests/tests_signals.py|79|
mailcow_integration/tests/tests_signals.py|84|
mailcow_integration/tests/tests_signals.py|104|
mailcow_integration/tests/tests_signals.py|106|
mailcow_integration/tests/tests_signals.py|113|
mailcow_integration/tests/tests_signals.py|120|
mailcow_integration/tests/tests_signals.py|127|
mailcow_integration/tests/tests_signals.py|129|
mailcow_integration/tests/tests_signals.py|143|
mailcow_integration/tests/tests_signals.py|150|
mailcow_integration/tests/tests_signals.py|217|
mailcow_integration/tests/tests_signals.py|219|
mailcow_integration/tests/tests_signals.py|237|
mailcow_integration/tests/tests_signals.py|244|
mailcow_integration/tests/tests_signals.py|251|
mailcow_integration/tests/tests_signals.py|253|
mailcow_integration/tests/tests_signals.py|257|
mailcow_integration/tests/tests_signals.py|282|
mailcow_integration/tests/tests_signals.py|315|
mailcow_integration/tests/tests_signals.py|317|
mailcow_integration/tests/tests_signals.py|324|
mailcow_integration/tests/tests_signals.py|331|
mailcow_integration/tests/tests_signals.py|338|
mailcow_integration/tests/tests_signals.py|340|
mailcow_integration/tests/tests_signals.py|358|
mailcow_integration/tests/tests_signals.py|376|
mailcow_integration/tests/tests_signals.py|391|
mailcow_integration/tests/tests_signals.py|398|
mailcow_integration/tests/tests_signals.py|400|
mailcow_integration/tests/tests_signals.py|403|
mailcow_integration/tests/tests_signals.py|429|
mailcow_integration/tests/tests_signals.py|433|
mailcow_integration/tests/tests_signals.py|480|
mailcow_integration/tests/tests_signals.py|483|
mailcow_integration/tests/tests_signals.py|514|
mailcow_integration/tests/tests_signals.py|517|
mailcow_integration/tests/tests_signals.py|522|
mailcow_integration/tests/tests_squire_mailcow.py|27|
mailcow_integration/tests/tests_squire_mailcow.py|33|
mailcow_integration/tests/tests_squire_mailcow.py|40|
mailcow_integration/tests/tests_squire_mailcow.py|46|
mailcow_integration/tests/tests_squire_mailcow.py|48|
mailcow_integration/tests/tests_squire_mailcow.py|54|
mailcow_integration/tests/tests_squire_mailcow.py|60|
mailcow_integration/tests/tests_squire_mailcow.py|64|
mailcow_integration/tests/tests_squire_mailcow.py|70|
mailcow_integration/tests/tests_squire_mailcow.py|74|
mailcow_integration/tests/tests_squire_mailcow.py|78|
mailcow_integration/tests/tests_squire_mailcow.py|82|
mailcow_integration/tests/tests_squire_mailcow.py|104|
mailcow_integration/tests/tests_squire_mailcow.py|108|
mailcow_integration/tests/tests_squire_mailcow.py|113|
mailcow_integration/tests/tests_squire_mailcow.py|135|
mailcow_integration/tests/tests_squire_mailcow.py|143|
mailcow_integration/tests/tests_squire_mailcow.py|150|
mailcow_integration/tests/tests_squire_mailcow.py|153|
mailcow_integration/tests/tests_squire_mailcow.py|160|
mailcow_integration/tests/tests_squire_mailcow.py|166|
mailcow_integration/tests/tests_squire_mailcow.py|171|
mailcow_integration/tests/tests_squire_mailcow.py|186|
mailcow_integration/tests/tests_squire_mailcow.py|192|
mailcow_integration/tests/tests_squire_mailcow.py|198|
mailcow_integration/tests/tests_squire_mailcow.py|204|
mailcow_integration/tests/tests_squire_mailcow.py|209|
mailcow_integration/tests/tests_squire_mailcow.py|212|
mailcow_integration/tests/tests_squire_mailcow.py|218|
mailcow_integration/tests/tests_squire_mailcow.py|229|
mailcow_integration/tests/tests_squire_mailcow.py|242|
mailcow_integration/tests/tests_squire_mailcow.py|249|
mailcow_integration/tests/tests_squire_mailcow.py|253|
mailcow_integration/tests/tests_squire_mailcow.py|263|
mailcow_integration/tests/tests_squire_mailcow.py|268|
mailcow_integration/tests/tests_squire_mailcow.py|284|
mailcow_integration/tests/tests_squire_mailcow.py|294|
mailcow_integration/tests/tests_squire_mailcow.py|299|
mailcow_integration/tests/tests_squire_mailcow.py|306|
mailcow_integration/tests/tests_squire_mailcow.py|315|
mailcow_integration/tests/tests_squire_mailcow.py|325|
mailcow_integration/tests/tests_squire_mailcow.py|330|
mailcow_integration/tests/tests_squire_mailcow.py|345|
mailcow_integration/tests/tests_squire_mailcow.py|354|
mailcow_integration/tests/tests_squire_mailcow.py|359|
mailcow_integration/tests/tests_squire_mailcow.py|374|
mailcow_integration/tests/tests_squire_mailcow.py|386|
mailcow_integration/tests/tests_squire_mailcow.py|391|
mailcow_integration/tests/tests_squire_mailcow.py|408|
mailcow_integration/tests/tests_squire_mailcow.py|415|
mailcow_integration/tests/tests_squire_mailcow.py|422|
mailcow_integration/tests/tests_squire_mailcow.py|447|
mailcow_integration/tests/tests_squire_mailcow.py|459|
mailcow_integration/tests/tests_squire_mailcow.py|462|
mailcow_integration/tests/tests_squire_mailcow.py|464|
mailcow_integration/tests/tests_squire_mailcow.py|468|
mailcow_integration/tests/tests_squire_mailcow.py|477|
mailcow_integration/tests/tests_squire_mailcow.py|483|
mailcow_integration/tests/tests_squire_mailcow.py|503|
mailcow_integration/tests/tests_squire_mailcow.py|516|
mailcow_integration/tests/tests_squire_mailcow.py|521|
mailcow_integration/tests/tests_squire_mailcow.py|525|
mailcow_integration/tests/tests_squire_mailcow.py|538|
mailcow_integration/tests/tests_squire_mailcow.py|549|
mailcow_integration/tests/tests_squire_mailcow.py|552|
mailcow_integration/tests/tests_squire_mailcow.py|555|
mailcow_integration/tests/tests_squire_mailcow.py|563|
mailcow_integration/tests/tests_squire_mailcow.py|573|
mailcow_integration/tests/tests_squire_mailcow.py|577|
mailcow_integration/tests/tests_squire_mailcow.py|586|
mailcow_integration/tests/tests_squire_mailcow.py|590|
mailcow_integration/tests/tests_squire_mailcow.py|592|
mailcow_integration/tests/tests_squire_mailcow.py|595|
mailcow_integration/tests/tests_squire_mailcow.py|605|
mailcow_integration/tests/tests_squire_mailcow.py|607|
mailcow_integration/tests/tests_squire_mailcow.py|610|
mailcow_integration/tests/tests_squire_mailcow.py|619|
mailcow_integration/tests/tests_squire_mailcow.py|631|
mailcow_integration/tests/tests_squire_mailcow.py|636|
mailcow_integration/tests/tests_squire_mailcow.py|640|
mailcow_integration/tests/tests_squire_mailcow.py|643|
mailcow_integration/tests/tests_view_status.py|11|
mailcow_integration/tests/tests_view_status.py|25 col 1|
mailcow_integration/tests/tests_view_status.py|26|
mailcow_integration/tests/tests_view_status.py|28|
mailcow_integration/tests/tests_view_status.py|33 col 1|
mailcow_integration/tests/tests_view_status.py|34|
mailcow_integration/tests/tests_view_status.py|46|
mailcow_integration/tests/tests_view_status.py|51|
mailcow_integration/tests/tests_view_status.py|53|
mailcow_integration/tests/tests_view_status.py|59|
mailcow_integration/tests/tests_view_status.py|64|
mailcow_integration/tests/tests_view_status.py|66|
mailcow_integration/tests/tests_view_status.py|70|
mailcow_integration/tests/tests_view_status.py|77|
mailcow_integration/tests/tests_view_status.py|79|
mailcow_integration/tests/tests_view_status.py|85|
mailcow_integration/tests/tests_view_status.py|88|
mailcow_integration/tests/tests_view_status.py|95|
mailcow_integration/tests/tests_view_status.py|98|
mailcow_integration/tests/tests_view_status.py|105|
mailcow_integration/tests/tests_view_status.py|107|
mailcow_integration/tests/tests_view_status.py|116|
mailcow_integration/tests/tests_view_status.py|123|
mailcow_integration/tests/tests_view_status.py|126|
mailcow_integration/tests/tests_view_status.py|133|
mailcow_integration/tests/tests_view_status.py|135|
mailcow_integration/tests/tests_view_status.py|144|
mailcow_integration/tests/tests_view_status.py|150 col 1|
mailcow_integration/tests/tests_view_status.py|151|
mailcow_integration/tests/tests_view_status.py|153|
mailcow_integration/tests/tests_view_status.py|155|
mailcow_integration/tests/tests_view_status.py|161|
mailcow_integration/tests/tests_view_status.py|163|
mailcow_integration/tests/tests_view_status.py|167|
mailcow_integration/tests/tests_view_status.py|171|
mailcow_integration/tests/tests_view_status.py|174|
mailcow_integration/tests/tests_view_status.py|180|
mailcow_integration/tests/tests_view_status.py|184|
mailcow_integration/tests/tests_view_status.py|188|
mailcow_integration/tests/tests_view_status.py|191|
mailcow_integration/tests/tests_view_status.py|198|
mailcow_integration/tests/tests_view_status.py|207|
mailcow_integration/tests/tests_view_status.py|214|
mailcow_integration/tests/tests_view_status.py|218|
mailcow_integration/tests/tests_view_status.py|223|
mailcow_integration/tests/tests_view_status.py|230|
mailcow_integration/tests/tests_view_status.py|243|
mailcow_integration/tests/tests_view_status.py|270|
mailcow_integration/tests/tests_view_status.py|279|
mailcow_integration/tests/tests_view_status.py|285|
mailcow_integration/tests/tests_view_status.py|287|
mailcow_integration/tests/tests_view_status.py|291|
mailcow_integration/tests/tests_view_status.py|299|
mailcow_integration/tests/tests_view_status.py|315|
mailcow_integration/tests/tests_view_status.py|326|
mailcow_integration/tests/tests_view_status.py|334|
mailcow_integration/tests/tests_view_status.py|337|
mailcow_integration/tests/tests_view_status.py|346|
mailcow_integration/tests/tests_view_status.py|356|
mailcow_integration/tests/tests_view_status.py|365|
mailcow_integration/tests/tests_view_status.py|374|
mailcow_integration/tests/tests_view_status.py|377|
mailcow_integration/tests/tests_view_status.py|386|
mailcow_integration/tests/tests_view_status.py|390|
mailcow_integration/tests/tests_view_status.py|395|
mailcow_integration/tests/tests_view_status.py|404|
mailcow_integration/tests/tests_view_status.py|414|
mailcow_integration/tests/tests_view_status.py|420|
mailcow_integration/tests/tests_view_status.py|429|
mailcow_integration/tests/tests_view_status.py|434|
mailcow_integration/tests/tests_view_status.py|445|
mailcow_integration/tests/tests_view_status.py|464|
mailcow_integration/tests/tests_view_status.py|479|
mailcow_integration/tests/tests_view_status.py|484|
mailcow_integration/tests/tests_view_status.py|490|
mailcow_integration/tests/tests_view_status.py|492|
mailcow_integration/tests/tests_view_status.py|496|
mailcow_integration/tests/tests_view_status.py|498|
mailcow_integration/tests/tests_view_status.py|502|
mailcow_integration/tests/tests_view_status.py|504|
mailcow_integration/tests/tests_view_status.py|507|
mailcow_integration/tests/tests_view_status.py|517|
mailcow_integration/tests/tests_view_status.py|533|
mailcow_integration/tests/tests_view_status.py|548|
mailcow_integration/tests/tests_view_status.py|563|
mailcow_integration/tests/tests_view_status.py|578|
mailcow_integration/tests/tests_view_status.py|596|
mailcow_integration/tests/tests_view_status.py|609|
membership_file/models.py|19 col 1|
membership_file/models.py|21|
membership_file/models.py|27|
membership_file/models.py|36 col 1|
membership_file/models.py|44|
membership_file/models.py|152|
membership_file/models.py|260|
membership_file/models.py|264|
membership_file/models.py|271|
membership_file/models.py|275|
membership_file/tests/tests_model.py|13 col 1|
membership_file/tests/tests_model.py|14|
membership_file/tests/tests_model.py|17|
membership_file/tests/tests_model.py|27|
membership_file/tests/tests_model.py|32|
membership_file/tests/tests_model.py|44|
membership_file/tests/tests_model.py|54|
membership_file/tests/tests_model.py|70|
membership_file/tests/tests_model.py|78|
membership_file/tests/tests_model.py|93|
membership_file/tests/tests_model.py|126|
squire/settings.py|243|
squire/settings.py|375|
squire/settings.py|385|
squire/settings_mailcow.py|30|
squire/settings_mailcow.py|33|
squire/settings_mailcow.py|40|
utils/tests/test_views.py|139|
utils/tests/test_views.py|141 col 1|
utils/tests/test_views.py|170 col 1|
utils/tests/test_views.py|171|
utils/tests/test_views.py|181|
utils/tests/test_views.py|185|
utils/tests/test_views.py|191|
utils/tests/test_views.py|197|
utils/viewcollectives.py|57|
utils/viewcollectives.py|61|
utils/viewcollectives.py|69|
utils/viewcollectives.py|75|
utils/viewcollectives.py|99 col 1|
utils/viewcollectives.py|101|
utils/viewcollectives.py|110|
utils/viewcollectives.py|154|
utils/viewcollectives.py|169|
utils/viewcollectives.py|205|
utils/viewcollectives.py|223|
utils/views.py|119|
fixtures = ["test_users.json", "test_activity_slots", "test_members.json", | ||
"activity_calendar/test_activity_organisers", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
fixtures = ["test_users.json", "test_activity_slots", "test_members.json", | |
"activity_calendar/test_activity_organisers", | |
fixtures = [ | |
"test_users.json", | |
"test_activity_slots", | |
"test_members.json", | |
"activity_calendar/test_activity_organisers", |
if error is None: | ||
messages.success(self.request, f"Orphan data deleted: {', '.join(unused_addresses)}.") | ||
else: | ||
messages.error(self.request, f"Error deleting data: {', '.join(unused_addresses)}.\nException: {error}") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
messages.error(self.request, f"Error deleting data: {', '.join(unused_addresses)}.\nException: {error}") | |
messages.error( | |
self.request, f"Error deleting data: {', '.join(unused_addresses)}.\nException: {error}" | |
) |
else: | ||
return HttpResponseBadRequest("Invalid alias_type passed") | ||
|
||
for (addr, e) in errors: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
for (addr, e) in errors: | |
for addr, e in errors: |
spam_aliases: int = 0 # ??? | ||
pushover_active: bool = False # Push notification settings | ||
percent_class: str = "success" # ??? E.g. 'success' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
spam_aliases: int = 0 # ??? | |
pushover_active: bool = False # Push notification settings | |
percent_class: str = "success" # ??? E.g. 'success' | |
spam_aliases: int = 0 # ??? | |
pushover_active: bool = False # Push notification settings | |
percent_class: str = "success" # ??? E.g. 'success' |
def __post_init__(self): | ||
index = self.username.find("@") | ||
if self.local_part is None: | ||
self.local_part = self.username[index + 1:] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
self.local_part = self.username[index + 1:] | |
self.local_part = self.username[index + 1 :] |
if not alias_data['internal']: | ||
label_elements.append('<span class="badge badge-primary badge-pill"><i class="fas fas fa-globe"></i> Public</span>') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
if not alias_data['internal']: | |
label_elements.append('<span class="badge badge-primary badge-pill"><i class="fas fas fa-globe"></i> Public</span>') | |
if not alias_data["internal"]: | |
label_elements.append( | |
'<span class="badge badge-primary badge-pill"><i class="fas fas fa-globe"></i> Public</span>' | |
) |
' '.join(label_elements), | ||
alias_data['description'], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
' '.join(label_elements), | |
alias_data['description'], | |
" ".join(label_elements), | |
alias_data["description"], |
|
||
section = mail | ||
name = alias_address_to_id(alias_address) | ||
default = alias_data['default_opt'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
default = alias_data['default_opt'] | |
default = alias_data["default_opt"] |
# help_text = '' | ||
|
||
field_kwargs = { | ||
'disabled': not alias_data['allow_opt_out'], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
'disabled': not alias_data['allow_opt_out'], | |
"disabled": not alias_data["allow_opt_out"], |
'disabled': not alias_data['allow_opt_out'], | ||
} | ||
|
||
register_preferences(settings.MEMBER_ALIASES) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[blackfmt] reported by reviewdog 🐶
register_preferences(settings.MEMBER_ALIASES) | |
register_preferences(settings.MEMBER_ALIASES) |
THIS BUILDS ON TOP OF THE CHANGES IN #282
Sending emails to all Squire members is complicated. While it is possible to export the membership file, copy all the email addresses, and paste them in the BCC, doing so is time-consuming and error-prone. Furthermore, all email aliases for committees need to be kept track of manually.
This feature aims for a few things: