54 lines
2.2 KiB
Markdown
54 lines
2.2 KiB
Markdown
# 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.
|