@@ -768,192 +768,6 @@ def record_warehouse(request, administrator):  | 
            ||
| 768 | 768 | 
                 | 
            
| 769 | 769 | 
                 | 
            
| 770 | 770 | 
                @check_admin  | 
            
| 771 | 
                -def member_activity_list(request, administrator):  | 
            |
| 772 | 
                -    activity_type = request.POST.get('activity_type', '')
               | 
            |
| 773 | 
                -    title = request.POST.get('title', '')
               | 
            |
| 774 | 
                -    start_time = request.POST.get('start_time', '')
               | 
            |
| 775 | 
                -    end_time = request.POST.get('end_time', '')
               | 
            |
| 776 | 
                -    page = request.POST.get('page', 1)
               | 
            |
| 777 | 
                -    num = request.POST.get('num', 20)
               | 
            |
| 778 | 
                -    activity_state = request.POST.get('activity_state', '')
               | 
            |
| 779 | 
                -    activity_section = request.POST.get('activity_section', '')
               | 
            |
| 780 | 
                -  | 
            |
| 781 | 
                - logs = MemberActivityInfo.objects.filter(status=True)  | 
            |
| 782 | 
                -  | 
            |
| 783 | 
                - if activity_type:  | 
            |
| 784 | 
                - logs = logs.filter(activity_type=activity_type)  | 
            |
| 785 | 
                -  | 
            |
| 786 | 
                - if activity_section:  | 
            |
| 787 | 
                - logs = logs.filter(activity_section=activity_section)  | 
            |
| 788 | 
                -  | 
            |
| 789 | 
                - if activity_state:  | 
            |
| 790 | 
                - logs = logs.filter(activity_state=activity_state)  | 
            |
| 791 | 
                -  | 
            |
| 792 | 
                - if title:  | 
            |
| 793 | 
                - logs = logs.filter(title__icontains=title)  | 
            |
| 794 | 
                -  | 
            |
| 795 | 
                - if start_time and end_time:  | 
            |
| 796 | 
                - start_time = datetime.strptime(start_time, '%Y%m%d')  | 
            |
| 797 | 
                - end_time = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')  | 
            |
| 798 | 
                - logs = logs.filter(created_at__range=(start_time, end_time))  | 
            |
| 799 | 
                -  | 
            |
| 800 | 
                -    logs = logs.order_by('-pk')
               | 
            |
| 801 | 
                -  | 
            |
| 802 | 
                - count = logs.count()  | 
            |
| 803 | 
                - logs, left = pagination(logs, page, num)  | 
            |
| 804 | 
                - logs = [log.admindata for log in logs]  | 
            |
| 805 | 
                -  | 
            |
| 806 | 
                -    return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
               | 
            |
| 807 | 
                - 'logs': logs,  | 
            |
| 808 | 
                - 'left': left,  | 
            |
| 809 | 
                - 'count': count  | 
            |
| 810 | 
                - })  | 
            |
| 811 | 
                -  | 
            |
| 812 | 
                -  | 
            |
| 813 | 
                -@check_admin  | 
            |
| 814 | 
                -def member_activity_detail(request, administrator):  | 
            |
| 815 | 
                -    activity_id = request.POST.get('activity_id', '')
               | 
            |
| 816 | 
                -  | 
            |
| 817 | 
                - try:  | 
            |
| 818 | 
                - log = MemberActivityInfo.objects.get(activity_id=activity_id)  | 
            |
| 819 | 
                - except MemberActivityInfo.DoesNotExist:  | 
            |
| 820 | 
                - return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            |
| 821 | 
                -  | 
            |
| 822 | 
                -    return response(200, 'Get Member Activity Record Details Success', u'获取会员活动详情成功', data={
               | 
            |
| 823 | 
                - 'log': log.admindetails,  | 
            |
| 824 | 
                - })  | 
            |
| 825 | 
                -  | 
            |
| 826 | 
                -  | 
            |
| 827 | 
                -@check_admin  | 
            |
| 828 | 
                -def member_activity_update(request, administrator):  | 
            |
| 829 | 
                -    activity_id = request.POST.get('activity_id', '')
               | 
            |
| 830 | 
                -    activity_type = int(request.POST.get('activity_type', 0))
               | 
            |
| 831 | 
                -    activity_section = int(request.POST.get('activity_section', 3))
               | 
            |
| 832 | 
                -    title = request.POST.get('title', '')
               | 
            |
| 833 | 
                -    subtitle = request.POST.get('subtitle', '')
               | 
            |
| 834 | 
                -    start_date = tc.to_date(request.POST.get('start_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 835 | 
                -    end_date = date = tc.to_date(request.POST.get('end_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 836 | 
                -    start_display_date = tc.to_date(request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 837 | 
                -    end_display_date = tc.to_date(request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 838 | 
                -    city = request.POST.get('city', '')
               | 
            |
| 839 | 
                -    location = request.POST.get('location', '')
               | 
            |
| 840 | 
                -    integral = int(request.POST.get('integral', 0))
               | 
            |
| 841 | 
                -    is_slider = request.POST.get('is_slider', 0)
               | 
            |
| 842 | 
                -    slider_image_path = request.POST.get('slider_image_path', '')
               | 
            |
| 843 | 
                -    cover_path = request.POST.get('cover_path', '')
               | 
            |
| 844 | 
                -    detail_image_path = request.POST.get('detail_image_path', '')
               | 
            |
| 845 | 
                -    limit_image_num = int(request.POST.get('limit_image_num', 3))
               | 
            |
| 846 | 
                -    is_signup = request.POST.get('is_signup', 0)
               | 
            |
| 847 | 
                -    group_share_max_integral = int(request.POST.get('share_max_integral', 0))
               | 
            |
| 848 | 
                -    group_share_integral = int(request.POST.get('share_integral', 0))
               | 
            |
| 849 | 
                -    content_rich_text = request.POST.get('content_rich_text', '')
               | 
            |
| 850 | 
                -    share_h5_link = request.POST.get('share_h5_link', '')
               | 
            |
| 851 | 
                -    activity_state = int(request.POST.get('activity_state', 0))
               | 
            |
| 852 | 
                -    poster_kv_img_url = request.POST.get('poster_kv_img_url', '')
               | 
            |
| 853 | 
                -    poster_content = request.POST.get('poster_content', '')
               | 
            |
| 854 | 
                -    contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '')
               | 
            |
| 855 | 
                -  | 
            |
| 856 | 
                - try:  | 
            |
| 857 | 
                - log = MemberActivityInfo.objects.get(activity_id=activity_id, status=True)  | 
            |
| 858 | 
                - except MemberActivityInfo.DoesNotExist:  | 
            |
| 859 | 
                - return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            |
| 860 | 
                -  | 
            |
| 861 | 
                - log.activity_type = activity_type  | 
            |
| 862 | 
                - log.activity_section = activity_section  | 
            |
| 863 | 
                - log.title = title  | 
            |
| 864 | 
                - log.subtitle = subtitle  | 
            |
| 865 | 
                - log.date = date  | 
            |
| 866 | 
                - log.start_date = start_date  | 
            |
| 867 | 
                - log.end_date = end_date  | 
            |
| 868 | 
                - log.start_display_date = start_display_date  | 
            |
| 869 | 
                - log.end_display_date = end_display_date  | 
            |
| 870 | 
                - log.city = city  | 
            |
| 871 | 
                - log.location = location  | 
            |
| 872 | 
                - log.integral = integral  | 
            |
| 873 | 
                - log.is_slider = is_slider  | 
            |
| 874 | 
                - log.slider_image = slider_image_path  | 
            |
| 875 | 
                - log.cover = cover_path  | 
            |
| 876 | 
                - log.image = detail_image_path  | 
            |
| 877 | 
                - log.limit_image_num = limit_image_num  | 
            |
| 878 | 
                - log.is_signup = is_signup  | 
            |
| 879 | 
                - log.group_share_integral = group_share_integral  | 
            |
| 880 | 
                - log.group_share_max_integral = group_share_max_integral  | 
            |
| 881 | 
                - log.content_rich_text = content_rich_text  | 
            |
| 882 | 
                - log.share_h5_link = share_h5_link  | 
            |
| 883 | 
                - log.activity_state = activity_state  | 
            |
| 884 | 
                - log.poster_kv_img_url = poster_kv_img_url  | 
            |
| 885 | 
                - log.poster_content = poster_content  | 
            |
| 886 | 
                - log.contribution_content_placeholder = contribution_content_placeholder  | 
            |
| 887 | 
                - log.save()  | 
            |
| 888 | 
                -  | 
            |
| 889 | 
                - return response(200, 'MemberActivityInfo Update Success', u'会员活动更新成功')  | 
            |
| 890 | 
                -  | 
            |
| 891 | 
                -  | 
            |
| 892 | 
                -@check_admin  | 
            |
| 893 | 
                -def member_activity_create(request, administrator):  | 
            |
| 894 | 
                -    activity_type = int(request.POST.get('activity_type', 0))
               | 
            |
| 895 | 
                -    activity_section = int(request.POST.get('activity_section', 3))
               | 
            |
| 896 | 
                -    title = request.POST.get('title', '')
               | 
            |
| 897 | 
                -    subtitle = request.POST.get('subtitle', '')
               | 
            |
| 898 | 
                -    start_date = tc.to_date(request.POST.get('start_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 899 | 
                -    end_date = date = tc.to_date(request.POST.get('end_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 900 | 
                -    start_display_date = tc.to_date(request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 901 | 
                -    end_display_date = tc.to_date(request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 902 | 
                -    city = request.POST.get('city', '')
               | 
            |
| 903 | 
                -    location = request.POST.get('location', '')
               | 
            |
| 904 | 
                -    integral = int(request.POST.get('integral', 0))
               | 
            |
| 905 | 
                -    is_slider = request.POST.get('is_slider', 0)
               | 
            |
| 906 | 
                -    slider_image_path = request.POST.get('slider_image_path', '')
               | 
            |
| 907 | 
                -    cover_path = request.POST.get('cover_path', '')
               | 
            |
| 908 | 
                -    detail_image_path = request.POST.get('detail_image_path', '')
               | 
            |
| 909 | 
                -    limit_image_num = int(request.POST.get('limit_image_num', 3))
               | 
            |
| 910 | 
                -    is_signup = request.POST.get('is_signup', 0)
               | 
            |
| 911 | 
                -    group_share_max_integral = int(request.POST.get('share_max_integral', 0))
               | 
            |
| 912 | 
                -    group_share_integral = int(request.POST.get('share_integral', 0))
               | 
            |
| 913 | 
                -    content_rich_text = request.POST.get('content_rich_text', '')
               | 
            |
| 914 | 
                -    share_h5_link = request.POST.get('share_h5_link', '')
               | 
            |
| 915 | 
                -    activity_state = int(request.POST.get('activity_state', 0))
               | 
            |
| 916 | 
                -    poster_kv_img_url = request.POST.get('poster_kv_img_url', '')
               | 
            |
| 917 | 
                -    poster_content = request.POST.get('poster_content', '')
               | 
            |
| 918 | 
                -    contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '')
               | 
            |
| 919 | 
                -  | 
            |
| 920 | 
                - act = MemberActivityInfo.objects.create(  | 
            |
| 921 | 
                - brand_id=administrator.brand_id,  | 
            |
| 922 | 
                - activity_type=activity_type,  | 
            |
| 923 | 
                - activity_section=activity_section,  | 
            |
| 924 | 
                - title=title,  | 
            |
| 925 | 
                - subtitle=subtitle,  | 
            |
| 926 | 
                - date=date,  | 
            |
| 927 | 
                - start_date=start_date,  | 
            |
| 928 | 
                - end_date=end_date,  | 
            |
| 929 | 
                - start_display_date=start_display_date,  | 
            |
| 930 | 
                - end_display_date=end_display_date,  | 
            |
| 931 | 
                - city=city,  | 
            |
| 932 | 
                - location=location,  | 
            |
| 933 | 
                - integral=integral,  | 
            |
| 934 | 
                - is_slider=is_slider,  | 
            |
| 935 | 
                - slider_image=slider_image_path,  | 
            |
| 936 | 
                - cover=cover_path,  | 
            |
| 937 | 
                - image=detail_image_path,  | 
            |
| 938 | 
                - limit_image_num=limit_image_num,  | 
            |
| 939 | 
                - is_signup=is_signup,  | 
            |
| 940 | 
                - group_share_max_integral=group_share_max_integral,  | 
            |
| 941 | 
                - group_share_integral=group_share_integral,  | 
            |
| 942 | 
                - content_rich_text=content_rich_text,  | 
            |
| 943 | 
                - share_h5_link=share_h5_link,  | 
            |
| 944 | 
                - activity_state=activity_state,  | 
            |
| 945 | 
                - poster_kv_img_url=poster_kv_img_url,  | 
            |
| 946 | 
                - poster_content=poster_content,  | 
            |
| 947 | 
                - contribution_content_placeholder=contribution_content_placeholder,  | 
            |
| 948 | 
                - is_upload_qiniu=True,  | 
            |
| 949 | 
                - )  | 
            |
| 950 | 
                -  | 
            |
| 951 | 
                -    return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功', data={
               | 
            |
| 952 | 
                - 'activity': act.admindetails  | 
            |
| 953 | 
                - })  | 
            |
| 954 | 
                -  | 
            |
| 955 | 
                -  | 
            |
| 956 | 
                -@check_admin  | 
            |
| 957 | 771 | 
                def member_activity_share_list(request, administrator):  | 
            
| 958 | 772 | 
                     activity_id = request.POST.get('activity_id', '')
               | 
            
| 959 | 773 | 
                     page = int(request.POST.get('page', 1))
               | 
            
                @@ -169,10 +169,6 @@ urlpatterns += [  | 
            ||
| 169 | 169 | 
                url(r'^admin/member/goods/order/update$', admin_views.member_goods_order_update, name='member_goods_order_update'),  | 
            
| 170 | 170 | 
                url(r'^admin/member/goods/order/batch/update$', admin_views.member_goods_order_batch_update, name='member_goods_order_batch_update'),  | 
            
| 171 | 171 | 
                 | 
            
| 172 | 
                - url(r'^admin/member/activity/list$', admin_views.member_activity_list, name='member_activity_list'),  | 
            |
| 173 | 
                - url(r'^admin/member/activity/details$', admin_views.member_activity_detail, name='member_activity_detail'),  | 
            |
| 174 | 
                - url(r'^admin/member/activity/update$', admin_views.member_activity_update, name='member_activity_update'),  | 
            |
| 175 | 
                - url(r'^admin/member/activity/create$', admin_views.member_activity_create, name='member_activity_create'),  | 
            |
| 176 | 172 | 
                url(r'^admin/member/activity/share/list$', admin_views.member_activity_share_list, name='member_activity_share_list'),  | 
            
| 177 | 173 | 
                url(r'^admin/member/activity/register/list$', admin_views.member_activity_register_list, name='member_activity_register_list'),  | 
            
| 178 | 174 | 
                 | 
            
                @@ -0,0 +1,216 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.conf import settings  | 
            |
| 4 | 
                +from django_logit import logit  | 
            |
| 5 | 
                +from django_response import response  | 
            |
| 6 | 
                +from paginator import pagination  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +from member.models import MemberActivityInfo  | 
            |
| 9 | 
                +from kodo.decorators import check_admin  | 
            |
| 10 | 
                +from utils.error.errno_utils import MemberActivityStatusCode  | 
            |
| 11 | 
                +  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                +@check_admin  | 
            |
| 14 | 
                +def activity_list(request, administrator):  | 
            |
| 15 | 
                +    activity_type = request.POST.get('activity_type', '')
               | 
            |
| 16 | 
                +    title = request.POST.get('title', '')
               | 
            |
| 17 | 
                +    start_time = request.POST.get('start_time', '')
               | 
            |
| 18 | 
                +    end_time = request.POST.get('end_time', '')
               | 
            |
| 19 | 
                +    page = request.POST.get('page', 1)
               | 
            |
| 20 | 
                +    num = request.POST.get('num', 20)
               | 
            |
| 21 | 
                +    activity_state = request.POST.get('activity_state', '')
               | 
            |
| 22 | 
                +    activity_section = request.POST.get('activity_section', '')
               | 
            |
| 23 | 
                +    is_series = request.POST.get('is_series', '')
               | 
            |
| 24 | 
                +  | 
            |
| 25 | 
                + logs = MemberActivityInfo.objects.filter(status=True)  | 
            |
| 26 | 
                +  | 
            |
| 27 | 
                + if is_series:  | 
            |
| 28 | 
                + logs = logs.filter(is_series=True)  | 
            |
| 29 | 
                +  | 
            |
| 30 | 
                + if activity_type:  | 
            |
| 31 | 
                + logs = logs.filter(activity_type=activity_type)  | 
            |
| 32 | 
                +  | 
            |
| 33 | 
                + if activity_section:  | 
            |
| 34 | 
                + logs = logs.filter(activity_section=activity_section)  | 
            |
| 35 | 
                +  | 
            |
| 36 | 
                + if activity_state:  | 
            |
| 37 | 
                + logs = logs.filter(activity_state=activity_state)  | 
            |
| 38 | 
                +  | 
            |
| 39 | 
                + if title:  | 
            |
| 40 | 
                + logs = logs.filter(title__icontains=title)  | 
            |
| 41 | 
                +  | 
            |
| 42 | 
                + if start_time and end_time:  | 
            |
| 43 | 
                + start_time = datetime.strptime(start_time, '%Y%m%d')  | 
            |
| 44 | 
                + end_time = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')  | 
            |
| 45 | 
                + logs = logs.filter(created_at__range=(start_time, end_time))  | 
            |
| 46 | 
                +  | 
            |
| 47 | 
                +    logs = logs.order_by('-pk')
               | 
            |
| 48 | 
                +  | 
            |
| 49 | 
                + count = logs.count()  | 
            |
| 50 | 
                + logs, left = pagination(logs, page, num)  | 
            |
| 51 | 
                + logs = [log.admindata for log in logs]  | 
            |
| 52 | 
                +  | 
            |
| 53 | 
                +    return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
               | 
            |
| 54 | 
                + 'logs': logs,  | 
            |
| 55 | 
                + 'left': left,  | 
            |
| 56 | 
                + 'count': count  | 
            |
| 57 | 
                + })  | 
            |
| 58 | 
                +  | 
            |
| 59 | 
                +  | 
            |
| 60 | 
                +@check_admin  | 
            |
| 61 | 
                +def activity_detail(request, administrator):  | 
            |
| 62 | 
                +    activity_id = request.POST.get('activity_id', '')
               | 
            |
| 63 | 
                +  | 
            |
| 64 | 
                + try:  | 
            |
| 65 | 
                + log = MemberActivityInfo.objects.get(activity_id=activity_id)  | 
            |
| 66 | 
                + except MemberActivityInfo.DoesNotExist:  | 
            |
| 67 | 
                + return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            |
| 68 | 
                +  | 
            |
| 69 | 
                +    return response(200, 'Get Member Activity Record Details Success', u'获取会员活动详情成功', data={
               | 
            |
| 70 | 
                + 'log': log.admindetails,  | 
            |
| 71 | 
                + })  | 
            |
| 72 | 
                +  | 
            |
| 73 | 
                +  | 
            |
| 74 | 
                +@check_admin  | 
            |
| 75 | 
                +def activity_update(request, administrator):  | 
            |
| 76 | 
                +    activity_id = request.POST.get('activity_id', '')
               | 
            |
| 77 | 
                +    activity_type = int(request.POST.get('activity_type', 0))
               | 
            |
| 78 | 
                +    activity_section = int(request.POST.get('activity_section', 3))
               | 
            |
| 79 | 
                +    title = request.POST.get('title', '')
               | 
            |
| 80 | 
                +    subtitle = request.POST.get('subtitle', '')
               | 
            |
| 81 | 
                +    start_date = tc.to_date(request.POST.get('start_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 82 | 
                +    end_date = date = tc.to_date(request.POST.get('end_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 83 | 
                +    start_display_date = tc.to_date(request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 84 | 
                +    end_display_date = tc.to_date(request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 85 | 
                +    city = request.POST.get('city', '')
               | 
            |
| 86 | 
                +    location = request.POST.get('location', '')
               | 
            |
| 87 | 
                +    integral = int(request.POST.get('integral', 0))
               | 
            |
| 88 | 
                +    is_slider = request.POST.get('is_slider', 0)
               | 
            |
| 89 | 
                +    slider_image_path = request.POST.get('slider_image_path', '')
               | 
            |
| 90 | 
                +    cover_path = request.POST.get('cover_path', '')
               | 
            |
| 91 | 
                +    detail_image_path = request.POST.get('detail_image_path', '')
               | 
            |
| 92 | 
                +    limit_image_num = int(request.POST.get('limit_image_num', 3))
               | 
            |
| 93 | 
                +    is_signup = request.POST.get('is_signup', 0)
               | 
            |
| 94 | 
                +    group_share_max_integral = int(request.POST.get('share_max_integral', 0))
               | 
            |
| 95 | 
                +    group_share_integral = int(request.POST.get('share_integral', 0))
               | 
            |
| 96 | 
                +    content_rich_text = request.POST.get('content_rich_text', '')
               | 
            |
| 97 | 
                +    share_h5_link = request.POST.get('share_h5_link', '')
               | 
            |
| 98 | 
                +    activity_state = int(request.POST.get('activity_state', 0))
               | 
            |
| 99 | 
                +    poster_kv_img_url = request.POST.get('poster_kv_img_url', '')
               | 
            |
| 100 | 
                +    poster_content = request.POST.get('poster_content', '')
               | 
            |
| 101 | 
                +    contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '')
               | 
            |
| 102 | 
                +    fields = request.POST.get('fields', '')
               | 
            |
| 103 | 
                +    is_series = request.POST.get('is_series', False)
               | 
            |
| 104 | 
                +    main_activity_id = request.POST.get('main_activity_id', '')
               | 
            |
| 105 | 
                +    limit_contribute_num = request.POST.get('limit_contribute_num', 1)
               | 
            |
| 106 | 
                +  | 
            |
| 107 | 
                + try:  | 
            |
| 108 | 
                + log = MemberActivityInfo.objects.get(activity_id=activity_id, status=True)  | 
            |
| 109 | 
                + except MemberActivityInfo.DoesNotExist:  | 
            |
| 110 | 
                + return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)  | 
            |
| 111 | 
                +  | 
            |
| 112 | 
                + log.activity_type = activity_type  | 
            |
| 113 | 
                + log.activity_section = activity_section  | 
            |
| 114 | 
                + log.title = title  | 
            |
| 115 | 
                + log.subtitle = subtitle  | 
            |
| 116 | 
                + log.date = date  | 
            |
| 117 | 
                + log.start_date = start_date  | 
            |
| 118 | 
                + log.end_date = end_date  | 
            |
| 119 | 
                + log.start_display_date = start_display_date  | 
            |
| 120 | 
                + log.end_display_date = end_display_date  | 
            |
| 121 | 
                + log.city = city  | 
            |
| 122 | 
                + log.location = location  | 
            |
| 123 | 
                + log.integral = integral  | 
            |
| 124 | 
                + log.is_slider = is_slider  | 
            |
| 125 | 
                + log.slider_image = slider_image_path  | 
            |
| 126 | 
                + log.cover = cover_path  | 
            |
| 127 | 
                + log.image = detail_image_path  | 
            |
| 128 | 
                + log.limit_image_num = limit_image_num  | 
            |
| 129 | 
                + log.is_signup = is_signup  | 
            |
| 130 | 
                + log.group_share_integral = group_share_integral  | 
            |
| 131 | 
                + log.group_share_max_integral = group_share_max_integral  | 
            |
| 132 | 
                + log.content_rich_text = content_rich_text  | 
            |
| 133 | 
                + log.share_h5_link = share_h5_link  | 
            |
| 134 | 
                + log.activity_state = activity_state  | 
            |
| 135 | 
                + log.poster_kv_img_url = poster_kv_img_url  | 
            |
| 136 | 
                + log.poster_content = poster_content  | 
            |
| 137 | 
                + log.contribution_content_placeholder = contribution_content_placeholder  | 
            |
| 138 | 
                + log.fields = fields  | 
            |
| 139 | 
                + log.is_series = is_series  | 
            |
| 140 | 
                + log.main_activity_id = main_activity_id  | 
            |
| 141 | 
                + log.limit_contribute_num = limit_contribute_num  | 
            |
| 142 | 
                + log.save()  | 
            |
| 143 | 
                +  | 
            |
| 144 | 
                + return response(200, 'MemberActivityInfo Update Success', u'会员活动更新成功')  | 
            |
| 145 | 
                +  | 
            |
| 146 | 
                +  | 
            |
| 147 | 
                +@check_admin  | 
            |
| 148 | 
                +def activity_create(request, administrator):  | 
            |
| 149 | 
                +    activity_type = int(request.POST.get('activity_type', 0))
               | 
            |
| 150 | 
                +    activity_section = int(request.POST.get('activity_section', 3))
               | 
            |
| 151 | 
                +    title = request.POST.get('title', '')
               | 
            |
| 152 | 
                +    subtitle = request.POST.get('subtitle', '')
               | 
            |
| 153 | 
                +    start_date = tc.to_date(request.POST.get('start_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 154 | 
                +    end_date = date = tc.to_date(request.POST.get('end_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 155 | 
                +    start_display_date = tc.to_date(request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE)
               | 
            |
| 156 | 
                +    end_display_date = tc.to_date(request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE)
               | 
            |
| 157 | 
                +    city = request.POST.get('city', '')
               | 
            |
| 158 | 
                +    location = request.POST.get('location', '')
               | 
            |
| 159 | 
                +    integral = int(request.POST.get('integral', 0))
               | 
            |
| 160 | 
                +    is_slider = request.POST.get('is_slider', 0)
               | 
            |
| 161 | 
                +    slider_image_path = request.POST.get('slider_image_path', '')
               | 
            |
| 162 | 
                +    cover_path = request.POST.get('cover_path', '')
               | 
            |
| 163 | 
                +    detail_image_path = request.POST.get('detail_image_path', '')
               | 
            |
| 164 | 
                +    limit_image_num = int(request.POST.get('limit_image_num', 3))
               | 
            |
| 165 | 
                +    is_signup = request.POST.get('is_signup', 0)
               | 
            |
| 166 | 
                +    group_share_max_integral = int(request.POST.get('share_max_integral', 0))
               | 
            |
| 167 | 
                +    group_share_integral = int(request.POST.get('share_integral', 0))
               | 
            |
| 168 | 
                +    content_rich_text = request.POST.get('content_rich_text', '')
               | 
            |
| 169 | 
                +    share_h5_link = request.POST.get('share_h5_link', '')
               | 
            |
| 170 | 
                +    activity_state = int(request.POST.get('activity_state', 0))
               | 
            |
| 171 | 
                +    poster_kv_img_url = request.POST.get('poster_kv_img_url', '')
               | 
            |
| 172 | 
                +    poster_content = request.POST.get('poster_content', '')
               | 
            |
| 173 | 
                +    contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '')
               | 
            |
| 174 | 
                +    fields = request.POST.get('fields', '')
               | 
            |
| 175 | 
                +    is_series = request.POST.get('is_series', False)
               | 
            |
| 176 | 
                +    main_activity_id = request.POST.get('main_activity_id', '')
               | 
            |
| 177 | 
                +    limit_contribute_num = request.POST.get('limit_contribute_num', 1)
               | 
            |
| 178 | 
                +  | 
            |
| 179 | 
                + act = MemberActivityInfo.objects.create(  | 
            |
| 180 | 
                + brand_id=administrator.brand_id,  | 
            |
| 181 | 
                + activity_type=activity_type,  | 
            |
| 182 | 
                + activity_section=activity_section,  | 
            |
| 183 | 
                + title=title,  | 
            |
| 184 | 
                + subtitle=subtitle,  | 
            |
| 185 | 
                + date=date,  | 
            |
| 186 | 
                + start_date=start_date,  | 
            |
| 187 | 
                + end_date=end_date,  | 
            |
| 188 | 
                + start_display_date=start_display_date,  | 
            |
| 189 | 
                + end_display_date=end_display_date,  | 
            |
| 190 | 
                + city=city,  | 
            |
| 191 | 
                + location=location,  | 
            |
| 192 | 
                + integral=integral,  | 
            |
| 193 | 
                + is_slider=is_slider,  | 
            |
| 194 | 
                + slider_image=slider_image_path,  | 
            |
| 195 | 
                + cover=cover_path,  | 
            |
| 196 | 
                + image=detail_image_path,  | 
            |
| 197 | 
                + limit_image_num=limit_image_num,  | 
            |
| 198 | 
                + is_signup=is_signup,  | 
            |
| 199 | 
                + group_share_max_integral=group_share_max_integral,  | 
            |
| 200 | 
                + group_share_integral=group_share_integral,  | 
            |
| 201 | 
                + content_rich_text=content_rich_text,  | 
            |
| 202 | 
                + share_h5_link=share_h5_link,  | 
            |
| 203 | 
                + activity_state=activity_state,  | 
            |
| 204 | 
                + poster_kv_img_url=poster_kv_img_url,  | 
            |
| 205 | 
                + poster_content=poster_content,  | 
            |
| 206 | 
                + contribution_content_placeholder=contribution_content_placeholder,  | 
            |
| 207 | 
                + is_upload_qiniu=True,  | 
            |
| 208 | 
                + fields=fields,  | 
            |
| 209 | 
                + is_series=is_series,  | 
            |
| 210 | 
                + main_activity_id=main_activity_id,  | 
            |
| 211 | 
                + limit_contribute_num=limit_contribute_num,  | 
            |
| 212 | 
                + )  | 
            |
| 213 | 
                +  | 
            |
| 214 | 
                +    return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功', data={
               | 
            |
| 215 | 
                + 'activity': act.admindetails  | 
            |
| 216 | 
                + })  | 
            
                @@ -0,0 +1,13 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +from django.conf.urls import url  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from member import activity_admin_views  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +# activity  | 
            |
| 8 | 
                +urlpatterns = [  | 
            |
| 9 | 
                + url(r'^member/activity/list$', activity_admin_views.activity_list, name='admin_member_activity_list'), # 获取会员活动列表  | 
            |
| 10 | 
                + url(r'^member/activity/details$', activity_admin_views.activity_detail, name='admin_member_activity_detail'), # 获取会员活动详情  | 
            |
| 11 | 
                + url(r'^member/activity/create$', activity_admin_views.activity_create, name='admin_member_activity_create'), # 获取会员活动详情  | 
            |
| 12 | 
                + url(r'^member/activity/update$', activity_admin_views.activity_update, name='admin_member_activity_update'), # 获取会员活动详情  | 
            |
| 13 | 
                +]  | 
            
                @@ -0,0 +1,36 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +# Generated by Django 3.2.6 on 2023-05-06 08:43  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +import jsonfield.fields  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                +class Migration(migrations.Migration):  | 
            |
| 10 | 
                +  | 
            |
| 11 | 
                + dependencies = [  | 
            |
| 12 | 
                +        ('member', '0056_memberactivityinfo_activity_section'),
               | 
            |
| 13 | 
                + ]  | 
            |
| 14 | 
                +  | 
            |
| 15 | 
                + operations = [  | 
            |
| 16 | 
                + migrations.AddField(  | 
            |
| 17 | 
                + model_name='memberactivityinfo',  | 
            |
| 18 | 
                + name='fields',  | 
            |
| 19 | 
                + field=jsonfield.fields.JSONField(blank=True, help_text='报名字段', null=True, verbose_name='fields'),  | 
            |
| 20 | 
                + ),  | 
            |
| 21 | 
                + migrations.AddField(  | 
            |
| 22 | 
                + model_name='memberactivityinfo',  | 
            |
| 23 | 
                + name='is_series',  | 
            |
| 24 | 
                + field=models.BooleanField(default=False, help_text='是否为系列活动', verbose_name='is_series'),  | 
            |
| 25 | 
                + ),  | 
            |
| 26 | 
                + migrations.AddField(  | 
            |
| 27 | 
                + model_name='memberactivityinfo',  | 
            |
| 28 | 
                + name='limit_contribute_num',  | 
            |
| 29 | 
                + field=models.IntegerField(default=0, help_text='限制投稿次数', verbose_name='limit_contribute_num'),  | 
            |
| 30 | 
                + ),  | 
            |
| 31 | 
                + migrations.AddField(  | 
            |
| 32 | 
                + model_name='memberactivityinfo',  | 
            |
| 33 | 
                + name='main_activity_id',  | 
            |
| 34 | 
                + field=models.CharField(blank=True, default='', help_text='系列活动主活动唯一标识', max_length=32, verbose_name='main_activity_id'),  | 
            |
| 35 | 
                + ),  | 
            |
| 36 | 
                + ]  | 
            
                @@ -0,0 +1,26 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +  | 
            |
| 3 | 
                +# Generated by Django 3.2.6 on 2023-05-06 08:50  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +import jsonfield.fields  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                +class Migration(migrations.Migration):  | 
            |
| 10 | 
                +  | 
            |
| 11 | 
                + dependencies = [  | 
            |
| 12 | 
                +        ('member', '0057_auto_20230506_1643'),
               | 
            |
| 13 | 
                + ]  | 
            |
| 14 | 
                +  | 
            |
| 15 | 
                + operations = [  | 
            |
| 16 | 
                + migrations.AlterField(  | 
            |
| 17 | 
                + model_name='memberactivityinfo',  | 
            |
| 18 | 
                + name='fields',  | 
            |
| 19 | 
                + field=jsonfield.fields.JSONField(blank=True, default='[]', help_text='报名字段', null=True, verbose_name='fields'),  | 
            |
| 20 | 
                + ),  | 
            |
| 21 | 
                + migrations.AlterField(  | 
            |
| 22 | 
                + model_name='memberactivityinfo',  | 
            |
| 23 | 
                + name='limit_contribute_num',  | 
            |
| 24 | 
                + field=models.IntegerField(default=1, help_text='限制投稿次数', verbose_name='limit_contribute_num'),  | 
            |
| 25 | 
                + ),  | 
            |
| 26 | 
                + ]  | 
            
                @@ -430,6 +430,12 @@ class MemberActivityInfo(BaseModelMixin, BrandInfoMixin):  | 
            ||
| 430 | 430 | 
                 | 
            
| 431 | 431 | 
                is_upload_qiniu = models.BooleanField(_(u'is_upload_qiniu'), default=False, help_text=u'是否已上传七牛')  | 
            
| 432 | 432 | 
                 | 
            
| 433 | 
                + fields = JSONField(_(u'fields'), blank=True, null=True, default='[]', help_text=u'报名字段')  | 
            |
| 434 | 
                + is_series = models.BooleanField(_(u'is_series'), default=False, help_text=u'是否为系列活动')  | 
            |
| 435 | 
                + main_activity_id = models.CharField(_(u'main_activity_id'), max_length=32, blank=True, default='', help_text=u'系列活动主活动唯一标识')  | 
            |
| 436 | 
                +  | 
            |
| 437 | 
                + limit_contribute_num = models.IntegerField(_(u'limit_contribute_num'), default=1, help_text=u'限制投稿次数')  | 
            |
| 438 | 
                +  | 
            |
| 433 | 439 | 
                class Meta:  | 
            
| 434 | 440 | 
                verbose_name = _(u'会员活动信息')  | 
            
| 435 | 441 | 
                verbose_name_plural = _(u'会员活动信息')  | 
            
                @@ -548,6 +554,10 @@ class MemberActivityInfo(BaseModelMixin, BrandInfoMixin):  | 
            ||
| 548 | 554 | 
                'poster_kv_img_url': self.post_kv_image_url,  | 
            
| 549 | 555 | 
                'poster_content': self.poster_content,  | 
            
| 550 | 556 | 
                'contribution_content_placeholder': self.contribution_content_placeholder,  | 
            
| 557 | 
                + 'fields': json.loads(self.fields) if self.fields else '',  | 
            |
| 558 | 
                + 'main_activity_id': self.main_activity_id,  | 
            |
| 559 | 
                + 'limit_contribute_num': self.limit_contribute_num,  | 
            |
| 560 | 
                + 'is_series': self.is_series,  | 
            |
| 551 | 561 | 
                }  | 
            
| 552 | 562 | 
                 | 
            
| 553 | 563 | 
                def details(self, user_id):  | 
            
                @@ -587,6 +597,10 @@ class MemberActivityInfo(BaseModelMixin, BrandInfoMixin):  | 
            ||
| 587 | 597 | 
                'poster_kv_img_url': self.final_poster_kv_img_url,  | 
            
| 588 | 598 | 
                'poster_content': self.poster_content,  | 
            
| 589 | 599 | 
                'contribution_content_placeholder': self.contribution_content_placeholder,  | 
            
| 600 | 
                + 'fields': json.loads(self.fields) if self.fields else '',  | 
            |
| 601 | 
                + 'main_activity_id': self.main_activity_id,  | 
            |
| 602 | 
                + 'limit_contribute_num': self.limit_contribute_num,  | 
            |
| 603 | 
                + 'is_series': self.is_series,  | 
            |
| 590 | 604 | 
                }  | 
            
| 591 | 605 | 
                 | 
            
| 592 | 606 | 
                @property  | 
            
                @@ -628,6 +642,10 @@ class MemberActivityInfo(BaseModelMixin, BrandInfoMixin):  | 
            ||
| 628 | 642 | 
                'poster_content': self.poster_content,  | 
            
| 629 | 643 | 
                'contribution_content_placeholder': self.contribution_content_placeholder,  | 
            
| 630 | 644 | 
                'welfares': self.welfares,  | 
            
| 645 | 
                + 'fields': json.loads(self.fields) if self.fields else '',  | 
            |
| 646 | 
                + 'main_activity_id': self.main_activity_id,  | 
            |
| 647 | 
                + 'limit_contribute_num': self.limit_contribute_num,  | 
            |
| 648 | 
                + 'is_series': self.is_series,  | 
            |
| 631 | 649 | 
                }  | 
            
| 632 | 650 | 
                 | 
            
| 633 | 651 | 
                @property  | 
            
                @@ -674,6 +692,10 @@ class MemberActivityInfo(BaseModelMixin, BrandInfoMixin):  | 
            ||
| 674 | 692 | 
                'poster_content': self.poster_content,  | 
            
| 675 | 693 | 
                'contribution_content_placeholder': self.contribution_content_placeholder,  | 
            
| 676 | 694 | 
                'welfares': self.welfares,  | 
            
| 695 | 
                + 'fields': json.loads(self.fields) if self.fields else '',  | 
            |
| 696 | 
                + 'main_activity_id': self.main_activity_id,  | 
            |
| 697 | 
                + 'limit_contribute_num': self.limit_contribute_num,  | 
            |
| 698 | 
                + 'is_series': self.is_series,  | 
            |
| 677 | 699 | 
                }  | 
            
| 678 | 700 | 
                 | 
            
| 679 | 701 | 
                 | 
            
                @@ -8,5 +8,5 @@ from member import activity_mp_views  | 
            ||
| 8 | 8 | 
                urlpatterns = [  | 
            
| 9 | 9 | 
                url(r'^member/activity/home$', activity_mp_views.activity_home, name='mp_member_activity_home'), # 获取会员活动首页  | 
            
| 10 | 10 | 
                url(r'^member/activity/list$', activity_mp_views.activity_list, name='mp_member_activity_list'), # 获取会员分区活动列表  | 
            
| 11 | 
                - url(r'^member/activity/detail$', activity_mp_views.activity_detail, name='mp_member_activity_detail'), # 获取会员分区活动列表  | 
            |
| 11 | 
                + url(r'^member/activity/detail$', activity_mp_views.activity_detail, name='mp_member_activity_detail'), # 获取会员分区活动详情  | 
            |
| 12 | 12 | 
                ]  | 
            
                @@ -5,4 +5,5 @@ from django.conf.urls import include, url  | 
            ||
| 5 | 5 | 
                 | 
            
| 6 | 6 | 
                urlpatterns = [  | 
            
| 7 | 7 | 
                     url(r'^mp/', include(('member.mp_urls', 'member'), namespace='mp_member')),
               | 
            
| 8 | 
                +    url(r'^admin/', include(('member.admin_urls', 'member'), namespace='admin_member')),
               | 
            |
| 8 | 9 | 
                ]  |