Пример #1
0
def event_response(request):
    c = {}
    c.update(csrf(request))
    # Receives data with information about which MemberResposne must be modified
    # or created. For this we need:
    #	. the member_id
    #	. the eventrole_id
    #	. the action
    # If the member_id is missing, we use the currently logged on member.
    # TODO: Perhaps it's better to always pass the member_id on with the other two from the view...

    print 'in event_response'
    # Ensure we're getting an AJAX POST.
    if not request.is_ajax():
        print 'not AJAX'
        return False

    print 'check member'
    # Check whether we've been handed a member_id:
    try:
        member_id = request.POST['member_id']
        cm_responding = False
        print 'member_id sent through post: {}'.format(member_id)
    except:
        member_id = request.user.member.id
        cm_responding = True
        print 'member_id set to current member'

    # Get the eventrole_id and action:
    print 'get eventrole_id'
    print request.POST
    try:
        eventrole_id = request.POST['eventrole_id']
    except:
        print 'no eventrole_id'
        return HttpResponse(
            json.dumps({
                'type': 'error',
                'message': 'The POST data is missing the eventrole_id.'
            }))
    print 'eventrole_id: {}'.format(eventrole_id)
    action = request.POST['action']
    if action == 'attend':
        act = 'Y'
    elif action == 'absent':
        act = 'N'

    print 'action: {} or {}'.format(action, act)
    print 'eventrole.id: {}'.format(eventrole_id)

    # Get the relevant objects:
    member = Member.objects.get(id=member_id)
    event_role = get_object_or_404(EventRole, id=eventrole_id)
    #event_role = EventRole.objects.get(event_role__id=eventrole_id)

    # See if there already exists a member response:
    try:
        mr = MemberResponse.objects.get(event_role=event_role, member=member)
        print '>> MemberResponse {} found'.format(mr)
        mr.response = act
        mr.time_responded = timezone.now()
    # Otherwise create a new one:
    except:
        mr = MemberResponse(event_role=event_role, member=member, response=act)
        print '>> No MemberResponse found. Creating a new one: {}'.format(mr)

    # Clean and save:
    try:
        mr.clean_fields()
        mr.save()
        print '>> SAVED'
    except:
        print '>> FAILED'
        return HttpResponse('Failed: could not save member response')

    ##print 'Hér kemur JSON útgáfan:'
    ##data = json.loads(request.POST['data'])
    ##pprint.pprint(data)

    print mr.time_responded
    data = {
        'user_id': member.user.id,
        'user_name': member.__unicode__(),
        'username': member.user.username,
        'cm_responding': cm_responding,
        'event_id': event_role.event.id,
        'role_id': event_role.role.id,
        'eventrole_id': event_role.id,
        'action': action,
        'time_responded': mr.time_responded,
    }
    print 'Data: {}'.format(data)
    jsondata = json.dumps(data, cls=DjangoJSONEncoder)
    print 'JSON: ', jsondata
    print 'XXXXX responding'
    #return HttpResponse(json.dumps(data))##, mimetype='application/javascript')
    return HttpResponse(jsondata)
Пример #2
0
def event_response(request):
    print 'in event_response'
    if not request.user.is_authenticated():
        cm = User.objects.get(id=2)
    else:
        cm = request.user.member
    print cm
    if request.is_ajax():
        #import pprint
        action = request.POST['action']
        if action == 'attend':
            act = 'Y'
        elif action == 'absent':
            act = 'N'
        eventrole_id = request.POST['eventrole']

        print 'action: {} or {}'.format(action, act)
        print 'eventrole.id: {}'.format(eventrole_id)

        print 'OK, now for my second act...'
        #TODO: read current member info from login!!!
        #mr = MemberResponse(event_role__id=eventrole_id, member=cm, response='Y')
        #event = get_object_or_404(Event, id=pk)
        #print event
        event_role = get_object_or_404(EventRole, id=eventrole_id)
        #event_role = EventRole.objects.get(event_role__id=14)
        print event_role.id
        try:
            mr = MemberResponse.objects.get(event_role=event_role, member=cm)
            print '>> MemberResponse {} found'.format(mr)
            mr.response = act
        except:
            mr = MemberResponse(event_role=event_role, member=cm, response=act)
            print '>> No MemberResponse found. Creating a new one: {}'.format(
                mr)

        try:
            mr.clean_fields()
            mr.save()
            print '>> SAVED'
        except:
            print '>> FAILED'
            return HttpResponse('Failed: could not save member response')
        ##print 'Hér kemur JSON útgáfan:'
        ##data = json.loads(request.POST['data'])
        ##pprint.pprint(data)
    #else:
    #print 'not ajax'
    #TODO: Have to return the change so that the script can update the attendance list.
    data = {
        'user_id': cm.user.id,
        'user_name': cm.__unicode__(),
        'username': cm.user.username,
        'event_id': event_role.event.id,
        'role_id': event_role.role.id,
        'eventrole_id': event_role.id,
        'action': action,
    }
    print 'Data: {}'.format(data)
    jsondata = json.dumps(data)
    print 'JSON: ', jsondata
    print 'XXXXX responding'
    return HttpResponse(
        json.dumps(data))  ##, mimetype='application/javascript')