diff --git a/app_common/controllers/main.py b/app_common/controllers/main.py index 01265129..fe720a53 100644 --- a/app_common/controllers/main.py +++ b/app_common/controllers/main.py @@ -3,6 +3,8 @@ import base64 from io import BytesIO import requests +from math import radians, cos, sin, asin, sqrt + from ..lib.user_agents import parse from odoo import api, http, SUPERUSER_ID, _ @@ -69,5 +71,25 @@ class AppController(http.Controller): elif 'cn.erpapp.o20sticks.App' in ua: # 安卓app utype = 'native_android' - _logger.warning('=========get ua %s,%s' % (utype, ua)) + # _logger.warning('=========get ua %s,%s' % (utype, ua)) return utype + + +def haversine(lon1, lat1, lon2, lat2): + # 计算地图上两点的距离 + # in:经度1,纬度1,经度2,纬度2 (十进制度数) + # out: 距离(米) + """ + Calculate the great circle distance between two points + on the earth (specified in decimal degrees) + """ + # 将十进制度数转化为弧度 + lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2]) + + # haversine公式 + dlon = lon2 - lon1 + dlat = lat2 - lat1 + a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2 + c = 2 * asin(sqrt(a)) + r = 6371 # 地球平均半径,单位为公里 + return c * r * 1000 diff --git a/app_common/models/base.py b/app_common/models/base.py index 8b927b2f..a621ed65 100644 --- a/app_common/models/base.py +++ b/app_common/models/base.py @@ -2,7 +2,9 @@ from odoo import models, fields, api, _ from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT -from ..controllers import main as imgc +import requests +import base64 +from io import BytesIO from datetime import date, datetime, time import pytz @@ -48,5 +50,11 @@ class Base(models.AbstractModel): @api.model def get_image_from_url(self, url): - res = imgc.AppController.get_image_from_url(url) - return res \ No newline at end of file + if not url: + return None + try: + response = requests.get(url) # 将这个图片保存在内存 + except Exception as e: + return None + # 返回这个图片的base64编码 + return base64.b64encode(BytesIO(response.content).read()) diff --git a/app_odoo_customize/models/ir_module_module.py b/app_odoo_customize/models/ir_module_module.py index e8028b2b..a4f8e391 100644 --- a/app_odoo_customize/models/ir_module_module.py +++ b/app_odoo_customize/models/ir_module_module.py @@ -46,7 +46,7 @@ class IrModule(models.Model): }) return action - @api.depends('name', 'latest_version', 'state') + @api.depends('name', 'state') def _get_latest_version(self): default_version = modules.adapt_version('1.0') for module in self: