* spec with correctly scoped links
* move db check into own file - fix deprecation
* basic spec for member creation service
* use constants for all notifications
* send an OP notification after member has been created
* send an OP notification after member has been updated
* mails on group member added
Depending on whether the membership existed before or not, an updated or
a created notification is send. This is done asynchronously.
* move all mail sender background jobs into namespace
* wip
* wip
* correct handling group member notifications
* add setting enable/disable mail sending on member alterations
* use services in members controller
* move Notifiable to OpenProject
* remove member after save hooks
* cleanup/testing/linting
* render member mails in receiver locale
* remove add_member! method
* use mailer layout for all mailers
* Update app/services/groups/cleanup_inherited_roles_service.rb
Co-authored-by: Oliver Günther <mail@oliverguenther.de>
* use around callback to avoid prepending
* handle nil params
Co-authored-by: Oliver Günther <mail@oliverguenther.de>
* Add missing copyright note to AnonymousUser [ci skip]
* Addin PlaceholderUser model and its associations
* Ensure PlaceholderUser do not "leak out" uncontrolled
* Extract Associations for User and PlaceholderUser.
- remove obsolete #assigned_issues
- remove obsoete #:responsible_for_issues
- add specs and factory for PlaceholderUser
Adding specs to PlaceholderModel
* Migration: enforce uniqueness of lastname for Group and PlaceholderUser
* Remove obsolete callback `after_add` on groups association.
The association of principals and groups still had a callback
`after_add` that called a method `user_added` on the group.
That method was not defined anymore as it was removed in
commit d93ff52a27.
* Move validation for #groupname to the right spec.
* Cleanup placeholder and group specs
* Remove Setting `workpackage_group_assignment`
* Refactoring: Extract assignable scope from Project to Member
* Refactor: Add Member scope not_locked.
* deprecate hacky scope
* remove wp_group_assignment specific test case
Co-authored-by: ulferts <jens.ulferts@googlemail.com>
Updates the copyright to 2021 for all files that have a copyright. Files in our source code without the copyright header still do not receive one automatically. Additionally, backlisted files are also excluded.
Previously the copyright of chiliproject which references redmine stated a copyright of redmine up to and including 2017 which is not true for the code we have in here. Because of that I changed that to 2013
* remove outdated docs/code
* global memberships are just memberships
* rewire global membership creation/update/deletion
* delete no longer required code and patches
* move code to core
* move specs to core
* completely remove global roles in the form of a plugin
* adapt specs
* remove unused methods
* migrate existing data
* adapt membership representer to changed timestamps
* global memberships available via API
* implements created/update_at filters on memberships
* update member on roles being added/removed
* specify default value for created_at
* fix project permission check and validation on members
* adapt membership schema
* adapt usage of sort by on members widget
* support created/updated_on for api sort and filter
Replaces reform by a simple layer of Disposable +
ActiveModel::Validations for contracts.
Additionally removes the custom error handling where OpenProject added
symbols to keep the ability to identify faulty attributes while having
non standard format (deviates from `%{attribute} %{message}`).
Changes to active record now allow us to define the format of a message
on i18n level, e.g. `%{message}`. Therefore the patching can be removed.
Reform plans to remove support for ActiveModel::Validations in version
4.0 at the latest but even today, support for it is hapazard. As we do
not need the full stack of Reform anyway, we can solely rely on
Disposable.
Uses FactoryBot to keep and maintain specific records in a special transaction that does not get removed after each spec.
They automatically are created whenever first hitting them.
This makes an excellent time saver for items that are commonly used, such as an admin user account
* basic members collection response
* complete member index end point
* document versions#index
* remove user association from members
There is already a more generic principals association. Having both causes confusion and leads to duplicate loading of models
* linting
* remove disabled test
* add members#show api end point
* add project and principal to member representer
* replace member.user reference with principal
* use principal reference in project members association
* modernize roles api
* complete member representer rendering
* replace remnants of user association
* add member schema api endpoint
* have dedicated available projects end point for versions
* linting
* limit roles to assignable ones in schema
* rename member to membership in api
* remove remnants of user in member
* spec fixes
* use available_projects endpoint in versions board
* add eager loading to memberships#index
* members create form api endpoint
* ensure role exists for default assignment
* extract switch for users/groups to work_packages representer
* document membership create form
* add l10n expected in specs
* strengthen the usage of a delete base service
* use base class for set attributes service
* fix alias in service
* add create endpoint to members api
* document members create endpoint
* linting
* adapt to altered service signature
* use default endpoint for wp#get
* use CF infused representer
[ci skip]
This adds a hidden field for when no checkbox is selected,
however it adds the caveat that non-selected values are transmitted as
empty values, thus we have to filter them again in the backend.
Less db queries when
* removing a member from a group
* removing a group from a project
* removing a group
Mostly this is done by
* adding eager load statements where neessary
* pruning watchers only once
Please note, that the last is only possible via hack which consists of
passing a flag which prevents calling prune when we already know that
the pruning will take place later on anyway.