def get_systems_data(request): divisions = extract_divisions(request) show_in_space = json.loads(request.GET.get('space', 'true')) show_in_stations = json.loads(request.GET.get('stations', 'true')) where = [] if not show_in_space: where.append('"stationID" < %d' % constants.MAX_STATION_ID) if not show_in_stations: where.append('"stationID" > %d' % constants.MAX_STATION_ID) if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "solarSystemID", COUNT(*) AS "items", SUM("volume") AS "volume" '\ 'FROM "assets_asset" ' if where: sql += ' WHERE ' + ' AND '.join(where) sql += ' GROUP BY "solarSystemID";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql) else: cursor.execute(sql, divisions) exact_volumes = Setting.get('assets_show_exact_volumes') jstree_data = [] for solarSystemID, items, volume in cursor: try: system = CelestialObject.objects.get(itemID=solarSystemID) except CelestialObject.DoesNotExist: system = CelestialObject(itemID=solarSystemID, itemName=str(solarSystemID), security=0) if system.security > 0.5: color = 'hisec' elif system.security > 0: color = 'lowsec' else: color = 'nullsec' if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data' : HTML_ITEM_SPAN % (system.itemName, items, pluralize(items), volume), 'attr' : { 'id' : '%d_' % solarSystemID, 'rel' : 'system', 'sort_key' : system.itemName.lower(), 'class' : 'system-%s-row' % color }, 'state' : 'closed' }) cursor.close() return HttpResponse(json.dumps(jstree_data))
def get_hangars_data(request, solarSystemID, closest_obj_id, stationID): solarSystemID = int(solarSystemID) closest_obj_id = int(closest_obj_id) stationID = int(stationID) divisions = extract_divisions(request) where = [] if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "hangarID", COUNT(*) AS "items", SUM("volume") AS "volume" '\ 'FROM "assets_asset" '\ 'WHERE "solarSystemID"=%s AND "closest_object_id"=%s AND "stationID"=%s ' if where: sql += ' AND ' + ' AND '.join(where) sql += ' GROUP BY "hangarID";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql, [solarSystemID, closest_obj_id, stationID]) else: cursor.execute(sql, [solarSystemID, closest_obj_id, stationID] + list(divisions)) exact_volumes = Setting.get('assets_show_exact_volumes') HANGAR = Hangar.DEFAULT_NAMES.copy() for h in CorpHangar.objects.filter(corp=Corporation.objects.mine()): HANGAR[h.hangar_id] = h.name jstree_data = [] for hangarID, items, volume in cursor: if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data': HTML_ITEM_SPAN % (HANGAR[hangarID], items, pluralize(items), volume), 'attr': { 'id': '%d_%d_%d_%d_' % (solarSystemID, closest_obj_id, stationID, hangarID), 'sort_key': hangarID, 'rel': 'hangar', 'class': 'hangar-row' }, 'state': 'closed' }) return HttpResponse(json.dumps(jstree_data))
def get_celestial_objects_data(request, solarSystemID): solarSystemID = int(solarSystemID) divisions = extract_divisions(request) show_in_space = json.loads(request.GET.get('space', 'true')) show_in_stations = json.loads(request.GET.get('stations', 'true')) where = [] if not show_in_space: where.append('"stationID" < %d' % constants.MAX_STATION_ID) if not show_in_stations: where.append('"stationID" > %d' % constants.MAX_STATION_ID) if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "closest_object_id", COUNT(*), SUM("volume") '\ 'FROM "assets_asset" '\ 'WHERE "solarSystemID"=%s ' if where: sql += ' AND ' + ' AND '.join(where) sql += ' GROUP BY "closest_object_id";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql, [solarSystemID]) else: cursor.execute(sql, [solarSystemID] + list(divisions)) exact_volumes = Setting.get('assets_show_exact_volumes') jstree_data = [] for closest_object_id, items, volume in cursor: if closest_object_id != 0: try: name = CelestialObject.objects.get(itemID=closest_object_id).itemName except CelestialObject.DoesNotExist: name = str(closest_object_id) else: name = 'Stations' if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data' : HTML_ITEM_SPAN % (name, items, pluralize(items), volume), 'attr' : { 'id' : '%d_%d_' % (solarSystemID, closest_object_id), 'sort_key' : closest_object_id, 'rel' : 'celestial', 'class' : 'celestial-row', }, 'state' : 'closed' }) cursor.close() return HttpResponse(json.dumps(jstree_data))
def get_hangars_data(request, solarSystemID, closest_obj_id, stationID): solarSystemID = int(solarSystemID) closest_obj_id = int(closest_obj_id) stationID = int(stationID) divisions = extract_divisions(request) where = [] if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "hangarID", COUNT(*) AS "items", SUM("volume") AS "volume" '\ 'FROM "assets_asset" '\ 'WHERE "solarSystemID"=%s AND "closest_object_id"=%s AND "stationID"=%s ' if where: sql += ' AND ' + ' AND '.join(where) sql += ' GROUP BY "hangarID";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql, [solarSystemID, closest_obj_id, stationID]) else: cursor.execute(sql, [solarSystemID, closest_obj_id, stationID] + list(divisions)) exact_volumes = Setting.get('assets_show_exact_volumes') HANGAR = Hangar.DEFAULT_NAMES.copy() for h in CorpHangar.objects.filter(corp=Corporation.objects.mine()): HANGAR[h.hangar_id] = h.name jstree_data = [] for hangarID, items, volume in cursor: if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data': HTML_ITEM_SPAN % (HANGAR[hangarID], items, pluralize(items), volume), 'attr' : { 'id' : '%d_%d_%d_%d_' % (solarSystemID, closest_obj_id, stationID, hangarID), 'sort_key' : hangarID, 'rel' : 'hangar', 'class' : 'hangar-row' }, 'state' : 'closed' }) return HttpResponse(json.dumps(jstree_data))
def get_systems_data(request): divisions = extract_divisions(request) show_in_space = json.loads(request.GET.get('space', 'true')) show_in_stations = json.loads(request.GET.get('stations', 'true')) where = [] if not show_in_space: where.append('"stationID" < %d' % constants.MAX_STATION_ID) if not show_in_stations: where.append('"stationID" > %d' % constants.MAX_STATION_ID) if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "solarSystemID", COUNT(*) AS "items", SUM("volume") AS "volume" '\ 'FROM "assets_asset" ' if where: sql += ' WHERE ' + ' AND '.join(where) sql += ' GROUP BY "solarSystemID";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql) else: cursor.execute(sql, divisions) exact_volumes = Setting.get('assets_show_exact_volumes') jstree_data = [] for solarSystemID, items, volume in cursor: try: system = CelestialObject.objects.get(itemID=solarSystemID) except CelestialObject.DoesNotExist: system = CelestialObject(itemID=solarSystemID, itemName=str(solarSystemID), security=0) if system.security > 0.5: color = 'hisec' elif system.security > 0: color = 'lowsec' else: color = 'nullsec' if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data': HTML_ITEM_SPAN % (system.itemName, items, pluralize(items), volume), 'attr': { 'id': '%d_' % solarSystemID, 'rel': 'system', 'sort_key': system.itemName.lower(), 'class': 'system-%s-row' % color }, 'state': 'closed' }) cursor.close() return HttpResponse(json.dumps(jstree_data))
def get_stations_data(request, solarSystemID, closest_obj_id): solarSystemID = int(solarSystemID) closest_obj_id = int(closest_obj_id) divisions = extract_divisions(request) show_in_space = json.loads(request.GET.get('space', 'true')) show_in_stations = json.loads(request.GET.get('stations', 'true')) where = [] if not show_in_space: where.append('"stationID" < %d' % constants.MAX_STATION_ID) if not show_in_stations: where.append('"stationID" > %d' % constants.MAX_STATION_ID) if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "stationID", MAX("name"), MAX("flag"), COUNT(*), SUM("volume") '\ 'FROM "assets_asset" '\ 'WHERE "solarSystemID"=%s AND "closest_object_id"=%s ' if where: sql += ' AND ' + ' AND '.join(where) sql += ' GROUP BY "stationID";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql, [solarSystemID, closest_obj_id]) else: cursor.execute(sql, [solarSystemID, closest_obj_id] + list(divisions)) exact_volumes = Setting.get('assets_show_exact_volumes') jstree_data = [] for stationID, item_name, flag, items, volume in cursor: if stationID < constants.MAX_STATION_ID: # it's a real station try: name = CelestialObject.objects.get(itemID=stationID).itemName except CelestialObject.DoesNotExist: name = str(stationID) icon = 'station' else: # it is an inspace anchorable array type_name = Type.objects.get(typeID=flag).typeName name = type_name if item_name and type_name != item_name: name += ' "%s"' % item_name if constants.CONTROL_TOWERS.has_key(flag): icon = 'pos' else: icon = 'array' if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data': HTML_ITEM_SPAN % (name, items, pluralize(items), volume), 'attr': { 'id': '%d_%d_%d_' % (solarSystemID, closest_obj_id, stationID), 'sort_key': stationID, 'rel': icon, 'class': '%s-row' % icon }, 'state': 'closed' }) cursor.close() return HttpResponse(json.dumps(jstree_data))
def get_celestial_objects_data(request, solarSystemID): solarSystemID = int(solarSystemID) divisions = extract_divisions(request) show_in_space = json.loads(request.GET.get('space', 'true')) show_in_stations = json.loads(request.GET.get('stations', 'true')) where = [] if not show_in_space: where.append('"stationID" < %d' % constants.MAX_STATION_ID) if not show_in_stations: where.append('"stationID" > %d' % constants.MAX_STATION_ID) if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "closest_object_id", COUNT(*), SUM("volume") '\ 'FROM "assets_asset" '\ 'WHERE "solarSystemID"=%s ' if where: sql += ' AND ' + ' AND '.join(where) sql += ' GROUP BY "closest_object_id";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql, [solarSystemID]) else: cursor.execute(sql, [solarSystemID] + list(divisions)) exact_volumes = Setting.get('assets_show_exact_volumes') jstree_data = [] for closest_object_id, items, volume in cursor: if closest_object_id != 0: try: name = CelestialObject.objects.get( itemID=closest_object_id).itemName except CelestialObject.DoesNotExist: name = str(closest_object_id) else: name = 'Stations' if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data': HTML_ITEM_SPAN % (name, items, pluralize(items), volume), 'attr': { 'id': '%d_%d_' % (solarSystemID, closest_object_id), 'sort_key': closest_object_id, 'rel': 'celestial', 'class': 'celestial-row', }, 'state': 'closed' }) cursor.close() return HttpResponse(json.dumps(jstree_data))
def get_stations_data(request, solarSystemID, closest_obj_id): solarSystemID = int(solarSystemID) closest_obj_id = int(closest_obj_id) divisions = extract_divisions(request) show_in_space = json.loads(request.GET.get('space', 'true')) show_in_stations = json.loads(request.GET.get('stations', 'true')) where = [] if not show_in_space: where.append('"stationID" < %d' % constants.MAX_STATION_ID) if not show_in_stations: where.append('"stationID" > %d' % constants.MAX_STATION_ID) if divisions is not None: where.append('"hangarID" IN (%s)' % ', '.join(['%s'] * len(divisions))) sql = 'SELECT "stationID", MAX("name"), MAX("flag"), COUNT(*), SUM("volume") '\ 'FROM "assets_asset" '\ 'WHERE "solarSystemID"=%s AND "closest_object_id"=%s ' if where: sql += ' AND ' + ' AND '.join(where) sql += ' GROUP BY "stationID";' sql = db.fix_mysql_quotes(sql) cursor = connection.cursor() #@UndefinedVariable if divisions is None: cursor.execute(sql, [solarSystemID, closest_obj_id]) else: cursor.execute(sql, [solarSystemID, closest_obj_id] + list(divisions)) exact_volumes = Setting.get('assets_show_exact_volumes') jstree_data = [] for stationID, item_name, flag, items, volume in cursor: if stationID < constants.MAX_STATION_ID: # it's a real station try: name = CelestialObject.objects.get(itemID=stationID).itemName except CelestialObject.DoesNotExist: name = str(stationID) icon = 'station' else: # it is an inspace anchorable array type_name = Type.objects.get(typeID=flag).typeName name = type_name if item_name and type_name != item_name: name += ' "%s"' % item_name if constants.CONTROL_TOWERS.has_key(flag): icon = 'pos' else: icon = 'array' if exact_volumes: volume = print_float(volume) else: volume = round_quantity(volume) jstree_data.append({ 'data' : HTML_ITEM_SPAN % (name, items, pluralize(items), volume), 'attr' : { 'id' : '%d_%d_%d_' % (solarSystemID, closest_obj_id, stationID), 'sort_key' : stationID, 'rel' : icon, 'class' : '%s-row' % icon }, 'state' : 'closed' }) cursor.close() return HttpResponse(json.dumps(jstree_data))