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
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
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
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
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
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
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)
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
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
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
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
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
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