81 lines
3.0 KiB
Python
81 lines
3.0 KiB
Python
from typing import Union
|
|
|
|
import requests
|
|
from django.contrib.auth.models import User
|
|
from django.shortcuts import render
|
|
from allauth.socialaccount.providers import eveonline
|
|
# Create your views here.
|
|
from allauth.socialaccount.models import SocialAccount, SocialToken, SocialApp
|
|
|
|
from requests.auth import HTTPBasicAuth
|
|
|
|
from eve_auth.models import Corporation
|
|
from eve_auth.forms import SearchForm
|
|
from eve_auth import data_classes
|
|
|
|
|
|
def hello(request):
|
|
c = Corporation(id=98002591)
|
|
c.save()
|
|
#c.update()
|
|
return render(
|
|
request,
|
|
'base.html',
|
|
{}
|
|
)
|
|
|
|
|
|
def renew_token(request, account: Union[SocialAccount, User]):
|
|
if account is User:
|
|
account = SocialAccount.objects.get(user=account)
|
|
token = SocialToken.objects.get(account=account)
|
|
app = SocialApp.objects.get(provider='eveonline')
|
|
req = requests.post(
|
|
url='https://login.eveonline.com/oauth/token',
|
|
data={
|
|
'grant_type': 'refresh_token',
|
|
'refresh_token': token.token_secret
|
|
},
|
|
auth=HTTPBasicAuth(app.client_id, app.secret)
|
|
)
|
|
token.token = req.json()['access_token']
|
|
token.save()
|
|
|
|
|
|
def search(request):
|
|
results = []
|
|
if request.POST:
|
|
form = SearchForm(request.POST)
|
|
if form.is_valid():
|
|
search_results = requests.get(f'https://esi.tech.ccp.is/latest/search/?categories='
|
|
f'{form.cleaned_data["category"]}&datasource=tranquility&language=en-us&'
|
|
f'search={form.cleaned_data["search_text"]}&strict=false').json()
|
|
if form.cleaned_data["category"] == 'alliance':
|
|
if search_results:
|
|
for alliance in search_results['alliance']:
|
|
res = requests.get(f'https://esi.tech.ccp.is/latest/alliances'
|
|
f'/{alliance}/?datasource=tranquility').json()
|
|
results.append(data_classes.Alliance(id=alliance, **res))
|
|
elif form.cleaned_data["category"] == 'corporation':
|
|
if search_results:
|
|
for corp in search_results['corporation']:
|
|
res = requests.get(f'https://esi.tech.ccp.is/latest/corporations/{corp}/?'
|
|
f'datasource=tranquility').json()
|
|
results.append(data_classes.Corporation(id=corp, **res))
|
|
elif form.cleaned_data["category"] == 'character':
|
|
if search_results:
|
|
for cha in search_results['character']:
|
|
res = requests.get(f'https://esi.tech.ccp.is/latest/characters/{cha}/?'
|
|
f'datasource=tranquility').json()
|
|
results.append(data_classes.Character(id=cha, **res))
|
|
else:
|
|
form = SearchForm()
|
|
return render(
|
|
request,
|
|
'search.html',
|
|
{
|
|
'form': form,
|
|
'results': results
|
|
}
|
|
)
|