Пример #1
0
def generate_contract_requests(
    total_participation,
    transferring_user: GooseUser,
    character_with_profit: Character,
    transfer,
):
    command = (f"Your loot has been sold!\n Please send a contract in-game to "
               f"'{character_with_profit.ingame_name}' for the amount "
               f"of ISK you are owed shown below:\n\n")
    deposit_total = 0
    for user_id, isk in total_participation.items():
        floored_isk = m.floor(isk.amount)
        if user_id != transferring_user.id:
            user = GooseUser.objects.get(id=user_id)
            command = command + f"<@!{user.discord_uid()}> {floored_isk} \n"

            Contract.create(
                user,
                character_with_profit,
                System.objects.first(),
                "requested",
                -floored_isk,
                transfer,
            )

            deposit_total = deposit_total + floored_isk
    return deposit_total, command
Пример #2
0
def create_contract_item_stack(request, pk):
    stack = get_object_or_404(StackedInventoryItem, pk=pk)
    if request.method == "POST":
        form = ItemMoveAllForm(request.POST)
        if form.is_valid():
            if not stack.has_admin(request.gooseuser):
                messages.error(
                    request,
                    f"You do not have permission to move stack {stack}")
                return forbidden(request)
            if stack.quantity() == 0:
                messages.error(
                    request,
                    "You cannot contract an stack which is being or has been sold",
                )
                return forbidden(request)
            system = form.cleaned_data["system"]
            character = form.cleaned_data["character"]

            contract = Contract.create(
                from_user=request.gooseuser,
                to_char=character,
                system=system,
                status="pending",
            )
            for item in stack.items():
                if item.contract:
                    messages.error(
                        request,
                        f"An item ({item}) in the stack is already in a contract, "
                        f"all items in the stack must not be in a contract before you "
                        f"can contract the entire stack. ",
                    )
                    return forbidden(request)
                item.contract = contract
                item.full_clean()
                item.save()
            return HttpResponseRedirect(
                reverse("contracts") + "?status_filter=sent")
    else:
        form = ItemMoveAllForm()
    return render(
        request,
        "contracts/item_move_all.html",
        {
            "form": form,
            "title": f"Contract Individual Stack: {stack}"
        },
    )
Пример #3
0
def create_contract_for_fleet(request, fleet_pk, loc_pk):
    f = get_object_or_404(Fleet, pk=fleet_pk)
    loc = get_object_or_404(ItemLocation, pk=loc_pk)
    if request.method == "POST":
        form = ItemMoveAllForm(request.POST)
        if form.is_valid():
            if not loc.has_admin(request.gooseuser):
                messages.error(
                    request,
                    f"You do not have permission to move items from {loc}")
                return forbidden(request)
            system = form.cleaned_data["system"]
            character = form.cleaned_data["character"]
            items_in_location = InventoryItem.objects.filter(
                contract__isnull=True,
                loot_group__fleet_anom__fleet=f,
                location=loc,
                quantity__gt=0,
                marketorder__isnull=True,
                solditem__isnull=True,
            )
            if items_in_location.count() == 0:
                messages.error(request, "You have no items to contract :'(")
                return forbidden(request)

            contract = Contract.create(
                from_user=request.gooseuser,
                to_char=character,
                system=system,
                status="pending",
            )
            items_in_location.update(contract=contract)
            return HttpResponseRedirect(
                reverse("contracts") + "?status_filter=sent")
    else:
        form = ItemMoveAllForm()
    return render(
        request,
        "contracts/item_move_all.html",
        {
            "form": form,
            "title": f"Contract Your Items From Fleet:{f} {loc}"
        },
    )
Пример #4
0
def create_contract_item(request, pk):
    item = get_object_or_404(InventoryItem, pk=pk)
    if request.method == "POST":
        form = ItemMoveAllForm(request.POST)
        if form.is_valid():
            if not item.has_admin(request.gooseuser):
                messages.error(
                    request, f"You do not have permission to move item {item}")
                return forbidden(request)
            if item.quantity == 0:
                messages.error(
                    request,
                    "You cannot contract an item which is being or has been sold",
                )
                return forbidden(request)
            system = form.cleaned_data["system"]
            character = form.cleaned_data["character"]

            contract = Contract.create(
                from_user=request.gooseuser,
                to_char=character,
                system=system,
                status="pending",
            )
            item.contract = contract
            item.full_clean()
            item.save()
            return HttpResponseRedirect(
                reverse("contracts") + "?status_filter=sent")
    else:
        form = ItemMoveAllForm()
    return render(
        request,
        "contracts/item_move_all.html",
        {
            "form": form,
            "title": f"Contract Individual Item: {item}"
        },
    )
Пример #5
0
def item_move_all(request):
    if request.method == "POST":
        form = ItemMoveAllForm(request.POST)
        if form.is_valid():
            system = form.cleaned_data["system"]
            character = form.cleaned_data["character"]
            all_your_items = InventoryItem.objects.filter(
                contract__isnull=True,
                location__character_location__character__user=request.
                gooseuser,
                quantity__gt=0,
                marketorder__isnull=True,
                solditem__isnull=True,
            )
            if all_your_items.count() == 0:
                messages.error(request, "You have no items to contract :'(")
                return forbidden(request)

            contract = Contract.create(
                from_user=request.gooseuser,
                to_char=character,
                system=system,
                status="pending",
            )
            all_your_items.update(contract=contract)
            return HttpResponseRedirect(
                reverse("contracts") + "?status_filter=sent")
    else:
        form = ItemMoveAllForm()

    return render(
        request,
        "contracts/item_move_all.html",
        {
            "form": form,
            "title": "Contract All Your Items"
        },
    )
Пример #6
0
def create_contract_for_loc(request, pk):
    loc = get_object_or_404(ItemLocation, pk=pk)
    if request.method == "POST":
        form = ItemMoveAllForm(request.POST)
        if form.is_valid():
            if not loc.has_admin(request.user):
                messages.error(
                    request, f"You do not have permission to move items from {loc}"
                )
                return forbidden(request)
            system = form.cleaned_data["system"]
            character = form.cleaned_data["character"]
            items_in_location = InventoryItem.objects.filter(
                contract__isnull=True,
                location=loc,
                quantity__gt=0,
                marketorder__isnull=True,
                solditem__isnull=True,
            )
            if items_in_location.count() == 0:
                messages.error(request, "You have no items to contract :'(")
                return forbidden(request)

            contract = Contract(
                from_user=request.user,
                to_char=character,
                system=system,
                created=timezone.now(),
                status="pending",
            )
            contract.full_clean()
            contract.save()
            items_in_location.update(contract=contract)
            return HttpResponseRedirect(reverse("contracts"))
    else:
        form = ItemMoveAllForm()
    return render(
        request,
        "contracts/item_move_all.html",
        {"form": form, "title": f"Contract All Your Items In {loc}"},
    )