mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 14:00:17 +02:00
commit
1abeba5658
14
alliance_auth/settings.py.example
Executable file → Normal file
14
alliance_auth/settings.py.example
Executable file → Normal file
@ -449,6 +449,19 @@ DISCOURSE_API_KEY = os.environ.get('AA_DISCOURSE_API_KEY', '')
|
|||||||
IPS4_URL = os.environ.get('AA_IPS4_URL', 'http://yourdomain.com/ips4')
|
IPS4_URL = os.environ.get('AA_IPS4_URL', 'http://yourdomain.com/ips4')
|
||||||
IPS4_API_KEY = os.environ.get('AA_IPS4_API_KEY', '')
|
IPS4_API_KEY = os.environ.get('AA_IPS4_API_KEY', '')
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# 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 = os.environ.get('AA_FLEETUP_APP_KEY', '')
|
||||||
|
FLEETUP_USER_ID = os.environ.get('AA_FLEETUP_USER_ID', '')
|
||||||
|
FLEETUP_API_ID = os.environ.get('AA_FLEETUP_API_ID', '')
|
||||||
|
FLEETUP_GROUP_ID = os.environ.get('AA_FLEETUP_GROUP_ID', '')
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# Logging Configuration
|
# Logging Configuration
|
||||||
#####################################
|
#####################################
|
||||||
@ -557,4 +570,3 @@ LOGGING = {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,6 +211,13 @@ urlpatterns = patterns('',
|
|||||||
|
|
||||||
# FLEET FITTINGS
|
# FLEET FITTINGS
|
||||||
url(r'^fits/$', 'services.views.fleet_fits', name='auth_fleet_fits'),
|
url(r'^fits/$', 'services.views.fleet_fits', name='auth_fleet_fits'),
|
||||||
|
#Fleetup
|
||||||
|
url(r'^fleetup/$', 'fleetup.views.fleetup_view', name='auth_fleetup_view'),
|
||||||
|
url(r'^fleetup/fittings/$', 'fleetup.views.fleetup_fittings', name='auth_fleetup_fittings'),
|
||||||
|
url(r'^fleetup/fittings/(?P<fittingnumber>[0-9]+)/$', 'fleetup.views.fleetup_fitting'),
|
||||||
|
url(r'^fleetup/doctrines/$', 'fleetup.views.fleetup_doctrines', name='auth_fleetup_doctrines'),
|
||||||
|
url(r'^fleetup/characters/$', 'fleetup.views.fleetup_characters', name='auth_fleetup_characters'),
|
||||||
|
url(r'^fleetup/doctrines/(?P<doctrinenumber>[0-9]+)/$', 'fleetup.views.fleetup_doctrine'),
|
||||||
|
|
||||||
# Sig Tracker
|
# Sig Tracker
|
||||||
url(r'^sigtracker/$', 'sigtracker.views.sigtracker_view', name='auth_signature_view'),
|
url(r'^sigtracker/$', 'sigtracker.views.sigtracker_view', name='auth_signature_view'),
|
||||||
|
0
fleetup/__init__.py
Executable file
0
fleetup/__init__.py
Executable file
0
fleetup/admin.py
Executable file
0
fleetup/admin.py
Executable file
0
fleetup/forms.py
Executable file
0
fleetup/forms.py
Executable file
0
fleetup/models.py
Executable file
0
fleetup/models.py
Executable file
0
fleetup/tests.py
Executable file
0
fleetup/tests.py
Executable file
101
fleetup/views.py
Executable file
101
fleetup/views.py
Executable file
@ -0,0 +1,101 @@
|
|||||||
|
import datetime
|
||||||
|
from operator import itemgetter, attrgetter, methodcaller
|
||||||
|
|
||||||
|
from django.utils.timezone import utc
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.shortcuts import render_to_response
|
||||||
|
from django.template import RequestContext
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.contrib.auth.decorators import permission_required
|
||||||
|
from django.contrib.auth.decorators import user_passes_test
|
||||||
|
from django.shortcuts import HttpResponseRedirect
|
||||||
|
from django.template.defaulttags import register
|
||||||
|
from django.contrib.humanize.templatetags.humanize import intword
|
||||||
|
|
||||||
|
from collections import namedtuple
|
||||||
|
|
||||||
|
from authentication.managers import AuthServicesInfoManager
|
||||||
|
from util import check_if_user_has_permission
|
||||||
|
from services.managers.eve_api_manager import EveApiManager
|
||||||
|
from services.managers.fleetup_manager import FleetUpManager
|
||||||
|
from eveonline.models import EveCorporationInfo
|
||||||
|
from eveonline.models import EveAllianceInfo
|
||||||
|
from eveonline.models import EveCharacter
|
||||||
|
from authentication.models import AuthServicesInfo
|
||||||
|
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@register.filter
|
||||||
|
def get_item(dictionary, key):
|
||||||
|
return dictionary.get(key)
|
||||||
|
|
||||||
|
def fleetup_util_test(user):
|
||||||
|
return check_if_user_has_permission(user, 'member') or check_if_user_has_permission(user, 'blue_member')
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@user_passes_test(fleetup_util_test)
|
||||||
|
def fleetup_view(request):
|
||||||
|
logger.debug("fleetup_view called by user %s" % request.user)
|
||||||
|
|
||||||
|
operations_list = FleetUpManager.get_fleetup_operations()
|
||||||
|
timers_list = FleetUpManager.get_fleetup_timers()
|
||||||
|
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_to_response('registered/fleetup.html',context, context_instance=RequestContext(request) )
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@permission_required('auth.corp_stats')
|
||||||
|
def fleetup_characters(request):
|
||||||
|
logger.debug("fleetup_characters called by user %s" % request.user)
|
||||||
|
|
||||||
|
member_list = FleetUpManager.get_fleetup_members()
|
||||||
|
|
||||||
|
context = {"member_list": sorted(member_list.items())}
|
||||||
|
|
||||||
|
return render_to_response('registered/fleetupcharacters.html',context, context_instance=RequestContext(request) )
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@user_passes_test(fleetup_util_test)
|
||||||
|
def fleetup_fittings(request):
|
||||||
|
logger.debug("fleetup_fittings called by user %s" % request.user)
|
||||||
|
fitting_list = FleetUpManager.get_fleetup_fittings()
|
||||||
|
context = {"fitting_list": sorted(fitting_list.items())}
|
||||||
|
return render_to_response('registered/fleetupfittingsview.html',context, context_instance=RequestContext(request) )
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@user_passes_test(fleetup_util_test)
|
||||||
|
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)
|
||||||
|
context = {"fitting_eft": fitting_eft,
|
||||||
|
"fitting_data": fitting_data,
|
||||||
|
"doctrines_list": doctrines_list}
|
||||||
|
return render_to_response('registered/fleetupfitting.html',context, context_instance=RequestContext(request) )
|
||||||
|
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@user_passes_test(fleetup_util_test)
|
||||||
|
def fleetup_doctrines(request):
|
||||||
|
logger.debug("fleetup_doctrines called by user %s" % request.user)
|
||||||
|
doctrines_list = FleetUpManager.get_fleetup_doctrines()
|
||||||
|
context = {"doctrines_list": doctrines_list}
|
||||||
|
return render_to_response('registered/fleetupdoctrinesview.html',context, context_instance=RequestContext(request) )
|
||||||
|
|
||||||
|
@login_required
|
||||||
|
@user_passes_test(fleetup_util_test)
|
||||||
|
def fleetup_doctrine(request, doctrinenumber):
|
||||||
|
logger.debug("fleetup_doctrine called by user %s" % request.user)
|
||||||
|
doctrine = FleetUpManager.get_fleetup_doctrine(doctrinenumber)
|
||||||
|
context = {"doctrine": doctrine}
|
||||||
|
return render_to_response('registered/fleetupdoctrine.html',context, context_instance=RequestContext(request) )
|
||||||
|
|
0
log/.gitignore
vendored
Normal file → Executable file
0
log/.gitignore
vendored
Normal file → Executable file
142
services/managers/fleetup_manager.py
Normal file
142
services/managers/fleetup_manager.py
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
from django.conf import settings
|
||||||
|
from django.http import HttpResponse
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import requests
|
||||||
|
import json
|
||||||
|
|
||||||
|
appkey = settings.FLEETUP_APP_KEY
|
||||||
|
userid = settings.FLEETUP_USER_ID
|
||||||
|
apiid = settings.FLEETUP_API_ID
|
||||||
|
groupid = settings.FLEETUP_GROUP_ID
|
||||||
|
|
||||||
|
class FleetUpManager():
|
||||||
|
def __init__(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_members():
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/GroupCharacters/" + str(groupid) + ""
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
fmembers=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return {row["UserId"]:{"user_id":row["UserId"],
|
||||||
|
"char_name":row["EveCharName"],
|
||||||
|
"char_id":row["EveCharId"],
|
||||||
|
"corporation":row["Corporation"]} for row in fmembers["Data"]}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_operations():
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Operations/" + str(groupid) + ""
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
foperations=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return {row["StartString"]:{"subject":row["Subject"],
|
||||||
|
"start": (datetime.strptime(row["StartString"], "%Y-%m-%d %H:%M:%S")),
|
||||||
|
"end": (datetime.strptime(row["EndString"], "%Y-%m-%d %H:%M:%S")),
|
||||||
|
"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"]}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_timers():
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Timers/" + str(groupid) + ""
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
ftimers=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return {row["ExpiresString"]:{"solarsystem":row["SolarSystem"],
|
||||||
|
"planet":row["Planet"],
|
||||||
|
"moon":row["Moon"],
|
||||||
|
"owner":row["Owner"],
|
||||||
|
"type":row["Type"],
|
||||||
|
"timer_type":row["TimerType"],
|
||||||
|
"expires": (datetime.strptime(row["ExpiresString"], "%Y-%m-%d %H:%M:%S")),
|
||||||
|
"notes":row["Notes"]} for row in ftimers["Data"]}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_doctrines():
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Doctrines/" + str(groupid) + ""
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
fdoctrines=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return {"fleetup_doctrines":fdoctrines["Data"]}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_doctrine(doctrinenumber):
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/DoctrineFittings/%s" % doctrinenumber
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
fdoctrine=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return {"fitting_doctrine":fdoctrine}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_fittings():
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Fittings/" + str(groupid) + ""
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
ffittings=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
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":(datetime.strptime(row["LastUpdatedString"], "%Y-%m-%d %H:%M:%S"))} for row in ffittings["Data"]}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_fitting(fittingnumber):
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Fitting/%s" % fittingnumber
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
ffitting=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return {"fitting_data":ffitting["Data"]}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_doctrineid(fittingnumber):
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Fitting/%s" % fittingnumber
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
fdoctrineid=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return fdoctrineid['Data']['Doctrines'][0]['DoctrineId']
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_fleetup_fitting_eft(fittingnumber):
|
||||||
|
url = "http://api.fleet-up.com/Api.svc/" + str(appkey) + "/" + str(userid) + "/" + str(apiid) + "/Fitting/%s/eft" % fittingnumber
|
||||||
|
try:
|
||||||
|
jsondata = requests.get(url).content
|
||||||
|
except requests.exceptions.ConnectionError:
|
||||||
|
return HttpResponse("Can't connect to Fleet-Up API, is it offline?!")
|
||||||
|
ffittingeft=json.loads(jsondata.decode())
|
||||||
|
|
||||||
|
return {"fitting_eft":ffittingeft["Data"]["FittingData"]}
|
@ -146,6 +146,12 @@
|
|||||||
href="{% url 'auth_fleet_fits' %}"><i
|
href="{% url 'auth_fleet_fits' %}"><i
|
||||||
class="fa fa-bolt fa-fw grayiconecolor"></i> Fleet Doctrines</a>
|
class="fa fa-bolt fa-fw grayiconecolor"></i> Fleet Doctrines</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a {% ifequal request.path "/fleetup" %} class="active" {% endifequal %}
|
||||||
|
href="{% url 'auth_fleetup_view' %}"><i
|
||||||
|
class="fa fa-clock-o fa-fw grayiconecolor"></i> Fleet-Up</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if perms.auth.member or perms.auth.blue_member %}
|
{% if perms.auth.member or perms.auth.blue_member %}
|
||||||
|
217
stock/templates/registered/fleetup.html
Normal file
217
stock/templates/registered/fleetup.html
Normal file
@ -0,0 +1,217 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
{% block page_title %}FleetUp{% endblock page_title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Fleet-Up</a>
|
||||||
|
</div>
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li class="active"><a href="#">Ops and Timers <span class="sr-only">(current)</span></a></li>
|
||||||
|
<li><a href="/fleetup/doctrines/">Doctrines</a></li>
|
||||||
|
<li><a href="/fleetup/fittings/">Fittings</a></li>
|
||||||
|
{% if perms.auth.human_resources %}
|
||||||
|
<li><a href="/fleetup/characters/">Characters</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="panel">
|
||||||
|
<ul class="nav nav-tabs">
|
||||||
|
<li class="active"><a data-toggle="tab" href="#operations">Operations</a></li>
|
||||||
|
<li><a data-toggle="tab" href="#timers">Timers</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div class="tab-content">
|
||||||
|
<div id="operations" class="tab-pane fade in active">
|
||||||
|
<div class="col-lg-7">
|
||||||
|
{% if operations_list %}
|
||||||
|
{% for subject, start in operations_list %}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title"><b>{{ start.subject }}</b></h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table table-condensed">
|
||||||
|
<tr>
|
||||||
|
<th class="col-md-6">Start</th>
|
||||||
|
<th class="col-md-6">End</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="col-md-6">{{ start.start|date:"l d M H:i" }} <span class="label label-success">Eve Time</span></td>
|
||||||
|
|
||||||
|
<td class="col-md-6">{{ start.end|date:"l d M H:i" }} <span class="label label-success">Eve Time</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="col-md-6"><div id="countdown{{ start.operation_id }}"></div></td>
|
||||||
|
|
||||||
|
<td class="col-md-6"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<p>{{ start.details }}</p>
|
||||||
|
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<table class="table table-condensed table-striped">
|
||||||
|
<tr>
|
||||||
|
<th class="col-md-4">Location</th>
|
||||||
|
<th class="col-md-4">Doctrine</th>
|
||||||
|
<th class="col-md-2">Organizer</th>
|
||||||
|
<th class="col-md-2">URL</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{{ start.location }} - {{ start.location_info }} <a href="http://evemaps.dotlan.net/system/{{ start.location }}" target="_blank" class="label label-success">Dotlan</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% if start.doctrine %}
|
||||||
|
{% for doctrine in start.doctrine %}
|
||||||
|
|
||||||
|
<a href="/fleetup/doctrines/{{ doctrine.Id }}" class="label label-success">{{ doctrine.Name }}</a>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<span class="label label-danger">TBA</span>
|
||||||
|
{% endif %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ start.organizer }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% ifequal start.url "" %}
|
||||||
|
<div class="label label-danger">No link</div>
|
||||||
|
{% else %}
|
||||||
|
<a href="{{ start.url }}" target="_blank" class="label label-success">External link</a>
|
||||||
|
{% endifequal %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% else %}
|
||||||
|
<h3>There seems to be no Operations in the near future, go make ISK!</h3>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h2 class="panel-title">Current Eve Time:</h2>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div id="current-time"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% if timers_list %}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h2 class="panel-title">Timers</h2>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table table-condensed table-hover table-striped">
|
||||||
|
{% for notes, type in timers_list %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{{ type.solarsystem }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ type.expires|date:"l d M H:i" }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="timers" class="tab-pane fade in">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
{% if timers_list %}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h2 class="panel-title">Timers</h2>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<table class="table table-condensed table-hover table-striped">
|
||||||
|
<tr>
|
||||||
|
<th class="col-lg-1">Type</th>
|
||||||
|
<th class="col-lg-1">Structure</th>
|
||||||
|
<th class="col-lg-2">Location</th>
|
||||||
|
<th class="col-lg-2">Expires(EVE-time)</th>
|
||||||
|
<th class="col-lg-1">Owner</th>
|
||||||
|
<th class="col-lg-2">Note</th>
|
||||||
|
</tr>
|
||||||
|
{% for notes, type in timers_list %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{% ifequal type.type "Final" %}
|
||||||
|
<span class="label label-danger">
|
||||||
|
{{ type.type }}</span>{% else %}{{ type.type }}{% endifequal %}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ type.timer_type }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ type.solarsystem }} - Planet:{{ type.planet }} Moon:{{ type.moon }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ type.expires|date:"l d M H:i" }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ type.owner }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ type.notes }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% else %}
|
||||||
|
<h3>There seems to be no Timers in the near future, this does not mean there isn't any!</h3>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script src="/static/js/dateformat.js"></script>
|
||||||
|
<script src="/static/js/countdown.js"></script>
|
||||||
|
<script>
|
||||||
|
var clockClosest = document.getElementById("countdownclosest"), targetDate = new Date(Date.UTC({{ closest_timer.eve_time | date:"Y, m-1, d, H, i" }}));{% for subject, start in operations_list %}
|
||||||
|
var clock{{ start.operation_id }} = document.getElementById("countdown{{ start.operation_id }}"), targetDate{{ start.operation_id }} = new Date(Date.UTC({{ start.start | date:"Y, m-1, d, H, i" }}));{% endfor %}
|
||||||
|
|
||||||
|
setInterval(function(){clockClosest.innerHTML = targetDate.format('D @ h:ia'); if (targetDate > Date.now()){ clockClosest.innerHTML = clockClosest.innerHTML + "<BR>" + countdown(targetDate).toString();}}, 1000);
|
||||||
|
{% for subject, start in operations_list %}setInterval(function(){clock{{ start.operation_id }}.innerHTML = targetDate{{ start.operation_id }}.format('l d M H:i'); if (targetDate{{ start.operation_id }} > Date.now()){ clock{{ start.operation_id }}.innerHTML = clock{{ start.operation_id }}.innerHTML + " <span class='label label-success'>Local time</span></br><h2>" + countdown(targetDate{{ start.operation_id }}).toString() + "</h2>";}}, 1000);{% endfor %}
|
||||||
|
{% for timer in corp_timers %}setInterval(function(){clock{{ timer.id }}.innerHTML = targetDate{{ timer.id }}.format('D @ h:ia'); if (targetDate{{ timer.id }} > Date.now()){ clock{{ timer.id }}.innerHTML = clock{{ timer.id }}.innerHTML + "<BR>" + countdown(targetDate{{ timer.id }}).toString();}}, 1000);{% endfor %}
|
||||||
|
|
||||||
|
setInterval(function(){updateClock()}, 1000);
|
||||||
|
|
||||||
|
function updateClock() {
|
||||||
|
var clock = new Date();
|
||||||
|
document.getElementById("current-time").innerHTML = "<b>" + clock.toUTCString() + "</b>";
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
{% endblock content %}
|
71
stock/templates/registered/fleetupcharacters.html
Normal file
71
stock/templates/registered/fleetupcharacters.html
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
{% block page_title %}FleetUp{% endblock page_title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
{% if perms.auth.corp_stats %}
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Fleet-Up</a>
|
||||||
|
</div>
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="/fleetup/">Ops and Timers</a></li>
|
||||||
|
<li><a href="/fleetup/doctrines/">Doctrines</a></li>
|
||||||
|
<li><a href="/fleetup/fittings/">Fittings</a></li>
|
||||||
|
|
||||||
|
<li class="active"><a href="/fleetup/characters/">Characters <span class="sr-only">(current)</span></a></li>
|
||||||
|
|
||||||
|
<li></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">Characters registered on Fleet-Up.com</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="col-lg-6">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-condensed table-hover table-striped">
|
||||||
|
<tr>
|
||||||
|
<th class="col-md-1"></th>
|
||||||
|
<th class="col-md-1">Character</th>
|
||||||
|
<th class="col-md-1">Corporation</th>
|
||||||
|
<th class="col-md-1">Fleet-Up(id)</th>
|
||||||
|
</tr>
|
||||||
|
{% for char_name, user_id in member_list %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img src="http://image.eveonline.com/Character/{{ user_id.char_id }}_32.jpg" class="img-circle">
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>{{ user_id.char_name }}</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>{{ user_id.corporation }}</p>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<p>{{ user_id.user_id }}</p>
|
||||||
|
</td>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endblock content %}
|
90
stock/templates/registered/fleetupdoctrine.html
Normal file
90
stock/templates/registered/fleetupdoctrine.html
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
{% block page_title %}FleetUp - Doctrine{% endblock page_title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Fleet-Up</a>
|
||||||
|
</div>
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="/fleetup/">Ops and Timers</a></li>
|
||||||
|
<li class="active"><a href="/fleetup/doctrines/">Doctrines <span class="sr-only">(current)</span></a></li>
|
||||||
|
<li><a href="/fleetup/fittings/">Fittings</a></li>
|
||||||
|
{% if perms.auth.corp_stats %}
|
||||||
|
<li><a href="/fleetup/characters/">Characters</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="panel">
|
||||||
|
{% for a, j in doctrine.items %}
|
||||||
|
{% regroup j.Data|dictsort:"Role" by Role as role_list %}
|
||||||
|
|
||||||
|
{% for Role in role_list %}
|
||||||
|
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title"><b>{{ Role.grouper }}</b></h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table table-condensed table-hover table-striped">
|
||||||
|
<tr>
|
||||||
|
<th class="col-md-1"></th>
|
||||||
|
<th class="col-md-1">Name</th>
|
||||||
|
<th class="col-md-1">Role</th>
|
||||||
|
<th class="col-md-1">Hull type</th>
|
||||||
|
<th class="col-md-1">Ship type</th>
|
||||||
|
<th class="col-md-1">Estimated ISK</th>
|
||||||
|
<th class="col-md-2">Categories</th>
|
||||||
|
</tr>
|
||||||
|
{% for item in Role.list %}
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/fleetup/fittings/{{ item.FittingId }}"><img src="https://image.eveonline.com/InventoryType/{{ item.EveTypeId }}_32.png"></a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.Name }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.Role }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.HullType }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.ShipType }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% load humanize %}{{ item.EstPrice|intword }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% for categories in item.Categories %}
|
||||||
|
{{ categories }},
|
||||||
|
{% endfor %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
85
stock/templates/registered/fleetupdoctrinesview.html
Normal file
85
stock/templates/registered/fleetupdoctrinesview.html
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
{% block page_title %}FleetUp{% endblock page_title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Fleet-Up</a>
|
||||||
|
</div>
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="/fleetup/">Ops and Timers</a></li>
|
||||||
|
<li class="active"><a href="/fleetup/doctrines/">Doctrines <span class="sr-only">(current)</span></a></li>
|
||||||
|
<li><a href="/fleetup/fittings/">Fittings</a></li>
|
||||||
|
{% if perms.auth.corp_stats %}
|
||||||
|
<li><a href="/fleetup/characters/">Characters</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="panel">
|
||||||
|
{% if doctrines_list %}
|
||||||
|
{% for a, j in doctrines_list.items %}
|
||||||
|
{% regroup j|dictsort:"FolderName" by FolderName as folder_list %}
|
||||||
|
{% for FolderName in folder_list %}
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title"><b>{{ FolderName.grouper }}</b></h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<table class="table table-condensed table-hover table-striped">
|
||||||
|
<tr>
|
||||||
|
<th class="col-lg-1"></th>
|
||||||
|
<th class="col-lg-4">Name</th>
|
||||||
|
<th class="col-lg-3">Doctrine</th>
|
||||||
|
<th class="col-lg-4">Last updated</th>
|
||||||
|
<!--<th class="col-lg-1">Owner</th>
|
||||||
|
<th class="col-lg-2">Note</th>-->
|
||||||
|
</tr>
|
||||||
|
{% for item in FolderName.list %}
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/fleetup/doctrines/{{ item.DoctrineId }}/"><img src="https://image.eveonline.com/InventoryType/{{ item.IconId }}_32.png"></a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.Name }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="/fleetup/doctrines/{{ item.DoctrineId }}/" class="btn btn-info btn-sm">{{ item.FolderName }}</a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ item.LastUpdatedString }}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% else %}
|
||||||
|
<h3>There seems to be no Doctrines in here at the moment!</h3>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
152
stock/templates/registered/fleetupfitting.html
Normal file
152
stock/templates/registered/fleetupfitting.html
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
{% block page_title %}FleetUp - Doctrine{% endblock page_title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Fleet-Up</a>
|
||||||
|
</div>
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="/fleetup/">Ops and Timers</a></li>
|
||||||
|
<li><a href="/fleetup/doctrines/">Doctrines</a></li>
|
||||||
|
<li class="active"><a href="/fleetup/fittings/">Fittings <span class="sr-only">(current)</span></a></li>
|
||||||
|
{% if perms.auth.corp_stats %}
|
||||||
|
<li><a href="/fleetup/characters/">Characters</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="tab-content">
|
||||||
|
<div id="fit" class="tab-pane fade in active">
|
||||||
|
<div class="col-lg-3">
|
||||||
|
{% for x, y in fitting_data.items %}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">This fit is part of a doctrine</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% for doctrin in y.Doctrines %}
|
||||||
|
<h4>{{ doctrin.Name }}</h4>
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<p>Role in doctrine: {{ doctrin.Role }}</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<p>Priority:</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8">
|
||||||
|
<div class="progress">
|
||||||
|
<div class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="{{ doctrin.Priority }}" aria-valuemin="0" aria-valuemax="5" style="width: {% widthratio doctrin.Priority 5 100 %}%;">
|
||||||
|
{{ doctrin.Priority }}/5
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-8 col-lg-offset-7">
|
||||||
|
<a class="btn btn-primary" href="/fleetup/doctrines/{{ doctrin.DoctrineId }}/">See doctrine</a>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">Fit categories</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% for category in y.Categories %}
|
||||||
|
<span class="label label-success">{{ category }}</span>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">All fits in this Doctrine</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="list-group">
|
||||||
|
{% for arbit, orbit in doctrines_list.items %}
|
||||||
|
|
||||||
|
{% for fitting in orbit.Data %}
|
||||||
|
<a href="/fleetup/fittings/{{ fitting.FittingId }}/" class="list-group-item">
|
||||||
|
|
||||||
|
<h4 class="list-group-item-heading">{{ fitting.Name }}<span class="pull-right"><img src="https://image.eveonline.com/InventoryType/{{ fitting.EveTypeId }}_32.png" class="img-circle"></span></h4>
|
||||||
|
<p class="list-group-item-heading">{{ fitting.Role }} - {{ fitting.ShipType }}</p>
|
||||||
|
</a>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
{% for a, j in fitting_data.items %}
|
||||||
|
<h3 class="panel-title">{{ j.Name }}</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<img src="https://image.eveonline.com/InventoryType/{{ j.EveTypeId }}_64.png" class="img-responsive">
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-9">
|
||||||
|
<p>Hull: <b>{{ j.HullType }}</b></p>
|
||||||
|
<p>Ship: <b>{{ j.ShipType }}</b></p>
|
||||||
|
{% load humanize %}
|
||||||
|
<p>Estimated price: <b>{{ j.EstPrice|intword }} ISK</b></p>
|
||||||
|
</div>
|
||||||
|
{% regroup j.FittingData by Slot as fitting_list %}
|
||||||
|
<table class="table table-condensed table-hover">
|
||||||
|
<tr>
|
||||||
|
<th class="col-lg-1"></th>
|
||||||
|
<th class="col-lg-11"></th>
|
||||||
|
</tr>
|
||||||
|
{% for Slot in fitting_list %}
|
||||||
|
<tr class="info">
|
||||||
|
<td></td><td><b>{{ Slot.grouper }}</b></td>
|
||||||
|
</tr>
|
||||||
|
{% for item in Slot.list %}
|
||||||
|
<tr>
|
||||||
|
<td><img src="https://image.eveonline.com/InventoryType/{{ item.TypeId }}_32.png" class="img-responsive"></td>
|
||||||
|
<td> {{ item.Quantity }}x {{ item.TypeName }}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-lg-3">
|
||||||
|
<div class="panel panel-default">
|
||||||
|
<div class="panel-heading">
|
||||||
|
<h3 class="panel-title">EFT/Export</h3>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body">
|
||||||
|
{% for data in fitting_eft.items %}
|
||||||
|
{% autoescape off %}
|
||||||
|
<pre>{{ fitting_eft.fitting_eft }}</pre>
|
||||||
|
{% endautoescape %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
78
stock/templates/registered/fleetupfittingsview.html
Normal file
78
stock/templates/registered/fleetupfittingsview.html
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
{% extends "public/base.html" %}
|
||||||
|
{% load bootstrap %}
|
||||||
|
{% load staticfiles %}
|
||||||
|
|
||||||
|
{% block title %}Alliance Auth{% endblock %}
|
||||||
|
{% block page_title %}FleetUp{% endblock page_title %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="col-lg-12">
|
||||||
|
<nav class="navbar navbar-default">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="navbar-header">
|
||||||
|
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
|
||||||
|
<span class="sr-only">Toggle navigation</span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
<span class="icon-bar"></span>
|
||||||
|
</button>
|
||||||
|
<a class="navbar-brand" href="#">Fleet-Up</a>
|
||||||
|
</div>
|
||||||
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
|
<ul class="nav navbar-nav">
|
||||||
|
<li><a href="/fleetup/">Ops and Timers</a></li>
|
||||||
|
<li><a href="/fleetup/doctrines/">Doctrines</a></li>
|
||||||
|
<li class="active"><a href="/fleetup/fittings/">Fittings <span class="sr-only">(current)</span></a></li>
|
||||||
|
{% if perms.auth.corp_stats %}
|
||||||
|
<li><a href="/fleetup/characters/">Characters</a></li>
|
||||||
|
{% endif %}
|
||||||
|
<li></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="panel">
|
||||||
|
{% if fitting_list %}
|
||||||
|
<table class="table table-condensed table-hover table-striped">
|
||||||
|
<tr>
|
||||||
|
<th class="col-md-1"></th>
|
||||||
|
<th class="col-md-1">Name</th>
|
||||||
|
<th class="col-md-1">Hull</th>
|
||||||
|
<th class="col-md-1">Ship type</th>
|
||||||
|
<th class="col-md-1">Estimated ISK</th>
|
||||||
|
<th class="col-md-2">Categories</th>
|
||||||
|
</tr>
|
||||||
|
{% for id, fittings in fitting_list %}
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<a href="/fleetup/fittings/{{ fittings.fitting_id }}"><img src="https://image.eveonline.com/InventoryType/{{ fittings.icon_id }}_32.png"></a>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ fittings.name }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ fittings.hull }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{{ fittings.shiptype }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% load humanize %}{{ fittings.estimated|intword }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{% for categories in fittings.categories %}
|
||||||
|
{{ categories }},
|
||||||
|
{% endfor %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{% else %}
|
||||||
|
<h3>There seems to be no Doctrines in here at the moment!</h3>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock content %}
|
Loading…
x
Reference in New Issue
Block a user