TIP: You can type at any time to perform a new search.
Marketing Card
marketing_card · odoo/odoo
- Repository
- odoo/odoo · module folder
- Module version
- 1.1
- Category
- Marketing/Marketing Card
- Folder size
- 2.5 MB
- License
- LGPL-3
- Application
- Yes
- Auto-installable
- No
- Website
- None
- Last tracking update
- 2026-08-15 22:44:20
- Authors
- Odoo S.A.
- Maintainers
- Odoo S.A.
- Committers
- Xavier Morel, Raphael Collet, Thibault Delavallée, Odoo Translation Bot, qsm-odoo, Julien Castiaux, Tiffany Chang (tic), Gorash, Pierre Paridans, William Braeckman, Mathieu Walravens, Renaud Thiry, Louis Wicket (wil), Gaetan Vanden Bergh (gavb), Maximilien (malb), Victor Piryns (pivi), Levi Siuzdak (sile), Dylan Kiss (dyki), Bruno Boi (boi), nihp-odoo, Shaan Thakkar (THSH), thle-odoo, guce, pish-odoo, Thomas Josse (THJO), Krzysztof Magusiak (krma), saurabh
Code Analysis ⓘ
Views touched (17)
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
card_campaign_crawler |
Share campaign Crawler View | ir.ui.view | qweb | New |
card_campaign_preview |
Share campaign | ir.ui.view | qweb | New |
card_campaign_view_form |
card.campaign.view.form | card.campaign | form | New |
card_campaign_view_kanban |
card.campaign.view.kanban | card.campaign | kanban | New |
card_campaign_view_search |
card.campaign.view.search | card.campaign | search | New |
card_campaign_view_tree |
card.campaign.view.list | card.campaign | list | New |
card_card_view_list |
card.card.view.list | card.card | list | New |
card_card_view_search |
card.card.view.search | card.card | search | New |
card_template_view_form |
card.template.view.form | card.template | form | New |
common_template |
common_template | ir.ui.view | qweb | New |
mailing_mailing_view_form_inherit_marketing_card |
mailing.mailing.view.form.inherit.marketing.card | mailing.mailing | form | Inherits mass_mailing.view_mail_mass_mailing_form |
robots |
robots | ir.ui.view | qweb | Inherits website.robots |
template_1 |
template_1 | ir.ui.view | qweb | Inherits common_template |
template_2 |
template_2 | ir.ui.view | qweb | Inherits common_template |
template_3 |
template_3 | ir.ui.view | qweb | Inherits common_template |
template_4 |
template_4 | ir.ui.view | qweb | Inherits common_template |
template_5 |
template_5 | ir.ui.view | qweb | Inherits common_template |
HTTP endpoints (3)
| Route(s) | Handler | Auth | Type | Methods | Flags |
|---|---|---|---|---|---|
/cards/<string:card_slug>/card.jpg, /cards/<int:card_id>/card.jpg |
MarketingCardController.card_campaign_image |
public | http | ALL | sudo website |
/cards/<string:card_slug>/preview, /cards/<int:card_id>/preview |
MarketingCardController.card_campaign_preview |
public | http | ALL | sudo website |
/cards/<string:card_slug>/redirect, /cards/<int:card_id>/redirect |
MarketingCardController.card_campaign_redirect |
public | http | ALL | sudo website |
Models touched (8)
New fields (44)
-
activeBooleandefault=True -
body_htmlHtmlreadonly=Falserelated='card_template_id.body'render_engine='qweb' -
card_click_countIntegercompute='_compute_card_stats' -
card_countIntegercompute='_compute_card_stats' -
card_idsOne2many → card.cardinverse_name='campaign_id' args: 'card.card' -
card_share_countIntegercompute='_compute_card_stats' -
card_template_idMany2one → card.templatedefault=_default_card_template_idrequired=Truestring='Design' args: 'card.template' -
content_backgroundImageargs: 'Background' -
content_buttonCharargs: 'Button' -
content_headerCharargs: 'Header' -
content_header_colorCharargs: 'Header Color' -
content_header_dynBooleanargs: 'Is Dynamic Header' -
content_header_pathCharargs: 'Header Path' -
content_image1_pathCharargs: 'Dynamic Image 1' -
content_image2_pathCharargs: 'Dynamic Image 2' -
content_sectionCharargs: 'Section' -
content_section_dynBooleanargs: 'Is Dynamic Section' -
content_section_pathCharargs: 'Section Path' -
content_sub_headerCharargs: 'Sub-Header' -
content_sub_header_colorCharargs: 'Sub Header Color' -
content_sub_header_dynBooleanargs: 'Is Dynamic Sub-Header' -
content_sub_header_pathCharargs: 'Sub-Header Path' -
content_sub_section1Charargs: 'Sub-Section 1' -
content_sub_section1_dynBooleanargs: 'Is Dynamic Sub-Section 1' -
content_sub_section1_pathCharargs: 'Sub-Section 1 Path' -
content_sub_section2Charargs: 'Sub-Section 2' -
content_sub_section2_dynBooleanargs: 'Is Dynamic Sub-Section 2' -
content_sub_section2_pathCharargs: 'Sub-Section 2 Path' -
image_previewImageattachment=Falsecompute='_compute_image_preview'compute_sudo=Falsereadonly=Truestore=True -
link_tracker_idMany2one → link.trackerondelete='restrict' args: 'link.tracker' -
mailing_countIntegercompute='_compute_mailing_count' -
mailing_idsOne2many → mailing.mailingargs: 'mailing.mailing', 'card_campaign_id' -
nameCharrequired=True -
post_suggestionTexthelp='Description below the card and default text when sharing on X' -
preview_record_refReferencerequired=Trueselection='_get_model_selection'string='Preview On' -
request_descriptionTextargs: 'Request Description' -
request_titleChardefault=<expr> args: 'Request' -
res_modelSelectioncompute='_compute_res_model'precompute=Truereadonly=Truerequired=Trueselection='_get_model_selection'store=Truestring='Model Name' -
reward_messageHtmlstring='Thank You Message' -
reward_target_urlCharstring='Reward Link' -
tag_idsMany2many → card.campaign.tagstring='Tags' args: 'card.campaign.tag' -
target_urlCharstring='Post Link' -
target_url_click_countIntegerrelated='link_tracker_id.count' -
user_idMany2one → res.usersdefault=<expr>domain="[('share', '=', False)]"string='Responsible' args: 'res.users'
-
action_preview(self) -
action_share(self) -
action_view_cards(self) -
action_view_cards_clicked(self) -
action_view_cards_shared(self) -
action_view_mailings(self) -
create(self, vals_list)@api.model_create_multi -
write(self, vals)
New fields (2)
-
colorIntegerdefault=_get_default_color -
nameCharrequired=True
No public methods.
New fields (7)
-
activeBooleandefault=True args: 'Active' -
campaign_idMany2one → card.campaignindex=Trueondelete='cascade'required=True args: 'card.campaign' -
imageImage -
requires_syncBooleandefault=Truehelp='Whether the image needs to be updated to match the campaign template.' -
res_idMany2oneReferencemodel_field='res_model'required=True args: 'Record ID' -
res_modelSelectionrelated='campaign_id.res_model' -
share_statusSelectionargs: [('shared', 'Shared'), ('visited', 'Visited')]
No public methods.
New fields (7)
-
bodyHtmlsanitize_attributes=Falsesanitize_tags=False -
default_backgroundImage -
nameCharrequired=Truetranslate=True -
primary_colorChardefault='#f9f9f9'required=True -
primary_text_colorChardefault='#000000'required=True -
secondary_colorChardefault='#000000'required=True -
secondary_text_colorChardefault='#ffffff'required=True
No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (0)
No new fields.
Public methods (0)No public methods.
New fields (3)
-
card_campaign_idMany2one → card.campaignindex='btree_not_null' args: 'card.campaign' -
card_requires_sync_countIntegercompute='_compute_card_requires_sync_count' -
mailing_model_idMany2onecompute='_compute_mailing_model_id'readonly=Falsestore=True
-
action_put_in_queue(self)Detect mismatches before scheduling. -
action_send_mail(self, res_ids=None) -
action_update_cards(self)Update the cards in batches, commiting after each batch.
New fields (0)
No new fields.
Public methods (0)No public methods.
Loading…