add website_membership_associate
This commit is contained in:
parent
40d7cc8772
commit
31d53c428c
12 changed files with 837 additions and 0 deletions
54
website_membership_associate/README.md
Normal file
54
website_membership_associate/README.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# Website Membership Associate
|
||||
|
||||
Show associate members in the public `/members` directory of `website_membership`.
|
||||
|
||||
## Problem
|
||||
|
||||
The standard `website_membership` module builds the public members directory from
|
||||
`membership.membership_line` records. Partners that are linked as associate
|
||||
members (`res.partner.associate_member`) inherit the membership status of their
|
||||
host partner and do not own a membership line, so they are not shown in the
|
||||
public directory even when they are published.
|
||||
|
||||
## Solution
|
||||
|
||||
The module follows the same pattern as OCA's
|
||||
`website_membership_non_paid_member`:
|
||||
|
||||
- The `members()` controller injects the context key
|
||||
`include_associate_members=True` and delegates pagination, grouping and search
|
||||
to the standard `website_membership` controller.
|
||||
- `membership.membership_line._search()` detects that context key and widens the
|
||||
domain so that a host is returned when the active country or search filters
|
||||
match one of its published associates.
|
||||
- The inherited controller post-processes the rendered context to add the
|
||||
current page's associates under the same membership group (or under
|
||||
"Free Members") as their host, keep associates under their own country in the
|
||||
country sidebar, hide hosts that only appear because an associate matched the
|
||||
active country/search filter, and include published associate companies in the
|
||||
Google Map markers.
|
||||
|
||||
No fake membership lines are created and no core or OCA addon is modified.
|
||||
|
||||
## Supported features
|
||||
|
||||
- Pagination over hosts (`_references_per_page`) with associates rendered on the
|
||||
same page.
|
||||
- Grouping by membership product and "Free Members".
|
||||
- Country grouping and filtering (associates are counted under their own
|
||||
country).
|
||||
- Name / website description search.
|
||||
- Google Map markers (when the optional view is enabled).
|
||||
|
||||
## Configuration
|
||||
|
||||
No configuration is required. Install the module and publish the partners that
|
||||
must appear on the website.
|
||||
|
||||
## Development notes
|
||||
|
||||
- All business logic is in Python controllers/models; no QWeb logic is added.
|
||||
- No source code of `website_membership`, `membership` or other core/OCA addons
|
||||
is modified.
|
||||
- No fake membership lines are created for associate members.
|
||||
- Only one level of association (`associate_member`) is supported.
|
||||
Loading…
Add table
Add a link
Reference in a new issue