mirror of
https://github.com/arcan1s/ffxivbis.git
synced 2025-04-25 01:37:17 +00:00
some life testing fixes
This commit is contained in:
parent
5f5ce72600
commit
5ce870714c
@ -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)
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -33,6 +33,7 @@ class PlayerHtmlView(PlayerBaseView):
|
||||
error = repr(e)
|
||||
|
||||
return {
|
||||
'jobs': [job.name for job in Job],
|
||||
'players': [
|
||||
{
|
||||
'job': player.job.name,
|
||||
|
@ -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():
|
||||
|
@ -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>
|
||||
|
@ -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"/>
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user