예제 #1
0
파일: admin.py 프로젝트: phonelab/server
def approve_experiment(modeladmin, request, queryset):
    for obj in queryset:
        # define default response
        response = {"err": "", "data": ""}
        # return if GET request
        if request.method == 'GET':
            response['err'] = {'no': 'err0', 'msg': 'sorry no gets'}
            return HttpResponseRedirect('/error/')

        dev_ids = obj.dev.all()
        app_ids = obj.app.all()
        transact = Transaction()
        transact.eid = obj
        transact.user = User.objects.get(id__in=obj.user.all)
        transact.total = len(dev_ids) * len(app_ids)
        transact.progress = 0

    #Check Data Validation
    for dev_id in dev_ids:
        for app_id in app_ids:
            #check FailureAlready(F1)
            if DeviceApplication.objects.filter(dev=dev_id).filter(app=app_id):
                response['err'] = {
                    'no': 'err1',
                    'msg': 'The application is already installed'
                }
                return json_response_from(response)

    #insert the data from POST method
    for dev_id in dev_ids:
        for app_id in app_ids:
            transact.save()
            t_id = transact.id
            trndevapp = TransactionDevApp()
            trndevapp.tid = Transaction.objects.get(id=t_id)
            trndevapp.dev = dev_id
            trndevapp.app = app_id
            trndevapp.action = 'I'
            trndevapp.result = "N"  # N is N/A
            trndevapp.save()
            Device.objects.filter(id=dev_id.id).update(active="D")

    msg = "new_manifest"
    for dev_id in dev_ids:
        Device.objects.get(id=dev_id.id).send_message(
            payload=json({"message": msg}))

    eprofile = ExperimentProfile.objects.get(experiment=obj)
    eprofile.starttime = datetime.now()
    print obj.period
    endtime = datetime.now() + timedelta(int(obj.period))
    print endtime
    eprofile.endtime = endtime
    eprofile.save()
    queryset.update(active=1)
예제 #2
0
파일: admin.py 프로젝트: phonelab/server
def approve_experiment(modeladmin, request, queryset):
    for obj in queryset:
        # define default response
        response = {"err": "", "data": ""}
        # return if GET request
        if request.method == "GET":
            response["err"] = {"no": "err0", "msg": "sorry no gets"}
            return HttpResponseRedirect("/error/")

        dev_ids = obj.dev.all()
        app_ids = obj.app.all()
        transact = Transaction()
        transact.eid = obj
        transact.user = User.objects.get(id__in=obj.user.all)
        transact.total = len(dev_ids) * len(app_ids)
        transact.progress = 0

    # Check Data Validation
    for dev_id in dev_ids:
        for app_id in app_ids:
            # check FailureAlready(F1)
            if DeviceApplication.objects.filter(dev=dev_id).filter(app=app_id):
                response["err"] = {"no": "err1", "msg": "The application is already installed"}
                return json_response_from(response)

    # insert the data from POST method
    for dev_id in dev_ids:
        for app_id in app_ids:
            transact.save()
            t_id = transact.id
            trndevapp = TransactionDevApp()
            trndevapp.tid = Transaction.objects.get(id=t_id)
            trndevapp.dev = dev_id
            trndevapp.app = app_id
            trndevapp.action = "I"
            trndevapp.result = "N"  # N is N/A
            trndevapp.save()
            Device.objects.filter(id=dev_id.id).update(active="D")

    msg = "new_manifest"
    for dev_id in dev_ids:
        Device.objects.get(id=dev_id.id).send_message(payload=json({"message": msg}))

    eprofile = ExperimentProfile.objects.get(experiment=obj)
    eprofile.starttime = datetime.now()
    print obj.period
    endtime = datetime.now() + timedelta(int(obj.period))
    print endtime
    eprofile.endtime = endtime
    eprofile.save()
    queryset.update(active=1)
예제 #3
0
파일: views.py 프로젝트: phonelab/server
def c2dm(request, deviceId):
    # define default response
    response = {"err": "", "data": ""}
    # return if GET request
    if request.method == 'GET':
        response['err'] = {'no': 'err0', 'msg': 'sorry no gets'}
    else:
        msg = request.POST['c2dm_msg']
        # get device
        try:
            dev = Device.objects.get(id=deviceId)
            # msg = "new_manifest"
            #TODO: Implement other messages.
            response = dev.send_message(payload=json({"message": msg}))
        except Device.DoesNotExist:
            response['err'] = {'no': 'err1', 'msg': 'invalid device'}
        return json_response_from(response)
예제 #4
0
파일: views.py 프로젝트: phonelab/server
def c2dm(request, deviceId):
  # define default response
  response = { "err": "", "data": "" }
  # return if GET request
  if request.method == 'GET':
    response['err'] = {
      'no' : 'err0',
      'msg': 'sorry no gets'
    }
  else:	
    msg = request.POST['c2dm_msg']
    # get device
    try:
      dev = Device.objects.get(id=deviceId)
      # msg = "new_manifest"
      #TODO: Implement other messages.
      response = dev.send_message(payload=json({"message": msg}))
    except Device.DoesNotExist: 
      response['err'] = {
        'no' : 'err1',
        'msg': 'invalid device'
      }
    return json_response_from(response)		
예제 #5
0
파일: views.py 프로젝트: phonelab/server
def create(request):
  # define default response
  response = { "err": "", "data": "" }
  # return if GET request
  if request.method == 'GET':
    response['err'] = {
      'no' : 'err0',
      'msg': 'sorry no gets'
    }
    return HttpResponseRedirect('/error/')
  # params checking
  if not (request.POST.has_key('dev') and request.POST.has_key('app') \
          and request.POST.has_key('action')):
    response['error'] = {
      'no' : 'err1',
      'msg': 'missing mandatory params'
    }
    return json_response_from(response)

  dev_ids = request.POST.getlist('dev')
  app_ids = request.POST.getlist('app')
  transact = Transaction()
  transact.user = User.objects.get(id=request.POST['user'])
  transact.total = len(dev_ids) * len(app_ids)
  transact.progress = 0
  #transact.end = null

  #Check Data Validation
  for dev_id in dev_ids:
    for app_id in app_ids:
      #check FailureAlready(F1)
      if DeviceApplication.objects.filter(dev=dev_id).filter(app=app_id):
        if request.POST['action'] == "I":
          response['err'] = {
            'no' : 'err1',
            'msg': 'The application is already installed'
          }
          return json_response_from(response)
      #check FailureNoSuchApplication(F2)
      else:
        if request.POST['action'] == "U":  
          response['err'] = {
            'no' : 'err1',
            'msg': 'The phone does not have the application to uninstall'
          }
          return json_response_from(response)
    
  #insert the data from POST method
  for dev_id in dev_ids:
    for app_id in app_ids:
      transact.save()
      t_id = transact.id
      trndevapp = TransactionDevApp()
      trndevapp.tid = Transaction.objects.get(id=t_id)
      trndevapp.dev = Device.objects.get(id=dev_id)
      trndevapp.app = Application.objects.get(id=app_id)
      trndevapp.action = request.POST['action']
      trndevapp.result = "N" # N is N/A
      trndevapp.save()
      Device.objects.filter(id=dev_id).update(active="D")
#      Application.objects.filter(id=app_id).update(active="D")
  #send "new_manifest" message to phones via C2DM
  msg = "new_manifest"
  for dev_id in dev_ids:
    Device.objects.get(id=dev_id).send_message(payload=json({"message": msg}))
  return HttpResponseRedirect('/transaction/' + str(t_id) + '/1/')
  
  return json_response_from(response)
예제 #6
0
파일: views.py 프로젝트: phonelab/server
def create(request):
    # define default response
    response = {"err": "", "data": ""}
    # return if GET request
    if request.method == 'GET':
        response['err'] = {'no': 'err0', 'msg': 'sorry no gets'}
        return HttpResponseRedirect('/error/')
    # params checking
    if not (request.POST.has_key('dev') and request.POST.has_key('app') \
            and request.POST.has_key('action')):
        response['error'] = {'no': 'err1', 'msg': 'missing mandatory params'}
        return json_response_from(response)

    dev_ids = request.POST.getlist('dev')
    app_ids = request.POST.getlist('app')
    transact = Transaction()
    transact.user = User.objects.get(id=request.POST['user'])
    transact.total = len(dev_ids) * len(app_ids)
    transact.progress = 0
    #transact.end = null

    #Check Data Validation
    for dev_id in dev_ids:
        for app_id in app_ids:
            #check FailureAlready(F1)
            if DeviceApplication.objects.filter(dev=dev_id).filter(app=app_id):
                if request.POST['action'] == "I":
                    response['err'] = {
                        'no': 'err1',
                        'msg': 'The application is already installed'
                    }
                    return json_response_from(response)
            #check FailureNoSuchApplication(F2)
            else:
                if request.POST['action'] == "U":
                    response['err'] = {
                        'no':
                        'err1',
                        'msg':
                        'The phone does not have the application to uninstall'
                    }
                    return json_response_from(response)

    #insert the data from POST method
    for dev_id in dev_ids:
        for app_id in app_ids:
            transact.save()
            t_id = transact.id
            trndevapp = TransactionDevApp()
            trndevapp.tid = Transaction.objects.get(id=t_id)
            trndevapp.dev = Device.objects.get(id=dev_id)
            trndevapp.app = Application.objects.get(id=app_id)
            trndevapp.action = request.POST['action']
            trndevapp.result = "N"  # N is N/A
            trndevapp.save()
            Device.objects.filter(id=dev_id).update(active="D")


#      Application.objects.filter(id=app_id).update(active="D")
#send "new_manifest" message to phones via C2DM
    msg = "new_manifest"
    for dev_id in dev_ids:
        Device.objects.get(id=dev_id).send_message(
            payload=json({"message": msg}))
    return HttpResponseRedirect('/transaction/' + str(t_id) + '/1/')

    return json_response_from(response)