Newer
Older
from datetime import datetime
from odoo import _, api, fields, models
from ..pywordpress_client.resources.authenticate import Authenticate
from ..pywordpress_client.resources.landing_page import (
LandingPage as LandingPageResource,
)
from .res_config_settings import ResConfigSettings
class LandingPage(models.Model):
_name = "landing.page"
_inherit = ["cm.coordinates.mixin"]
name = fields.Char(string="Name", translate=True)
company_id = fields.Many2one("res.company", string="Company")
wp_landing_page_id = fields.Integer(string="WP Landing Page")
selection=[("draft", _("Draft")), ("publish", _("Publish"))],
string="Allows new members", related="company_id.allow_new_members"
number_of_members = fields.Integer(string="Number of members")
external_website_link = fields.Char(string="External website link", translate=True)
twitter_link = fields.Char(
string="Twitter link", related="company_id.social_twitter"
)
telegram_link = fields.Char(
string="Telegram link", related="company_id.social_telegram"
)
instagram_link = fields.Char(
string="Instagram link", related="company_id.social_instagram"
)
# TODO: group_image_link Left for backward compatibility. To be removed
group_image_link = fields.Char(string="Group image link")
primary_image_file = fields.Image("Primary Image")
secondary_image_file = fields.Image("Secondary Image")
short_description = fields.Text(string="Short description", translate=True)
long_description = fields.Text(string="Long description", translate=True)
why_become_cooperator = fields.Html(string="Why become cooperator", translate=True)
become_cooperator_process = fields.Html(
string="Become cooperator process", translate=True
)
map_geolocation = fields.Char(string="Map geolocation")
map_place_id = fields.Many2one("cm.place", "Place reference")
street = fields.Char(string="Street")
postal_code = fields.Char(string="Postal code")
city = fields.Char(string="City")
community_active_services = fields.Many2many(
string="Community active services", related="company_id.ce_tag_ids"
community_type = fields.Selection(
selection=[("citizen", _("Citizen")), ("industrial", _("Industrial"))],
default="citizen",
required=True,
string="Community type",
)
community_secondary_type = fields.Selection(
selection=[("cooperative", _("Cooperative"))],
default="cooperative",
required=True,
string="Community secondary type",
)
community_status = fields.Selection(
selection=[("open", _("Open")), ("closed", _("Closed"))],
default="open",
required=True,
string="Community status",
)
wp_lastupdate_datetime = fields.Datetime(string="Last wordpress update date")
file_attachment = self.env["ir.attachment"].search(
[
("res_id", "=", self.id),
("res_model", "=", "landing.page"),
("res_field", "=", field_name),
]
)
return file_attachment
def _get_image_write_date(self, field_name):
file_write_date = ""
file_attachment = self._get_image_attachment(field_name)
if file_attachment:
file_write_date = str(file_attachment.write_date)
return file_write_date
def _get_image_extension(self, field_name):
file_write_date = ""
file_attachment = self._get_image_attachment(field_name)
extension = ""
if file_attachment:
base_url = self.env["ir.config_parameter"].get_param("web.base.url")
return (
base_url
+ "/web/image/landing.page/"
+ str(self.id)
+ "/"
+ field_name
+ "/"
+ str(self.id)
+ "-"
+ field_name
+ "."
+ self._get_image_extension(field_name)
primary_image_file = self._get_image_payload("primary_image_file")
primary_image_file_write_date = self._get_image_write_date(
primary_image_file_write_date = ""
secondary_image_file = self._get_image_payload("secondary_image_file")
secondary_image_file_write_date = self._get_image_write_date(
secondary_image_file_write_date = ""
if self.map_place_id:
map_reference = self.map_place_id.slug_id
else:
map_reference = ""
if self.why_become_cooperator == "<p><br></p>":
self.why_become_cooperator = ""
if self.become_cooperator_process == "<p><br></p>":
self.become_cooperator_process = ""
return {
"landing": {
"id": self.id,
"name": self.name,
"title": self.name,
"odoo_company_id": self.company_id.id,
"company_id": self.company_id.id,
"wp_landing_page_id": self.wp_landing_page_id,
"status": self.status,
"community_type": self.community_type,
"community_secondary_type": self.community_secondary_type,
"community_status": self.community_status,
"allow_new_members": self.allow_new_members,
"number_of_members": self.number_of_members,
"external_website_link": self.external_website_link or "",
"twitter_link": self.twitter_link or "",
"instagram_link": self.instagram_link or "",
"telegram_link": self.telegram_link or "",
"community_active_services": self.company_id.get_active_services(),
# TODO: group_image_link Left for backward compatibility. To be removed
"group_image_link": self.group_image_link or "",
"primary_image_file": primary_image_file,
"primary_image_file_write_date": primary_image_file_write_date,
"secondary_image_file_write_date": secondary_image_file_write_date,
"short_description": self.short_description or "",
"long_description": self.long_description or "",
"why_become_cooperator": self.why_become_cooperator,
"become_cooperator_process": self.become_cooperator_process,
"map_geolocation": self.map_geolocation or "",
"map_reference": map_reference,
"street": self.street or "",
"postal_code": self.postal_code or "",
}
def action_landing_page_status(self):
for record in self:
new_status = "draft" if record.status == "publish" else "publish"
def action_update_wp(self):
record._update_wordpress()
def _update_wordpress(self):
instance_company = self.env["res.company"].search(
[("hierarchy_level", "=", "instance")]
)
if instance_company:
baseurl = instance_company.wordpress_base_url
username = instance_company.wordpress_db_username
password = instance_company.wordpress_db_password
auth = Authenticate(baseurl, username, password).authenticate()
token = "Bearer %s" % auth["token"]
landing_page_data = self.to_dict()
LandingPageResource(token, baseurl, self.wp_landing_page_id).update(
landing_page_data
)
self.write({"wp_lastupdate_datetime": datetime.now()})