Ejemplo n.º 1
0
def corporationAssetsByMarketGroup(request, corpID, marketGroupID=None):
    response = HttpResponse(mimetype="application/json")

    corp = Corporation.objects.get(pk=corpID)

    expand = lambda obj: {
      "typeID":obj['typeID'],
      "typeName": invTypes.objects.get(pk=obj['typeID']).typeName,
      "locationName":mapDenormalize.objects.get(pk=obj['locationID']).itemName,
      "locationID":obj['locationID'],
      "quantity":obj['total'],
    }

    if marketGroupID == None:
        assets = corp.assetList.asset_set.filter(typeID__marketGroupID = marketGroupID).values('typeID','locationID').annotate(total = Sum('quantity')).order_by('-total')

        result = [expand(x) for x in assets]
        jsonResponse = JSONResponse(success=True, result=result)
        response.write(jsonResponse.json())

    else:
        marketGroup = invMarketGroups.objects.get(pk=marketGroupID)
        assets = corp.assetList.asset_set.filter(typeID__marketGroupID__in = marketGroup.findMarketGroupIDs()).values('typeID','locationID').annotate(total = Sum('quantity')).order_by('-total')

        print assets[0]

        result = [expand(x) for x in assets]
        jsonResponse = JSONResponse(success=True, result=result)
        response.write(jsonResponse.json())

    return response
Ejemplo n.º 2
0
def character_assets_by_market_group(request, charID, marketGroupID=None):
    response = HttpResponse(mimetype="application/json")
    logger.debug("User %s request assets for character %s by market group %s" % (request.user.username, charID, marketGroupID))
    char = Character.objects.get(pk=charID)

    expand = lambda obj: {
        "typeID":obj['typeID'],
        "typeName": invTypes.objects.get(pk=obj['typeID']).typeName,
        "locationName":mapDenormalize.objects.get(pk=obj['locationID']).itemName,
        "locationID":obj['locationID'],
        "quantity":obj['total'],
    }

    if marketGroupID == None:
        assets = char.assetList.asset_set.filter(typeID__marketGroupID = marketGroupID).values('typeID','locationID').annotate(total = Sum('quantity')).order_by('-total')

        result = [expand(x) for x in assets]
        jsonResponse = JSONResponse(success=True, result=result)
        response.write(jsonResponse.json())

    else:
        marketGroup = invMarketGroups.objects.get(pk=marketGroupID)
        assets = char.assetList.asset_set.filter(typeID__marketGroupID__in = marketGroup.findMarketGroupIDs()).values('typeID','locationID').annotate(total = Sum('quantity')).order_by('-total')

        result = [expand(x) for x in assets]
        jsonResponse = JSONResponse(success=True, result=result)
        response.write(jsonResponse.json())

    return response
Ejemplo n.º 3
0
def logout(request):
    """simply logout the current user"""
    response = HttpResponse(mimetype='application/json')

    if request.user.is_authenticated():
        username = request.user.username
        auth.logout(request)
        message = JSONResponse(success=True, message="Logout successful")
        response.write(message.json())
        logger.info("User %s logged out" % username)

    else:
        message = JSONResponse(success=False, message="You must login before you logout")
        response.write(message.json())
        logger.error("User tried to logout but wasn't logged in.")

    return response
Ejemplo n.º 4
0
def removeAPIKey(request):
    response = HttpResponse(mimetype="application/json")

    keyID = request.POST["keyID"]
    APIKey.objects.filter(pk=keyID).delete()

    jsonResponse = JSONResponse(success=True)
    response.write(jsonResponse.json())

    return response
Ejemplo n.º 5
0
    def wrapper(request, corpID, *args, **kwargs):

        response  = HttpResponse(mimetype="application/json")
        corp      = None

        try:
            corp = Corporation.objects.get(pk=corpID)

        except Exception, e:
            jsonResponse = JSONResponse(success=False, message=str(e))
            response.write(jsonResponse.json())
            return response
Ejemplo n.º 6
0
def login(request):
    """Allow a user to login

    Used HTTP POST variables:
    username     - the username
    password     - the password
    """
    response = HttpResponse(mimetype='application/json')
    auth.logout(request);

    if 'username' not in request.POST or 'password' not in request.POST:
        message = JSONResponse(success=False, message="Missing POST parameter!")
        response.write(message.json())
        logger.error("Invalid login: Username or password not set.")
        return response

    user = auth.authenticate(username=request.POST['username'], password=request.POST['password'])

    if user is None:
        message = JSONResponse(success=False, message="Login failed!")
        response.write(message.json());
        logger.warning("User %s tried to login, but login failed (wrong password or account does not exists)" % request.POST['username'])
        return response

    else:
        if user.is_active:
            auth.login(request, user)
            message = JSONResponse(success=True, message="Login successful")
            response.write(message.json())
            logger.info("Login successful for user %s" % user)
            return response

        else:
            message = JSONResponse(success=False, message="User not active! Activate your account first")
            response.write(message.json())
            logger.warning("User %s tried to login, but is not activated yet!" % user)
            return response
Ejemplo n.º 7
0
def corporation_permission_required(function):
    @wraps(function)
    def wrapper(request, corpID, *args, **kwargs):

        response  = HttpResponse(mimetype="application/json")
        corp      = None

        try:
            corp = Corporation.objects.get(pk=corpID)

        except Exception, e:
            jsonResponse = JSONResponse(success=False, message=str(e))
            response.write(jsonResponse.json())
            return response

        if not request.user.has_perm('eve.viewAssetList_corporation', corp):
            jsonResponse = JSONResponse(success=False, message="You don't have permission")
            response.write(jsonResponse.json())
            return response

        if corp.assetList == None:
            result = updateAssetList.delay(corp.pk, "Corporation")

            jsonResponse = JSONResponse(success=True, taskID=result.task_id)
            response.write(jsonResponse.json())
            return response

        if corp.assetList.expired():
            result = updateAssetList.delay(corp.pk, "Corporation")

            jsonResponse = JSONResponse(success=True, taskID=result.task_id)
            response.write(jsonResponse.json())
            return response

        else:
            return function(request, corpID, *args, **kwargs)
Ejemplo n.º 8
0
def addAPIKey(request):
    response = HttpResponse(mimetype="application/json")

    print request.body

    keyID = request.POST["keyID"]
    vCode = request.POST["vCode"]
    name  = request.POST["name"]
    user  = request.user

    apiKey = APIKey(keyID=keyID, vCode=vCode, name=name, user=user)
    apiKey.save()

    updateAPIKey.delay(apiKey.pk)

    jsonResponse = JSONResponse()
    response.write(jsonResponse.json())

    return response
Ejemplo n.º 9
0
def apiKeys(request):
    response = HttpResponse(mimetype="application/json")

    keys  = request.user.apikey_set.all()
    tasks = []

    for key in keys:
        if key.expired():
            tasks.append(updateAPIKey.subtask([key.pk]))

    job     = TaskSet(tasks=tasks)
    result  = job.apply_async()

    print result.join()

    keys  = request.user.apikey_set.all()
    jsonResponse = JSONResponse(success=True, result=keys)

    response.write(jsonResponse.json())
    return response
Ejemplo n.º 10
0
def corporationAssetsByTypeName(request, corpID, typeName=""):
    response = HttpResponse(mimetype="application/json")

    corp = Corporation.objects.get(pk=corpID)

    expand = lambda obj: {
      "typeID":obj['typeID'],
      "typeName": invTypes.objects.get(pk=obj['typeID']).typeName,
      "locationName":mapDenormalize.objects.get(pk=obj['locationID']).itemName,
      "locationID":obj['locationID'],
      "quantity":obj['total'],
    }

    assets = corp.assetList.asset_set.filter(typeID__typeName__icontains = typeName).values('typeID','locationID').annotate(total = Sum('quantity')).order_by('-total')[:10]

    result = [expand(x) for x in assets]
    jsonResponse = JSONResponse(success=True, result=result)
    response.write(jsonResponse.json())

    return response
Ejemplo n.º 11
0
def corporationAssetsDetailTree(request, corpID, typeID, locationID):
    response = HttpResponse(mimetype="application/json")

    corp    = Corporation.objects.get(pk=corpID)
    assets  = corp.assetList.asset_set.filter(typeID=typeID, locationID=locationID)

    paths   = [x.getPath() for x in assets]
    root    = Node(locationID)

    for path in paths:
        path.reverse()

        for asset in path:
            node = root.find(asset)

            if not node:

                node = root.find(asset.parent)

                if node:
                    node.insert(asset)

                else:
                    root.insert(asset)

    root.generateQuantity()

    expand = lambda obj: {
      "ID":obj.data.pk,
      "typeID":obj.data.typeID_id,
      "typeName":obj.data.typeID.typeName,
      "flag":obj.data.flag.flagName,
      "quantity":obj.quantity,
      "childs":[expand(x) for x in obj.childs],
    }

    result = [expand(x) for x in root.childs]
    jsonResponse = JSONResponse(success=True, result=result)
    response.write(jsonResponse.json())

    return response
Ejemplo n.º 12
0
def register(request):
    """allows a user to register

    Used HTTP POST variables:
    username     - the username
    password     - the password
    confirm      - the password again
    email        - the email address
    """
    response = HttpResponse(mimetype='application/json')

    if 'email' not in request.POST or 'username' not in request.POST or 'password' not in request.POST or 'confirm' not in request.POST:
        message = JSONResponse(success=False, message="Missing POST paramater! ")
        response.write(message.json())
        return response

    if request.POST['username'] == "" or request.POST['password'] == "":
        message = JSONResponse(success=False, message="Username and Password can't be empty")
        response.write(message.json())
        return response

    if User.objects.filter(username=request.POST['username']).exists():
        message = JSONResponse(success=False, message="Username already exists!")
        response.write(message.json())
        return response

    if not email_re.match(request.POST['email']):
        message = JSONResponse(success=False, message="Email dosen't look like a valid email address")
        response.write(message.json())
        return response

    if not request.POST['password'] == request.POST['confirm']:
        message = JSONResponse(success=False, message="Password confirm must be equal to password")
        response.write(message.json())
        return response

    user = User.objects.create_user(request.POST['username'], request.POST['email'], request.POST['password'])
    user.is_superuser = False
    user.is_stuff = False
    user.is_active = True
    user.save()

    message = JSONResponse(success=True, message="User created")
    response.write(message.json())
    return response
Ejemplo n.º 13
0
def corporations(request):
    response = HttpResponse(mimetype="application/json")

    tasks = []

    for key in request.user.apikey_set.all():
        for corp in key.corporation_set.all():
            if corp.expired():
                tasks.append(updateCorporation.subtask([corp.pk]))

    job = TaskSet(tasks=tasks)
    result = job.apply_async()

    print result.join()

    corps = Corporation.objects.none()

    for key in request.user.apikey_set.all():
        corps = corps | key.corporation_set.all()

    jsonResponse = JSONResponse(success=True, result=corps)

    response.write(jsonResponse.json())
    return response