Compare commits

...

5 Commits
dev ... v2.22.2

Author SHA1 Message Date
Jiangjie.Bai
e934c8b903 fix: 修复ldap用户登录时用户组不设置 2022-05-30 16:03:49 +08:00
Jiangjie.Bai
4b9fb4c796 fix: 修改 public settings API公告字段类型为 dict 2022-05-27 17:23:49 +08:00
fit2bot
c30b024f9c fix: 修复获取 city 时可能的报错 (#8295)
Co-authored-by: ibuler <ibuler@qq.com>
2022-05-24 12:30:48 +08:00
feng626
9c14eb5165 fix: 修复用户更新自己密码 url 不准确问题 2022-05-24 11:15:38 +08:00
ibuler
624f32bc6c fix: 修复 Migrations 错误 2022-05-24 11:01:09 +08:00
7 changed files with 25 additions and 24 deletions

View File

@@ -14,7 +14,6 @@ def create_internal_platform(apps, schema_editor):
model.objects.using(db_alias).update_or_create(
name=name, defaults=defaults
)
migrations.RunPython(create_internal_platform)
class Migration(migrations.Migration):

View File

@@ -157,6 +157,8 @@ class LDAPUser(_LDAPUser):
def _populate_user_from_attributes(self):
for field, attr in self.settings.USER_ATTR_MAP.items():
if field in ['groups']:
continue
try:
value = self.attrs[attr][0]
value = value.strip()

View File

@@ -13,10 +13,6 @@ reader = None
def get_ip_city_by_geoip(ip):
if not ip or '.' not in ip or not isinstance(ip, str):
return _("Invalid ip")
if ':' in ip:
return 'IPv6'
global reader
if reader is None:
path = os.path.join(os.path.dirname(__file__), 'GeoLite2-City.mmdb')
@@ -32,7 +28,7 @@ def get_ip_city_by_geoip(ip):
try:
response = reader.city(ip)
except GeoIP2Error:
return {}
return _("Unknown")
city_names = response.city.names or {}
lang = settings.LANGUAGE_CODE[:2]

View File

@@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
#
import os
from django.utils.translation import ugettext as _
import ipdb
@@ -11,13 +10,13 @@ ipip_db = None
def get_ip_city_by_ipip(ip):
global ipip_db
if not ip or not isinstance(ip, str):
return _("Invalid ip")
if ':' in ip:
return 'IPv6'
if ipip_db is None:
ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb')
ipip_db = ipdb.City(ipip_db_path)
info = ipip_db.find_info(ip, 'CN')
try:
info = ipip_db.find_info(ip, 'CN')
except ValueError:
return None
if not info:
raise None
return {'city': info.city_name, 'country': info.country_name}

View File

@@ -74,13 +74,18 @@ def contains_ip(ip, ip_group):
def get_ip_city(ip):
info = get_ip_city_by_ipip(ip)
city = info.get('city', _("Unknown"))
country = info.get('country')
if not ip or not isinstance(ip, str):
return _("Invalid ip")
if ':' in ip:
return 'IPv6'
# 国内城市 并且 语言是中文就使用国内
is_zh = settings.LANGUAGE_CODE.startswith('zh')
if country == '中国' and is_zh:
return city
else:
return get_ip_city_by_geoip(ip)
info = get_ip_city_by_ipip(ip)
if info:
city = info.get('city', _("Unknown"))
country = info.get('country')
# 国内城市 并且 语言是中文就使用国内
is_zh = settings.LANGUAGE_CODE.startswith('zh')
if country == '中国' and is_zh:
return city
return get_ip_city_by_geoip(ip)

View File

@@ -40,6 +40,6 @@ class PrivateSettingSerializer(PublicSettingSerializer):
TERMINAL_KOKO_SSH_ENABLED = serializers.BooleanField()
ANNOUNCEMENT_ENABLED = serializers.BooleanField()
ANNOUNCEMENT = serializers.CharField()
ANNOUNCEMENT = serializers.DictField()
TICKETS_ENABLED = serializers.BooleanField()

View File

@@ -143,7 +143,7 @@ class PasswordExpirationReminderMsg(UserMessage):
subject = _('Password is about expire')
date_password_expired_local = timezone.localtime(user.date_password_expired)
update_password_url = urljoin(settings.SITE_URL, '/ui/#/users/profile/?activeTab=PasswordUpdate')
update_password_url = urljoin(settings.SITE_URL, '/ui/#/profile/setting/?activeTab=PasswordUpdate')
date_password_expired = date_password_expired_local.strftime('%Y-%m-%d %H:%M:%S')
context = {
'name': user.name,