some life testing fixes

This commit is contained in:
Evgenii Alekseev 2019-09-08 16:58:13 +03:00
parent 5f5ce72600
commit 5ce870714c
9 changed files with 28 additions and 22 deletions

View File

@ -37,7 +37,7 @@ class BiSBaseView(View):
def bis_put(self, player_id: PlayerId, link: str) -> str:
parser = AriyalaParser(self.request.app['config'])
items = parser.get(link)
items = parser.get(link, player_id.job.name)
for piece in items:
self.request.app['party'].set_item_bis(player_id, piece)
self.request.app['party'].set_bis_link(player_id, link)

View File

@ -24,7 +24,7 @@ class PlayerBaseView(View):
if link:
parser = AriyalaParser(self.request.app['config'])
items = parser.get(link)
items = parser.get(link, job.name)
for piece in items:
self.request.app['party'].set_item_bis(player_id, piece)

View File

@ -12,6 +12,7 @@ from typing import Any, Dict, List
from service.models.piece import Piece
from service.models.player import Player, PlayerId
from service.models.upgrade import Upgrade
from service.api.utils import wrap_exception, wrap_invalid_param
from service.api.views.common.loot_base import LootBaseView
@ -32,7 +33,7 @@ class LootHtmlView(LootBaseView, PlayerBaseView):
{
'player': player.player_id.pretty_name,
'piece': piece.name,
'is_tome': 'yes' if piece.is_tome else 'no' # type: ignore
'is_tome': 'yes' if getattr(piece, 'is_tome', True) else 'no'
}
for player in players
for piece in player.loot
@ -44,7 +45,7 @@ class LootHtmlView(LootBaseView, PlayerBaseView):
return {
'items': items,
'pieces': Piece.available(),
'pieces': Piece.available() + [upgrade.name for upgrade in Upgrade],
'players': [player.player_id.pretty_name for player in players],
'request_error': error
}

View File

@ -11,7 +11,8 @@ from aiohttp_jinja2 import template
from typing import Any, Dict, List, Union
from service.models.piece import Piece
from service.models.player import Player, PlayerIdWithCounters
from service.models.player import PlayerIdWithCounters
from service.models.upgrade import Upgrade
from service.api.utils import wrap_invalid_param
from service.api.views.common.loot_base import LootBaseView
@ -23,8 +24,7 @@ class LootSuggestHtmlView(LootBaseView, PlayerBaseView):
@template('loot_suggest.jinja2')
async def get(self) -> Dict[str, Any]:
return {
'pieces': Piece.available(),
'players': [player.player_id.pretty_name for player in self.player_get(None)],
'pieces': Piece.available() + [upgrade.name for upgrade in Upgrade]
}
@template('loot_suggest.jinja2')
@ -46,8 +46,7 @@ class LootSuggestHtmlView(LootBaseView, PlayerBaseView):
error = repr(e)
return {
'pieces': Piece.available(),
'players': [player.player_id.pretty_name for player in self.player_get(None)],
'pieces': Piece.available() + [upgrade.name for upgrade in Upgrade],
'suggest': [
{
'player': player.pretty_name,

View File

@ -33,6 +33,7 @@ class PlayerHtmlView(PlayerBaseView):
error = repr(e)
return {
'jobs': [job.name for job in Job],
'players': [
{
'job': player.job.name,

View File

@ -37,22 +37,27 @@ class AriyalaParser:
return key
return None
def get(self, url: str) -> List[Piece]:
items = self.get_ids(url)
def get(self, url: str, job: str) -> List[Piece]:
items = self.get_ids(url, job)
return [
Piece.get({'piece': slot, 'is_tome': self.get_is_tome(item_id)}) # type: ignore
for slot, item_id in items.items()
]
def get_ids(self, url: str) -> Dict[str, int]:
def get_ids(self, url: str, job: str) -> Dict[str, int]:
norm_path = os.path.normpath(url)
set_id = os.path.basename(norm_path)
response = requests.get('{}/store.app'.format(self.ariyala_url), params={'identifier': set_id})
response.raise_for_status()
data = response.json()
job = data['content']
bis = data['datasets'][job]['normal']['items']
# it has job in response but for some reasons job name differs sometimes from one in dictionary,
# e.g. http://ffxiv.ariyala.com/store.app?identifier=1AJB8
api_job = data['content']
try:
bis = data['datasets'][api_job]['normal']['items']
except KeyError:
bis = data['datasets'][job]['normal']['items']
result: Dict[str, int] = {}
for original_key, value in bis.items():

View File

@ -11,11 +11,6 @@
{% include "search_line.jinja2" %}
<form action="/suggest" method="post">
<select name="player" id="player" title="player">
{% for player in players %}
<option>{{ player|e }}</option>
{% endfor %}
</select>
<select name="piece" id="piece" title="piece">
{% for piece in pieces %}
<option>{{ piece|e }}</option>

View File

@ -12,7 +12,11 @@
<form action="/party" method="post">
<input name="nick" id="nick" placeholder="player nick name" title="nick" type="text"/>
<input name="job" id="job" placeholder="player job" title="job" type="text"/>
<select name="job" id="job" title="job">
{% for job in jobs %}
<option>{{ job|e }}</option>
{% endfor %}
</select>
<input name="bis" id="bis" placeholder="player bis link" title="bis" type="text"/>
<input name="priority" id="priority" placeholder="player priority" title="priority" type="number" value="0"/>
<input name="action" id="action" type="hidden" value="add"/>

View File

@ -2,9 +2,10 @@ from typing import List
from service.core.ariyala_parser import AriyalaParser
from service.models.piece import Piece
from service.models.player import Player
def test_get(parser: AriyalaParser, bis_link: str, bis_set: List[Piece]) -> None:
items = parser.get(bis_link)
def test_get(parser: AriyalaParser, player: Player, bis_link: str, bis_set: List[Piece]) -> None:
items = parser.get(bis_link, player.job.name)
assert items == bis_set