diff --git a/fleetactivitytracking/views.py b/fleetactivitytracking/views.py index 467efb84..9921fcbe 100644 --- a/fleetactivitytracking/views.py +++ b/fleetactivitytracking/views.py @@ -13,6 +13,8 @@ from eveonline.managers import EveManager from fleetactivitytracking.forms import FatlinkForm from fleetactivitytracking.models import Fatlink, Fat +from esi.decorators import token_required + from slugify import slugify from collections import OrderedDict @@ -177,51 +179,54 @@ def fatlink_monthly_personal_statistics_view(request, year, month, char_id=None) @login_required -def click_fatlink_view(request, hash, fatname): - # Take IG-header data and register the fatlink if not existing already. - # use obj, created = Fat.objects.get_or_create() - # onload="CCPEVE.requestTrust('http://www.mywebsite.com')" +@token_required(scopes=['esi-location.read_location.v1', 'esi-location.read_ship_type.v1', 'esi-universe.read_structures.v1']) +def click_fatlink_view(request, token, hash, fatname): + try: + fatlink = Fatlink.objects.filter(hash=hash)[0] - if 'HTTP_EVE_TRUSTED' in request.META and request.META['HTTP_EVE_TRUSTED'] == "Yes": - # Retrieve the latest fatlink using the hash. - try: - fatlink = Fatlink.objects.filter(hash=hash)[0] + if (timezone.now() - fatlink.fatdatetime) < datetime.timedelta(seconds=(fatlink.duration * 60)): - if (timezone.now() - fatlink.fatdatetime) < datetime.timedelta(seconds=(fatlink.duration * 60)): + character = EveManager.get_character_by_id(token.character_id) - character = EveManager.get_character_by_id(request.META['HTTP_EVE_CHARID']) - - if character: - fat = Fat() - fat.system = request.META['HTTP_EVE_SOLARSYSTEMNAME'] - if 'HTTP_EVE_STATIONNAME' in request.META: - fat.station = request.META['HTTP_EVE_STATIONNAME'] - else: - fat.station = "No Station" - fat.shiptype = request.META['HTTP_EVE_SHIPTYPENAME'] - fat.fatlink = fatlink - fat.character = character - fat.user = character.user - try: - fat.full_clean() - fat.save() - context = {'trusted': True, 'registered': True} - except ValidationError as e: - messages = [] - for errorname, message in e.message_dict.items(): - messages.append(message[0].decode()) - context = {'trusted': True, 'errormessages': messages} + if character: + # get data + c = token.get_esi_client() + 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()['solar_system_name'] + if location['structure_id']: + location['station_name'] = c.Universe.get_universe_structures_structure_id(structure_id=location['structure_id']).result()['name'] + elif location['station_id']: + location['station_name'] = c.Universe.get_universe_stations_station_id(station_id=location['station_id']).result()['station_name'] else: - context = {'character_id': request.META['HTTP_EVE_CHARID'], - 'character_name': request.META['HTTP_EVE_CHARNAME']} - return render(request, 'public/characternotexisting.html', context=context) + location['station_name'] = "No Station" + ship['ship_type_name'] = c.Universe.get_universe_types_type_id(type_id=ship['ship_type_id']).result()['type_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() + context = {'registered': True} + except ValidationError as e: + messages = [] + for errorname, message in e.message_dict.items(): + messages.append(message[0].decode()) + context = {'errormessages': messages} else: - context = {'trusted': True, 'expired': True} - except ObjectDoesNotExist: - context = {'trusted': True} - else: - context = {'trusted': False, 'fatname': fatname} - return render(request, 'public/clickfatlinkview.html', context=context) + context = {'character_id': token.character_id, + 'character_name': token.character_name} + return render(request, 'registered/characternotexisting.html', context=context) + else: + context = {'expired': True} + except (ObjectDoesNotExist, KeyError): + context = {} + return render(request, 'registered/clickfatlinkview.html', context=context) @login_required diff --git a/stock/templates/public/characternotexisting.html b/stock/templates/public/characternotexisting.html deleted file mode 100644 index aa4159f1..00000000 --- a/stock/templates/public/characternotexisting.html +++ /dev/null @@ -1,90 +0,0 @@ -{% load staticfiles %} - - - - - - - - - - - - - Fleet participation - - - - - - - {% block extra_css %}{% endblock extra_css %} - - - - -
- - - - -
- - -
-

Character not found!

-
-
-
-
-
{{ character_name }}
-
-
- -
-
- - This character is not part of any registered API-key. You must go to API key management and add an API with the character on before being able to click fleet attendance links. -
-
-
-
-
-
-
- - - - - - - - - diff --git a/stock/templates/public/clickfatlinkview.html b/stock/templates/public/clickfatlinkview.html deleted file mode 100644 index 4bdfcde2..00000000 --- a/stock/templates/public/clickfatlinkview.html +++ /dev/null @@ -1,96 +0,0 @@ -{% load staticfiles %} - - - - - - - - - - - - - Fleet participation - - - - - - - {% block extra_css %}{% endblock extra_css %} - - - - -
- - - - -
- - -
- {% if registered %}

Fleet registered!

{% elif expired%}

This link has expired.

{% elif errormessages%}

Something horrible happened. Shoot your FC!

{% else %}

Invalid link.

{% endif %} -
- {% for message in errormessages %} - - {% endfor %} - {% if trusted %} -
-
-
-
Fleet stats
-
-
- -
-
-
-
-
-
-
- - {% else %} - - {% endif %} -
-
- - - - - - - - - diff --git a/stock/templates/registered/characternotexisting.html b/stock/templates/registered/characternotexisting.html new file mode 100644 index 00000000..b976c4df --- /dev/null +++ b/stock/templates/registered/characternotexisting.html @@ -0,0 +1,25 @@ +{% extends 'public/base.html' %} +{% block title %}Fleet Participation{% endblock %} +{% block page_title %}Fleet Participation{% endblock %} +
+

Character not found!

+
+
+
+
+
{{ character_name }}
+
+
+ +
+
+ + This character is not part of any registered API-key. You must go to API key management and add an API with the character on before being able to click fleet attendance links. +
+
+
+
+
+
+
+{% endblock %} diff --git a/stock/templates/registered/clickfatlinkview.html b/stock/templates/registered/clickfatlinkview.html new file mode 100644 index 00000000..a8007700 --- /dev/null +++ b/stock/templates/registered/clickfatlinkview.html @@ -0,0 +1,36 @@ +{% extends 'public/base.html' %} +{% block title %}Fleet participation{% endblock %} +{% block page_title %}Fleet Participation{% endblock %} +{% block content %} +
+ {% if registered %} +

Fleet registered!

+ {% elif expired%} +

This link has expired.

+ {% elif errormessages%} +

Something horrible happened. Shoot your FC!

+ {% else %} +

Invalid link.

+ {% endif %} +
+ {% for message in errormessages %} + + {% endfor %} +
+
+
+
Fleet Stats
+
+
+ +
+
+
+
+
+
+
+
+
+{% endblock %} +