def paste_view(request, key): try: paste = Paste.objects.get(Q(expires__isnull=True) | Q(expires__gt=datetime.now()), key=key) if paste.password != None: # Check session for a verification if "paste_" + key not in request.session: try: password = sha256( paste.salt + request.POST.get("password")).hexdigest() if password == paste.password: request.session['paste_' + key] = True else: request.session['alert_type'] = "danger" request.session[ 'alert_message'] = "Incorrect Password." return render_page("capritools2/paste_password.html", {}, request) except Exception: return render_page("capritools2/paste_password.html", {}, request) return render_page("capritools2/paste_view.html", {'paste': paste}, request) except Exception: request.session['alert_type'] = "danger" request.session[ 'alert_message'] = "The paste you were looking for does not exist." return redirect("paste")
def quickmath_implants(request): # Check the cache # if "quickmath_implants" in cache: # return render_page( # "capritools2/implants.html", # { # 'sets': cache.get("quickmath_implants") # }, # request # ) # Get the omega implants to identify the sets omegas = Item.objects.filter( name__iendswith="Omega", name__icontains="-grade", group_id=300 ).order_by( 'name' ).all() # Build set objects from the omega implants order = { "high": 1, "mid": 2, "low": 3 } sets = [] pattern = re.compile(r"(\w+)-grade (\w+) omega") for omega in omegas: m = pattern.search(omega.name.lower()) sets.append({ "name": "%s-Grade %s Set" % (m.group(1).title(), m.group(2).title()), "implants": [ Item.objects.get(name__istartswith=m.group(1), name__icontains=m.group(2), name__iendswith="Alpha", group_id=300), Item.objects.get(name__istartswith=m.group(1), name__icontains=m.group(2), name__iendswith="Beta", group_id=300), Item.objects.get(name__istartswith=m.group(1), name__icontains=m.group(2), name__iendswith="Gamma", group_id=300), Item.objects.get(name__istartswith=m.group(1), name__icontains=m.group(2), name__iendswith="Delta", group_id=300), Item.objects.get(name__istartswith=m.group(1), name__icontains=m.group(2), name__iendswith="Epsilon", group_id=300), Item.objects.get(name__istartswith=m.group(1), name__icontains=m.group(2), name__iendswith="Omega", group_id=300) ], 'total': float(Item.objects.filter(name__istartswith=m.group(1), name__icontains=m.group(2), group_id=300).aggregate(total=Sum('sell'))['total']), 'order': order[m.group(1)] }) # Order the sets correctly sets = sorted(sets, key=lambda x: x['order']) # Cache the results #cache.set('quickmath_implants', sets, 3600 * 12) return render_page( "capritools2/implants.html", { 'sets': sets }, request )
def fleet_scan_view(request, key): try: fleet = FleetScan.objects.get(key=key) supers = [659, 30] capitals = [485, 547, 883, 1538] + supers return render_page( "capritools2/fleet_scan_view.html", { 'fleet': fleet, 'ship_count': Item.objects.filter(fleetMembers__scan=fleet).count(), 'ships': Item.objects.filter(fleetMembers__scan=fleet).annotate( ships=Count('fleetMembers')).order_by('-ships').all(), 'sub_count': fleet.members.filter(ship__group__category_id=6).exclude( ship__group_id__in=capitals).count(), 'subs': Group.objects.filter( items__fleetMembers__scan=fleet, category_id=6).exclude(id__in=capitals).annotate( ships=Count('items')).order_by('-ships').all(), 'cap_count': fleet.members.filter(ship__group__category_id=6, ship__group_id__in=capitals).count(), 'caps': Group.objects.filter( items__fleetMembers__scan=fleet, category_id=6, id__in=capitals).annotate( ships=Count('items')).order_by('-ships').all(), 'alliances': Alliance.objects.filter(fleetMembers__scan=fleet).annotate( members=Count('fleetMembers')).order_by('-members').all(), 'corps': Corporation.objects.filter(fleetMembers__scan=fleet).annotate( members=Count('fleetMembers')).order_by('-members').all(), 'systems': System.objects.filter(fleetMembers__scan=fleet).annotate( members=Count('fleetMembers')).order_by('-members').all() }, request) except Exception: request.session['alert_type'] = "danger" request.session['alert_message'] = "Fleet scan %s doesn't exist." % key return redirect("fleet")
def localscan_view(request, key): try: scan = LocalScan.objects.get(key=key) except ObjectDoesNotExist: request.session['alert_type'] = "danger" request.session['alert_message'] = "The Local Scan you were looking for does not exist." return redirect("localscan") alliances = Alliance.objects.filter( localChars__scan=scan ).prefetch_related( 'localChars' ).annotate( item_count=Count('localChars') ).order_by( '-item_count' ).all() for i, alliance in enumerate(alliances): alliance.style = ['info', 'success', 'warning', 'danger'][i % 4] alliance.width = (float(100) / scan.characters.count()) * alliance.item_count corps = Corporation.objects.filter( localChars__scan=scan ).prefetch_related( 'localChars' ).annotate( item_count=Count('localChars') ).order_by( '-item_count' ).all() for i, corp in enumerate(corps): corp.style = ['info', 'success', 'warning', 'danger'][i % 4] corp.width = (float(100) / scan.characters.count()) * corp.item_count data = { 'scan': scan, 'alliances': alliances, 'corps': corps } return render_page( "capritools2/localscan_view.html", data, request )
def account_scans(request): return render_page( "capritools2/account_scans.html", { 'dscans': Dscan.objects.filter(user=request.user).order_by('-added').all(), 'localscans': LocalScan.objects.filter(user=request.user).order_by('-added').annotate( chars=Count('characters') ).all(), 'pastes': Paste.objects.filter(user=request.user).order_by('-added'), 'fleetscans': FleetScan.objects.filter(user=request.user).order_by('-added'), 'livefleets': Fleet.objects.filter(user=request.user).order_by('-added'), }, request )
def quickmath_moongoo(request): items = [ 16650, 16651, 16652, 16653, # R64 16649, 16648, 16647, 16646, # R32 16643, 16644, 16642, 16641, # R16 16640, 16639, 16638, 16637, # R8 16634, 16635, 16633, 16636 # R4 ] minerals = [] db_items = Item.objects.filter(id__in=items).order_by('-id').all() for i, item in enumerate(db_items): minerals.append({ 'id': item.id, 'name': item.name, 'class': 2 ** (((19 - i) / 4) + 2), 'sell': float(item.sell), 'buy': float(item.buy) }) for tower in towers: tower['sell'] = float(Item.objects.get(id=tower['id']).sell) blocks = [] for block in Item.objects.filter(id__in=[4247, 4312, 4246, 4051]).all(): blocks.append({ 'id': block.id, 'name': block.name, 'sell': float(block.sell), 'buy': float(block.buy) }) return render_page( "capritools2/moongoo.html", { 'minerals': json.dumps(minerals), 'towers': json.dumps(towers), 'blocks': json.dumps(blocks) }, request )
def fleet_home(request): return render_page("capritools2/fleets.html", {}, request)
def fleet_live_view(request, key): fleet = Fleet.objects.get(key=key) return render_page("capritools2/fleet_live_view.html", {"fleet": fleet}, request)
def dscan_view(request, key): try: scan = Dscan.objects.get(key=key) except ObjectDoesNotExist: request.session['alert_type'] = "danger" request.session[ 'alert_message'] = "The Dscan you were looking for does not exist." return redirect("dscan") supers = [659, 30] capitals = [485, 547, 883, 1538] + supers info = scan.scanObjects.filter(item__group__category_id=6).exclude( item__group_id__in=supers).annotate( items_mass=Sum('item__mass'), items_volume=Sum('item__volume')).aggregate( total_mass=Sum('items_mass'), total_volume=Sum('items_volume')) # Calculate bridge usage if info['total_mass'] != None: info['titan_topes'] = info['total_mass'] * 1500 * 0.000000001 * 0.6 * 6 info['blops_topes'] = info['total_mass'] * 450 * 0.000000135 * 0.6 * 8 return render_page( "capritools2/dscan_view.html", { 'scan': scan, 'info': info, 'highlights': None, 'ship_count': scan.scanObjects.filter(item__group__category_id=6).count(), 'ships': Item.objects.filter( group__category_id=6, scanObjects__dscan=scan).annotate( ships=Count('scanObjects')).order_by('-ships'), 'sub_count': scan.scanObjects.filter(item__group__category_id=6).exclude( item__group_id__in=capitals).count(), 'subs': Group.objects.filter( category_id=6, items__scanObjects__dscan=scan).exclude( items__group_id__in=capitals).annotate( ships=Count('items')).order_by('-ships'), 'cap_count': scan.scanObjects.filter(item__group__category_id=6, item__group_id__in=capitals).count(), 'caps': Group.objects.filter(category_id=6, items__scanObjects__dscan=scan, items__group_id__in=capitals).annotate( ships=Count('items')).order_by('-ships'), 'misc': Group.objects.filter( items__scanObjects__dscan=scan, id__in=settings.DSCAN_MISC_GROUPS).annotate( item_count=Count('items')).order_by('-item_count'), 'structures': Group.objects.filter(items__scanObjects__dscan=scan).filter( Q(category_id__in=[65]) | Q(id__in=[365]) | Q()).annotate( item_count=Count('items')).order_by('-item_count'), }, request)
def dscan_home(request): return render_page("capritools2/dscan.html", {}, request)
def quickmath_home(request): return render_page( "capritools2/quickmath.html", {}, request )
def paste_home(request): return render_page("capritools2/paste.html", {}, request)
def home(request): return render_page( "capritools2/home.html", {}, request )