-
-
Save tejastank/3eecb59c8ff04b85829bd8d4b14b5b26 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*- | |
# Part of Odoo. See LICENSE file for full copyright and licensing details. | |
import datetime | |
import logging | |
import requests | |
import werkzeug.urls | |
from ast import literal_eval | |
from odoo import api, release, SUPERUSER_ID | |
from odoo.exceptions import UserError | |
from odoo.models import AbstractModel | |
from odoo.tools.translate import _ | |
from odoo.tools import config, misc, ustr | |
_logger = logging.getLogger(__name__) | |
class PublisherWarrantyContract(AbstractModel): | |
_name = "publisher_warranty.contract" | |
_description = 'Publisher Warranty Contract' | |
@api.model | |
def _get_message(self): | |
Users = self.env['res.users'] | |
IrParamSudo = self.env['ir.config_parameter'].sudo() | |
dbuuid = IrParamSudo.get_param('database.uuid') | |
db_create_date = IrParamSudo.get_param('database.create_date') | |
limit_date = datetime.datetime.now() | |
limit_date = limit_date - datetime.timedelta(15) | |
limit_date_str = limit_date.strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT) | |
nbr_users = Users.search_count([('active', '=', True)]) | |
nbr_active_users = Users.search_count([("login_date", ">=", limit_date_str), ('active', '=', True)]) | |
nbr_share_users = 0 | |
nbr_active_share_users = 0 | |
if "share" in Users._fields: | |
nbr_share_users = Users.search_count([("share", "=", True), ('active', '=', True)]) | |
nbr_active_share_users = Users.search_count([("share", "=", True), ("login_date", ">=", limit_date_str), ('active', '=', True)]) | |
user = self.env.user | |
domain = [('application', '=', True), ('state', 'in', ['installed', 'to upgrade', 'to remove'])] | |
apps = self.env['ir.module.module'].sudo().search_read(domain, ['name']) | |
enterprise_code = IrParamSudo.get_param('database.enterprise_code') | |
web_base_url = IrParamSudo.get_param('web.base.url') | |
msg = { | |
"dbuuid": dbuuid, | |
"nbr_users": nbr_users, | |
"nbr_active_users": nbr_active_users, | |
"nbr_share_users": nbr_share_users, | |
"nbr_active_share_users": nbr_active_share_users, | |
"dbname": self._cr.dbname, | |
"db_create_date": db_create_date, | |
"version": release.version, | |
"language": user.lang, | |
"web_base_url": web_base_url, | |
"apps": [app['name'] for app in apps], | |
"enterprise_code": enterprise_code, | |
} | |
if user.partner_id.company_id: | |
company_id = user.partner_id.company_id | |
msg.update(company_id.read(["name", "email", "phone"])[0]) | |
return msg | |
@api.model | |
def _get_sys_logs(self): | |
""" | |
Utility method to send a publisher warranty get logs messages. | |
""" | |
msg = self._get_message() | |
arguments = {'arg0': ustr(msg), "action": "update"} | |
#url = config.get("publisher_warranty_url") | |
#r = requests.post(url, data=arguments, timeout=30) | |
#r.raise_for_status() | |
return literal_eval('') | |
def update_notification(self, cron_mode=True): | |
# """ | |
# Send a message to Odoo's publisher warranty server to check the | |
# validity of the contracts, get notifications, etc... | |
# @param cron_mode: If true, catch all exceptions (appropriate for usage in a cron). | |
# @type cron_mode: boolean | |
# """ | |
# try: | |
# try: | |
# result = self._get_sys_logs() | |
# except Exception: | |
# if cron_mode: # we don't want to see any stack trace in cron | |
# return False | |
# _logger.debug("Exception while sending a get logs messages", exc_info=1) | |
# raise UserError(_("Error during communication with the publisher warranty server.")) | |
# # old behavior based on res.log; now on mail.message, that is not necessarily installed | |
# user = self.env['res.users'].sudo().browse(SUPERUSER_ID) | |
# poster = self.sudo().env.ref('mail.channel_all_employees') | |
# for message in result["messages"]: | |
# try: | |
# poster.message_post(body=message, subtype_xmlid='mail.mt_comment', partner_ids=[user.partner_id.id]) | |
# except Exception: | |
# pass | |
# if result.get('enterprise_info'): | |
# # Update expiration date | |
# set_param = self.env['ir.config_parameter'].sudo().set_param | |
## set_param('database.expiration_date', result['enterprise_info'].get('expiration_date')) | |
## set_param('database.expiration_reason', result['enterprise_info'].get('expiration_reason', 'trial')) | |
## set_param('database.enterprise_code', result['enterprise_info'].get('enterprise_code')) | |
## set_param('database.already_linked_subscription_url', result['enterprise_info'].get('database_already_linked_subscription_url')) | |
## set_param('database.already_linked_email', result['enterprise_info'].get('database_already_linked_email')) | |
## set_param('database.already_linked_send_mail_url', result['enterprise_info'].get('database_already_linked_send_mail_url')) | |
# except Exception: | |
# if cron_mode: | |
# return False # we don't want to see any stack trace in cron | |
# else: | |
# raise | |
return True |
Just curious. Does this still work for odoo17EE ?
I was looking for the module activiteit_enterprise_edition, but does thos do the same.
Also looking for an altanative EE odoo download,
Yes. works for 15, 16, 17.
Hi, in case there is no record 'database.enterprise_code' in the table 'ir.config_parameter' what should i do? and in order to execute this code i would have to create a module and uncomment the code from line 76 to 79 and comment line 80? Also uncomment from line 87 to 120 and comment line 121?
/etc/hosts
edit
127.0.0.1 odoo.com
127.0.0.1 ipa.odoo.com
127.0.0.1 *.odoo.com
in case you wated to bypass communication with odoo
@spocasangre code is king.
I'm a newbie. please, can you help me how to run this? @tejastank @spocasangre
Hi there, what about odoo 18?
I'm having errors with this one
File "/opt/odoo/odoo.enterprise.license.py", line 21, in <module>
class PublisherWarrantyContract(AbstractModel):
File "/opt/odoo/odoo/models.py", line 241, in __new__
assert module.startswith('odoo.addons.'), \
AssertionError: Invalid import of __main__.PublisherWarrantyContract, it should start with 'odoo.addons'.
Hi @tejastank
with version 17.0-20240522 I have the same error
File "/opt/odoo/odoo.enterprise.license.py", line 21, in
class PublisherWarrantyContract(AbstractModel):
File "/opt/odoo/odoo/models.py", line 241, in new
assert module.startswith('odoo.addons.'),
AssertionError: Invalid import of main.PublisherWarrantyContract, it should start with 'odoo.addons'.
For 18?
Remove PublisherWarrantyContract related all code or comment all of them or make their return what you expected to.
@tejastank will this work to use 18 enterprise edition, in a testing environment?
Hello, sorry for my bad English. Where can I download the modules unofficially "enterprise version". thank you so much
sorry for dispute you, can you please add steps to understand how to use it
database.expiration_date set manually to 2050 year for date, until migration task not complete