예제 #1
0
파일: views.py 프로젝트: ixof/allianceauth
def click_fatlink_view(request, token, hash, fatname):
    try:
        fatlink = Fatlink.objects.filter(hash=hash)[0]

        if (timezone.now() - fatlink.fatdatetime) < datetime.timedelta(seconds=(fatlink.duration * 60)):

            character = EveManager.get_character_by_id(token.character_id)

            if character:
                # get data
                c = token.get_esi_client(Location='v1', Universe='v2')
                location = c.Location.get_characters_character_id_location(character_id=token.character_id).result()
                ship = c.Location.get_characters_character_id_ship(character_id=token.character_id).result()
                location['solar_system_name'] = \
                    c.Universe.get_universe_systems_system_id(system_id=location['solar_system_id']).result()[
                        'name']
                if location['station_id']:
                    location['station_name'] = \
                        c.Universe.get_universe_stations_station_id(station_id=location['station_id']).result()['name']
                elif location['structure_id']:
                    c = token.get_esi_client(Universe='v1')
                    location['station_name'] = \
                        c.Universe.get_universe_structures_structure_id(structure_id=location['structure_id']).result()[
                            'name']
                else:
                    location['station_name'] = "No Station"
                ship['ship_type_name'] = EveManager.get_itemtype(ship['ship_type_id']).name

                fat = Fat()
                fat.system = location['solar_system_name']
                fat.station = location['station_name']
                fat.shiptype = ship['ship_type_name']
                fat.fatlink = fatlink
                fat.character = character
                fat.user = character.user
                try:
                    fat.full_clean()
                    fat.save()
                    messages.success(request, _('Fleet participation registered.'))
                except ValidationError as e:
                    err_messages = []
                    for errorname, message in e.message_dict.items():
                        err_messages.append(message[0].decode())
                    messages.error(request, ' '.join(err_messages))
            else:
                context = {'character_id': token.character_id,
                           'character_name': token.character_name}
                return render(request, 'fleetactivitytracking/characternotexisting.html', context=context)
        else:
            messages.error(request, _('FAT link has expired.'))
    except (ObjectDoesNotExist, KeyError):
        logger.exception("Failed to process FAT link.")
        messages.error(request, _('Invalid FAT link.'))
    return redirect('auth_fatlink_view')
예제 #2
0
def srp_request_view(request, fleet_srp):
    logger.debug("srp_request_view called by user %s for fleet srp code %s" % (request.user, fleet_srp))
    completed = False
    no_srp_code = False

    if SrpFleetMain.objects.filter(fleet_srp_code=fleet_srp).exists() is False:
        no_srp_code = True
        logger.error("Unable to locate SRP Fleet using code %s for user %s" % (fleet_srp, request.user))

    if request.method == 'POST':
        form = SrpFleetUserRequestForm(request.POST)
        logger.debug("Request type POST contains form valid: %s" % form.is_valid())

        if form.is_valid():
            authinfo = AuthServicesInfo.objects.get(user=request.user)
            character = EveManager.get_character_by_id(authinfo.main_char_id)
            srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
            post_time = timezone.now()

            srp_request = SrpUserRequest()
            srp_request.killboard_link = form.cleaned_data['killboard_link']
            srp_request.additional_info = form.cleaned_data['additional_info']
            srp_request.character = character
            srp_request.srp_fleet_main = srp_fleet_main

            try:
                srp_kill_link = srpManager.get_kill_id(srp_request.killboard_link)
                (ship_type_id, ship_value) = srpManager.get_kill_data(srp_kill_link)
            except ValueError:
                logger.debug("User %s Submitted Invalid Killmail Link %s or server could not be reached" % (
                    request.user, srp_request.killboard_link))
                # THIS SHOULD BE IN FORM VALIDATION
                messages.error(request,
                               _("Your SRP request Killmail link is invalid. Please make sure you are using zKillboard."))
                return redirect("auth_srp_management_view")
            srp_ship_name = EveManager.get_itemtype(ship_type_id).name
            srp_request.srp_ship_name = srp_ship_name
            kb_total_loss = ship_value
            srp_request.kb_total_loss = kb_total_loss
            srp_request.post_time = post_time
            srp_request.save()
            completed = True
            logger.info("Created SRP Request on behalf of user %s for fleet name %s" % (
                request.user, srp_fleet_main.fleet_name))
            messages.success(request, _('Submitted SRP request for your %(ship)s.') % {"ship": srp_ship_name})

    else:
        logger.debug("Returning blank SrpFleetUserRequestForm")
        form = SrpFleetUserRequestForm()

    render_items = {'form': form, "completed": completed, "no_srp_code": no_srp_code}

    return render(request, 'registered/srpfleetrequest.html', context=render_items)
예제 #3
0
def srp_request_view(request, fleet_srp):
    logger.debug("srp_request_view called by user %s for fleet srp code %s" %
                 (request.user, fleet_srp))

    if SrpFleetMain.objects.filter(fleet_srp_code=fleet_srp).exists() is False:
        logger.error("Unable to locate SRP Fleet using code %s for user %s" %
                     (fleet_srp, request.user))
        messages.error(
            request,
            _('Unable to locate SRP code with ID %(srpfleetid)s') %
            {"srpfleetid": fleet_srp})
        return redirect("auth_srp_management_view")

    if request.method == 'POST':
        form = SrpFleetUserRequestForm(request.POST)
        logger.debug("Request type POST contains form valid: %s" %
                     form.is_valid())

        if form.is_valid():
            if SrpUserRequest.objects.filter(
                    killboard_link=form.cleaned_data['killboard_link']).exists(
                    ):
                messages.error(
                    request, _("This Killboard link has already been posted."))
                return redirect("auth_srp_management_view")

            authinfo = AuthServicesInfo.objects.get(user=request.user)
            character = EveManager.get_character_by_id(authinfo.main_char_id)
            srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
            post_time = timezone.now()

            srp_request = SrpUserRequest()
            srp_request.killboard_link = form.cleaned_data['killboard_link']
            srp_request.additional_info = form.cleaned_data['additional_info']
            srp_request.character = character
            srp_request.srp_fleet_main = srp_fleet_main

            try:
                srp_kill_link = srpManager.get_kill_id(
                    srp_request.killboard_link)
                (ship_type_id, ship_value,
                 victim_name) = srpManager.get_kill_data(srp_kill_link)
            except ValueError:
                logger.debug(
                    "User %s Submitted Invalid Killmail Link %s or server could not be reached"
                    % (request.user, srp_request.killboard_link))
                # THIS SHOULD BE IN FORM VALIDATION
                messages.error(
                    request,
                    _("Your SRP request Killmail link is invalid. Please make sure you are using zKillboard."
                      ))
                return redirect("auth_srp_management_view")

            characters = EveManager.get_characters_by_owner_id(request.user.id)
            for character in characters:
                if character.character_name == victim_name:
                    srp_request.srp_ship_name = EveManager.get_itemtype(
                        ship_type_id).name
                    srp_request.kb_total_loss = ship_value
                    srp_request.post_time = post_time
                    srp_request.save()
                    logger.info(
                        "Created SRP Request on behalf of user %s for fleet name %s"
                        % (request.user, srp_fleet_main.fleet_name))
                    messages.success(
                        request,
                        _('Submitted SRP request for your %(ship)s.') %
                        {"ship": srp_request.srp_ship_name})
                    return redirect("auth_srp_management_view")
                else:
                    continue
            messages.error(
                request,
                _("%(charname)s does not belong to your Auth account. Please add the API key for this character and try again"
                  ) % {"charname": victim_name})
            return redirect("auth_srp_management_view")
    else:
        logger.debug("Returning blank SrpFleetUserRequestForm")
        form = SrpFleetUserRequestForm()

    render_items = {'form': form}

    return render(request,
                  'registered/srpfleetrequest.html',
                  context=render_items)
예제 #4
0
파일: views.py 프로젝트: iAddz/allianceauth
def srp_request_view(request, fleet_srp):
    logger.debug("srp_request_view called by user %s for fleet srp code %s" % (request.user, fleet_srp))

    if SrpFleetMain.objects.filter(fleet_srp_code=fleet_srp).exists() is False:
        logger.error("Unable to locate SRP Fleet using code %s for user %s" % (fleet_srp, request.user))
        messages.error(request, 
                       _('Unable to locate SRP code with ID %(srpfleetid)s') % {"srpfleetid": fleet_srp})
        return redirect("auth_srp_management_view")

    if request.method == 'POST':
        form = SrpFleetUserRequestForm(request.POST)
        logger.debug("Request type POST contains form valid: %s" % form.is_valid())

        if form.is_valid():
            if SrpUserRequest.objects.filter(killboard_link=form.cleaned_data['killboard_link']).exists():
                messages.error(request,
                               _("This Killboard link has already been posted."))
                return redirect("auth_srp_management_view")

            authinfo = AuthServicesInfo.objects.get(user=request.user)
            character = EveManager.get_character_by_id(authinfo.main_char_id)
            srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
            post_time = timezone.now()

            srp_request = SrpUserRequest()
            srp_request.killboard_link = form.cleaned_data['killboard_link']
            srp_request.additional_info = form.cleaned_data['additional_info']
            srp_request.character = character
            srp_request.srp_fleet_main = srp_fleet_main

            try:
                srp_kill_link = srpManager.get_kill_id(srp_request.killboard_link)
                (ship_type_id, ship_value, victim_id) = srpManager.get_kill_data(srp_kill_link)
            except ValueError:
                logger.debug("User %s Submitted Invalid Killmail Link %s or server could not be reached" % (
                    request.user, srp_request.killboard_link))
                # THIS SHOULD BE IN FORM VALIDATION
                messages.error(request,
                               _("Your SRP request Killmail link is invalid. Please make sure you are using zKillboard."))
                return redirect("auth_srp_management_view")

            characters = EveManager.get_characters_by_owner_id(request.user.id)
            for character in characters:
                if character.character_id == str(victim_id):
                    srp_request.srp_ship_name = EveManager.get_itemtype(ship_type_id).name
                    srp_request.kb_total_loss = ship_value
                    srp_request.post_time = post_time
                    srp_request.save()
                    logger.info("Created SRP Request on behalf of user %s for fleet name %s" % (
                        request.user, srp_fleet_main.fleet_name))
                    messages.success(request, _('Submitted SRP request for your %(ship)s.') % {"ship": srp_request.srp_ship_name})
                    return redirect("auth_srp_management_view")
                else:
                    continue
            messages.error(request,
                           _("Character ID %(charid)s does not belong to your Auth account. Please add the API key for this character and try again")
                                % {"charid": victim_id})
            return redirect("auth_srp_management_view")
    else:
        logger.debug("Returning blank SrpFleetUserRequestForm")
        form = SrpFleetUserRequestForm()

    render_items = {'form': form}

    return render(request, 'registered/srpfleetrequest.html', context=render_items)