Last active
November 9, 2024 21:56
-
-
Save tejastank/3eecb59c8ff04b85829bd8d4b14b5b26 to your computer and use it in GitHub Desktop.
Fix ODOO License, due to ODOO support failed temporary quick fix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
database.expiration_date set manually to 2050 year for date, until migration task not complete