示例#1
0
def _invite_enroll(request, party_id, invite_key):
    party = get_object_or_404(Party, id = party_id)
    party_client = get_object_or_404(PartiesClients, invite_key = invite_key)
    party_client.is_check = False
    client = party_client.client
    if request.method == 'POST':
        form = EnrollForm(request.POST) 
        if form.is_valid():
            #保存client的姓名
            name = form.cleaned_data['name']
            if name:
                client.name = name
                client.save()
#            if client.invite_type == 'email':
#                if request.POST.get('name'):
#                    client.name = request.POST.get('name')
#                else:
#                    if not client.name:
#                        client.name = client.email  
#            else:
#                if request.POST.get('name'):
#                    client.name = request.POST.get('name')
#                else:
#                    if not client.name:
#                        client.name = client.phone  
            
               
            if 'yes' in request.POST: #如果点击参加
                if party.limit_count != 0:#有人数限制
                    if len(PartiesClients.objects.filter(party = party, apply_status = 'apply')) >= party.limit_count:
                        return TemplateResponse(request, 'message.html', {'message': 'late'})

                party_client.apply_status = u'apply'
                leave_message = form.cleaned_data['leave_message']
                if leave_message:
                    party_client.leave_message = party_client.leave_message + '\n' + leave_message + ' ' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
                              
                party_client.save()
                
                #向组织者的所有MoblieDevice发送推送
                push_notification_when_enroll(party_client, 'apply')
                _send_apply_confirm_message(party_client)
                return TemplateResponse(request, 'message.html', {'message': u'apply'})
            else:
                party_client.apply_status = u'reject'
                leave_message = form.cleaned_data['leave_message']
                if leave_message:
                    party_client.leave_message = party_client.leave_message + '\n' + leave_message + ' ' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
              
                party_client.save()
                
                #向组织者的所有MoblieDevice发送推送
                push_notification_when_enroll(party_client, 'reject')
                
                return TemplateResponse(request, 'message.html', {'message': 'reject'})
        else:
            data = {
                'client': client,
                'party': party,
                'client_count': _get_client_count(party),
                'form' : form,
                'key' : request.GET.get('key', '')
             }
            return TemplateResponse(request, 'parties/enroll.html', data)
    else:
        userprofile = party.creator.get_profile()
        party.creator.username = userprofile.true_name if userprofile.true_name else party.creator.username
        apply_status = PartiesClients.objects.get(invite_key = request.GET.get('key', '')).apply_status
        data = {
            'client': client,
            'party': party,
            'client_count': _get_client_count(party),
            'form' : EnrollForm(),
            'key' : request.GET.get('key', ''),
            'apply_status' : apply_status
        }
        return TemplateResponse(request, 'parties/enroll.html', data)
示例#2
0
def _public_enroll(request, party_id):
    party = get_object_or_404(Party, id = party_id)
    creator = party.creator
    
    if request.method == 'POST':
        if party.invite_type == 'phone':
            form = PublicPhoneEnrollForm(request.POST)            
        elif party.invite_type == 'email':
            form = PublicEmailEnrollForm(request.POST)              
        else :
            
            return TemplateResponse(request, 'message.html', {'message': 'nopublicenroll'})
              
        if form.is_valid():
            name = form.cleaned_data['name']
            
            if party.invite_type == 'phone':
                phone = form.cleaned_data['phone_or_email']
                client, create = Client.objects.get_or_create(creator = creator, phone = phone, defaults = {'invite_type':'public'})
                
            else :
                email = form.cleaned_data['phone_or_email']
                client, create = Client.objects.get_or_create(creator = creator, email = email, defaults = {'invite_type':'public'})
            #有人数限制
            if party.limit_count != 0 :
                if PartiesClients.objects.filter(party = party, apply_status = 'apply').count() >= party.limit_count:
                    return TemplateResponse(request, 'message.html', {'message': 'late'})
                    
#            if Client.objects.filter(creator = creator).filter(party = party).filter(email = email).exclude(email = '').count() == 0 \
#                and Client.objects.filter(creator = creator).filter(party = party).filter(phone = phone).exclude(phone = '').count() == 0:
#                if party.limit_count != 0:#有人数限制
#                    if PartiesClients.objects.filter(party = party, apply_status = 'apply').count() >= party.limit_count:
#                        return TemplateResponse(request, 'message.html', {'message': u'来晚了,下次早点吧'})
#                client = Client.objects.create(name = name, creator = creator, email = email, phone = phone, invite_type = 'public')
#                party_client = PartiesClients.objects.create(client = client, party = party, apply_status = u'apply', is_check = False, leave_message = form.cleaned_data['leave_message'])
                
#                #向组织者的所有MoblieDevice发送推送
#                push_notification_when_enroll(party_client, 'apply')
                
#            if create:
#                client.invite_type = 'public'
#                client.save()
            client.name = name 
            client.save()    
            
            party_client, create = PartiesClients.objects.get_or_create(client = client, party = party, defaults = {'apply_status':'apply', 'is_check':False})            
            if not create:
                party_client.apply_status = 'apply'
                party_client.is_check = False
                party_client.save()
            
            _send_apply_confirm_message(party_client)
            leave_message = form.cleaned_data['leave_message']
            if leave_message:
                party_client.leave_message = party_client.leave_message + '\n' + leave_message + ' ' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
                party_client.is_check = False
                party_client.save()
            
            push_notification_when_enroll(party_client, 'apply') 
            if request.META['PATH_INFO'][0:3] == '/m/':
                return TemplateResponse(request, 'm/message.html', {'title':u'报名成功', 'message': 'publicenrollsucess'})
            else:    
                return TemplateResponse(request, 'message.html', {'message': 'publicenroll'})
        else:
            data = {
            'party': party,
            'client_count': _get_client_count(party),
            'form':form
                   }
            return TemplateResponse(request, 'parties/enroll.html', data)
    else:
        form = PublicEnrollForm()
        invite_message = ''
        if party.invite_type == 'email':
            invite_message = 'email'
        elif party.invite_type == 'phone':
            invite_message = 'phone'
        else :
            return TemplateResponse(request, 'message.html', {'message': 'nopublicenroll'})    
        userprofile = party.creator.get_profile()
        party.creator.username = userprofile.true_name if userprofile.true_name else party.creator.username    
        data = {
            'party': party,
            'client_count': _get_client_count(party),
            'form':form,
            'invite_message':invite_message
        }
        return TemplateResponse(request, 'parties/enroll.html', data)