@@ -0,0 +1,53 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('account', '0047_auto_20200601_0242'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='lensmanincomeexpensesinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='lensmaninfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='lensmanloginloginfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + migrations.AlterField(  | 
            |
| 29 | 
                + model_name='tourguideinfo',  | 
            |
| 30 | 
                + name='status',  | 
            |
| 31 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 32 | 
                + ),  | 
            |
| 33 | 
                + migrations.AlterField(  | 
            |
| 34 | 
                + model_name='userincomeexpensesinfo',  | 
            |
| 35 | 
                + name='status',  | 
            |
| 36 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 37 | 
                + ),  | 
            |
| 38 | 
                + migrations.AlterField(  | 
            |
| 39 | 
                + model_name='userinfo',  | 
            |
| 40 | 
                + name='status',  | 
            |
| 41 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 42 | 
                + ),  | 
            |
| 43 | 
                + migrations.AlterField(  | 
            |
| 44 | 
                + model_name='userloginloginfo',  | 
            |
| 45 | 
                + name='status',  | 
            |
| 46 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 47 | 
                + ),  | 
            |
| 48 | 
                + migrations.AlterField(  | 
            |
| 49 | 
                + model_name='wechatinfo',  | 
            |
| 50 | 
                + name='status',  | 
            |
| 51 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 52 | 
                + ),  | 
            |
| 53 | 
                + ]  | 
            
                @@ -8,12 +8,14 @@ from django_logit import logit  | 
            ||
| 8 | 8 | 
                from django_query import get_query_value  | 
            
| 9 | 9 | 
                from django_response import response  | 
            
| 10 | 10 | 
                from paginator import pagination  | 
            
| 11 | 
                +from pywe_miniapp import get_shareinfo  | 
            |
| 12 | 
                +from pywe_storage import RedisStorage  | 
            |
| 11 | 13 | 
                from TimeConvert import TimeConvert as tc  | 
            
| 12 | 14 | 
                 | 
            
| 13 | 15 | 
                from account.models import UserInfo  | 
            
| 14 | 16 | 
                from coupon.models import UserCouponInfo  | 
            
| 15 | 
                -from member.models import (GoodsInfo, GoodsOrderInfo, MemberActivityInfo, MemberActivitySigninInfo,  | 
            |
| 16 | 
                - MemberActivitySignupInfo, RightInfo)  | 
            |
| 17 | 
                +from member.models import (GoodsInfo, GoodsOrderInfo, MemberActivityGroupShareInfo, MemberActivityInfo,  | 
            |
| 18 | 
                + MemberActivitySigninInfo, MemberActivitySignupInfo, RightInfo)  | 
            |
| 17 | 19 | 
                from utils.error.errno_utils import (MemberActivityStatusCode, MemberCouponStatusCode, MemberGoodStatusCode,  | 
            
| 18 | 20 | 
                MemberRightStatusCode, UserStatusCode)  | 
            
| 19 | 21 | 
                from utils.redis.connect import r  | 
            
                @@ -21,6 +23,9 @@ from utils.redis.rkeys import MEMBER_SEND_COUPON_LIST, MEMBER_UPGRADE_INFO  | 
            ||
| 21 | 23 | 
                from utils.redis.rshot import get_member_shot_data  | 
            
| 22 | 24 | 
                 | 
            
| 23 | 25 | 
                 | 
            
| 26 | 
                +WECHAT = settings.WECHAT  | 
            |
| 27 | 
                +  | 
            |
| 28 | 
                +  | 
            |
| 24 | 29 | 
                @logit  | 
            
| 25 | 30 | 
                def member(request):  | 
            
| 26 | 31 | 
                     brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
               | 
            
                @@ -44,7 +49,7 @@ def member(request):  | 
            ||
| 44 | 49 | 
                 | 
            
| 45 | 50 | 
                upgrade_info, _ = r.getdel(MEMBER_UPGRADE_INFO % (brand_id, user_id))  | 
            
| 46 | 51 | 
                 | 
            
| 47 | 
                -    return response(200, data={
               | 
            |
| 52 | 
                +    return response(data={
               | 
            |
| 48 | 53 | 
                'nickname': user.final_nickname,  | 
            
| 49 | 54 | 
                'avatar': user.avatar,  | 
            
| 50 | 55 | 
                'integral': user.integral,  | 
            
                @@ -74,7 +79,7 @@ def rights(request):  | 
            ||
| 74 | 79 | 
                     rights = RightInfo.objects.filter(status=True).order_by('position')
               | 
            
| 75 | 80 | 
                rights = [right.data for right in rights]  | 
            
| 76 | 81 | 
                 | 
            
| 77 | 
                -    return response(200, data={
               | 
            |
| 82 | 
                +    return response(data={
               | 
            |
| 78 | 83 | 
                'nickname': user.final_nickname,  | 
            
| 79 | 84 | 
                'avatar': user.avatar,  | 
            
| 80 | 85 | 
                'integral': user.integral,  | 
            
                @@ -97,7 +102,7 @@ def right_detail(request):  | 
            ||
| 97 | 102 | 
                except RightInfo.DoesNotExist:  | 
            
| 98 | 103 | 
                return response(MemberRightStatusCode.RIGHT_NOT_FOUND)  | 
            
| 99 | 104 | 
                 | 
            
| 100 | 
                -    return response(200, data={
               | 
            |
| 105 | 
                +    return response(data={
               | 
            |
| 101 | 106 | 
                'right': right.data,  | 
            
| 102 | 107 | 
                })  | 
            
| 103 | 108 | 
                 | 
            
                @@ -121,7 +126,7 @@ def goods(request):  | 
            ||
| 121 | 126 | 
                else:  | 
            
| 122 | 127 | 
                goods.append(good.data(user_id))  | 
            
| 123 | 128 | 
                 | 
            
| 124 | 
                -    return response(200, data={
               | 
            |
| 129 | 
                +    return response(data={
               | 
            |
| 125 | 130 | 
                'nickname': user.final_nickname,  | 
            
| 126 | 131 | 
                'avatar': user.avatar,  | 
            
| 127 | 132 | 
                'integral': user.integral,  | 
            
                @@ -151,7 +156,7 @@ def good_detail(request):  | 
            ||
| 151 | 156 | 
                except GoodsInfo.DoesNotExist:  | 
            
| 152 | 157 | 
                return response(MemberGoodStatusCode.GOOD_NOT_FOUND)  | 
            
| 153 | 158 | 
                 | 
            
| 154 | 
                -    return response(200, data={
               | 
            |
| 159 | 
                +    return response(data={
               | 
            |
| 155 | 160 | 
                'nickname': user.final_nickname,  | 
            
| 156 | 161 | 
                'avatar': user.avatar,  | 
            
| 157 | 162 | 
                'integral': user.integral,  | 
            
                @@ -233,7 +238,7 @@ def good_exchange(request):  | 
            ||
| 233 | 238 | 
                 | 
            
| 234 | 239 | 
                goods.append(good.data(user_id))  | 
            
| 235 | 240 | 
                 | 
            
| 236 | 
                -    return response(200, data={
               | 
            |
| 241 | 
                +    return response(data={
               | 
            |
| 237 | 242 | 
                'nickname': user.final_nickname,  | 
            
| 238 | 243 | 
                'avatar': user.avatar,  | 
            
| 239 | 244 | 
                'integral': user.integral,  | 
            
                @@ -256,7 +261,7 @@ def coupons(request):  | 
            ||
| 256 | 261 | 
                coupons, left = pagination(coupons, page, num)  | 
            
| 257 | 262 | 
                coupons = [coupon.data for coupon in coupons if not coupon.has_used]  | 
            
| 258 | 263 | 
                 | 
            
| 259 | 
                -    return response(200, data={
               | 
            |
| 264 | 
                +    return response(data={
               | 
            |
| 260 | 265 | 
                'coupons': coupons,  | 
            
| 261 | 266 | 
                'left': left,  | 
            
| 262 | 267 | 
                })  | 
            
                @@ -272,7 +277,7 @@ def user_coupon_detail(request):  | 
            ||
| 272 | 277 | 
                except UserCouponInfo.DoesNotExist:  | 
            
| 273 | 278 | 
                return response(MemberCouponStatusCode.USER_COUPON_NOT_FOUND)  | 
            
| 274 | 279 | 
                 | 
            
| 275 | 
                - return response(200, data=coupon.data)  | 
            |
| 280 | 
                + return response(data=coupon.data)  | 
            |
| 276 | 281 | 
                 | 
            
| 277 | 282 | 
                 | 
            
| 278 | 283 | 
                @logit  | 
            
                @@ -301,14 +306,14 @@ def user_coupon_use(request):  | 
            ||
| 301 | 306 | 
                coupon.used_at = tc.utc_datetime()  | 
            
| 302 | 307 | 
                coupon.save()  | 
            
| 303 | 308 | 
                 | 
            
| 304 | 
                - return response(200, data=coupon.data)  | 
            |
| 309 | 
                + return response(data=coupon.data)  | 
            |
| 305 | 310 | 
                 | 
            
| 306 | 311 | 
                 | 
            
| 307 | 312 | 
                @logit  | 
            
| 308 | 313 | 
                def integrals(request):  | 
            
| 309 | 314 | 
                     brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
               | 
            
| 310 | 315 | 
                 | 
            
| 311 | 
                -    return response(200, data={
               | 
            |
| 316 | 
                +    return response(data={
               | 
            |
| 312 | 317 | 
                'shots_types': get_member_shot_data(),  | 
            
| 313 | 318 | 
                'enable_photo_upvote_integral': True,  | 
            
| 314 | 319 | 
                'mp_url': 'https://mp.weixin.qq.com/s/2K6PAnf3KrxtrP40-DBuww',  | 
            
                @@ -339,7 +344,7 @@ def activity_list(request):  | 
            ||
| 339 | 344 | 
                else:  | 
            
| 340 | 345 | 
                activitys.append(act.data(user_id))  | 
            
| 341 | 346 | 
                 | 
            
| 342 | 
                -    return response(200, data={
               | 
            |
| 347 | 
                +    return response(data={
               | 
            |
| 343 | 348 | 
                'banners': banners,  | 
            
| 344 | 349 | 
                'activitys': activitys,  | 
            
| 345 | 350 | 
                })  | 
            
                @@ -356,7 +361,7 @@ def activity_detail(request):  | 
            ||
| 356 | 361 | 
                except MemberActivityInfo.DoesNotExist:  | 
            
| 357 | 362 | 
                return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            
| 358 | 363 | 
                 | 
            
| 359 | 
                -    return response(200, data={
               | 
            |
| 364 | 
                +    return response(data={
               | 
            |
| 360 | 365 | 
                'activity': act.details(user_id),  | 
            
| 361 | 366 | 
                })  | 
            
| 362 | 367 | 
                 | 
            
                @@ -383,7 +388,7 @@ def activity_signup(request):  | 
            ||
| 383 | 388 | 
                # TODO: 立即推送模版消息(报名成功,时间,地点)  | 
            
| 384 | 389 | 
                # TODO: 延迟(活动当天)推送模版消息(时间,地点)  | 
            
| 385 | 390 | 
                 | 
            
| 386 | 
                -    return response(200, data={
               | 
            |
| 391 | 
                +    return response(data={
               | 
            |
| 387 | 392 | 
                'activity': act.data(user_id),  | 
            
| 388 | 393 | 
                })  | 
            
| 389 | 394 | 
                 | 
            
                @@ -415,6 +420,63 @@ def activity_signin(request):  | 
            ||
| 415 | 420 | 
                 | 
            
| 416 | 421 | 
                # TODO: 立即推送模版消息(感谢您参加活动,获得的积分)  | 
            
| 417 | 422 | 
                 | 
            
| 418 | 
                -    return response(200, data={
               | 
            |
| 423 | 
                +    return response(data={
               | 
            |
| 419 | 424 | 
                'activity': act.data(user_id),  | 
            
| 420 | 425 | 
                })  | 
            
| 426 | 
                +  | 
            |
| 427 | 
                +  | 
            |
| 428 | 
                +def get_group_share_info_integral(share_user_id, open_gid, group_share_integral):  | 
            |
| 429 | 
                + # 校验该分享人是否已领取该群积分  | 
            |
| 430 | 
                + has_integral = MemberActivityGroupShareInfo.objects.filter(share_user_id=share_user_id, open_gid=open_gid, is_integral=True).exists()  | 
            |
| 431 | 
                + if has_integral:  | 
            |
| 432 | 
                + return False, 0  | 
            |
| 433 | 
                + # TODO: 其他限制条件  | 
            |
| 434 | 
                + return True, group_share_integral  | 
            |
| 435 | 
                +  | 
            |
| 436 | 
                +  | 
            |
| 437 | 
                +@logit  | 
            |
| 438 | 
                +def activity_group_share(request):  | 
            |
| 439 | 
                +    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
               | 
            |
| 440 | 
                +    share_user_id = request.POST.get('share_user_id', '')
               | 
            |
| 441 | 
                +    click_user_id = request.POST.get('click_user_id', '')
               | 
            |
| 442 | 
                +    activity_id = request.POST.get('activity_id')
               | 
            |
| 443 | 
                +  | 
            |
| 444 | 
                +    wxcfg = WECHAT.get('MINIAPP', {})
               | 
            |
| 445 | 
                +  | 
            |
| 446 | 
                +    appid = wxcfg.get('appID')
               | 
            |
| 447 | 
                +    secret = wxcfg.get('appsecret')
               | 
            |
| 448 | 
                +  | 
            |
| 449 | 
                +    iv = request.POST.get('iv', '')
               | 
            |
| 450 | 
                +    encryptedData = request.POST.get('encryptedData', '')
               | 
            |
| 451 | 
                +  | 
            |
| 452 | 
                +    # {
               | 
            |
| 453 | 
                + # "openGId": "OPENGID"  | 
            |
| 454 | 
                + # }  | 
            |
| 455 | 
                + shareinfo = get_shareinfo(appid=appid, secret=secret, unid=click_user_id, session_key=None, encryptedData=encryptedData, iv=iv, storage=RedisStorage(r))  | 
            |
| 456 | 
                +  | 
            |
| 457 | 
                +    open_gid = shareinfo.get('openGId')
               | 
            |
| 458 | 
                +  | 
            |
| 459 | 
                + if not open_gid:  | 
            |
| 460 | 
                + return response()  | 
            |
| 461 | 
                +  | 
            |
| 462 | 
                + try:  | 
            |
| 463 | 
                + act = MemberActivityInfo.objects.select_for_update().get(activity_id=activity_id, status=True)  | 
            |
| 464 | 
                + except MemberActivityInfo.DoesNotExist:  | 
            |
| 465 | 
                + return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            |
| 466 | 
                +  | 
            |
| 467 | 
                + # 判断是否给积分 & 给多少积分  | 
            |
| 468 | 
                + is_integral, integral = get_group_share_info_integral(share_user_id, open_gid, act.group_share_integral)  | 
            |
| 469 | 
                +  | 
            |
| 470 | 
                +    MemberActivityGroupShareInfo.objects.create(**{
               | 
            |
| 471 | 
                + 'brand_id': act.brand_id,  | 
            |
| 472 | 
                + 'brand_name': act.brand_name,  | 
            |
| 473 | 
                + 'share_user_id': share_user_id,  | 
            |
| 474 | 
                + 'click_user_id': click_user_id,  | 
            |
| 475 | 
                + 'open_gid': open_gid,  | 
            |
| 476 | 
                + 'activity_id': activity_id,  | 
            |
| 477 | 
                + 'title': act.title,  | 
            |
| 478 | 
                + 'is_integral': is_integral,  | 
            |
| 479 | 
                + 'integral': integral,  | 
            |
| 480 | 
                + })  | 
            |
| 481 | 
                +  | 
            |
| 482 | 
                +    return response(data={})
               | 
            
                @@ -363,6 +363,8 @@ urlpatterns += [  | 
            ||
| 363 | 363 | 
                url(r'^member/activity/signup$', member_views.activity_signup, name='member_activity_signup'),  | 
            
| 364 | 364 | 
                url(r'^member/activity/signin$', member_views.activity_signin, name='member_activity_signin'),  | 
            
| 365 | 365 | 
                 | 
            
| 366 | 
                + url(r'^member/activity/group_share$', member_views.activity_group_share, name='member_activity_group_share'),  | 
            |
| 367 | 
                +  | 
            |
| 366 | 368 | 
                url(r'^rights$', member_views.rights, name='rights'),  | 
            
| 367 | 369 | 
                url(r'^right/detail$', member_views.right_detail, name='right_detail'),  | 
            
| 368 | 370 | 
                url(r'^goods$', member_views.goods, name='goods'),  | 
            
                @@ -0,0 +1,28 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('coupon', '0015_auto_20200727_1720'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='couponinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='usercouponinfo',  | 
            |
| 20 | 
                + name='coupon_from',  | 
            |
| 21 | 
                + field=models.CharField(blank=True, db_index=True, default='MEMBER_BENEFITS', help_text='劵来源', max_length=32, null=True, verbose_name='coupon_from'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='usercouponinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + ]  | 
            
                @@ -0,0 +1,43 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('group', '0045_auto_20180930_1159'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='groupinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='groupphotoinfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='groupphotoorderinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + migrations.AlterField(  | 
            |
| 29 | 
                + model_name='groupuserinfo',  | 
            |
| 30 | 
                + name='status',  | 
            |
| 31 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 32 | 
                + ),  | 
            |
| 33 | 
                + migrations.AlterField(  | 
            |
| 34 | 
                + model_name='photocommentinfo',  | 
            |
| 35 | 
                + name='status',  | 
            |
| 36 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 37 | 
                + ),  | 
            |
| 38 | 
                + migrations.AlterField(  | 
            |
| 39 | 
                + model_name='photothumbupinfo',  | 
            |
| 40 | 
                + name='status',  | 
            |
| 41 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 42 | 
                + ),  | 
            |
| 43 | 
                + ]  | 
            
                @@ -0,0 +1,18 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('guideline', '0003_auto_20190826_1537'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='screenadmininfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + ]  | 
            
                @@ -0,0 +1,23 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('integral', '0019_saleclerksubmitloginfo_is_upload_qiniu'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='saleclerkintegralincomeexpensesinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='saleclerksubmitloginfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + ]  | 
            
                @@ -0,0 +1,33 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('logs', '0011_auto_20200309_1735'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='mchinfodecryptloginfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='mchinfoencryptloginfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='mchloginfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + migrations.AlterField(  | 
            |
| 29 | 
                + model_name='mchsearchmodelandcameraloginfo',  | 
            |
| 30 | 
                + name='status',  | 
            |
| 31 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 32 | 
                + ),  | 
            |
| 33 | 
                + ]  | 
            
                @@ -0,0 +1,18 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('marketcode', '0003_auto_20200114_0220'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='marketcodeinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + ]  | 
            
                @@ -0,0 +1,98 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('mch', '0057_auto_20200602_1403'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='activityinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='administratorinfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='brandinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + migrations.AlterField(  | 
            |
| 29 | 
                + model_name='brandmodeldistributorpriceinfo',  | 
            |
| 30 | 
                + name='status',  | 
            |
| 31 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 32 | 
                + ),  | 
            |
| 33 | 
                + migrations.AlterField(  | 
            |
| 34 | 
                + model_name='cameramodelinfo',  | 
            |
| 35 | 
                + name='status',  | 
            |
| 36 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 37 | 
                + ),  | 
            |
| 38 | 
                + migrations.AlterField(  | 
            |
| 39 | 
                + model_name='consumeinfosubmitloginfo',  | 
            |
| 40 | 
                + name='status',  | 
            |
| 41 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 42 | 
                + ),  | 
            |
| 43 | 
                + migrations.AlterField(  | 
            |
| 44 | 
                + model_name='distributorinfo',  | 
            |
| 45 | 
                + name='status',  | 
            |
| 46 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 47 | 
                + ),  | 
            |
| 48 | 
                + migrations.AlterField(  | 
            |
| 49 | 
                + model_name='latestappinfo',  | 
            |
| 50 | 
                + name='status',  | 
            |
| 51 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 52 | 
                + ),  | 
            |
| 53 | 
                + migrations.AlterField(  | 
            |
| 54 | 
                + model_name='latestappscreeninfo',  | 
            |
| 55 | 
                + name='status',  | 
            |
| 56 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 57 | 
                + ),  | 
            |
| 58 | 
                + migrations.AlterField(  | 
            |
| 59 | 
                + model_name='maintenancemaninfo',  | 
            |
| 60 | 
                + name='sex',  | 
            |
| 61 | 
                + field=models.IntegerField(choices=[(0, '未知'), (1, '男'), (2, '女')], default=0, help_text='Sex', verbose_name='sex'),  | 
            |
| 62 | 
                + ),  | 
            |
| 63 | 
                + migrations.AlterField(  | 
            |
| 64 | 
                + model_name='maintenancemaninfo',  | 
            |
| 65 | 
                + name='status',  | 
            |
| 66 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 67 | 
                + ),  | 
            |
| 68 | 
                + migrations.AlterField(  | 
            |
| 69 | 
                + model_name='modelcamerabodyinfo',  | 
            |
| 70 | 
                + name='status',  | 
            |
| 71 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 72 | 
                + ),  | 
            |
| 73 | 
                + migrations.AlterField(  | 
            |
| 74 | 
                + model_name='modelimageinfo',  | 
            |
| 75 | 
                + name='status',  | 
            |
| 76 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 77 | 
                + ),  | 
            |
| 78 | 
                + migrations.AlterField(  | 
            |
| 79 | 
                + model_name='modelinfo',  | 
            |
| 80 | 
                + name='status',  | 
            |
| 81 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 82 | 
                + ),  | 
            |
| 83 | 
                + migrations.AlterField(  | 
            |
| 84 | 
                + model_name='operatorinfo',  | 
            |
| 85 | 
                + name='status',  | 
            |
| 86 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 87 | 
                + ),  | 
            |
| 88 | 
                + migrations.AlterField(  | 
            |
| 89 | 
                + model_name='saleclerkinfo',  | 
            |
| 90 | 
                + name='sex',  | 
            |
| 91 | 
                + field=models.IntegerField(choices=[(0, '未知'), (1, '男'), (2, '女')], default=0, help_text='Sex', verbose_name='sex'),  | 
            |
| 92 | 
                + ),  | 
            |
| 93 | 
                + migrations.AlterField(  | 
            |
| 94 | 
                + model_name='saleclerkinfo',  | 
            |
| 95 | 
                + name='status',  | 
            |
| 96 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 97 | 
                + ),  | 
            |
| 98 | 
                + ]  | 
            
                @@ -0,0 +1,77 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +import shortuuidfield.fields  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +class Migration(migrations.Migration):  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                + dependencies = [  | 
            |
| 10 | 
                +        ('member', '0018_memberactivityinfo_is_signup'),
               | 
            |
| 11 | 
                + ]  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                + operations = [  | 
            |
| 14 | 
                + migrations.CreateModel(  | 
            |
| 15 | 
                + name='MemberActivityGroupShareInfo',  | 
            |
| 16 | 
                + fields=[  | 
            |
| 17 | 
                +                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
               | 
            |
| 18 | 
                +                ('status', models.BooleanField(default=True, help_text='Status', verbose_name='status')),
               | 
            |
| 19 | 
                +                ('created_at', models.DateTimeField(auto_now_add=True, help_text='Create Time', verbose_name='created_at')),
               | 
            |
| 20 | 
                +                ('updated_at', models.DateTimeField(auto_now=True, help_text='Update Time', verbose_name='updated_at')),
               | 
            |
| 21 | 
                +                ('brand_id', models.CharField(blank=True, db_index=True, help_text='品牌唯一标识', max_length=32, null=True, verbose_name='brand_id')),
               | 
            |
| 22 | 
                +                ('brand_name', models.CharField(blank=True, help_text='品牌名称', max_length=255, null=True, verbose_name='brand_name')),
               | 
            |
| 23 | 
                +                ('group_share_id', shortuuidfield.fields.ShortUUIDField(blank=True, db_index=True, editable=False, help_text='活动群组分享唯一标识', max_length=22, null=True, unique=True)),
               | 
            |
| 24 | 
                +                ('share_user_id', models.CharField(blank=True, db_index=True, help_text='分享用户唯一标识', max_length=32, null=True, verbose_name='share_user_id')),
               | 
            |
| 25 | 
                +                ('click_user_id', models.CharField(blank=True, db_index=True, help_text='点击用户唯一标识', max_length=32, null=True, verbose_name='click_user_id')),
               | 
            |
| 26 | 
                +                ('open_gid', models.CharField(blank=True, db_index=True, help_text='群组唯一标识', max_length=32, null=True, verbose_name='open_gid')),
               | 
            |
| 27 | 
                +                ('activity_id', models.CharField(blank=True, db_index=True, help_text='活动唯一标识', max_length=32, null=True, verbose_name='activity_id')),
               | 
            |
| 28 | 
                +                ('title', models.CharField(blank=True, help_text='活动名称', max_length=255, null=True, verbose_name='title')),
               | 
            |
| 29 | 
                +                ('is_integral', models.BooleanField(default=False, help_text='是否有积分', verbose_name='is_integral')),
               | 
            |
| 30 | 
                +                ('integral', models.IntegerField(default=0, help_text='积分', verbose_name='integral')),
               | 
            |
| 31 | 
                + ],  | 
            |
| 32 | 
                +            options={
               | 
            |
| 33 | 
                + 'verbose_name': '会员活动群组分享信息',  | 
            |
| 34 | 
                + 'verbose_name_plural': '会员活动群组分享信息',  | 
            |
| 35 | 
                + },  | 
            |
| 36 | 
                + ),  | 
            |
| 37 | 
                + migrations.AddField(  | 
            |
| 38 | 
                + model_name='memberactivityinfo',  | 
            |
| 39 | 
                + name='group_share_integral',  | 
            |
| 40 | 
                + field=models.IntegerField(default=0, help_text='群组分享会员积分', verbose_name='group_share_integral'),  | 
            |
| 41 | 
                + ),  | 
            |
| 42 | 
                + migrations.AlterField(  | 
            |
| 43 | 
                + model_name='goodsinfo',  | 
            |
| 44 | 
                + name='status',  | 
            |
| 45 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 46 | 
                + ),  | 
            |
| 47 | 
                + migrations.AlterField(  | 
            |
| 48 | 
                + model_name='goodsorderinfo',  | 
            |
| 49 | 
                + name='status',  | 
            |
| 50 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 51 | 
                + ),  | 
            |
| 52 | 
                + migrations.AlterField(  | 
            |
| 53 | 
                + model_name='memberactivityinfo',  | 
            |
| 54 | 
                + name='status',  | 
            |
| 55 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 56 | 
                + ),  | 
            |
| 57 | 
                + migrations.AlterField(  | 
            |
| 58 | 
                + model_name='memberactivitysignininfo',  | 
            |
| 59 | 
                + name='status',  | 
            |
| 60 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 61 | 
                + ),  | 
            |
| 62 | 
                + migrations.AlterField(  | 
            |
| 63 | 
                + model_name='memberactivitysignupinfo',  | 
            |
| 64 | 
                + name='status',  | 
            |
| 65 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 66 | 
                + ),  | 
            |
| 67 | 
                + migrations.AlterField(  | 
            |
| 68 | 
                + model_name='rightinfo',  | 
            |
| 69 | 
                + name='status',  | 
            |
| 70 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 71 | 
                + ),  | 
            |
| 72 | 
                + migrations.AlterField(  | 
            |
| 73 | 
                + model_name='shottypeinfo',  | 
            |
| 74 | 
                + name='status',  | 
            |
| 75 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 76 | 
                + ),  | 
            |
| 77 | 
                + ]  | 
            
                @@ -297,6 +297,7 @@ class MemberActivityInfo(BaseModelMixin):  | 
            ||
| 297 | 297 | 
                lon = models.FloatField(_(u'lon'), default=1.0, help_text=u'经度')  | 
            
| 298 | 298 | 
                 | 
            
| 299 | 299 | 
                integral = models.IntegerField(_(u'integral'), default=0, help_text=u'会员积分')  | 
            
| 300 | 
                + group_share_integral = models.IntegerField(_(u'group_share_integral'), default=0, help_text=u'群组分享会员积分')  | 
            |
| 300 | 301 | 
                 | 
            
| 301 | 302 | 
                image = models.ImageField(_(u'image'), upload_to=upload_path, blank=True, null=True, help_text=u'活动内容图片')  | 
            
| 302 | 303 | 
                 | 
            
                @@ -453,3 +454,29 @@ class MemberActivitySigninInfo(BaseModelMixin):  | 
            ||
| 453 | 454 | 
                 | 
            
| 454 | 455 | 
                def __unicode__(self):  | 
            
| 455 | 456 | 
                return unicode(self.pk)  | 
            
| 457 | 
                +  | 
            |
| 458 | 
                +  | 
            |
| 459 | 
                +class MemberActivityGroupShareInfo(BaseModelMixin):  | 
            |
| 460 | 
                + brand_id = models.CharField(_(u'brand_id'), max_length=32, blank=True, null=True, help_text=u'品牌唯一标识', db_index=True)  | 
            |
| 461 | 
                + brand_name = models.CharField(_(u'brand_name'), max_length=255, blank=True, null=True, help_text=u'品牌名称')  | 
            |
| 462 | 
                +  | 
            |
| 463 | 
                + group_share_id = ShortUUIDField(_(u'group_share_id'), max_length=32, blank=True, null=True, help_text=u'活动群组分享唯一标识', db_index=True, unique=True)  | 
            |
| 464 | 
                +  | 
            |
| 465 | 
                + share_user_id = models.CharField(_(u'share_user_id'), max_length=32, blank=True, null=True, help_text=u'分享用户唯一标识', db_index=True)  | 
            |
| 466 | 
                + click_user_id = models.CharField(_(u'click_user_id'), max_length=32, blank=True, null=True, help_text=u'点击用户唯一标识', db_index=True)  | 
            |
| 467 | 
                +  | 
            |
| 468 | 
                + open_gid = models.CharField(_(u'open_gid'), max_length=32, blank=True, null=True, help_text=u'群组唯一标识', db_index=True)  | 
            |
| 469 | 
                +  | 
            |
| 470 | 
                + activity_id = models.CharField(_(u'activity_id'), max_length=32, blank=True, null=True, help_text=u'活动唯一标识', db_index=True)  | 
            |
| 471 | 
                +  | 
            |
| 472 | 
                + title = models.CharField(_(u'title'), max_length=255, blank=True, null=True, help_text=u'活动名称')  | 
            |
| 473 | 
                +  | 
            |
| 474 | 
                + is_integral = models.BooleanField(_(u'is_integral'), default=False, help_text=u'是否有积分')  | 
            |
| 475 | 
                + integral = models.IntegerField(_(u'integral'), default=0, help_text=u'积分')  | 
            |
| 476 | 
                +  | 
            |
| 477 | 
                + class Meta:  | 
            |
| 478 | 
                + verbose_name = _(u'会员活动群组分享信息')  | 
            |
| 479 | 
                + verbose_name_plural = _(u'会员活动群组分享信息')  | 
            |
| 480 | 
                +  | 
            |
| 481 | 
                + def __unicode__(self):  | 
            |
| 482 | 
                + return unicode(self.pk)  | 
            
                @@ -0,0 +1,38 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('message', '0013_auto_20180103_0446'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='systemmessagedeleteinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='systemmessageinfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='systemmessagereadinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + migrations.AlterField(  | 
            |
| 29 | 
                + model_name='usermessageinfo',  | 
            |
| 30 | 
                + name='msg_type',  | 
            |
| 31 | 
                + field=models.CharField(db_index=True, default='system', help_text='消息类型', max_length=8, verbose_name='msg_type'),  | 
            |
| 32 | 
                + ),  | 
            |
| 33 | 
                + migrations.AlterField(  | 
            |
| 34 | 
                + model_name='usermessageinfo',  | 
            |
| 35 | 
                + name='status',  | 
            |
| 36 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 37 | 
                + ),  | 
            |
| 38 | 
                + ]  | 
            
                @@ -0,0 +1,48 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('operation', '0018_auto_20180114_2314'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='appsettingsinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='boxprogramversioninfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='feedbackinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + migrations.AlterField(  | 
            |
| 29 | 
                + model_name='guestentrancecontrolinfo',  | 
            |
| 30 | 
                + name='status',  | 
            |
| 31 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 32 | 
                + ),  | 
            |
| 33 | 
                + migrations.AlterField(  | 
            |
| 34 | 
                + model_name='latestappinfo',  | 
            |
| 35 | 
                + name='status',  | 
            |
| 36 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 37 | 
                + ),  | 
            |
| 38 | 
                + migrations.AlterField(  | 
            |
| 39 | 
                + model_name='patchinfo',  | 
            |
| 40 | 
                + name='status',  | 
            |
| 41 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 42 | 
                + ),  | 
            |
| 43 | 
                + migrations.AlterField(  | 
            |
| 44 | 
                + model_name='splashinfo',  | 
            |
| 45 | 
                + name='status',  | 
            |
| 46 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 47 | 
                + ),  | 
            |
| 48 | 
                + ]  | 
            
                @@ -0,0 +1,18 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('pay', '0011_auto_20180103_0446'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='orderinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + ]  | 
            
                @@ -0,0 +1,28 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('photo', '0013_auto_20180103_0446'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='photosinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='photouuidinfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='uuidinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + ]  | 
            
                @@ -11,7 +11,7 @@ django-json-render==1.0.3  | 
            ||
| 11 | 11 | 
                django-json-response==1.1.5  | 
            
| 12 | 12 | 
                django-logit==1.1.3  | 
            
| 13 | 13 | 
                django-mobi2==1.0.2  | 
            
| 14 | 
                -django-models-ext==1.1.9  | 
            |
| 14 | 
                +django-models-ext==1.1.10  | 
            |
| 15 | 15 | 
                django-multidomain==1.1.4  | 
            
| 16 | 16 | 
                django-paginator2==1.1.3  | 
            
| 17 | 17 | 
                django-query==1.0.6  | 
            
                @@ -7,7 +7,7 @@ pywe-marketcode==1.0.3  | 
            ||
| 7 | 7 | 
                pywe-membercard==1.0.1  | 
            
| 8 | 8 | 
                pywe-custom-message==1.0.1  | 
            
| 9 | 9 | 
                pywe-event-message==1.0.1  | 
            
| 10 | 
                -pywe-miniapp==1.1.5  | 
            |
| 10 | 
                +pywe-miniapp==1.1.6  | 
            |
| 11 | 11 | 
                pywe-oauth==1.1.1  | 
            
| 12 | 12 | 
                pywe-pay==1.0.13  | 
            
| 13 | 13 | 
                pywe-pay-notify==1.0.5  | 
            
                @@ -0,0 +1,28 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('sales', '0007_supersalesresponsibilityinfomodelssalestatisticinfo_sr_avatar'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='salesresponsibilityinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='salesresponsibilityinfomodelssalestatisticinfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='supersalesresponsibilityinfomodelssalestatisticinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + ]  | 
            
                @@ -0,0 +1,18 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('staff', '0001_initial'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='staffdeleteclerksalesubmitloginfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + ]  | 
            
                @@ -0,0 +1,68 @@  | 
            ||
| 1 | 
                +# Generated by Django 2.2.15 on 2020-11-29 17:31  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.db import migrations, models  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +class Migration(migrations.Migration):  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                + dependencies = [  | 
            |
| 9 | 
                +        ('statistic', '0015_modelsalestatisticinfo_saleclerks'),
               | 
            |
| 10 | 
                + ]  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                + operations = [  | 
            |
| 13 | 
                + migrations.AlterField(  | 
            |
| 14 | 
                + model_name='consumedistributorsalestatisticinfo',  | 
            |
| 15 | 
                + name='status',  | 
            |
| 16 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 17 | 
                + ),  | 
            |
| 18 | 
                + migrations.AlterField(  | 
            |
| 19 | 
                + model_name='consumemodelsalestatisticinfo',  | 
            |
| 20 | 
                + name='status',  | 
            |
| 21 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 22 | 
                + ),  | 
            |
| 23 | 
                + migrations.AlterField(  | 
            |
| 24 | 
                + model_name='consumeprovincesalestatisticinfo',  | 
            |
| 25 | 
                + name='status',  | 
            |
| 26 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 27 | 
                + ),  | 
            |
| 28 | 
                + migrations.AlterField(  | 
            |
| 29 | 
                + model_name='consumesalestatisticinfo',  | 
            |
| 30 | 
                + name='status',  | 
            |
| 31 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 32 | 
                + ),  | 
            |
| 33 | 
                + migrations.AlterField(  | 
            |
| 34 | 
                + model_name='consumeuserstatisticinfo',  | 
            |
| 35 | 
                + name='status',  | 
            |
| 36 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 37 | 
                + ),  | 
            |
| 38 | 
                + migrations.AlterField(  | 
            |
| 39 | 
                + model_name='distributorsalestatisticinfo',  | 
            |
| 40 | 
                + name='status',  | 
            |
| 41 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 42 | 
                + ),  | 
            |
| 43 | 
                + migrations.AlterField(  | 
            |
| 44 | 
                + model_name='modelsalestatisticinfo',  | 
            |
| 45 | 
                + name='status',  | 
            |
| 46 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 47 | 
                + ),  | 
            |
| 48 | 
                + migrations.AlterField(  | 
            |
| 49 | 
                + model_name='provincesalestatisticinfo',  | 
            |
| 50 | 
                + name='status',  | 
            |
| 51 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 52 | 
                + ),  | 
            |
| 53 | 
                + migrations.AlterField(  | 
            |
| 54 | 
                + model_name='registerstatisticinfo',  | 
            |
| 55 | 
                + name='status',  | 
            |
| 56 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 57 | 
                + ),  | 
            |
| 58 | 
                + migrations.AlterField(  | 
            |
| 59 | 
                + model_name='saleclerksalestatisticinfo',  | 
            |
| 60 | 
                + name='status',  | 
            |
| 61 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 62 | 
                + ),  | 
            |
| 63 | 
                + migrations.AlterField(  | 
            |
| 64 | 
                + model_name='salestatisticinfo',  | 
            |
| 65 | 
                + name='status',  | 
            |
| 66 | 
                + field=models.BooleanField(default=True, help_text='Status', verbose_name='status'),  | 
            |
| 67 | 
                + ),  | 
            |
| 68 | 
                + ]  |