fix common

This commit is contained in:
ivan deng
2021-06-14 18:02:56 +08:00
parent 852204b326
commit 42d4deb469
5 changed files with 66 additions and 8 deletions

View File

@@ -4,4 +4,4 @@ from . import controllers
from . import models
from .hooks import pre_init_hook
from .hooks import post_init_hook
from .hooks import uninstall_hook
from .hooks import uninstall_hook

View File

@@ -33,7 +33,7 @@
{
'name': "Sunpop Odooapp Common Func",
'version': '13.21.01.27',
'version': '13.21.06.13',
'author': 'Sunpop.cn',
'category': 'Base',
'website': 'https://www.sunpop.cn',
@@ -42,10 +42,6 @@
'price': 0.00,
'currency': 'EUR',
'images': ['static/description/banner.png'],
'depends': [
'base',
'web',
],
'summary': '''
Core for common use sunpop apps.
基础核心必须没有要被依赖字段及视图等实现auto_install
@@ -64,6 +60,13 @@
4. 多公司支持
5. Odoo 13, 12, 企业版,社区版,多版本支持
''',
'depends': [
'base',
'web',
],
'external_dependencies': {
'python': ['pyyaml', 'ua-parser', 'user-agents'],
},
'data': [
# 'security/*.xml',
# 'security/ir.model.access.csv',

View File

@@ -1,2 +1,3 @@
# -*- coding: utf-8 -*-
from . import main

View File

@@ -3,10 +3,16 @@
import base64
from io import BytesIO
import requests
from user_agents import parse
from odoo import api, http, SUPERUSER_ID, _
from odoo import http, exceptions
from odoo.http import request
class ImageController(http.Controller):
import logging
_logger = logging.getLogger(__name__)
class AppController(http.Controller):
def get_image_from_url(self, url):
if not url:
@@ -17,3 +23,51 @@ class ImageController(http.Controller):
return None
# 返回这个图片的base64编码
return base64.b64encode(BytesIO(response.content).read())
@http.route('/web/ua/show', auth='public', methods=['GET'])
def app_ua_show(self):
# https://github.com/selwin/python-user-agents
ua_string = request.httprequest.headers.get('User-Agent')
user_agent = parse(ua_string)
ua_type = self.get_ua_type()
ustr = "Request UA: <br/> %s <br/>Parse UA: <br/>%s <br/>UA Type:<br/>%s <br/>" % (ua_string, str(user_agent), ua_type)
return request.make_response(ustr, [('Content-Type', 'text/html')])
def get_ua_type(self):
ua = request.httprequest.headers.get('User-Agent')
# 临时用 agent 处理,后续要前端中正确处理或者都从后台来
# 微信浏览器
# MicroMessenger: Mozilla/5.0 (Linux; Android 10; ELE-AL00 Build/HUAWEIELE-AL00; wv)
# AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120
# MQQBrowser/6.2 TBS/045525 Mobile Safari/537.36 MMWEBID/3135 MicroMessenger/8.0.2.1860(0x2800023B) Process/tools WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64
# 微信浏览器,开发工具,网页 iphone
# ,Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
# wechatdevtools/1.03.2011120 MicroMessenger/7.0.4 Language/zh_CN webview/16178807094901773
# webdebugger port/27772 token/b91f4a234b918f4e2a5d1a835a09c31e
# 微信小程序
# MicroMessenger: Mozilla/5.0 (Linux; Android 10; ELE-AL00 Build/HUAWEIELE-AL00; wv)
# AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.62 XWEB/2767 MMWEBSDK/20210302 Mobile Safari/537.36 MMWEBID/6689 MicroMessenger/8.0.2.1860(0x2800023B) Process/appbrand2 WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64
# MiniProgramEnv/android
# 微信浏览器开发工具小程序iphone
# Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1
# wechatdevtools/1.03.2011120 MicroMessenger/7.0.4 Language/zh_CN webview/
# 微信内iphone web
# Mozilla/5.0 (iPhone; CPU iPhone OS 14_4_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148
# MicroMessenger/8.0.3(0x1800032a) NetType/WIFI Language/zh_CN
# 安卓app,h5
# ELE-AL00(Android/10) (cn.erpapp.o20sticks.App/13.20.12.09) Weex/0.26.0 1080x2265
utype = 'web'
# todo: 引入现成 py lib处理企业微信
if 'MicroMessenger' in ua and 'webdebugger' not in ua and ('MiniProgramEnv' in ua or 'wechatdevtools' in ua):
# 微信小程序及开发者工具
utype = 'wxapp'
elif 'MicroMessenger' in ua:
# 微信浏览器
utype = 'wxweb'
elif 'cn.erpapp.o20sticks.App' in ua:
# 安卓app
utype = 'native_android'
_logger.warning('=========get ua %s,%s' % (utype, ua))
return utype

View File

@@ -48,5 +48,5 @@ class Base(models.AbstractModel):
@api.model
def get_image_from_url(self, url):
res = imgc.ImageController.get_image_from_url(url)
res = imgc.AppController.get_image_from_url(url)
return res