Răsfoiți Sursa

Merge branch 'dev' into lang_test

lang 4 ani în urmă
părinte
comite
37ff2b34d3

+ 7 - 7
Ansjer/config_local.py

@@ -15,14 +15,14 @@
 OAUTH_ACCESS_TOKEN_SECRET = 'local_a+jbgnw%@1%zy^=@dn62%'
 OAUTH_REFRESH_TOKEN_SECRET = 'local_r+jbgnw%@1%zy^=@dn62%'
 
-NGINX_RTMP_STAT = 'http://192.168.136.99:8077/stat'
-SERVER_DOMAIN = 'http://192.168.136.99:8077/'
-SERVER_DOMAIN_SSL = 'http://192.168.136.99:8077/'
-SERVER_HOST = '192.168.136.99'
-DOMAIN_HOST = '192.168.136.99'
+NGINX_RTMP_STAT = 'http://127.0.0.1:8077/stat'
+SERVER_DOMAIN = 'http://127.0.0.1:8077/'
+SERVER_DOMAIN_SSL = 'http://127.0.0.1:8077/'
+SERVER_HOST = '127.0.0.1'
+DOMAIN_HOST = '127.0.0.1'
 # SERVER_HOST = '127.0.0.1'
-# DOMAIN_HOST = '192.168.136.99'
-RTMP_PUSH_URL = 'rtmp://192.168.136.99:1935/hls'
+# DOMAIN_HOST = '127.0.0.1'
+RTMP_PUSH_URL = 'rtmp://127.0.0.1:1935/hls'
 PAYPAL_CRD = {
     "mode": "sandbox",  # sandbox or live
     "client_id": "AeuhR7FHisO-lOd2OwtzyDu7PSLMmDZoDLgmzuEQ12WCtTu_8Z1AzcD4gG5SnymnuvJs-n5KBB8H9Z_G",

+ 80 - 0
Ansjer/database_router.py

@@ -0,0 +1,80 @@
+# database_router.py
+from django.conf import settings
+
+DATABASE_MAPPING = settings.DATABASE_APPS_MAPPING
+
+
+class DatabaseAppsRouter(object):
+    """
+    A router to control all database operations on models for different
+    databases.
+DATABASE_ROUTERS DATABASE_ROUTERS
+    In case an app is not set in settings.DATABASE_APPS_MAPPING, the router
+    will fallback to the `default` database.
+
+    Settings example:
+
+    DATABASE_APPS_MAPPING = {'app1': 'db1', 'app2': 'db2'}
+    """
+
+    def db_for_read(self, model, **hints):
+        """"Point all read operations to the specific database."""
+        if model._meta.app_label in DATABASE_MAPPING:
+            return DATABASE_MAPPING[model._meta.app_label]
+        return None
+
+    def db_for_write(self, model, **hints):
+        """Point all write operations to the specific database."""
+        if model._meta.app_label in DATABASE_MAPPING:
+            return DATABASE_MAPPING[model._meta.app_label]
+        return None
+
+    def allow_relation(self, obj1, obj2, **hints):
+        """Allow any relation between apps that use the same database."""
+        db_obj1 = DATABASE_MAPPING.get(obj1._meta.app_label)
+        db_obj2 = DATABASE_MAPPING.get(obj2._meta.app_label)
+        if db_obj1 and db_obj2:
+            if db_obj1 == db_obj2:
+                return True
+            else:
+                return False
+        return None
+
+    def allow_syncdb(self, db, model):
+        """Make sure that apps only appear in the related database."""
+
+        if db in DATABASE_MAPPING.values():
+            return DATABASE_MAPPING.get(model._meta.app_label) == db
+        elif model._meta.app_label in DATABASE_MAPPING:
+            return False
+        return None
+
+    def allow_migrate(self, db, app_label, model=None, **hints):
+        """
+        Make sure the auth app only appears in the 'auth_db'
+        database.
+        """
+        if db in DATABASE_MAPPING.values():
+            return DATABASE_MAPPING.get(app_label) == db
+        elif app_label in DATABASE_MAPPING:
+            return False
+        return None
+
+    # for Django 1.4 - Django 1.6
+    def allow_syncdb(self, db, model):
+        """Make sure that apps only appear in the related database."""
+
+        if db in DATABASE_MAPPING.values():
+            return DATABASE_MAPPING.get(model._meta.app_label) == db
+        elif model._meta.app_label in DATABASE_MAPPING:
+            return False
+        return None
+
+    # Django 1.7 - Django 1.11
+    def allow_migrate(self, db, app_label, model_name=None, **hints):
+
+        if db in DATABASE_MAPPING.values():
+            return DATABASE_MAPPING.get(app_label) == db
+        elif app_label in DATABASE_MAPPING:
+            return False
+        return None

+ 37 - 20
Ansjer/local_settings.py

@@ -73,26 +73,43 @@ TEMPLATES = [
 WSGI_APPLICATION = 'Ansjer.local_wsgi.application'
 
 # 服务器类型
-DATABASE_DATA = 'AnsjerLocal'
-SERVER_HOST = '192.168.136.99'
-DATABASES_USER = 'ansjer'
-DATABASES_PASS = 'ansjer.x.x'
-
-# DATABASE_DATA = 'AnsjerLocal'
-# SERVER_HOST = 'localhost'
-# DATABASES_USER = 'root'
-# DATABASES_PASS = '123456'
-
-DATABASES = {'default': {
-    'ENGINE': 'django.db.backends.mysql',
-    'NAME': DATABASE_DATA,
-    'USER': DATABASES_USER,
-    'PASSWORD': DATABASES_PASS,
-    'HOST': SERVER_HOST,
-    'PORT': '3306',
-    'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-    'AUTOCOMMIT': True
-}}
+DATABASE_DATA = 'ansjerlocal'
+SERVER_HOST = '127.0.0.1'
+DATABASES_USER = 'root'
+DATABASES_PASS = '123456'
+
+DATABASE_DATA2 = 'asjl'
+SERVER_HOST2 = '127.0.0.1'
+DATABASES_USER2 = 'root'
+DATABASES_PASS2 = '123456'
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.mysql',
+        'NAME': DATABASE_DATA,
+        'USER': DATABASES_USER,
+        'PASSWORD': DATABASES_PASS,
+        'HOST': SERVER_HOST,
+        'PORT': '3306',
+        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+        'AUTOCOMMIT': True
+    },
+    'mysql02': {
+        'ENGINE': 'django.db.backends.mysql',
+        'NAME': DATABASE_DATA2,
+        'USER': DATABASES_USER2,
+        'PASSWORD': DATABASES_PASS2,
+        'HOST': SERVER_HOST2,
+        'PORT': '3306',
+        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+        'AUTOCOMMIT': True
+    }
+}
+DATABASE_ROUTERS = ['Ansjer.database_router.DatabaseAppsRouter']
+DATABASE_APPS_MAPPING = {
+    'db1': 'default',
+    'db2': 'mysql02',
+}
 
 AUTH_PASSWORD_VALIDATORS = [
     {

+ 33 - 16
Ansjer/test_settings.py

@@ -77,22 +77,39 @@ DATABASE_DATA = 'AnsjerTest'
 SERVER_HOST = 'database-2.clraczw4p0yj.us-west-1.rds.amazonaws.com'
 DATABASES_USER = 'azrds'
 DATABASES_PASS = 'azrds.x.x'
-# 服务器类型
-# DATABASE_DATA = 'AnsjerTest'
-# SERVER_HOST = 'localhost'
-# DATABASES_USER = 'ansjer'
-# DATABASES_PASS = '1234'
-
-DATABASES = {'default': {
-    'ENGINE': 'django.db.backends.mysql',
-    'NAME': DATABASE_DATA,
-    'USER': DATABASES_USER,
-    'PASSWORD': DATABASES_PASS,
-    'HOST': SERVER_HOST,
-    'PORT': '3306',
-    'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
-    'AUTOCOMMIT': True
-}}
+
+DATABASE_DATA2 = 'AnsjerPush'
+SERVER_HOST2 = 'azrdsinstance.clraczw4p0yj.us-west-1.rds.amazonaws.com'
+DATABASES_USER2 = 'azrds'
+DATABASES_PASS2 = 'azrds.x.x'
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.mysql',
+        'NAME': DATABASE_DATA,
+        'USER': DATABASES_USER,
+        'PASSWORD': DATABASES_PASS,
+        'HOST': SERVER_HOST,
+        'PORT': '3306',
+        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+        'AUTOCOMMIT': True
+    },
+    'mysql02': {
+        'ENGINE': 'django.db.backends.mysql',
+        'NAME': DATABASE_DATA2,
+        'USER': DATABASES_USER2,
+        'PASSWORD': DATABASES_PASS2,
+        'HOST': SERVER_HOST2,
+        'PORT': '3306',
+        'OPTIONS': {'charset': 'utf8mb4', 'use_unicode': True, 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
+        'AUTOCOMMIT': True
+    }
+}
+DATABASE_ROUTERS = ['Ansjer.database_router.DatabaseAppsRouter']
+DATABASE_APPS_MAPPING = {
+    'db1': 'default',
+    'db2': 'mysql02',
+}
 
 AUTH_PASSWORD_VALIDATORS = [
     {

+ 4 - 2
Controller/CloudStorage.py

@@ -830,6 +830,8 @@ class CloudStorageView(View):
         channel = request_dict.get('channel', None)
         commodity_code = request_dict.get('commodity_code', None)
         pay_type = int(request_dict.get('pay_type', None))
+        rank = request_dict.get('rank', None)
+
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1)
         if not dv_qs.exists():
             return response.json(12)
@@ -880,7 +882,7 @@ class CloudStorageView(View):
                                                desc=content, payType=pay_type, payTime=nowTime,
                                                price=price, currency=currency, addTime=nowTime, updTime=nowTime,
                                                endTime=(nowTime + int(day) * 3600 * 24), pay_url=approval_url,
-                                               commodity_code=commodity_code, commodity_type=commodity_type)
+                                               commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
                     return response.json(0, {"redirectUrl": approval_url, "orderID": orderID})
             return response.json(10, 'generate_order_false')
         else:
@@ -908,7 +910,7 @@ class CloudStorageView(View):
                                                desc=content, payType=pay_type, payTime=nowTime,
                                                price=price, currency=currency, addTime=nowTime, updTime=nowTime,
                                                endTime=(nowTime + int(day) * 3600 * 24), pay_url=redirectUrl,
-                                               commodity_code=commodity_code, commodity_type=commodity_type)
+                                               commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
                     return JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
                                                           'result': {"redirectUrl": redirectUrl, "orderID": orderID},
                                                           'error_code': 0})

+ 2 - 3
Controller/DetectController.py

@@ -172,8 +172,8 @@ class DetectControllerView(View):
         # 消息提醒功能新增
 
         # 如果传空上来,就默认为0
-        if tz=='':
-            tz=0
+        if tz == '':
+            tz = 0
         detect_group = request_dict.get('detect_group', None)
         interval = request_dict.get('interval', None)
         if not status:
@@ -206,7 +206,6 @@ class DetectControllerView(View):
         # else:
         #     DETECT_PUSH_DOMAIN = 'en.push.dvema.com'
 
-
         nowTime = int(time.time())
         if dvqs.exists():
             # 修改状态

+ 2 - 0
Controller/EquipmentManager.py

@@ -3,6 +3,8 @@ import time
 import traceback
 import threading
 import logging
+
+import requests
 import simplejson as json
 from django.utils import timezone
 from Model.models import Device_User, Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidPushModel

+ 0 - 5
Controller/EquipmentManagerV3.py

@@ -64,7 +64,6 @@ class EquipmentManagerV3(View):
 
         if all([UID, NickName, View_Account, Type, ChannelIndex]):
             tko = TokenObject(token)
-
             response.lang = tko.lang
             if tko.code == 0:
                 userID = tko.userID
@@ -182,10 +181,6 @@ class EquipmentManagerV3(View):
             res = CommonService.qs_to_dict(qs)
             if qs.exists():
                 uid = qs[0].UID
-                if uid == '98UXAA8BRPA35VAL111A':
-                    asy = threading.Thread(target=ModelService.update_log,
-                                           args=(CommonService.get_ip_address(request), userID, 'modifyV3', deviceData, id))
-                    asy.start()
                 nickname = qs[0].NickName
                 # 增加设备影子信息修改昵称 start
                 us_qs = UidSetModel.objects.filter(uid=uid)

+ 5 - 5
Controller/TestApi.py

@@ -679,11 +679,11 @@ class testView(View):
 
     def generate_token(self,request_dict,userID):
         #UserIdToken
-        # tko = TokenObject()
-        # res = tko.generate(
-        #     data={'userID': 158943604783713800138000, 'lang': 'cn', 'user': '13527261476', 'm_code': '123413243214'})
+        tko = TokenObject()
+        res = tko.generate(
+            data={'userID': 158943604783713800138000, 'lang': 'cn', 'user': '13527261476', 'm_code': '123413243214'})
 
         #uidToken
-        utko = UidTokenObject()
-        res = utko.generate(data={'uid':'86YC8Z192VB1VMKU111A','channel':1})
+        # utko = UidTokenObject()
+        # res = utko.generate(data={'uid':'86YC8Z192VB1VMKU111A','channel':1})
         return JsonResponse(status=200, data=res,safe=False)

+ 7 - 6
Model/models.py

@@ -22,7 +22,7 @@ class PermissionsManager(models.Manager):
 
 class RoleManager(models.Manager):
     """
-    The manager for the auth's Role model.
+    The manager for the auth's Role model..
     """
     use_in_migrations = True
 
@@ -280,7 +280,7 @@ class Access_Log(models.Model):
 
 class Equipment_Info(models.Model):
     id = models.AutoField(primary_key=True, verbose_name=u'自增标记ID')
-    devUid = models.CharField(default='', blank=True, max_length=32, verbose_name=u'设备ID')
+    devUid = models.CharField(default='', db_index=True, blank=True, max_length=32, verbose_name=u'设备ID')
     devNickName = models.CharField(blank=True, max_length=32, default='', verbose_name=u'设备昵称')
     Channel = models.IntegerField(default=1, blank=True, verbose_name=u'设备通道')
     eventType = models.IntegerField(default=0, blank=True, verbose_name=u'事件类型')
@@ -288,7 +288,7 @@ class Equipment_Info(models.Model):
     alarm = models.CharField(blank=True, max_length=256, verbose_name=u'报警信息')
     eventTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'设备报警时间')
     receiveTime = models.CharField(blank=True, default='', max_length=16, verbose_name=u'接收到报警时间')
-    userID = models.ForeignKey(Device_User, null=True, blank=True, to_field='userID', on_delete=models.CASCADE)
+    userID_id = models.CharField(default='',  db_index=True,blank=True, max_length=32, verbose_name=u'用户ID')
     is_st = models.SmallIntegerField(default=0, verbose_name='是否截图')  # 0 否,1 是图,2,视频
     message_id = models.CharField(max_length=32, default='', verbose_name='第三方推送服务器返回的id')
     push_type = models.SmallIntegerField(default=0, verbose_name='第三方推送服务器标志。0:APNS推送,1:谷歌推送,2:极光推送')
@@ -304,7 +304,7 @@ class Equipment_Info(models.Model):
         verbose_name = u'设备信息推送表'
         verbose_name_plural = verbose_name
         ordering = ('-id',)
-
+        app_label = "db2"
 
 class StatResModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自动ID')
@@ -639,7 +639,7 @@ class UID_Preview(models.Model):
 # 系统发送信息新到用户
 class SysMsgModel(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')
-    userID = models.ForeignKey(Device_User, to_field='userID', on_delete=models.CASCADE)  # 用户信息
+    userID_id = models.CharField(default='', db_index=True,blank=True, max_length=32, verbose_name=u'用户ID')
     msg = models.TextField(blank=True, default='', verbose_name=u'发送内容')
     status = models.SmallIntegerField(verbose_name='是否已读', default=0)  # 0:否,1:是
     addTime = models.IntegerField(verbose_name='添加时间', default=0)
@@ -652,6 +652,7 @@ class SysMsgModel(models.Model):
         verbose_name = '系统消息'
         verbose_name_plural = verbose_name
         ordering = ('-id',)
+        app_label = "db2"
 
 
 # 设备推送重构
@@ -668,7 +669,7 @@ class UidSetModel(models.Model):
     version = models.CharField(max_length=32, verbose_name='设备版本', default='')
     p2p_region = models.CharField(max_length=16, verbose_name='设备p2p区域', default='ALL')  # ALL CN EU US
     cloud_vod = models.SmallIntegerField(default=2, verbose_name='云存开关')  # 0,关闭,1开启,2,不支持
-    tz = models.CharField(default='', max_length=16, verbose_name='设备时区')  # +8
+    tz = models.CharField(default='', max_length=16, verbose_name ='设备时区')  # +8
     video_code = models.SmallIntegerField(default=0, verbose_name='编码类型')  # 0:264,1:265
     nickname = models.CharField(default='', max_length=64, verbose_name='设备昵称')
     ip = models.CharField(max_length=20, default='', verbose_name=u'设备ip')

+ 3 - 3
Service/ModelService.py

@@ -169,16 +169,16 @@ class ModelService:
             'uid_nick': nickname
         }
         try:
-            res = requests.post(url, data=data, timeout=10)
+            res = requests.post(url, data=data, timeout=5)
         except Exception as e:
             print(repr(e))
 
     @staticmethod
     def add_log(ip, userID, operation):
-        file_path = '/'.join((BASE_DIR, 'static/add_device.log'))
+        file_path = '/'.join((BASE_DIR, 'static/delete_device.log'))
         file = open(file_path, 'a+')
         file.write(ip + "; username:" + userID + "; time:" + time.strftime(
-            "%Y-%m-%d %H:%M:%S", time.localtime()) + "; " + operation)
+                "%Y-%m-%d %H:%M:%S", time.localtime()) + "; " + operation)
         file.write('\n')
         file.flush()
         file.close()