Esempio n. 1
0
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")
Esempio n. 2
0
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
    )
Esempio n. 3
0
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")
Esempio n. 4
0
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
    )
Esempio n. 5
0
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
    )
Esempio n. 6
0
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
    )
Esempio n. 7
0
def fleet_home(request):
    return render_page("capritools2/fleets.html", {}, request)
Esempio n. 8
0
def fleet_live_view(request, key):
    fleet = Fleet.objects.get(key=key)

    return render_page("capritools2/fleet_live_view.html", {"fleet": fleet},
                       request)
Esempio n. 9
0
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)
Esempio n. 10
0
def dscan_home(request):
    return render_page("capritools2/dscan.html", {}, request)
Esempio n. 11
0
def quickmath_home(request):
    return render_page(
        "capritools2/quickmath.html",
        {},
        request
    )
Esempio n. 12
0
def paste_home(request):
    return render_page("capritools2/paste.html", {}, request)
Esempio n. 13
0
def home(request):
    return render_page(
        "capritools2/home.html",
        {},
        request
    )