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
|
||||
|
||||
|
||||
|
||||
class SrpFleetMainForm(forms.Form):
|
||||
fleet_name = forms.CharField(required=True, label="Fleet Name")
|
||||
fleet_time = forms.DateTimeField(required=True, label="Fleet Time")
|
||||
@ -8,8 +9,19 @@ class SrpFleetMainForm(forms.Form):
|
||||
|
||||
|
||||
class SrpFleetUserRequestForm(forms.Form):
|
||||
killboard_link = forms.CharField(required=True, label="Killboard Link")
|
||||
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):
|
||||
@ -17,4 +29,4 @@ class SrpFleetUpdateCostForm(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)
|
||||
character = models.ForeignKey(EveCharacter)
|
||||
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):
|
||||
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 SrpFleetUpdateCostForm
|
||||
from form import SrpFleetMainUpdateForm
|
||||
from services.managers.srp_manager import srpManager
|
||||
from notifications import notify
|
||||
|
||||
import logging
|
||||
|
||||
@ -185,13 +187,25 @@ def srp_request_view(request, fleet_srp):
|
||||
character = EveManager.get_character_by_id(authinfo.main_char_id)
|
||||
srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
|
||||
|
||||
|
||||
srp_request = SrpUserRequest()
|
||||
srp_request.killboard_link = form.cleaned_data['killboard_link']
|
||||
srp_request.additional_info = form.cleaned_data['additional_info']
|
||||
srp_request.character = character
|
||||
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
|
||||
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">Killboard Link</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">Status</th>
|
||||
{% if perms.auth.srp_management %}
|
||||
@ -55,6 +57,8 @@
|
||||
target="_blank">{{ srpfleetrequest.killboard_link }}</a>
|
||||
</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">
|
||||
{% if srpfleetrequest.srp_status == "Approved" %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user