Source code for characters.views
# -*- coding: utf-8 -*-
from __future__ import absolute_import
import logging
from django.core.urlresolvers import reverse_lazy
from django.shortcuts import redirect
from django.shortcuts import render
from django.views.generic import DeleteView
from django.views.generic import DetailView
from .models import Character
from .utils import fetch_assets
from .utils import fetch_characters
from .utils import fetch_orders
from .utils import save_characters
from .utils import prepare_orders
from .utils import save_assets
from .utils import save_orders
logger = logging.getLogger(__name__)
[docs]def asset_list_view(request, pk):
"""
A view providing a list of assets for a given character
:param int pk: Primary key of character
:return: Render function for displaying view
"""
character = Character.objects.get(pk=pk)
assets = character.assets.all()
return render(
request,
'characters/asset_list_view.html',
{'assets': assets, 'character': character}
)
[docs]def asset_update(request, pk):
"""
Update a character's assets
:param int pk: Primary key of character
:return: Redirect to character's asset list
"""
character = Character.objects.get(pk=pk)
char_id = character.char_id
api_key = (character.key_id, character.v_code)
fetched_assets = fetch_assets(api_key, char_id)
save_assets(fetched_assets, character)
return redirect('characters:asset_list', pk=pk)
[docs]def character_add_view(request):
"""
Create a new :class:`Character` object
:return: POST requests: Redirect back to this view.
GET requests: view render function
"""
if request.method == 'POST':
user = request.user
key_id = int(request.POST['key_id'])
v_code = request.POST['v_code']
api_key = (key_id, v_code)
fetched_characters = fetch_characters(api_key)
save_characters(
user,
fetched_characters,
api_key
)
return redirect('characters:list')
return render(request, 'characters/character_add_form.html')
[docs]def character_list_view(request):
"""
A view providing a list of all user's characters
:return: Render function for displaying view
"""
user = request.user
characters = user.characters.all()
return render(
request,
'characters/character_list_view.html',
{'characters': characters}
)
class CharacterDetailView(DetailView):
model = Character
class CharacterDelete(DeleteView):
model = Character
success_url = reverse_lazy('characters:list')
[docs]def orders_list_view(request, pk):
"""
Displays list of orders of character given via `pk`
:param int pk: Primary key of character
:return: Redirect to character's list of orders
"""
character = Character.objects.get(pk=pk)
orders = character.orders.all().filter(order_state='active')
return render(
request,
'characters/orders_list_view.html',
{'character': character, 'orders': orders}
)
def orders_update(request, pk):
character = Character.objects.get(pk=pk)
char_id = character.char_id
api_key = character.get_api_key()
fetched_orders = fetch_orders(api_key, char_id)
prepared_orders = prepare_orders(fetched_orders, character)
save_orders(prepared_orders)
return redirect('characters:order_list', pk=pk)