mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 22:10:16 +02:00
SRP QOL + Validation (#786)
- new UI for srp management (mass performs, inline editing) - unique validation for srp killboard links - character auth ownership verification for killboard links - removed remnants of old error messaging system & replaced with current standard - added a confirmation popup when deleting fleet SRP's
This commit is contained in:
parent
aad3bd6f57
commit
4556a0e740
@ -55,11 +55,14 @@ urlpatterns = [
|
||||
name='auth_srp_fleet_mark_completed'),
|
||||
url(r'^srp_fleet_mark_uncompleted/(\w+)', srp.views.srp_fleet_mark_uncompleted,
|
||||
name='auth_srp_fleet_mark_uncompleted'),
|
||||
url(r'^srp_request_remove/(\w+)', srp.views.srp_request_remove,
|
||||
url(r'^srp_request_remove/', srp.views.srp_request_remove,
|
||||
name="auth_srp_request_remove"),
|
||||
url(r'srp_request_approve/(\w+)', srp.views.srp_request_approve,
|
||||
url(r'srp_request_approve/', srp.views.srp_request_approve,
|
||||
name='auth_srp_request_approve'),
|
||||
url(r'srp_request_reject/(\w+)', srp.views.srp_request_reject, name='auth_srp_request_reject'),
|
||||
url(r'srp_request_reject/', srp.views.srp_request_reject,
|
||||
name='auth_srp_request_reject'),
|
||||
url(_(r'srp_request_amount_update/(\w+)'), srp.views.srp_request_update_amount,
|
||||
name="auth_srp_request_update_amount"),
|
||||
|
||||
# Notifications
|
||||
url(r'^remove_notifications/(\w+)/$', notifications.views.remove_notification, name='auth_remove_notification'),
|
||||
@ -179,8 +182,6 @@ urlpatterns += i18n_patterns(
|
||||
url(_(r'^srp_fleet_add_view/$'), srp.views.srp_fleet_add_view, name='auth_srp_fleet_add_view'),
|
||||
url(_(r'^srp_fleet_edit/(\w+)$'), srp.views.srp_fleet_edit_view, name='auth_srp_fleet_edit_view'),
|
||||
url(_(r'^srp_request/(\w+)'), srp.views.srp_request_view, name='auth_srp_request_view'),
|
||||
url(_(r'srp_request_amount_update/(\w+)'), srp.views.srp_request_update_amount_view,
|
||||
name="auth_srp_request_update_amount_view"),
|
||||
|
||||
# Tools
|
||||
url(_(r'^tool/fleet_formatter_tool/$'), services.views.fleet_formatter_view,
|
||||
|
@ -31,6 +31,7 @@ class srpManager:
|
||||
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
|
||||
victim_name = result['victim']['characterName']
|
||||
return ship_type, ship_value, victim_name
|
||||
else:
|
||||
raise ValueError("Invalid Kill ID")
|
||||
|
@ -25,9 +25,5 @@ class SrpFleetUserRequestForm(forms.Form):
|
||||
return data
|
||||
|
||||
|
||||
class SrpFleetUpdateCostForm(forms.Form):
|
||||
srp_total_amount = forms.IntegerField(required=True, label=_("Total SRP Amount"))
|
||||
|
||||
|
||||
class SrpFleetMainUpdateForm(forms.Form):
|
||||
fleet_aar_link = forms.CharField(required=True, label=_("After Action Report Link"))
|
||||
|
190
srp/views.py
190
srp/views.py
@ -3,13 +3,13 @@ from django.shortcuts import render, redirect
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from django.contrib import messages
|
||||
from django.http import JsonResponse
|
||||
from eveonline.managers import EveManager
|
||||
from authentication.models import AuthServicesInfo
|
||||
from srp.models import SrpFleetMain
|
||||
from srp.models import SrpUserRequest
|
||||
from srp.form import SrpFleetMainForm
|
||||
from srp.form import SrpFleetUserRequestForm
|
||||
from srp.form import SrpFleetUpdateCostForm
|
||||
from srp.form import SrpFleetMainUpdateForm
|
||||
from services.managers.srp_manager import srpManager
|
||||
from notifications import notify
|
||||
@ -58,7 +58,7 @@ def srp_fleet_view(request, fleet_id):
|
||||
if SrpFleetMain.objects.filter(id=fleet_id).exists():
|
||||
fleet_main = SrpFleetMain.objects.get(id=fleet_id)
|
||||
context = {"fleet_id": fleet_id, "fleet_status": fleet_main.fleet_srp_status,
|
||||
"srpfleetrequests": fleet_main.srpuserrequest_set.all(),
|
||||
"srpfleetrequests": fleet_main.srpuserrequest_set.order_by('srp_ship_name'),
|
||||
"totalcost": fleet_main.total_cost}
|
||||
|
||||
return render(request, 'registered/srpfleetdata.html', context=context)
|
||||
@ -194,18 +194,23 @@ def srp_fleet_mark_uncompleted(request, fleet_id):
|
||||
@members_and_blues()
|
||||
def srp_request_view(request, fleet_srp):
|
||||
logger.debug("srp_request_view called by user %s for fleet srp code %s" % (request.user, fleet_srp))
|
||||
completed = False
|
||||
no_srp_code = False
|
||||
|
||||
if SrpFleetMain.objects.filter(fleet_srp_code=fleet_srp).exists() is False:
|
||||
no_srp_code = True
|
||||
logger.error("Unable to locate SRP Fleet using code %s for user %s" % (fleet_srp, request.user))
|
||||
messages.error(request,
|
||||
_('Unable to locate SRP code with ID %(srpfleetid)s') % {"srpfleetid": fleet_srp})
|
||||
return redirect("auth_srp_management_view")
|
||||
|
||||
if request.method == 'POST':
|
||||
form = SrpFleetUserRequestForm(request.POST)
|
||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||
|
||||
if form.is_valid():
|
||||
if SrpUserRequest.objects.filter(killboard_link=form.cleaned_data['killboard_link']).exists():
|
||||
messages.error(request,
|
||||
_("This Killboard link has already been posted."))
|
||||
return redirect("auth_srp_management_view")
|
||||
|
||||
authinfo = AuthServicesInfo.objects.get(user=request.user)
|
||||
character = EveManager.get_character_by_id(authinfo.main_char_id)
|
||||
srp_fleet_main = SrpFleetMain.objects.get(fleet_srp_code=fleet_srp)
|
||||
@ -219,7 +224,7 @@ def srp_request_view(request, fleet_srp):
|
||||
|
||||
try:
|
||||
srp_kill_link = srpManager.get_kill_id(srp_request.killboard_link)
|
||||
(ship_type_id, ship_value) = srpManager.get_kill_data(srp_kill_link)
|
||||
(ship_type_id, ship_value, victim_name) = 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))
|
||||
@ -227,117 +232,138 @@ def srp_request_view(request, fleet_srp):
|
||||
messages.error(request,
|
||||
_("Your SRP request Killmail link is invalid. Please make sure you are using zKillboard."))
|
||||
return redirect("auth_srp_management_view")
|
||||
srp_ship_name = EveManager.get_itemtype(ship_type_id).name
|
||||
srp_request.srp_ship_name = srp_ship_name
|
||||
kb_total_loss = ship_value
|
||||
srp_request.kb_total_loss = kb_total_loss
|
||||
srp_request.post_time = post_time
|
||||
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))
|
||||
messages.success(request, _('Submitted SRP request for your %(ship)s.') % {"ship": srp_ship_name})
|
||||
|
||||
characters = EveManager.get_characters_by_owner_id(request.user.id)
|
||||
for character in characters:
|
||||
if character.character_name == victim_name:
|
||||
srp_request.srp_ship_name = EveManager.get_itemtype(ship_type_id).name
|
||||
srp_request.kb_total_loss = ship_value
|
||||
srp_request.post_time = post_time
|
||||
srp_request.save()
|
||||
logger.info("Created SRP Request on behalf of user %s for fleet name %s" % (
|
||||
request.user, srp_fleet_main.fleet_name))
|
||||
messages.success(request, _('Submitted SRP request for your %(ship)s.') % {"ship": srp_request.srp_ship_name})
|
||||
return redirect("auth_srp_management_view")
|
||||
else:
|
||||
continue
|
||||
messages.error(request,
|
||||
_("%(charname)s does not belong to your Auth account. Please add the API key for this character and try again")
|
||||
% {"charname": victim_name})
|
||||
return redirect("auth_srp_management_view")
|
||||
else:
|
||||
logger.debug("Returning blank SrpFleetUserRequestForm")
|
||||
form = SrpFleetUserRequestForm()
|
||||
|
||||
render_items = {'form': form, "completed": completed, "no_srp_code": no_srp_code}
|
||||
render_items = {'form': form}
|
||||
|
||||
return render(request, 'registered/srpfleetrequest.html', context=render_items)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_remove(request, srp_request_id):
|
||||
logger.debug("srp_request_remove called by user %s for srp request id %s" % (request.user, srp_request_id))
|
||||
def srp_request_remove(request):
|
||||
numrequests = len(request.POST)-1
|
||||
logger.debug("srp_request_remove called by user %s for %s srp request id's" % (request.user, numrequests))
|
||||
stored_fleet_view = None
|
||||
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.delete()
|
||||
logger.info("Deleted SRP request id %s for user %s" % (srp_request_id, request.user))
|
||||
messages.success(request, _('Deleted SRP request from %(character)s for their %(ship)s.') % {
|
||||
"character": srpuserrequest.character, "ship": srpuserrequest.srp_ship_name})
|
||||
for srp_request_id in request.POST:
|
||||
if numrequests == 0:
|
||||
messages.warning(request, _("No SRP requests selected"))
|
||||
return redirect("auth_srp_management_view")
|
||||
if srp_request_id == "csrfmiddlewaretoken":
|
||||
continue
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.delete()
|
||||
logger.info("Deleted SRP request id %s for user %s" % (srp_request_id, request.user))
|
||||
if stored_fleet_view is None:
|
||||
logger.error("Unable to delete srp request id %s for user %s - request matching id not found." % (
|
||||
srp_request_id, request.user))
|
||||
messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": srp_request_id})
|
||||
return redirect("auth_srp_management_view")
|
||||
else:
|
||||
messages.success(request, _('Deleted %(numrequests)s SRP requests') % {"numrequests": numrequests})
|
||||
return redirect("auth_srp_fleet_view", stored_fleet_view)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_approve(request, srp_request_id):
|
||||
logger.debug("srp_request_approve called by user %s for srp request id %s" % (request.user, srp_request_id))
|
||||
def srp_request_approve(request):
|
||||
numrequests = len(request.POST)-1
|
||||
logger.debug("srp_request_approve called by user %s for %s srp request id's" % (request.user, numrequests))
|
||||
stored_fleet_view = None
|
||||
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.srp_status = "Approved"
|
||||
if srpuserrequest.srp_total_amount == 0:
|
||||
srpuserrequest.srp_total_amount = srpuserrequest.kb_total_loss
|
||||
srpuserrequest.save()
|
||||
logger.info("Approved SRP request id %s for character %s by user %s" % (
|
||||
srp_request_id, srpuserrequest.character, request.user))
|
||||
messages.success(request, _('Approved SRP request from %(character)s for their %(ship)s.') % {
|
||||
"character": srpuserrequest.character, "ship": srpuserrequest.srp_ship_name})
|
||||
notify(
|
||||
srpuserrequest.character.user,
|
||||
'SRP Request Approved',
|
||||
level='success',
|
||||
message='Your SRP request for a %s lost during %s has been approved for %s ISK.' % (
|
||||
srpuserrequest.srp_ship_name, srpuserrequest.srp_fleet_main.fleet_name, srpuserrequest.srp_total_amount)
|
||||
)
|
||||
for srp_request_id in request.POST:
|
||||
if numrequests == 0:
|
||||
messages.warning(request, _("No SRP requests selected"))
|
||||
return redirect("auth_srp_management_view")
|
||||
if srp_request_id == "csrfmiddlewaretoken":
|
||||
continue
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.srp_status = "Approved"
|
||||
if srpuserrequest.srp_total_amount == 0:
|
||||
srpuserrequest.srp_total_amount = srpuserrequest.kb_total_loss
|
||||
srpuserrequest.save()
|
||||
logger.info("Approved SRP request id %s for character %s by user %s" % (
|
||||
srp_request_id, srpuserrequest.character, request.user))
|
||||
notify(
|
||||
srpuserrequest.character.user,
|
||||
'SRP Request Approved',
|
||||
level='success',
|
||||
message='Your SRP request for a %s lost during %s has been approved for %s ISK.' % (
|
||||
srpuserrequest.srp_ship_name, srpuserrequest.srp_fleet_main.fleet_name, srpuserrequest.srp_total_amount)
|
||||
)
|
||||
if stored_fleet_view is None:
|
||||
logger.error("Unable to approve srp request id %s on behalf of user %s - request matching id not found." % (
|
||||
srp_request_id, request.user))
|
||||
messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": srp_request_id})
|
||||
return redirect("auth_srp_management_view")
|
||||
else:
|
||||
messages.success(request, _('Approved %(numrequests)s SRP requests') % {"numrequests": numrequests})
|
||||
return redirect("auth_srp_fleet_view", stored_fleet_view)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_reject(request, srp_request_id):
|
||||
logger.debug("srp_request_reject called by user %s for srp request id %s" % (request.user, srp_request_id))
|
||||
def srp_request_reject(request):
|
||||
numrequests = len(request.POST)-1
|
||||
logger.debug("srp_request_reject called by user %s for %s srp request id's" % (request.user, numrequests))
|
||||
stored_fleet_view = None
|
||||
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.srp_status = "Rejected"
|
||||
srpuserrequest.save()
|
||||
logger.info("SRP request id %s for character %s rejected by %s" % (
|
||||
srp_request_id, srpuserrequest.character, request.user))
|
||||
messages.success(request, _('Rejected SRP request from %(character)s for their %(ship)s.') % {
|
||||
"character": srpuserrequest.character, "ship": srpuserrequest.srp_ship_name})
|
||||
notify(
|
||||
srpuserrequest.character.user,
|
||||
'SRP Request Rejected',
|
||||
level='danger',
|
||||
message='Your SRP request for a %s lost during %s has been rejected.' % (
|
||||
srpuserrequest.srp_ship_name, srpuserrequest.srp_fleet_main.fleet_name)
|
||||
)
|
||||
|
||||
for srp_request_id in request.POST:
|
||||
if numrequests == 0:
|
||||
messages.warning(request, _("No SRP requests selected"))
|
||||
return redirect("auth_srp_management_view")
|
||||
if srp_request_id == "csrfmiddlewaretoken":
|
||||
continue
|
||||
if SrpUserRequest.objects.filter(id=srp_request_id).exists():
|
||||
srpuserrequest = SrpUserRequest.objects.get(id=srp_request_id)
|
||||
stored_fleet_view = srpuserrequest.srp_fleet_main.id
|
||||
srpuserrequest.srp_status = "Rejected"
|
||||
srpuserrequest.save()
|
||||
logger.info("SRP request id %s for character %s rejected by %s" % (
|
||||
srp_request_id, srpuserrequest.character, request.user))
|
||||
notify(
|
||||
srpuserrequest.character.user,
|
||||
'SRP Request Rejected',
|
||||
level='danger',
|
||||
message='Your SRP request for a %s lost during %s has been rejected.' % (
|
||||
srpuserrequest.srp_ship_name, srpuserrequest.srp_fleet_main.fleet_name)
|
||||
)
|
||||
if stored_fleet_view is None:
|
||||
logger.error("Unable to reject SRP request id %s on behalf of user %s - request matching id not found." % (
|
||||
srp_request_id, request.user))
|
||||
messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": srp_request_id})
|
||||
return redirect("auth_srp_management_view")
|
||||
else:
|
||||
messages.success(request, _('Rejected %(numrequests)s SRP requests.') % {"numrequests": numrequests})
|
||||
return redirect("auth_srp_fleet_view", stored_fleet_view)
|
||||
|
||||
|
||||
@login_required
|
||||
@permission_required('auth.srp_management')
|
||||
def srp_request_update_amount_view(request, fleet_srp_request_id):
|
||||
logger.debug("srp_request_update_amount_view called by user %s for fleet srp request id %s" % (
|
||||
def srp_request_update_amount(request, fleet_srp_request_id):
|
||||
logger.debug("srp_request_update_amount called by user %s for fleet srp request id %s" % (
|
||||
request.user, fleet_srp_request_id))
|
||||
|
||||
if SrpUserRequest.objects.filter(id=fleet_srp_request_id).exists() is False:
|
||||
@ -345,24 +371,12 @@ def srp_request_update_amount_view(request, fleet_srp_request_id):
|
||||
messages.error(request, _('Unable to locate SRP request with ID %(requestid)s') % {"requestid": fleet_srp_request_id})
|
||||
return redirect("auth_srp_management_view")
|
||||
|
||||
if request.method == 'POST':
|
||||
form = SrpFleetUpdateCostForm(request.POST)
|
||||
logger.debug("Request type POST contains form valid: %s" % form.is_valid())
|
||||
if form.is_valid():
|
||||
srp_request = SrpUserRequest.objects.get(id=fleet_srp_request_id)
|
||||
srp_request.srp_total_amount = form.cleaned_data['srp_total_amount']
|
||||
srp_request.save()
|
||||
logger.info("Updated srp request id %s total to %s by user %s" % (
|
||||
fleet_srp_request_id, form.cleaned_data['srp_total_amount'], request.user))
|
||||
messages.success(request, _('Updated SRP amount.'))
|
||||
return redirect("auth_srp_fleet_view", srp_request.srp_fleet_main.id)
|
||||
else:
|
||||
logger.debug("Returning blank SrpFleetUpdateCostForm")
|
||||
form = SrpFleetUpdateCostForm()
|
||||
|
||||
render_items = {'form': form}
|
||||
|
||||
return render(request, 'registered/srpfleetrequestamount.html', context=render_items)
|
||||
srp_request = SrpUserRequest.objects.get(id=fleet_srp_request_id)
|
||||
srp_request.srp_total_amount = request.POST['value']
|
||||
srp_request.save()
|
||||
logger.info("Updated srp request id %s total to %s by user %s" % (
|
||||
fleet_srp_request_id, request.POST['value'], request.user))
|
||||
return JsonResponse({"success":True,"pk":fleet_srp_request_id,"newValue":request.POST['value']})
|
||||
|
||||
|
||||
@login_required
|
||||
|
58
stock/static/css/checkbox.css
Normal file
58
stock/static/css/checkbox.css
Normal file
@ -0,0 +1,58 @@
|
||||
.checkbox label:after,
|
||||
.radio label:after {
|
||||
content: '';
|
||||
display: table;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.checkbox .cr,
|
||||
.radio .cr {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
border: 1px solid #a9a9a9;
|
||||
border-radius: .25em;
|
||||
width: 1.3em;
|
||||
height: 1.3em;
|
||||
float: left;
|
||||
margin-right: .5em;
|
||||
}
|
||||
|
||||
.radio .cr {
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
.checkbox .cr .cr-icon,
|
||||
.radio .cr .cr-icon {
|
||||
position: absolute;
|
||||
font-size: .8em;
|
||||
line-height: 0;
|
||||
top: 50%;
|
||||
left: 20%;
|
||||
}
|
||||
|
||||
.radio .cr .cr-icon {
|
||||
margin-left: 0.04em;
|
||||
}
|
||||
|
||||
.checkbox label input[type="checkbox"],
|
||||
.radio label input[type="radio"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.checkbox label input[type="checkbox"] + .cr > .cr-icon,
|
||||
.radio label input[type="radio"] + .cr > .cr-icon {
|
||||
transform: scale(3) rotateZ(-20deg);
|
||||
opacity: 0;
|
||||
transition: all .3s ease-in;
|
||||
}
|
||||
|
||||
.checkbox label input[type="checkbox"]:checked + .cr > .cr-icon,
|
||||
.radio label input[type="radio"]:checked + .cr > .cr-icon {
|
||||
transform: scale(1) rotateZ(0deg);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.checkbox label input[type="checkbox"]:disabled + .cr,
|
||||
.radio label input[type="radio"]:disabled + .cr {
|
||||
opacity: .5;
|
||||
}
|
4
stock/templates/bundles/x-editable-js.html
Normal file
4
stock/templates/bundles/x-editable-js.html
Normal file
@ -0,0 +1,4 @@
|
||||
{% load static %}
|
||||
<!-- Start X-Editablle js -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/js/bootstrap-editable.min.js"></script>
|
||||
<!-- End X-Editable js -->
|
4
stock/templates/bundles/x-editable.css.html
Normal file
4
stock/templates/bundles/x-editable.css.html
Normal file
@ -0,0 +1,4 @@
|
||||
{% load staticfiles %}
|
||||
<!-- X-Editable Core CSS -->
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/css/bootstrap-editable.css" rel="stylesheet">
|
||||
<!-- End Bootstrap CSS -->
|
@ -7,7 +7,42 @@
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
|
||||
{% block page_title %}Srp Fleet Data{% endblock page_title %}
|
||||
{% block extra_css %}{% endblock extra_css %}
|
||||
{% block extra_css %}
|
||||
{% include 'bundles/x-editable.css.html' %}
|
||||
<link href="{% static 'css/checkbox.css' %}" rel="stylesheet" type="text/css">
|
||||
<style>
|
||||
.radio label, .checkbox label {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.editable {
|
||||
width:150px;
|
||||
text-align: center;
|
||||
}
|
||||
.editableform .form-control {
|
||||
width: 95%;
|
||||
text-align: center;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.editable-input {
|
||||
width: 95%;
|
||||
}
|
||||
.radio, .checkbox {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
.editable-error-block {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.editable-click, a.editable-click, a.editable-click:hover {
|
||||
border-bottom: none;
|
||||
}
|
||||
.tooltip-inner {
|
||||
white-space:pre;
|
||||
max-width: none;
|
||||
}
|
||||
</style>
|
||||
{% endblock extra_css %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
@ -27,92 +62,147 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</h1>
|
||||
<div class="alert alert-info" role="alert">
|
||||
<div class="text-right">
|
||||
<b>{% trans "Total Losses:" %} {{ srpfleetrequests.count }}</b>
|
||||
|
||||
<b>{% trans "Total ISK Cost:" %} {{ totalcost | intcomma }}</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if srpfleetrequests %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th class="text-center">{% trans "Pilot Name" %}</th>
|
||||
<th class="text-center">{% trans "Killboard Link" %}</th>
|
||||
<th class="text-center">{% trans "Additional Info" %}</th>
|
||||
<th class="text-center">{% trans "Ship Type" %}</th>
|
||||
<th class="text-center">{% trans "Killboard Loss Amt" %}</th>
|
||||
<th class="text-center">{% trans "SRP ISK Cost" %}</th>
|
||||
<th class="text-center">{% trans "Post Time" %}</th>
|
||||
<th class="text-center">{% trans "Status" %}</th>
|
||||
{% if perms.auth.srp_management %}
|
||||
<th class="text-center">{% trans "Actions" %}</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% for srpfleetrequest in srpfleetrequests %}
|
||||
<tr>
|
||||
<td class="text-center">{{ srpfleetrequest.character.character_name }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{{ srpfleetrequest.killboard_link }}"
|
||||
target="_blank" class="label label-warning">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">{{ srpfleetrequest.post_time | date:"Y-m-d H:i" }}</td>
|
||||
<td class="text-center">
|
||||
{% if srpfleetrequest.srp_status == "Approved" %}
|
||||
<div class="label label-success">
|
||||
{% trans "Approved" %}
|
||||
</div>
|
||||
{% elif srpfleetrequest.srp_status == "Rejected" %}
|
||||
<div class="label label-danger">
|
||||
{% trans "Rejected" %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="label label-warning">
|
||||
{% trans "Pending" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
<form method="POST">
|
||||
{% csrf_token %}
|
||||
<div class="alert alert-info" role="alert">
|
||||
<div class="text-right">
|
||||
<b><span style="padding-right:2.5em">{% trans "Total Losses:" %} {{ srpfleetrequests.count }}</span></b>
|
||||
<b><span style="padding-right:2.5em">{% trans "Total ISK Cost:" %} {{ totalcost | intcomma }}</span></b>
|
||||
{% if perms.auth.srp_management %}
|
||||
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_srp_request_update_amount_view' srpfleetrequest.id %}" class="btn btn-info" title="Update Value">
|
||||
<span class="glyphicon glyphicon-usd"></span>
|
||||
</a>
|
||||
{% if srpfleetrequest.srp_status in "RejectedPending" %}
|
||||
<a href="{% url 'auth_srp_request_approve' srpfleetrequest.id %}" class="btn btn-success" title="Approve">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</a>
|
||||
{% elif srpfleetrequest.srp_status == "" %}
|
||||
<a href="{% url 'auth_srp_request_approve' srpfleetrequest.id %}" class="btn btn-success" title="Approve">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if srpfleetrequest.srp_status in "ApprovedPending" %}
|
||||
<a href="{% url 'auth_srp_request_reject' srpfleetrequest.id %}" class="btn btn-warning" title="Reject">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
{% elif srpfleetrequest.srp_status == "" %}
|
||||
<a href="{% url 'auth_srp_request_reject' srpfleetrequest.id %}" class="btn btn-warning" title="Reject">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
<a href="{% url 'auth_srp_request_remove' srpfleetrequest.id %}" class="btn btn-danger" title="Remove">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
|
||||
</td>
|
||||
<button type="submit" title="Approve" class="btn btn-success" formaction="{% url 'auth_srp_request_approve' %}">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</button>
|
||||
<button type="submit" title="Reject" class="btn btn-warning" formaction="{% url 'auth_srp_request_reject' %}">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</button>
|
||||
<button type="submit" title="Remove" onclick="return confirm('{% trans "Are you sure you want to delete SRP requests?" %}')" class="btn btn-danger" formaction="{% url 'auth_srp_request_remove' %}">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table class="table">
|
||||
<tr>
|
||||
<th class="text-center">{% trans "Pilot Name" %}</th>
|
||||
<th class="text-center">{% trans "Killboard Link" %}</th>
|
||||
<th class="text-center">{% trans "Additional Info" %}</th>
|
||||
<th class="text-center">{% trans "Ship Type" %}</th>
|
||||
<th class="text-center">{% trans "Killboard Loss Amt" %}</th>
|
||||
<th class="text-center">{% trans "SRP ISK Cost" %}
|
||||
{% blocktrans %}<i class="glyphicon glyphicon-question-sign" rel="tooltip" title="Click value to edit
|
||||
Enter to save&next
|
||||
ESC to cancel"
|
||||
id="blah"></i></th>{% endblocktrans %}
|
||||
<th class="text-center">{% trans "Post Time" %}</th>
|
||||
<th class="text-center">{% trans "Status" %}</th>
|
||||
{% if perms.auth.srp_management %}
|
||||
<th class="text-center">{% trans "Actions" %}</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% for srpfleetrequest in srpfleetrequests %}
|
||||
<tr>
|
||||
<td class="text-center">{{ srpfleetrequest.character.character_name }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{{ srpfleetrequest.killboard_link }}"
|
||||
target="_blank" class="label label-warning">Link</a>
|
||||
</td>
|
||||
<td class="text-center">{{ srpfleetrequest.additional_info }}</td>
|
||||
<td class="text-center">{{ srpfleetrequest.srp_ship_name }}</td>
|
||||
<td class="text-center">{{ srpfleetrequest.kb_total_loss | intcomma }} ISK</td>
|
||||
<td class="srp" data-name="srp_total_amount" data-type="number" data-pk="{{srpfleetrequest.id}}" data-url="{% url 'auth_srp_request_update_amount' srpfleetrequest.id %}" data-params="{csrfmiddlewaretoken:'{{csrf_token}}'}" class="text-center">{{ srpfleetrequest.srp_total_amount | intcomma }} ISK</td>
|
||||
<td class="text-center">{{ srpfleetrequest.post_time | date:"Y-m-d H:i" }}</td>
|
||||
<td class="text-center">
|
||||
{% if srpfleetrequest.srp_status == "Approved" %}
|
||||
<div class="label label-success">
|
||||
{% trans "Approved" %}
|
||||
</div>
|
||||
{% elif srpfleetrequest.srp_status == "Rejected" %}
|
||||
<div class="label label-danger">
|
||||
{% trans "Rejected" %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="label label-warning">
|
||||
{% trans "Pending" %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</td>
|
||||
{% if perms.auth.srp_management %}
|
||||
<td class="text-center">
|
||||
<div class="checkbox">
|
||||
<label style="font-size: 1.5em">
|
||||
<input type="checkbox" name="{{srpfleetrequest.id}}">
|
||||
<span class="cr"><i class="cr-icon fa fa-check"></i></span>
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<div class="alert alert-info" role="alert">
|
||||
<div class="text-right">
|
||||
<b><span style="padding-right:2.5em">{% trans "Total Losses:" %} {{ srpfleetrequests.count }}</span></b>
|
||||
<b><span style="padding-right:2.5em">{% trans "Total ISK Cost:" %} {{ totalcost | intcomma }}</span></b>
|
||||
{% if perms.auth.srp_management %}
|
||||
<button type="submit" title="Approve" class="btn btn-success" formaction="{% url 'auth_srp_request_approve' %}">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</button>
|
||||
<button type="submit" title="Reject" class="btn btn-warning" formaction="{% url 'auth_srp_request_reject' %}">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</button>
|
||||
<button type="submit" title="Remove" onclick="return confirm('{% trans "Are you sure you want to delete SRP requests?" %}')" class="btn btn-danger" formaction="{% url 'auth_srp_request_remove' %}">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{% else %}
|
||||
<div class="alert alert-warning text-center">{% trans "No SRP requests for this fleet." %}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
||||
|
||||
{% block extra_javascript %}
|
||||
{% include 'bundles/x-editable-js.html' %}
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_script %}
|
||||
$(document).ready(function() {
|
||||
$.fn.editable.defaults.mode = 'inline';
|
||||
$.fn.editable.defaults.showbuttons = false;
|
||||
$.fn.editable.defaults.highlight = "#AAFF80";
|
||||
|
||||
|
||||
$('.srp').editable({
|
||||
display: function(value, response) {
|
||||
return false;
|
||||
},
|
||||
success: function(response, newValue) {
|
||||
newValue = parseInt(newValue);
|
||||
newvalue = newValue.toLocaleString() + " ISK";
|
||||
$(this).html(newvalue.bold());
|
||||
},
|
||||
validate: function(value) {
|
||||
if (value === null || value === '') {
|
||||
return 'Empty values not allowed';
|
||||
}
|
||||
}
|
||||
});
|
||||
$('.srp').on('hidden', function(e, reason){
|
||||
if(reason === 'save' || reason === 'nochange') {
|
||||
var $next = $(this).closest('tr').next().find('.editable');
|
||||
setTimeout(function() {
|
||||
$next.editable('show');
|
||||
}, 400);
|
||||
}
|
||||
});
|
||||
});
|
||||
$(document).ready(function(){
|
||||
$("[rel=tooltip]").tooltip({ placement: 'top'});
|
||||
});
|
||||
{% endblock extra_script %}
|
||||
|
@ -15,24 +15,13 @@
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
{% if no_srp_code %}
|
||||
<div class="alert alert-danger" role="alert">{% trans "SRP Code Does Not Exist" %}</div>
|
||||
{% else %}
|
||||
{% if completed == False %}
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Create SRP Request" %}
|
||||
</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<div class="alert alert-success" role="alert">{% trans "SRP Request Successfully Submitted" %}</div>
|
||||
<div class="text-center">
|
||||
<a href="{% url 'auth_srp_management_view' %}" class="btn btn-primary btn-lg">{% trans 'Continue' %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Create SRP Request" %}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,31 +0,0 @@
|
||||
{% extends "public/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}Alliance Auth - Update SRP Amount{% endblock %}
|
||||
|
||||
{% block page_title %}{% trans "Update SRP Amount" %}{% endblock page_title %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">{% trans "Update SRP Amount" %}</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">{% trans "Update SRP Request Amount" %}
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
@ -41,7 +41,7 @@
|
||||
<th class="text-center">{% trans "Fleet ISK Cost" %}</th>
|
||||
<th class="text-center">{% trans "SRP Status" %}</th>
|
||||
<th class="text-center">{% trans "Pending Requests" %}</th>
|
||||
<th class="text-center">{% trans "Actions" %}</th>
|
||||
<th width="100px" class="text-center">{% trans "Actions" %}</th>
|
||||
</tr>
|
||||
{% for srpfleet in srpfleets %}
|
||||
<tr>
|
||||
@ -98,7 +98,7 @@
|
||||
<span class="glyphicon glyphicon-pencil"></span>
|
||||
</a>
|
||||
|
||||
<a href="{% url 'auth_srp_fleet_remove' srpfleet.id %}" class="btn btn-danger" title="Remove">
|
||||
<a href="{% url 'auth_srp_fleet_remove' srpfleet.id %}" onclick="return confirm('{% trans "Are you sure you want to delete this SRP code and its contents?" %}')" class="btn btn-danger" title="Remove">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
{% if srpfleet.fleet_srp_code %}
|
||||
|
Loading…
x
Reference in New Issue
Block a user