diff --git a/allianceauth/authentication/migrations/0017_remove_fleetup_permission.py b/allianceauth/authentication/migrations/0017_remove_fleetup_permission.py
new file mode 100644
index 00000000..819eac7f
--- /dev/null
+++ b/allianceauth/authentication/migrations/0017_remove_fleetup_permission.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations
+
+
+def remove_permission(apps, schema_editor):
+ User = apps.get_model('auth', 'User')
+ ContentType = apps.get_model('contenttypes', 'ContentType')
+ Permission = apps.get_model('auth', 'Permission')
+ ct = ContentType.objects.get_for_model(User)
+ Permission.objects.filter(codename="view_fleetup", content_type=ct, name="view_fleetup").delete()
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('authentication', '0016_ownershiprecord'),
+ ]
+
+ operations = [
+ migrations.RunPython(remove_permission, migrations.RunPython.noop)
+ ]
diff --git a/allianceauth/fleetup/__init__.py b/allianceauth/fleetup/__init__.py
deleted file mode 100755
index dfdc4e77..00000000
--- a/allianceauth/fleetup/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-default_app_config = 'allianceauth.fleetup.apps.FleetupConfig'
diff --git a/allianceauth/fleetup/apps.py b/allianceauth/fleetup/apps.py
deleted file mode 100644
index 98def790..00000000
--- a/allianceauth/fleetup/apps.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.apps import AppConfig
-
-
-class FleetupConfig(AppConfig):
- name = 'allianceauth.fleetup'
- label = 'fleetup'
diff --git a/allianceauth/fleetup/auth_hooks.py b/allianceauth/fleetup/auth_hooks.py
deleted file mode 100644
index 68da2c2a..00000000
--- a/allianceauth/fleetup/auth_hooks.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from allianceauth.services.hooks import MenuItemHook, UrlHook
-
-from allianceauth import hooks
-from . import urls
-
-
-class FleetUpMenu(MenuItemHook):
- def __init__(self):
- MenuItemHook.__init__(self, 'Fleet-Up',
- 'fa fa-arrow-up fa-fw',
- 'fleetup:view',
- navactive=['fleetup:'])
-
- def render(self, request):
- if request.user.has_perm('auth.view_fleetup'):
- return MenuItemHook.render(self, request)
- return ''
-
-
-@hooks.register('menu_item_hook')
-def register_menu():
- return FleetUpMenu()
-
-
-@hooks.register('url_hook')
-def register_url():
- return UrlHook(urls, 'fleetup', r'^fleetup/')
diff --git a/allianceauth/fleetup/managers.py b/allianceauth/fleetup/managers.py
deleted file mode 100644
index ca84d196..00000000
--- a/allianceauth/fleetup/managers.py
+++ /dev/null
@@ -1,189 +0,0 @@
-from django.conf import settings
-from django.core.cache import cache
-from django.utils import timezone
-from datetime import datetime
-
-import logging
-import requests
-import hashlib
-
-logger = logging.getLogger(__name__)
-
-
-class FleetUpManager:
- APP_KEY = settings.FLEETUP_APP_KEY
- USER_ID = settings.FLEETUP_USER_ID
- API_ID = settings.FLEETUP_API_ID
- GROUP_ID = settings.FLEETUP_GROUP_ID
- BASE_URL = "http://api.fleet-up.com/Api.svc/{}/{}/{}".format(APP_KEY, USER_ID, API_ID)
-
- TZ = timezone.utc
-
- def __init__(self):
- pass
-
- @classmethod
- def _request_cache_key(cls, url):
- h = hashlib.sha1()
- h.update(url.encode('utf-8'))
- return 'FLEETUP_ENDPOINT_' + h.hexdigest()
-
- @classmethod
- def _cache_until_seconds(cls, cache_until_json):
- # Format comes in like "/Date(1493896236163)/"
- try:
- epoch_ms = int(cache_until_json[6:-2])
- cache_delta = datetime.fromtimestamp(epoch_ms/1000) - datetime.now()
- cache_delta_seconds = cache_delta.total_seconds()
- if cache_delta_seconds < 0:
- return 0
- elif cache_delta_seconds > 3600:
- return 3600
- else:
- return cache_delta_seconds
- except TypeError:
- logger.debug("Couldn't convert CachedUntil time, defaulting to 600 seconds")
- return 600
-
- @classmethod
- def get_endpoint(cls, url):
- try:
- cache_key = cls._request_cache_key(url)
- cached = cache.get(cache_key)
- if cached:
- return cached
-
- r = requests.get(url)
- r.raise_for_status()
-
- json = r.json()
-
- if json['Success']:
- cache.set(cache_key, json, cls._cache_until_seconds(json['CachedUntilUTC']))
- return json
- except requests.exceptions.ConnectionError:
- logger.warning("Can't connect to Fleet-Up API, is it offline?!")
- except requests.HTTPError:
- logger.exception("Error accessing Fleetup API")
- return None
-
- @classmethod
- def get_fleetup_members(cls):
- url = "{}/GroupCharacters/{}".format(cls.BASE_URL, cls.GROUP_ID)
- try:
- fmembers = cls.get_endpoint(url)
- if not fmembers:
- return None
- return {row["UserId"]: {"user_id": row["UserId"],
- "char_name": row["EveCharName"],
- "char_id": row["EveCharId"],
- "corporation": row["Corporation"]} for row in fmembers["Data"]}
- except (ValueError, UnicodeDecodeError, TypeError):
- logger.debug("No fleetup members retrieved.")
- return {}
-
- @classmethod
- def get_fleetup_operations(cls):
- url = "{}/Operations/{}".format(cls.BASE_URL, cls.GROUP_ID)
- foperations = cls.get_endpoint(url)
- if foperations is None:
- return None
- return {row["StartString"]: {"subject": row["Subject"],
- "start": timezone.make_aware(
- datetime.strptime(row["StartString"], "%Y-%m-%d %H:%M:%S"), cls.TZ),
- "end": timezone.make_aware(
- datetime.strptime(row["EndString"], "%Y-%m-%d %H:%M:%S"), cls.TZ),
- "operation_id": row["OperationId"],
- "location": row["Location"],
- "location_info": row["LocationInfo"],
- "details": row["Details"],
- "url": row["Url"],
- "doctrine": row["Doctrines"],
- "organizer": row["Organizer"]} for row in foperations["Data"]}
-
- @classmethod
- def get_fleetup_timers(cls):
- url = "{}/Timers/{}".format(cls.BASE_URL, cls.GROUP_ID)
- ftimers = cls.get_endpoint(url)
- if not ftimers:
- return None
- return {row["ExpiresString"]: {"solarsystem": row["SolarSystem"],
- "planet": row["Planet"],
- "moon": row["Moon"],
- "owner": row["Owner"],
- "type": row["Type"],
- "timer_type": row["TimerType"],
- "expires": timezone.make_aware(
- datetime.strptime(row["ExpiresString"], "%Y-%m-%d %H:%M:%S"), cls.TZ),
- "notes": row["Notes"]} for row in ftimers["Data"]}
-
- @classmethod
- def get_fleetup_doctrines(cls):
- url = "{}/Doctrines/{}".format(cls.BASE_URL, cls.GROUP_ID)
- fdoctrines = cls.get_endpoint(url)
- if not fdoctrines:
- return None
- return {"fleetup_doctrines": fdoctrines["Data"]}
-
- @classmethod
- def get_fleetup_doctrine(cls, doctrinenumber):
- url = "{}/DoctrineFittings/{}".format(cls.BASE_URL, doctrinenumber)
- fdoctrine = cls.get_endpoint(url)
- if not fdoctrine:
- return None
- return {"fitting_doctrine": fdoctrine}
-
- @classmethod
- def get_fleetup_fittings(cls):
- url = "{}/Fittings/{}".format(cls.BASE_URL, cls.GROUP_ID)
- ffittings = cls.get_endpoint(url)
- if not ffittings:
- return None
- return {row["FittingId"]: {"fitting_id": row["FittingId"],
- "name": row["Name"],
- "icon_id": row["EveTypeId"],
- "hull": row["HullType"],
- "shiptype": row["ShipType"],
- "estimated": row["EstPrice"],
- "faction": row["Faction"],
- "categories": row["Categories"],
- "last_update":
- timezone.make_aware(
- datetime.strptime(row["LastUpdatedString"], "%Y-%m-%d %H:%M:%S"), cls.TZ)}
- for row in ffittings["Data"]}
-
- @classmethod
- def get_fleetup_fitting(cls, fittingnumber):
- url = "{}/Fitting/{}".format(cls.BASE_URL, fittingnumber)
- try:
- ffitting = cls.get_endpoint(url)
- if not ffitting:
- return None
- return {"fitting_data": ffitting["Data"]}
- except KeyError:
- logger.warning("Failed to retrieve fleetup fitting number %s" % fittingnumber)
- return {"fitting_data": {}}
-
- @classmethod
- def get_fleetup_doctrineid(cls, fittingnumber):
- url = "{}/Fitting/{}".format(cls.BASE_URL, fittingnumber)
- try:
- fdoctrineid = cls.get_endpoint(url)
- if not fdoctrineid:
- return None
- return fdoctrineid['Data']['Doctrines'][0]['DoctrineId']
- except (KeyError, IndexError):
- logger.debug("Fleetup fitting number %s not in a doctrine." % fittingnumber)
- return {}
-
- @classmethod
- def get_fleetup_fitting_eft(cls, fittingnumber):
- url = "{}/Fitting/{}/eft".format(cls.BASE_URL, fittingnumber)
- try:
- ffittingeft = cls.get_endpoint(url)
- if not ffittingeft:
- return None
- return {"fitting_eft": ffittingeft["Data"]["FittingData"]}
- except KeyError:
- logger.warning("Fleetup fitting eft not found for fitting number %s" % fittingnumber)
- return {"fitting_eft": {}}
diff --git a/allianceauth/fleetup/templates/fleetup/characters.html b/allianceauth/fleetup/templates/fleetup/characters.html
deleted file mode 100644
index 275965ff..00000000
--- a/allianceauth/fleetup/templates/fleetup/characters.html
+++ /dev/null
@@ -1,48 +0,0 @@
-{% extends "allianceauth/base.html" %}
-{% load bootstrap %}
-{% load staticfiles %}
-{% load i18n %}
-
-{% block page_title %}Characters - FleetUp{% endblock page_title %}
-
-{% block content %}
-
-{% if perms.auth.corp_stats %}
- {% include "fleetup/menu.html" %}
-
-
-
{% trans "Characters registered on Fleet-Up.com" %}
-
-
-
-
-
-
-
- {% trans "Character" %}
- {% trans "Corporation" %}
- Fleet-Up(id)
-
- {% for char_name, user_id in member_list %}
-
-
-
-
-
- {{ user_id.char_name }}
-
-
- {{ user_id.corporation }}
-
-
- {{ user_id.user_id }}
-
- {% endfor %}
-
-
-
-
-
-{% endif %}
-
-{% endblock content %}
diff --git a/allianceauth/fleetup/templates/fleetup/doctrine.html b/allianceauth/fleetup/templates/fleetup/doctrine.html
deleted file mode 100644
index 3564356f..00000000
--- a/allianceauth/fleetup/templates/fleetup/doctrine.html
+++ /dev/null
@@ -1,67 +0,0 @@
-{% extends "allianceauth/base.html" %}
-{% load bootstrap %}
-{% load staticfiles %}
-{% load i18n %}
-
-{% block page_title %}Doctrine - FleetUp{% endblock page_title %}
-
-{% block content %}
-
- {% include "fleetup/menu.html" %}
-
- {% for a, j in doctrine.items %}
- {% regroup j.Data|dictsort:"Role" by Role as role_list %}
-
- {% for Role in role_list %}
-
-
-
-
{{ Role.grouper }}
-
-
-
-
-
- {% trans "Name" %}
- {% trans "Role" %}
- {% trans "Hull type" %}
- {% trans "Ship type" %}
- {% trans "Estimated ISK" %}
- {% trans "Categories" %}
-
- {% for item in Role.list %}
-
-
-
-
-
- {{ item.Name }}
-
-
- {{ item.Role }}
-
-
- {{ item.HullType }}
-
-
- {{ item.ShipType }}
-
-
- {% load humanize %}{{ item.EstPrice|intword }}
-
-
- {% for categories in item.Categories %}
- {{ categories }},
- {% endfor %}
-
-
- {% endfor %}
-
-
-
- {% endfor %}
-
- {% endfor %}
-
-
-{% endblock content %}
diff --git a/allianceauth/fleetup/templates/fleetup/doctrinesview.html b/allianceauth/fleetup/templates/fleetup/doctrinesview.html
deleted file mode 100644
index c0e47329..00000000
--- a/allianceauth/fleetup/templates/fleetup/doctrinesview.html
+++ /dev/null
@@ -1,62 +0,0 @@
-{% extends "allianceauth/base.html" %}
-{% load bootstrap %}
-{% load staticfiles %}
-{% load i18n %}
-
-{% block page_title %}Doctrines - FleetUp{% endblock page_title %}
-
-{% block content %}
-
- {% include "fleetup/menu.html" %}
-
- {% if doctrines_list %}
- {% for a, j in doctrines_list.items %}
- {% regroup j|dictsort:"FolderName" by FolderName as folder_list %}
- {% for FolderName in folder_list %}
-
-
-
-
{{ FolderName.grouper }}
-
-
-
-
-
- {% trans "Name" %}
- {% trans "Doctrine" %}
- {% trans "Last updated" %}
-
-
- {% for item in FolderName.list %}
-
-
-
-
-
-
- {{ item.Name }}
-
-
- {{ item.FolderName }}
-
-
- {{ item.LastUpdatedString }}
-
-
- {% endfor %}
-
-
-
-
- {% endfor %}
-
- {% endfor %}
-
- {% else %}
-
{% trans "There seems to be no Doctrines in here at the moment!" %}
- {% endif %}
-
-
-
-{% endblock content %}
diff --git a/allianceauth/fleetup/templates/fleetup/fitting.html b/allianceauth/fleetup/templates/fleetup/fitting.html
deleted file mode 100644
index eff680af..00000000
--- a/allianceauth/fleetup/templates/fleetup/fitting.html
+++ /dev/null
@@ -1,131 +0,0 @@
-{% extends "allianceauth/base.html" %}
-{% load bootstrap %}
-{% load staticfiles %}
-{% load i18n %}
-
-{% block page_title %}{% trans "Doctrine - FleetUp" %}{% endblock page_title %}
-
-{% block content %}
-
- {% include "fleetup/menu.html" %}
-
-
-
- {% for x, y in fitting_data.items %}
-
-
-
{% trans "This fit is part of a doctrine" %}
-
-
- {% for doctrin in y.Doctrines %}
-
-
{{ doctrin.Name }}
-
-
{% trans "Role in doctrine:" %} {{ doctrin.Role }}
-
-
-
{% trans "Priority:" %}
-
-
-
-
- {{ doctrin.Priority }}/5
-
-
-
-
-
- {% endfor %}
-
-
-
-
-
{% trans "Fit categories" %}
-
-
- {% for category in y.Categories %}
- {{ category }}
- {% endfor %}
-
-
- {% endfor %}
-
-
-
{% trans "All fits in this Doctrine" %}
-
-
-
-
-
-
-
- {% for a, j in fitting_data.items %}
-
{{ j.Name }}
-
-
-
-
-
-
-
{% trans "Hull:" %} {{ j.HullType }}
-
{% trans "Ship:" %} {{ j.ShipType }}
- {% load humanize %}
-
{% trans "Estimated price:" %} {{ j.EstPrice|intword }} ISK
-
- {% regroup j.FittingData by Slot as fitting_list %}
-
-
-
-
-
- {% for Slot in fitting_list %}
-
- {{ Slot.grouper }}
-
- {% for item in Slot.list %}
-
-
- {{ item.Quantity }}x {{ item.TypeName }}
-
- {% endfor %}
- {% endfor %}
-
-
- {% endfor %}
-
-
-
-
-
-
-
{% trans "EFT/Export" %}
-
-
- {% for data in fitting_eft.items %}
- {% autoescape off %}
-
- {% endautoescape %}
- {% endfor %}
-
-
-
-
-
-
-
-{% endblock content %}
diff --git a/allianceauth/fleetup/templates/fleetup/fittingsview.html b/allianceauth/fleetup/templates/fleetup/fittingsview.html
deleted file mode 100644
index 265ae3e2..00000000
--- a/allianceauth/fleetup/templates/fleetup/fittingsview.html
+++ /dev/null
@@ -1,55 +0,0 @@
-{% extends "allianceauth/base.html" %}
-{% load bootstrap %}
-{% load staticfiles %}
-{% load i18n %}
-
-{% block page_title %}Fittings - FleetUp{% endblock page_title %}
-
-{% block content %}
-
-{% include "fleetup/menu.html" %}
-
- {% if fitting_list %}
-
-
-
- {% trans "Name" %}
- {% trans "Hull" %}
- {% trans "Ship type" %}
- {% trans "Estimated ISK" %}
- {% trans "Categories" %}
-
- {% for id, fittings in fitting_list %}
-
-
-
-
-
-
- {{ fittings.name }}
-
-
- {{ fittings.hull }}
-
-
- {{ fittings.shiptype }}
-
-
- {% load humanize %}{{ fittings.estimated|intword }}
-
-
- {% for categories in fittings.categories %}
- {{ categories }},
- {% endfor %}
-
-
-
- {% endfor %}
-
- {% else %}
-
{% trans "There seems to be no Fittings in here at the moment!" %}
- {% endif %}
-
-
-
-{% endblock content %}
diff --git a/allianceauth/fleetup/templates/fleetup/index.html b/allianceauth/fleetup/templates/fleetup/index.html
deleted file mode 100644
index d4bd8333..00000000
--- a/allianceauth/fleetup/templates/fleetup/index.html
+++ /dev/null
@@ -1,254 +0,0 @@
-{% extends "allianceauth/base.html" %}
-{% load bootstrap %}
-{% load staticfiles %}
-{% load i18n %}
-
-{% block page_title %}FleetUp{% endblock page_title %}
-
-{% block content %}
-
-{% include "fleetup/menu.html" %}
-
-
-
-
-
-
- {% if operations_list %}
- {% for subject, start in operations_list %}
-
-
-
{{ start.subject }}
-
-
-
-
- {% trans "Start" %}
- {% trans "End" %}
-
-
- {{ start.start|date:"l d M H:i" }} {% trans "Eve Time" %}
-
- {{ start.end|date:"l d M H:i" }} {% trans "Eve Time" %}
-
-
-
- Local time
-
-
-
-
-
-
- {{ start.details|linebreaks }}
-
-
-
- {% trans "Location" %}
- {% trans "Doctrine" %}
- {% trans "Organizer" %}
- {% trans "URL" %}
-
-
-
- {{ start.location }} - {{ start.location_info }} Dotlan
-
-
- {% if start.doctrine %}
- {% for doctrine in start.doctrine %}
-
- {{ doctrine.Name }}
-
- {% endfor %}
-
- {% else %}
- {% trans "TBA" %}
- {% endif %}
-
-
- {{ start.organizer }}
-
-
- {% ifequal start.url "" %}
- {% trans "No link" %}
- {% else %}
- {% trans "External link" %}
- {% endifequal %}
-
-
-
-
-
- {% endfor %}
- {% else %}
-
{% trans "There seems to be no Operations in the near future." %}
- {% endif %}
-
-
-
-
-
{% trans "Current Eve Time:" %}
-
-
-
- {% if timers_list %}
-
-
-
{% trans "Timers" %}
-
-
-
- {% for notes, type in timers_list %}
-
-
- {{ type.solarsystem }}
-
-
- {{ type.expires|date:"l d M H:i" }}
-
-
- {% endfor %}
-
-
-
- {% endif %}
-
-
-
-
- {% if timers_list %}
-
-
-
{% trans "Timers" %}
-
-
-
-
-
- {% trans "Type" %}
- {% trans "Structure" %}
- {% trans "Location" %}
- {% trans "Expires(EVE-time)" %}
- {% trans "Owner" %}
- {% trans "Note" %}
-
- {% for notes, type in timers_list %}
-
-
- {% ifequal type.type "Final" %}
-
- {{ type.type }} {% else %}{{ type.type }}{% endifequal %}
-
-
- {{ type.timer_type }}
-
-
- {{ type.solarsystem }} - Planet:{{ type.planet }} Moon:{{ type.moon }}
-
-
- {{ type.expires|date:"l d M H:i" }}
-
-
- {{ type.owner }}
-
-
- {{ type.notes }}
-
-
- {% endfor %}
-
-
-
-
- {% else %}
-
{% trans "There seems to be no Timers in the near future." %}
- {% endif %}
-
-
-
-
-
-
-{% include 'bundles/moment-js.html' with locale=True %}
-
-
-
-{% endblock content %}
diff --git a/allianceauth/fleetup/templates/fleetup/menu.html b/allianceauth/fleetup/templates/fleetup/menu.html
deleted file mode 100644
index d769a218..00000000
--- a/allianceauth/fleetup/templates/fleetup/menu.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{% load i18n %}
-{% load navactive %}
-
-
-
-
diff --git a/allianceauth/fleetup/tests/__init__.py b/allianceauth/fleetup/tests/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/allianceauth/fleetup/tests/test_manager.py b/allianceauth/fleetup/tests/test_manager.py
deleted file mode 100644
index faf21ed9..00000000
--- a/allianceauth/fleetup/tests/test_manager.py
+++ /dev/null
@@ -1,503 +0,0 @@
-from unittest import mock
-
-import requests_mock
-import json
-import datetime
-
-from django.test import TestCase
-from django.utils.timezone import make_aware, utc
-
-from allianceauth.fleetup.managers import FleetUpManager
-
-
-class FleetupManagerTestCase(TestCase):
- def setUp(self):
- pass
-
- def test__request_cache_key(self):
-
- cache_key = FleetUpManager._request_cache_key('testurl')
-
- self.assertEqual('FLEETUP_ENDPOINT_a39562b6ef5b858220be13d2adb61d3f10cf8d61',
- cache_key)
-
- @mock.patch('allianceauth.fleetup.managers.cache')
- @requests_mock.Mocker()
- def test_get_endpoint(self, cache, m):
- url = "http://example.com/test/endpoint/"
- json_data = {'data': "123456", 'CachedUntilUTC': '/Date(1493896236163)/', 'Success': True}
- m.register_uri('GET', url,
- text=json.dumps(json_data))
-
- cache.get.return_value = None # No cached value
-
- # Act
- result = FleetUpManager.get_endpoint(url)
-
- # Assert
- self.assertTrue(cache.get.called)
- self.assertTrue(cache.set.called)
- args, kwargs = cache.set.call_args
- self.assertDictEqual(json_data, args[1])
-
- self.assertDictEqual(json_data, result)
-
- @mock.patch('allianceauth.fleetup.managers.cache')
- @requests_mock.Mocker()
- def test_get_endpoint_error(self, cache, m):
- url = "http://example.com/test/endpoint/"
- json_data = {'data': [], 'Success': False}
- m.register_uri('GET', url,
- text=json.dumps(json_data),
- status_code=400)
-
- cache.get.return_value = None # No cached value
-
- # Act
- result = FleetUpManager.get_endpoint(url)
-
- # Assert
- self.assertTrue(cache.get.called)
- self.assertFalse(cache.set.called)
- self.assertIsNone(result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_members(self, get_endpoint):
-
- get_endpoint.return_value = {"Data": [
- {
- 'UserId': 1234,
- 'EveCharName': 'test_name',
- 'EveCharId': 5678,
- 'Corporation': 'test_corporation',
- }
- ]}
-
- # Act
- result = FleetUpManager.get_fleetup_members()
-
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0],
- FleetUpManager.BASE_URL + '/GroupCharacters/' +
- FleetUpManager.GROUP_ID)
- expected_result = {
- 1234: {
- 'user_id': 1234,
- 'char_name': 'test_name',
- 'char_id': 5678,
- 'corporation': 'test_corporation',
- }
- }
- self.assertDictEqual(expected_result, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_members()
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': []}
-
- # Act
- result = FleetUpManager.get_fleetup_members()
-
- # Assert
- self.assertDictEqual({}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_operations(self, get_endpoint):
-
- get_endpoint.return_value = {"Data": [
- {
- 'Subject': 'test_operation',
- 'StartString': '2017-05-06 11:11:11',
- 'EndString': '2017-05-06 12:12:12',
- 'OperationId': 1234,
- 'Location': 'Jita',
- 'LocationInfo': '4-4',
- 'Details': 'This is a test operation',
- 'Url': 'http://example.com/1234',
- 'Doctrines': 'Foxcats',
- 'Organizer': 'Example FC'
- }
- ]}
-
- # Act
- result = FleetUpManager.get_fleetup_operations()
- self.maxDiff = None
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0],
- FleetUpManager.BASE_URL + '/Operations/' +
- FleetUpManager.GROUP_ID)
- expected_result = {
- '2017-05-06 11:11:11': {
- 'subject': 'test_operation',
- 'start': make_aware(datetime.datetime(2017, 5, 6, 11, 11, 11), utc),
- 'end': make_aware(datetime.datetime(2017, 5, 6, 12, 12, 12), utc),
- 'operation_id': 1234,
- 'location': 'Jita',
- 'location_info': '4-4',
- 'details': 'This is a test operation',
- 'url': 'http://example.com/1234',
- 'doctrine': 'Foxcats',
- 'organizer': 'Example FC'
- }
- }
- self.assertDictEqual(expected_result, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_operations()
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': []}
-
- # Act
- result = FleetUpManager.get_fleetup_operations()
-
- # Assert
- self.assertDictEqual({}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_timers(self, get_endpoint):
-
- get_endpoint.return_value = {"Data": [
- {
- 'ExpiresString': '2017-05-06 11:11:11',
- 'SolarSystem': 'Jita',
- 'Planet': '4',
- 'Moon': '4',
- 'Owner': 'Caldari Navy',
- 'Type': 'Caldari Station',
- 'TimerType': 'Armor',
- 'Notes': 'Burn Jita?'
- }
- ]}
-
- # Act
- result = FleetUpManager.get_fleetup_timers()
-
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0],
- FleetUpManager.BASE_URL + '/Timers/' +
- FleetUpManager.GROUP_ID)
- expected_result = {
- '2017-05-06 11:11:11': {
- 'expires': make_aware(datetime.datetime(2017, 5, 6, 11, 11, 11), utc),
- 'solarsystem': 'Jita',
- 'planet': '4',
- 'moon': '4',
- 'owner': 'Caldari Navy',
- 'type': 'Caldari Station',
- 'timer_type': 'Armor',
- 'notes': 'Burn Jita?'
- }
- }
- self.assertDictEqual(expected_result, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_timers()
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': []}
-
- # Act
- result = FleetUpManager.get_fleetup_timers()
-
- # Assert
- self.assertDictEqual({}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_doctrines(self, get_endpoint):
-
- get_endpoint.return_value = {"Data": [
- {
- 'TestData': True
- }
- ]}
-
- # Act
- result = FleetUpManager.get_fleetup_doctrines()
-
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0],
- FleetUpManager.BASE_URL + '/Doctrines/' +
- FleetUpManager.GROUP_ID)
- expected_result = {
- 'fleetup_doctrines': [{
- 'TestData': True
- }]
- }
- self.assertDictEqual(expected_result, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_doctrines()
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': []}
-
- # Act
- result = FleetUpManager.get_fleetup_doctrines()
-
- # Assert
- self.assertDictEqual({"fleetup_doctrines": []}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_doctrine(self, get_endpoint):
-
- get_endpoint.return_value = {"Data": [
- {
- 'TestData': True
- }
- ]}
-
- # Act
- result = FleetUpManager.get_fleetup_doctrine(1234)
-
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0],
- FleetUpManager.BASE_URL + '/DoctrineFittings/1234')
- expected_result = {
- 'fitting_doctrine': {'Data': [{
- 'TestData': True
- }]}
- }
- self.assertDictEqual(expected_result, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_doctrine(1234)
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': []}
-
- # Act
- result = FleetUpManager.get_fleetup_doctrine(1234)
-
- # Assert
- self.assertDictEqual({"fitting_doctrine": {'Data': []}}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_fittings(self, get_endpoint):
-
- get_endpoint.return_value = {"Data": [
- {
- 'FittingId': 1234,
- 'Name': 'Foxcat',
- 'EveTypeId': 17726,
- 'HullType': 'Battleship',
- 'ShipType': 'Apocalypse Navy Issue',
- 'EstPrice': 500000000,
- 'Faction': 'Amarr',
- 'Categories': ["Armor", "Laser"],
- 'LastUpdatedString': '2017-05-06 11:11:11',
- }
- ]}
-
- # Act
- result = FleetUpManager.get_fleetup_fittings()
-
- # Asset
- self.assertTrue(get_endpoint.called)
- expected_result = {
- 1234: {
- 'fitting_id': 1234,
- 'name': 'Foxcat',
- 'icon_id': 17726,
- 'hull': 'Battleship',
- 'shiptype': 'Apocalypse Navy Issue',
- 'estimated': 500000000,
- 'faction': 'Amarr',
- 'categories': ["Armor", "Laser"],
- 'last_update': make_aware(datetime.datetime(2017, 5, 6, 11, 11, 11), utc)
- }
- }
- self.assertDictEqual(expected_result, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_fittings()
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': []}
-
- # Act
- result = FleetUpManager.get_fleetup_fittings()
-
- # Assert
- self.assertDictEqual({}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_fitting(self, get_endpoint):
-
- get_endpoint.return_value = {"Data":
- {
- 'FittingData': [{}]
- }
- }
-
- # Act
- result = FleetUpManager.get_fleetup_fitting(1234)
-
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0], FleetUpManager.BASE_URL + '/Fitting/1234')
- expected_result = {
- 'fitting_data': {
- 'FittingData': [{}]
- }
- }
- self.assertDictEqual(expected_result, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_fitting(1234)
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': {}}
-
- # Act
- result = FleetUpManager.get_fleetup_fitting(1234)
-
- # Assert
- self.assertDictEqual({"fitting_data": {}}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_doctrineid(self, get_endpoint):
-
- get_endpoint.return_value = {
- "Data": {
- 'Doctrines': [{'DoctrineId': 4567}]
- }
- }
-
- # Act
- result = FleetUpManager.get_fleetup_doctrineid(1234)
-
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0], FleetUpManager.BASE_URL + '/Fitting/1234')
-
- self.assertEqual(4567, result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_doctrineid(1234)
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': {}}
-
- # Act
- result = FleetUpManager.get_fleetup_doctrineid(1234)
-
- # Assert
- self.assertDictEqual({}, result)
-
- @mock.patch('allianceauth.fleetup.managers.FleetUpManager.get_endpoint')
- def test_get_fleetup_fitting_eft(self, get_endpoint):
-
- get_endpoint.return_value = {
- "Data": {
- 'FittingData': '[Apocalypse Navy Issue, Foxcat]'
- }
- }
-
- # Act
- result = FleetUpManager.get_fleetup_fitting_eft(1234)
-
- # Asset
- self.assertTrue(get_endpoint.called)
- args, kwargs = get_endpoint.call_args
- self.assertEqual(args[0], FleetUpManager.BASE_URL + '/Fitting/1234/eft')
-
- self.assertDictEqual({"fitting_eft": '[Apocalypse Navy Issue, Foxcat]'},
- result)
-
- # Test None response
- # Arrange
- get_endpoint.return_value = None
-
- # Act
- result = FleetUpManager.get_fleetup_fitting_eft(1234)
-
- # Assert
- self.assertIsNone(result)
-
- # Test Empty response
- # Arrange
- get_endpoint.return_value = {'Data': {}}
-
- # Act
- result = FleetUpManager.get_fleetup_fitting_eft(1234)
-
- # Assert
- self.assertDictEqual({"fitting_eft": {}}, result)
diff --git a/allianceauth/fleetup/urls.py b/allianceauth/fleetup/urls.py
deleted file mode 100644
index 1e2b06df..00000000
--- a/allianceauth/fleetup/urls.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.conf.urls import url
-
-from . import views
-
-app_name = 'fleetup'
-
-urlpatterns = [
- url(r'^$', views.fleetup_view, name='view'),
- url(r'^fittings/$', views.fleetup_fittings, name='fittings'),
- url(r'^fittings/(?P[0-9]+)/$', views.fleetup_fitting, name='fitting'),
- url(r'^doctrines/$', views.fleetup_doctrines, name='doctrines'),
- url(r'^characters/$', views.fleetup_characters, name='characters'),
- url(r'^doctrines/(?P[0-9]+)/$', views.fleetup_doctrine, name='doctrine'),
-]
diff --git a/allianceauth/fleetup/views.py b/allianceauth/fleetup/views.py
deleted file mode 100644
index 893bc7a1..00000000
--- a/allianceauth/fleetup/views.py
+++ /dev/null
@@ -1,112 +0,0 @@
-import datetime
-import logging
-
-from django.contrib import messages
-from django.contrib.auth.decorators import login_required
-from django.contrib.auth.decorators import permission_required
-from django.shortcuts import render
-from django.template.defaulttags import register
-from django.utils.translation import ugettext_lazy as _
-
-from .managers import FleetUpManager
-
-logger = logging.getLogger(__name__)
-
-
-@register.filter
-def get_item(dictionary, key):
- return dictionary.get(key)
-
-
-@login_required
-@permission_required('auth.view_fleetup')
-def fleetup_view(request):
- logger.debug("fleetup_view called by user %s" % request.user)
-
- operations_list = FleetUpManager.get_fleetup_operations()
- if operations_list is None:
- messages.add_message(request, messages.ERROR, _("Failed to get operations list, contact your administrator"))
- operations_list = {}
- timers_list = FleetUpManager.get_fleetup_timers()
- if timers_list is None:
- messages.add_message(request, messages.ERROR, _("Failed to get timers list, contact your administrator"))
- timers_list = {}
- now = datetime.datetime.now().strftime('%H:%M:%S')
-
- context = {"timers_list": sorted(timers_list.items()),
- "operations_list": sorted(operations_list.items()),
- "now": now}
-
- return render(request, 'fleetup/index.html', context=context)
-
-
-@login_required
-@permission_required('auth.human_resources')
-@permission_required('auth.view_fleetup')
-def fleetup_characters(request):
- logger.debug("fleetup_characters called by user %s" % request.user)
-
- member_list = FleetUpManager.get_fleetup_members()
- if member_list is None:
- messages.add_message(request, messages.ERROR, _("Failed to get member list, contact your administrator"))
- member_list = {}
-
- context = {"member_list": sorted(member_list.items())}
-
- return render(request, 'fleetup/characters.html', context=context)
-
-
-@login_required
-@permission_required('auth.view_fleetup')
-def fleetup_fittings(request):
- logger.debug("fleetup_fittings called by user %s" % request.user)
- fitting_list = FleetUpManager.get_fleetup_fittings()
-
- if fitting_list is None:
- messages.add_message(request, messages.ERROR, _("Failed to get fitting list, contact your administrator"))
- fitting_list = {}
-
- context = {"fitting_list": sorted(fitting_list.items())}
- return render(request, 'fleetup/fittingsview.html', context=context)
-
-
-@login_required
-@permission_required('auth.view_fleetup')
-def fleetup_fitting(request, fittingnumber):
- logger.debug("fleetup_fitting called by user %s" % request.user)
- fitting_eft = FleetUpManager.get_fleetup_fitting_eft(fittingnumber)
- fitting_data = FleetUpManager.get_fleetup_fitting(fittingnumber)
- doctrinenumber = FleetUpManager.get_fleetup_doctrineid(fittingnumber)
- doctrines_list = FleetUpManager.get_fleetup_doctrine(doctrinenumber)
-
- if fitting_eft is None or fitting_data is None or doctrinenumber is None:
- messages.add_message(request, messages.ERROR, _("There was an error getting some of the data for this fitting. "
- "Contact your administrator"))
-
- context = {"fitting_eft": fitting_eft,
- "fitting_data": fitting_data,
- "doctrines_list": doctrines_list}
- return render(request, 'fleetup/fitting.html', context=context)
-
-
-@login_required
-@permission_required('auth.view_fleetup')
-def fleetup_doctrines(request):
- logger.debug("fleetup_doctrines called by user %s" % request.user)
- doctrines_list = FleetUpManager.get_fleetup_doctrines()
- if doctrines_list is None:
- messages.add_message(request, messages.ERROR, _("Failed to get doctrines list, contact your administrator"))
-
- context = {"doctrines_list": doctrines_list}
- return render(request, 'fleetup/doctrinesview.html', context=context)
-
-
-@login_required
-@permission_required('auth.view_fleetup')
-def fleetup_doctrine(request, doctrinenumber):
- logger.debug("fleetup_doctrine called by user %s" % request.user)
- doctrine = FleetUpManager.get_fleetup_doctrine(doctrinenumber)
- if doctrine is None:
- messages.add_message(request, messages.ERROR, _("Failed to get doctine, contact your administrator"))
- context = {"doctrine": doctrine}
- return render(request, 'fleetup/doctrine.html', context=context)
diff --git a/docs/features/fleetup.md b/docs/features/fleetup.md
deleted file mode 100644
index a846fb0b..00000000
--- a/docs/features/fleetup.md
+++ /dev/null
@@ -1,18 +0,0 @@
-# Fleetup
-
-## Installation
-
-Add `'allianceauth.fleetup',` to your auth project's `INSTALLED_APPS` list.
-
-Additional settings are required. Append the following settings to the end of your auth project's settings file and fill them out.
-
- FLEETUP_APP_KEY = '' # The app key from http://fleet-up.com/Api/MyApps
- FLEETUP_USER_ID = '' # The user id from http://fleet-up.com/Api/MyKeys
- FLEETUP_API_ID = '' # The API id from http://fleet-up.com/Api/MyKeys
- FLEETUP_GROUP_ID = '' # The id of the group you want to pull data from, see http://fleet-up.com/Api/Endpoints#groups_mygroupmemberships
-
-Once filled out restart Gunicorn and Celery.
-
-## Permissions
-
-The Fleetup module is only visible to users with the `auth | user | view_fleeup` permission.
diff --git a/tests/settings.py b/tests/settings.py
index b0304290..2eb84521 100644
--- a/tests/settings.py
+++ b/tests/settings.py
@@ -24,7 +24,6 @@ INSTALLED_APPS += [
'allianceauth.optimer',
'allianceauth.corputils',
'allianceauth.fleetactivitytracking',
- 'allianceauth.fleetup',
'allianceauth.permissions_tool',
'allianceauth.services.modules.mumble',
'allianceauth.services.modules.discord',
@@ -174,19 +173,6 @@ SEAT_XTOKEN = 'tokentokentoken'
######################################
SMF_URL = ''
-######################################
-# Fleet-Up Configuration
-######################################
-# FLEETUP_APP_KEY - The app key from http://fleet-up.com/Api/MyApps
-# FLEETUP_USER_ID - The user id from http://fleet-up.com/Api/MyKeys
-# FLEETUP_API_ID - The API id from http://fleet-up.com/Api/MyKeys
-# FLEETUP_GROUP_ID - The id of the group you want to pull data from, see http://fleet-up.com/Api/Endpoints#groups_mygroupmemberships
-######################################
-FLEETUP_APP_KEY = ''
-FLEETUP_USER_ID = ''
-FLEETUP_API_ID = ''
-FLEETUP_GROUP_ID = ''
-
PASSWORD_HASHERS = [
'django.contrib.auth.hashers.MD5PasswordHasher',
]