add evetools killboard as accepted source for srp requests

This commit is contained in:
Peter Pfeufer 2021-07-04 15:03:00 +02:00
parent 356df45583
commit 839232dc98
No known key found for this signature in database
GPG Key ID: 6051D2C6AD4EBC27
2 changed files with 29 additions and 7 deletions

View File

@ -13,7 +13,7 @@ class SrpFleetMainForm(forms.Form):
class SrpFleetUserRequestForm(forms.Form):
additional_info = forms.CharField(required=False, max_length=25, label=_("Additional Info"))
killboard_link = forms.CharField(
label=_("zKillboard Link"),
label=_("Killboard Link (zkillboard.com or kb.evetools.org)"),
max_length=255,
required=True
@ -21,13 +21,31 @@ class SrpFleetUserRequestForm(forms.Form):
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"))
if not re.match(r"http[s]?://zkillboard\.com/kill/\d+\/", data):
# Check if it's a link from one of the accepted kill boards
if not any(
re.match(regex, data)
for regex in [
r"^http[s]?:\/\/zkillboard\.com\/",
r"^http[s]?:\/\/kb\.evetools\.org\/",
]
):
raise forms.ValidationError(
_("Invalid Link. Please use zkillboard.com or kb.evetools.org")
)
# Check if it's an actual kill mail
if not any(
re.match(regex, data)
for regex in [
r"^http[s]?:\/\/zkillboard\.com\/kill\/\d+\/",
r"^http[s]?:\/\/kb\.evetools\.org\/kill\/\d+",
]
):
raise forms.ValidationError(
_("Invalid Link. Please post a direct link to a killmail.")
)
return data

View File

@ -170,9 +170,13 @@ def srp_request_view(request, fleet_srp):
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():
request_killboard_link = form.cleaned_data['killboard_link']
killmail_id = SRPManager.get_kill_id(killboard_link=request_killboard_link)
# check if the killmail_id is already present
if SrpUserRequest.objects.filter(killboard_link__icontains="/kill/" + killmail_id).exists():
messages.error(request,
_("This Killboard link has already been posted."))
_("This kill mail has already been posted."))
return redirect("srp:management")
character = request.user.profile.main_character
@ -180,7 +184,7 @@ def srp_request_view(request, fleet_srp):
post_time = timezone.now()
srp_request = SrpUserRequest()
srp_request.killboard_link = form.cleaned_data['killboard_link']
srp_request.killboard_link = request_killboard_link
srp_request.additional_info = form.cleaned_data['additional_info']
srp_request.character = character
srp_request.srp_fleet_main = srp_fleet_main