Example #1
0
def create_esi_fatlink(request: WSGIRequest, ) -> HttpResponseRedirect:
    """
    Create ESI fat link
    :param request:
    :type request:
    :return:
    :rtype:
    """

    fatlink_form = AFatEsiFatForm(request.POST)

    if fatlink_form.is_valid():
        fatlink_hash = get_hash_on_save()

        fatlink_type = None
        if fatlink_form.cleaned_data["type_esi"]:
            fatlink_type_from_form = fatlink_form.cleaned_data["type_esi"]
            fatlink_type = fatlink_type_from_form.pk

        request.session["fatlink_form__name"] = fatlink_form.cleaned_data[
            "name_esi"]
        request.session["fatlink_form__type"] = fatlink_type

        return redirect("afat:fatlinks_create_esi_fatlink_callback",
                        fatlink_hash=fatlink_hash)

    messages.error(
        request,
        mark_safe(
            _("<h4>Error!</h4>"
              "<p>Something went wrong when attempting to "
              "submit your ESI FAT Link.</p>")),
    )

    return redirect("afat:fatlinks_add_fatlink")
    def test_helper_get_esi_fleet_information_by_user(self):
        # given
        fatlink_hash_fleet_1 = get_hash_on_save()
        fatlink_1 = AFatLink.objects.create(
            afattime=timezone.now(),
            fleet="April Fleet 1",
            creator=self.user_with_add_fatlink,
            character=self.character_1001,
            hash=fatlink_hash_fleet_1,
            is_esilink=True,
            is_registered_on_esi=True,
            esi_fleet_id="3726458287",
        )

        fatlink_hash_fleet_2 = get_hash_on_save()
        fatlink_2 = AFatLink.objects.create(
            afattime=timezone.now(),
            fleet="April Fleet 2",
            creator=self.user_with_add_fatlink,
            character=self.character_1101,
            hash=fatlink_hash_fleet_2,
            is_esilink=True,
            is_registered_on_esi=True,
            esi_fleet_id="372645827",
        )

        self.client.force_login(self.user_with_add_fatlink)

        # when
        response = get_esi_fleet_information_by_user(
            user=self.user_with_add_fatlink)

        # then
        self.assertDictEqual(
            response,
            {
                "has_open_esi_fleets": True,
                "open_esi_fleets_list": [fatlink_1, fatlink_2],
            },
        )
Example #3
0
    def test_ajax_get_fatlinks_by_year(self):
        # given
        # self.maxDiff = None
        self.client.force_login(self.user_with_basic_access)

        fatlink_hash = get_hash_on_save()
        fatlink_type_cta = AFatLinkType.objects.create(name="CTA")
        fatlink_created = AFatLink.objects.create(
            fleet="April Fleet 1",
            creator=self.user_with_manage_afat,
            character=self.character_1001,
            hash=fatlink_hash,
            is_esilink=True,
            is_registered_on_esi=True,
            esi_fleet_id=3726458287,
            link_type=fatlink_type_cta,
            afattime="2021-11-05T13:19:49.676Z",
        )

        ClickAFatDuration.objects.create(fleet=fatlink_created, duration=120)

        # when
        fatlink = (AFatLink.objects.select_related_default().
                   annotate_afats_count().get(hash=fatlink_hash))

        url_with_year = reverse(
            "afat:fatlinks_ajax_get_fatlinks_by_year",
            kwargs={"year": 2021},
        )
        result = self.client.get(url_with_year)

        # then
        self.assertEqual(result.status_code, 200)

        creator_main_character = get_main_character_from_user(
            user=fatlink.creator)
        fleet_time = fatlink.afattime
        fleet_time_timestamp = fleet_time.timestamp()
        esi_marker = (
            '<span class="label label-default afat-label afat-label-via-esi '
            'afat-label-active-esi-fleet">via ESI</span>')

        self.assertJSONEqual(
            str(result.content, encoding="utf8"),
            [{
                "pk": fatlink.pk,
                "fleet_name": fatlink.fleet + esi_marker,
                "creator_name": creator_main_character,
                "fleet_type": "CTA",
                "fleet_time": {
                    "time": "2021-11-05T13:19:49.676Z",
                    "timestamp": fleet_time_timestamp,
                },
                "fats_number": 0,
                "hash": fatlink.hash,
                "is_esilink": True,
                "esi_fleet_id": fatlink.esi_fleet_id,
                "is_registered_on_esi": True,
                # "actions": '<a class="btn btn-afat-action btn-info btn-sm" href="/fleet-activity-tracking/fatlink/ncOsHjnjmYZd9k6hI4us8QShRlqJ17/details/"><span class="fas fa-eye"></span></a><a class="btn btn-afat-action btn-danger btn-sm" data-toggle="modal" data-target="#deleteFatLinkModal" data-url="/fleet-activity-tracking/fatlink/ncOsHjnjmYZd9k6hI4us8QShRlqJ17/delete/" data-confirm-text="Delete"data-body-text="<p>Are you sure you want to delete FAT link M2-XFE Keepstar Kill?</p>"><span class="glyphicon glyphicon-trash"></span></a>',
                "actions": "",
                "via_esi": "Yes",
            }],
        )
    def test_helper_convert_logs_to_dict(self):
        # given
        self.client.force_login(self.user_with_manage_afat)
        request = self.factory.get(reverse("afat:dashboard"))
        request.user = self.user_with_manage_afat

        fatlink_hash = get_hash_on_save()
        fatlink_type_cta = AFatLinkType.objects.create(name="CTA")
        fatlink_created = AFatLink.objects.create(
            afattime=timezone.now(),
            fleet="April Fleet 1",
            creator=self.user_with_manage_afat,
            character=self.character_1001,
            hash=fatlink_hash,
            is_esilink=True,
            is_registered_on_esi=True,
            esi_fleet_id="3726458287",
            link_type=fatlink_type_cta,
        )

        duration = ClickAFatDuration.objects.create(fleet=fatlink_created,
                                                    duration=120)

        fleet_type = f" (Fleet Type: {fatlink_created.link_type.name})"

        write_log(
            request=request,
            log_event=AFatLog.Event.CREATE_FATLINK,
            log_text=(
                f'FAT link with name "{fatlink_created.fleet}"{fleet_type} and '
                f"a duration of {duration.duration} minutes was created"),
            fatlink_hash=fatlink_created.hash,
        )

        # when
        log = AFatLog.objects.get(fatlink_hash=fatlink_hash)
        log_time = log.log_time
        log_time_timestamp = log_time.timestamp()
        user_main_character = get_main_character_from_user(user=log.user)
        fatlink_link = reverse("afat:fatlinks_details_fatlink",
                               args=[log.fatlink_hash])
        fatlink_html = f'<a href="{fatlink_link}">{log.fatlink_hash}</a>'

        result = convert_logs_to_dict(log=log, fatlink_exists=True)

        # then
        self.assertDictEqual(
            result,
            {
                "log_time": {
                    "time": log_time,
                    "timestamp": log_time_timestamp
                },
                "log_event": AFatLog.Event(log.log_event).label,
                "user": user_main_character,
                "fatlink": {
                    "html": fatlink_html,
                    "hash": log.fatlink_hash
                },
                "description": log.log_text,
            },
        )
    def test_helper_convert_fats_to_dict(self):
        # given
        self.client.force_login(self.user_with_manage_afat)
        request = self.factory.get(reverse("afat:dashboard"))
        request.user = self.user_with_manage_afat

        fatlink_hash = get_hash_on_save()
        fatlink_type_cta = AFatLinkType.objects.create(name="CTA")
        fatlink_created = AFatLink.objects.create(
            afattime=timezone.now(),
            fleet="April Fleet 1",
            creator=self.user_with_manage_afat,
            character=self.character_1001,
            hash=fatlink_hash,
            is_esilink=True,
            is_registered_on_esi=True,
            esi_fleet_id="3726458287",
            link_type=fatlink_type_cta,
        )
        fat = AFat.objects.create(character=self.character_1101,
                                  afatlink=fatlink_created,
                                  shiptype="Omen")

        # when
        result = convert_fats_to_dict(request=request, fat=fat)

        esi_marker = (
            '<span class="label label-default afat-label afat-label-via-esi '
            'afat-label-active-esi-fleet">via ESI</span>')
        fleet_time = fat.afatlink.afattime
        fleet_time_timestamp = fleet_time.timestamp()

        button_delete_fat = reverse("afat:fatlinks_delete_fat",
                                    args=[fat.afatlink.hash, fat.id])
        button_delete_text = "Delete"
        modal_body_text = (
            "<p>Are you sure you want to remove "
            f"{fat.character.character_name} from this FAT link?</p>")

        # then
        self.assertDictEqual(
            result,
            {
                "system":
                fat.system,
                "ship_type":
                fat.shiptype,
                "character_name":
                fat.character.character_name,
                "fleet_name":
                fat.afatlink.fleet + esi_marker,
                "fleet_time": {
                    "time": fleet_time,
                    "timestamp": fleet_time_timestamp
                },
                "fleet_type":
                "CTA",
                "via_esi":
                "Yes",
                "actions": ('<a class="btn btn-danger btn-sm" '
                            'data-toggle="modal" '
                            'data-target="#deleteFatModal" '
                            f'data-url="{button_delete_fat}" '
                            f'data-confirm-text="{button_delete_text}"'
                            f'data-body-text="{modal_body_text}">'
                            '<span class="glyphicon glyphicon-trash"></span>'
                            "</a>"),
            },
        )
    def test_helper_convert_fatlinks_to_dict(self):
        # given
        self.client.force_login(self.user_with_manage_afat)
        request = self.factory.get(reverse("afat:dashboard"))
        request.user = self.user_with_manage_afat

        fatlink_hash_fleet_1 = get_hash_on_save()
        fatlink_1_created = AFatLink.objects.create(
            afattime=timezone.now(),
            fleet="April Fleet 1",
            creator=self.user_with_manage_afat,
            character=self.character_1001,
            hash=fatlink_hash_fleet_1,
            is_esilink=True,
            is_registered_on_esi=True,
            esi_fleet_id="3726458287",
        )
        AFat.objects.create(character=self.character_1101,
                            afatlink=fatlink_1_created,
                            shiptype="Omen")

        fatlink_type_cta = AFatLinkType.objects.create(name="CTA")
        fatlink_hash_fleet_2 = get_hash_on_save()
        fatlink_2_created = AFatLink.objects.create(
            afattime=timezone.now(),
            fleet="April Fleet 2",
            creator=self.user_with_add_fatlink,
            character=self.character_1101,
            hash=fatlink_hash_fleet_2,
            link_type=fatlink_type_cta,
        )
        AFat.objects.create(character=self.character_1001,
                            afatlink=fatlink_2_created,
                            shiptype="Omen")

        # when
        fatlink_1 = (AFatLink.objects.select_related_default().
                     annotate_afats_count().get(hash=fatlink_hash_fleet_1))
        close_esi_tracking_url = reverse("afat:fatlinks_close_esi_fatlink",
                                         args=[fatlink_1.hash])
        edit_url_1 = reverse("afat:fatlinks_details_fatlink",
                             args=[fatlink_1.hash])
        delete_url_1 = reverse("afat:fatlinks_delete_fatlink",
                               args=[fatlink_1.hash])

        fatlink_2 = (AFatLink.objects.select_related_default().
                     annotate_afats_count().get(hash=fatlink_hash_fleet_2))
        edit_url_2 = reverse("afat:fatlinks_details_fatlink",
                             args=[fatlink_2.hash])
        delete_url_2 = reverse("afat:fatlinks_delete_fatlink",
                               args=[fatlink_2.hash])

        result_1 = convert_fatlinks_to_dict(request=request, fatlink=fatlink_1)
        result_2 = convert_fatlinks_to_dict(request=request, fatlink=fatlink_2)

        # then
        fleet_time_1 = fatlink_1.afattime
        fleet_time_timestamp_1 = fleet_time_1.timestamp()
        creator_main_character_1 = get_main_character_from_user(
            user=fatlink_1.creator)
        self.assertDictEqual(
            result_1,
            {
                "pk":
                fatlink_1.pk,
                "fleet_name": ('April Fleet 1<span class="label label-default '
                               "afat-label afat-label-via-esi "
                               'afat-label-active-esi-fleet">via ESI</span>'),
                "creator_name":
                creator_main_character_1,
                "fleet_type":
                "",
                "fleet_time": {
                    "time": fleet_time_1,
                    "timestamp": fleet_time_timestamp_1,
                },
                "fats_number":
                fatlink_1.afats_count,
                "hash":
                fatlink_1.hash,
                "is_esilink":
                True,
                "esi_fleet_id":
                3726458287,
                "is_registered_on_esi":
                True,
                "actions":
                (f'<a class="btn btn-afat-action btn-primary btn-sm" '
                 f'style="margin-left: 0.25rem;" title="Clicking here will '
                 f"stop the automatic tracking through ESI for this fleet "
                 f'and close the associated FAT link." data-toggle="modal" '
                 f'data-target="#cancelEsiFleetModal" '
                 f'data-url="{close_esi_tracking_url}" '
                 f'data-body-text="<p>Are you sure you want to close ESI '
                 f'fleet with ID 3726458287 from Bruce Wayne?</p>" '
                 f'data-confirm-text="Stop Tracking"><i class="fas '
                 f'fa-times"></i></a><a class="btn btn-afat-action btn-info '
                 f'btn-sm" href="{edit_url_1}"><span class="fas '
                 f'fa-eye"></span></a><a class="btn btn-afat-action '
                 f'btn-danger btn-sm" data-toggle="modal" '
                 f'data-target="#deleteFatLinkModal" '
                 f'data-url="{delete_url_1}" '
                 f'data-confirm-text="Delete"data-body-text="<p>Are you '
                 f"sure you want to delete FAT link April Fleet "
                 f'1?</p>"><span class="glyphicon '
                 f'glyphicon-trash"></span></a>'),
                "via_esi":
                "Yes",
            },
        )

        fleet_time_2 = fatlink_2.afattime
        fleet_time_timestamp_2 = fleet_time_2.timestamp()
        creator_main_character_2 = get_main_character_from_user(
            user=fatlink_2.creator)
        self.assertDictEqual(
            result_2,
            {
                "pk":
                fatlink_2.pk,
                "fleet_name":
                "April Fleet 2",
                "creator_name":
                creator_main_character_2,
                "fleet_type":
                "CTA",
                "fleet_time": {
                    "time": fleet_time_2,
                    "timestamp": fleet_time_timestamp_2,
                },
                "fats_number":
                fatlink_2.afats_count,
                "hash":
                fatlink_2.hash,
                "is_esilink":
                False,
                "esi_fleet_id":
                None,
                "is_registered_on_esi":
                False,
                "actions":
                (f'<a class="btn btn-afat-action btn-info btn-sm" '
                 f'href="{edit_url_2}"><span class="fas '
                 f'fa-eye"></span></a><a class="btn btn-afat-action '
                 f'btn-danger btn-sm" data-toggle="modal" '
                 f'data-target="#deleteFatLinkModal" '
                 f'data-url="{delete_url_2}" '
                 f'data-confirm-text="Delete"data-body-text="<p>Are you '
                 f"sure you want to delete FAT link April Fleet "
                 f'2?</p>"><span class="glyphicon '
                 f'glyphicon-trash"></span></a>'),
                "via_esi":
                "No",
            },
        )
Example #7
0
def create_clickable_fatlink(request: WSGIRequest, ) -> HttpResponseRedirect:
    """
    Create clickable fat link
    :param request:
    :type request:
    :return:
    :rtype:
    """

    if request.method == "POST":
        form = AFatClickFatForm(request.POST)

        if form.is_valid():
            fatlink_hash = get_hash_on_save()

            fatlink = AFatLink()
            fatlink.fleet = form.cleaned_data["name"]

            if form.cleaned_data["type"] is not None:
                fatlink.link_type = form.cleaned_data["type"]

            fatlink.creator = request.user
            fatlink.hash = fatlink_hash
            fatlink.afattime = timezone.now()
            fatlink.save()

            dur = ClickAFatDuration()
            dur.fleet = AFatLink.objects.get(hash=fatlink_hash)
            dur.duration = form.cleaned_data["duration"]
            dur.save()

            # Writing DB log
            fleet_type = (f" (Fleet Type: {fatlink.link_type.name})"
                          if fatlink.link_type else "")

            write_log(
                request=request,
                log_event=AFatLog.Event.CREATE_FATLINK,
                log_text=
                (f'FAT link with name "{form.cleaned_data["name"]}"{fleet_type} and '
                 f'a duration of {form.cleaned_data["duration"]} minutes was created'
                 ),
                fatlink_hash=fatlink.hash,
            )

            logger.info(
                f'FAT link "{fatlink_hash}" with name '
                f'"{form.cleaned_data["name"]}"{fleet_type} and a duration '
                f'of {form.cleaned_data["duration"]} minutes was created '
                f"by {request.user}")

            messages.success(
                request,
                mark_safe(
                    _("<h4>Success!</h4>"
                      "<p>Clickable FAT Link Created!</p>"
                      "<p>Make sure to give your fleet members the link to "
                      "click so that they get credit for this fleet.</p>")),
            )

            return redirect("afat:fatlinks_details_fatlink",
                            fatlink_hash=fatlink_hash)

        messages.error(
            request,
            mark_safe(
                _("<h4>Error!</h4>"
                  "<p>Something went wrong when attempting "
                  "to submit your clickable FAT Link.</p>")),
        )

        return redirect("afat:fatlinks_add_fatlink")

    messages.warning(
        request,
        mark_safe(
            _("<h4>Warning!</h4>"
              '<p>You must fill out the form on the "Add FAT Link" '
              "page to create a clickable FAT Link</p>")),
    )

    return redirect("afat:fatlinks_add_fatlink")