| 
              # -*- coding: utf-8 -*-
from datetime import datetime
from django.conf import settings
from django.db.models import Q
from django_logit import logit
from django_response import response
from paginator import pagination
from TimeConvert import TimeConvert as tc
from member.models import MemberActivityInfo, MemberActivitySignupInfo, MemberActivityContributionInfo
from kodo.decorators import check_admin
from utils.error.errno_utils import MemberActivityStatusCode
@check_admin
def activity_list(request, administrator):
    activity_type = request.POST.get('activity_type', '')
    title = request.POST.get('title', '')
    start_time = request.POST.get('start_time', '')
    end_time = request.POST.get('end_time', '')
    page = request.POST.get('page', 1)
    num = request.POST.get('num', 20)
    activity_state = request.POST.get('activity_state', '')
    activity_section = request.POST.get('activity_section', '')
    is_series = request.POST.get('is_series', '')
    logs = MemberActivityInfo.objects.filter(status=True)
    if is_series:
        logs = logs.filter(is_series=True)
    if activity_type:
        logs = logs.filter(activity_type=activity_type)
    if activity_section:
        logs = logs.filter(activity_section=activity_section)
    if activity_state:
        logs = logs.filter(activity_state=activity_state)
    if title:
        logs = logs.filter(title__icontains=title)
    if start_time and end_time:
        start_time = datetime.strptime(start_time, '%Y%m%d')
        end_time = datetime.strptime(end_time + ' 23:59:59', '%Y%m%d %H:%M:%S')
        logs = logs.filter(created_at__range=(start_time, end_time))
    logs = logs.order_by('-pk')
    count = logs.count()
    logs, left = pagination(logs, page, num)
    logs = [log.admindata for log in logs]
    return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
        'logs': logs,
        'left': left,
        'count': count
    })
@check_admin
def activity_detail(request, administrator):
    activity_id = request.POST.get('activity_id', '')
    try:
        log = MemberActivityInfo.objects.get(activity_id=activity_id)
    except MemberActivityInfo.DoesNotExist:
        return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)
    return response(200, 'Get Member Activity Record Details Success', u'获取会员活动详情成功', data={
        'log': log.admindetails,
    })
@check_admin
def activity_update(request, administrator):
    activity_id = request.POST.get('activity_id', '')
    activity_type = int(request.POST.get('activity_type', 0))
    activity_section = int(request.POST.get('activity_section', 3))
    title = request.POST.get('title', '')
    subtitle = request.POST.get('subtitle', '')
    start_date = tc.to_date(request.POST.get('start_date', '') or settings.DEFAULT_START_DATE)
    end_date = date = tc.to_date(request.POST.get('end_date', '') or settings.DEFAULT_END_DATE)
    start_display_date = tc.to_date(request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE)
    end_display_date = tc.to_date(request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE)
    city = request.POST.get('city', '')
    location = request.POST.get('location', '')
    integral = int(request.POST.get('integral', 0))
    is_slider = request.POST.get('is_slider', 0)
    slider_image_path = request.POST.get('slider_image_path', '')
    cover_path = request.POST.get('cover_path', '')
    detail_image_path = request.POST.get('detail_image_path', '')
    limit_image_num = int(request.POST.get('limit_image_num', 3))
    is_signup = request.POST.get('is_signup', 0)
    group_share_max_integral = int(request.POST.get('share_max_integral', 0))
    group_share_integral = int(request.POST.get('share_integral', 0))
    content_rich_text = request.POST.get('content_rich_text', '')
    share_h5_link = request.POST.get('share_h5_link', '')
    activity_state = int(request.POST.get('activity_state', 0))
    poster_kv_img_url = request.POST.get('poster_kv_img_url', '')
    poster_content = request.POST.get('poster_content', '')
    contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '')
    fields = request.POST.get('fields', '')
    is_series = request.POST.get('is_series', False)
    main_activity_id = request.POST.get('main_activity_id', '')
    limit_contribute_num = request.POST.get('limit_contribute_num', 1)
    feed_id = request.POST.get('feed_id', '')
    try:
        log = MemberActivityInfo.objects.get(activity_id=activity_id, status=True)
    except MemberActivityInfo.DoesNotExist:
        return response(MemberActivityStatusCode.ACTIVITY_NOT_FOUND)
    if log.main_activity_id != main_activity_id:
        MemberActivityContributionInfo.objects.filter(activity_id=log.activity_id).update(main_activity_id=main_activity_id)
    log.activity_type = activity_type
    log.activity_section = activity_section
    log.title = title
    log.subtitle = subtitle
    log.date = date
    log.start_date = start_date
    log.end_date = end_date
    log.start_display_date = start_display_date
    log.end_display_date = end_display_date
    log.city = city
    log.location = location
    log.integral = integral
    log.is_slider = is_slider
    log.slider_image = slider_image_path
    log.cover = cover_path
    log.image = detail_image_path
    log.limit_image_num = limit_image_num
    log.is_signup = is_signup
    log.group_share_integral = group_share_integral
    log.group_share_max_integral = group_share_max_integral
    log.content_rich_text = content_rich_text
    log.share_h5_link = share_h5_link
    log.activity_state = activity_state
    log.poster_kv_img_url = poster_kv_img_url
    log.poster_content = poster_content
    log.contribution_content_placeholder = contribution_content_placeholder
    log.fields = fields
    log.is_series = is_series
    log.main_activity_id = main_activity_id
    log.limit_contribute_num = limit_contribute_num
    log.feed_id = feed_id
    log.save()
    return response(200, 'MemberActivityInfo Update Success', u'会员活动更新成功')
@check_admin
def activity_create(request, administrator):
    activity_type = int(request.POST.get('activity_type', 0))
    activity_section = int(request.POST.get('activity_section', 3))
    title = request.POST.get('title', '')
    subtitle = request.POST.get('subtitle', '')
    start_date = tc.to_date(request.POST.get('start_date', '') or settings.DEFAULT_START_DATE)
    end_date = date = tc.to_date(request.POST.get('end_date', '') or settings.DEFAULT_END_DATE)
    start_display_date = tc.to_date(request.POST.get('start_display_date', '') or settings.DEFAULT_START_DATE)
    end_display_date = tc.to_date(request.POST.get('end_display_date', '') or settings.DEFAULT_END_DATE)
    city = request.POST.get('city', '')
    location = request.POST.get('location', '')
    integral = int(request.POST.get('integral', 0))
    is_slider = request.POST.get('is_slider', 0)
    slider_image_path = request.POST.get('slider_image_path', '')
    cover_path = request.POST.get('cover_path', '')
    detail_image_path = request.POST.get('detail_image_path', '')
    limit_image_num = int(request.POST.get('limit_image_num', 3))
    is_signup = request.POST.get('is_signup', 0)
    group_share_max_integral = int(request.POST.get('share_max_integral', 0))
    group_share_integral = int(request.POST.get('share_integral', 0))
    content_rich_text = request.POST.get('content_rich_text', '')
    share_h5_link = request.POST.get('share_h5_link', '')
    activity_state = int(request.POST.get('activity_state', 0))
    poster_kv_img_url = request.POST.get('poster_kv_img_url', '')
    poster_content = request.POST.get('poster_content', '')
    contribution_content_placeholder = request.POST.get('contribution_content_placeholder', '')
    fields = request.POST.get('fields', '')
    is_series = request.POST.get('is_series', False)
    main_activity_id = request.POST.get('main_activity_id', '')
    limit_contribute_num = request.POST.get('limit_contribute_num', 1)
    feed_id = request.POST.get('feed_id', '')
    act = MemberActivityInfo.objects.create(
        brand_id=administrator.brand_id,
        activity_type=activity_type,
        activity_section=activity_section,
        title=title,
        subtitle=subtitle,
        date=date,
        start_date=start_date,
        end_date=end_date,
        start_display_date=start_display_date,
        end_display_date=end_display_date,
        city=city,
        location=location,
        integral=integral,
        is_slider=is_slider,
        slider_image=slider_image_path,
        cover=cover_path,
        image=detail_image_path,
        limit_image_num=limit_image_num,
        is_signup=is_signup,
        group_share_max_integral=group_share_max_integral,
        group_share_integral=group_share_integral,
        content_rich_text=content_rich_text,
        share_h5_link=share_h5_link,
        activity_state=activity_state,
        poster_kv_img_url=poster_kv_img_url,
        poster_content=poster_content,
        contribution_content_placeholder=contribution_content_placeholder,
        is_upload_qiniu=True,
        fields=fields,
        is_series=is_series,
        main_activity_id=main_activity_id,
        limit_contribute_num=limit_contribute_num,
        feed_id=feed_id,
    )
    return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功', data={
        'activity': act.admindetails
    })
@check_admin
def activity_signup_list(request, administrator):
    activity_id = request.POST.get('activity_id', '')
    page = int(request.POST.get('page', 1))
    num = int(request.POST.get('num', 20))
    query = request.POST.get('query', '')
    is_signin = request.POST.get('is_signin', False)
    logs = MemberActivitySignupInfo.objects.filter(activity_id=activity_id, status=True).exclude(fields='[]')
    if query:
        logs = logs.filter(fields__icontains=query)
    if is_signin:
        logs = logs.filter(is_signin=is_signin)
    count = logs.count()
    logs, left = pagination(logs, page, num)
    logs = [log.admindata for log in logs]
    return response(200, 'Get Member Activity Signup List Success', u'获取会员活动报名列表成功', data={
        'logs': logs,
        'count': count,
        'left': left,
    })
 
  |