mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-13 06:20:16 +02:00
Merge pull request #321 from orbitroom/master
Added ship type and total loss that populates from zkillboard
This commit is contained in:
commit
6223935e34
60
services/managers/srp_manager.py
Normal file
60
services/managers/srp_manager.py
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
|
import json
|
||||||
|
import urllib2
|
||||||
|
import logging
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class srpManager():
|
||||||
|
@staticmethod
|
||||||
|
def get_kill_id (killboard_link):
|
||||||
|
str = (killboard_link)
|
||||||
|
set = '0123456789'
|
||||||
|
kill_id = ''.join([c for c in str if c in set])
|
||||||
|
return kill_id
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_kill_data (kill_id):
|
||||||
|
url = ("https://www.zkillboard.com/api/killID/%s" % kill_id)
|
||||||
|
request = urllib2.Request(url)
|
||||||
|
request.add_header('User-Agent',"%s Alliance Auth" % settings.DOMAIN)
|
||||||
|
request.add_header('Content-Type','application/json')
|
||||||
|
response = urllib2.urlopen(request)
|
||||||
|
result = json.load(response)[0]
|
||||||
|
if result:
|
||||||
|
ship_type = result['victim']['shipTypeID']
|
||||||
|
logger.debug("Ship type for kill ID %s is determined to be %s" % (kill_id, ship_type))
|
||||||
|
ship_value = result['zkb']['totalValue']
|
||||||
|
logger.debug("total loss value for kill id %s is %s" %(kill_id, ship_value))
|
||||||
|
return (ship_type, ship_value)
|
||||||
|
else:
|
||||||
|
raise ValueError("Invalid Kill ID")
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_ship_name (ship_type):
|
||||||
|
url = ("https://jetbalsa.com/api/json.php/invTypes/%s" % ship_type)
|
||||||
|
request = urllib2.Request(url)
|
||||||
|
request.add_header('User-Agent',"%s Alliance Auth" % settings.DOMAIN)
|
||||||
|
request.add_header('Content-Type','application/json')
|
||||||
|
response = urllib2.urlopen(request)
|
||||||
|
result = json.load(response)
|
||||||
|
if result:
|
||||||
|
ship_name = result['typeName']
|
||||||
|
logger.debug("ship type %s determined to be %s" % (ship_type, ship_name))
|
||||||
|
return ship_name
|
||||||
|
else:
|
||||||
|
logger.debug("ship type %s is invalid" % ship_type)
|
||||||
|
raise ValueError("Cannot get ship name")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
16
srp/form.py
16
srp/form.py
@ -1,6 +1,7 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SrpFleetMainForm(forms.Form):
|
class SrpFleetMainForm(forms.Form):
|
||||||
fleet_name = forms.CharField(required=True, label="Fleet Name")
|
fleet_name = forms.CharField(required=True, label="Fleet Name")
|
||||||
fleet_time = forms.DateTimeField(required=True, label="Fleet Time")
|
fleet_time = forms.DateTimeField(required=True, label="Fleet Time")
|
||||||
@ -8,8 +9,19 @@ class SrpFleetMainForm(forms.Form):
|
|||||||
|
|
||||||
|
|
||||||
class SrpFleetUserRequestForm(forms.Form):
|
class SrpFleetUserRequestForm(forms.Form):
|
||||||
killboard_link = forms.CharField(required=True, label="Killboard Link")
|
|
||||||
additional_info = forms.CharField(required=False, label="Additional Info")
|
additional_info = forms.CharField(required=False, label="Additional Info")
|
||||||
|
killboard_link = forms.CharField(
|
||||||
|
label="zKillboard Link",
|
||||||
|
max_length=255,
|
||||||
|
required=True
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
def clean_killboard_link(self):
|
||||||
|
data = self.cleaned_data['killboard_link']
|
||||||
|
if "zkillboard.com" not in data:
|
||||||
|
raise forms.ValidationError("Invalid Link. Please use zKillboard.com")
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
class SrpFleetUpdateCostForm(forms.Form):
|
class SrpFleetUpdateCostForm(forms.Form):
|
||||||
@ -17,4 +29,4 @@ class SrpFleetUpdateCostForm(forms.Form):
|
|||||||
|
|
||||||
|
|
||||||
class SrpFleetMainUpdateForm(forms.Form):
|
class SrpFleetMainUpdateForm(forms.Form):
|
||||||
fleet_aar_link = forms.CharField(required=True, label="After Action Report Link")
|
fleet_aar_link = forms.CharField(required=True, label="After Action Report Link")
|
||||||
|
@ -24,6 +24,9 @@ class SrpUserRequest(models.Model):
|
|||||||
srp_total_amount = models.BigIntegerField(default=0)
|
srp_total_amount = models.BigIntegerField(default=0)
|
||||||
character = models.ForeignKey(EveCharacter)
|
character = models.ForeignKey(EveCharacter)
|
||||||
srp_fleet_main = models.ForeignKey(SrpFleetMain)
|
srp_fleet_main = models.ForeignKey(SrpFleetMain)
|
||||||
|
kb_total_loss = models.BigIntegerField(default=0)
|
||||||
|
srp_ship_name = models.CharField(max_length=254, default="")
|
||||||
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.character.character_name + " - SrpUserRequest"
|
return self.character.character_name + " - SrpUserRequest"
|
||||||
|
16
srp/views.py
16
srp/views.py
@ -15,6 +15,8 @@ from form import SrpFleetMainForm
|
|||||||
from form import SrpFleetUserRequestForm
|
from form import SrpFleetUserRequestForm
|
||||||
from form import SrpFleetUpdateCostForm
|
from form import SrpFleetUpdateCostForm
|
||||||
from form import SrpFleetMainUpdateForm
|
from form import SrpFleetMainUpdateForm
|
||||||
|
from services.managers.srp_manager import srpManager
|
||||||
|
from notifications import notify
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@ -185,13 +187,25 @@ def srp_request_view(request, fleet_srp):
|
|||||||
character = EveManager.get_character_by_id(authinfo.main_char_id)
|
character = EveManager.get_character_by_id(authinfo.main_char_id)
|
||||||
srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
|
srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
|
||||||
|
|
||||||
|
|
||||||
srp_request = SrpUserRequest()
|
srp_request = SrpUserRequest()
|
||||||
srp_request.killboard_link = form.cleaned_data['killboard_link']
|
srp_request.killboard_link = form.cleaned_data['killboard_link']
|
||||||
srp_request.additional_info = form.cleaned_data['additional_info']
|
srp_request.additional_info = form.cleaned_data['additional_info']
|
||||||
srp_request.character = character
|
srp_request.character = character
|
||||||
srp_request.srp_fleet_main = srp_fleet_main
|
srp_request.srp_fleet_main = srp_fleet_main
|
||||||
srp_request.save()
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
srp_kill_link = srpManager.get_kill_id(srp_request.killboard_link)
|
||||||
|
(srp_kill_data, ship_value) = srpManager.get_kill_data(srp_kill_link)
|
||||||
|
except ValueError:
|
||||||
|
logger.debug("User %s Submitted Invalid Killmail Link %s or server could not be reached" % (request.user, srp_request.killboard_link))
|
||||||
|
notify(request.user, "Your SRP request Killmail Link Failed Validation", message="Your SRP request Killmail link %s is invalid. Please make sure your using zKillboard." % srp_request.killboard_link, level="danger")
|
||||||
|
return HttpResponseRedirect("/srp")
|
||||||
|
srp_ship_name = srpManager.get_ship_name(srp_kill_data)
|
||||||
|
srp_request.srp_ship_name = srp_ship_name
|
||||||
|
kb_total_loss = ship_value
|
||||||
|
srp_request.kb_total_loss = kb_total_loss
|
||||||
|
srp_request.save()
|
||||||
completed = True
|
completed = True
|
||||||
logger.info("Created SRP Request on behalf of user %s for fleet name %s" % (request.user, srp_fleet_main.fleet_name))
|
logger.info("Created SRP Request on behalf of user %s for fleet name %s" % (request.user, srp_fleet_main.fleet_name))
|
||||||
|
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
<th class="text-center">Pilot Name</th>
|
<th class="text-center">Pilot Name</th>
|
||||||
<th class="text-center">Killboard Link</th>
|
<th class="text-center">Killboard Link</th>
|
||||||
<th class="text-center">Additional Info</th>
|
<th class="text-center">Additional Info</th>
|
||||||
|
<th class="text-center">Ship Type</th>
|
||||||
|
<th class="text-center">Killboard Loss Amt</th>
|
||||||
<th class="text-center">SRP ISK Cost</th>
|
<th class="text-center">SRP ISK Cost</th>
|
||||||
<th class="text-center">Status</th>
|
<th class="text-center">Status</th>
|
||||||
{% if perms.auth.srp_management %}
|
{% if perms.auth.srp_management %}
|
||||||
@ -55,6 +57,8 @@
|
|||||||
target="_blank">{{ srpfleetrequest.killboard_link }}</a>
|
target="_blank">{{ srpfleetrequest.killboard_link }}</a>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center">{{ srpfleetrequest.additional_info }}</td>
|
<td class="text-center">{{ srpfleetrequest.additional_info }}</td>
|
||||||
|
<td class="text-center">{{ srpfleetrequest.srp_ship_name }}</td>
|
||||||
|
<td class="text-center">ISK: {{ srpfleetrequest.kb_total_loss | intcomma }}</td>
|
||||||
<td class="text-center">ISK: {{ srpfleetrequest.srp_total_amount | intcomma }}</td>
|
<td class="text-center">ISK: {{ srpfleetrequest.srp_total_amount | intcomma }}</td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
{% if srpfleetrequest.srp_status == "Approved" %}
|
{% if srpfleetrequest.srp_status == "Approved" %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user