Working version

This commit is contained in:
koalasat
2025-06-21 18:09:09 +02:00
parent 220b4263b4
commit cda72d11b4
8 changed files with 30 additions and 29 deletions

View File

@ -168,7 +168,7 @@ class OrderViewSchema:
"examples": [
OpenApiExample(
"Order cancelled",
value={"bad_request": "This order has been cancelled by the maker"},
value={"bad_request": "This order has been cancelled"},
status_codes=[400],
),
OpenApiExample(
@ -178,7 +178,7 @@ class OrderViewSchema:
),
OpenApiExample(
"Order cancelled",
value={"bad_request": "This order has been cancelled collaborativelly"},
value={"bad_request": "This order has been cancelled"},
status_codes=[400],
),
OpenApiExample(

View File

@ -207,6 +207,10 @@ class OrderDetailSerializer(serializers.ModelSerializer):
required=False,
help_text="True if you are either a taker or maker, False otherwise",
)
has_password = serializers.BooleanField(
required=False,
help_text="True if the order is password protected",
)
maker_status = serializers.CharField(
required=False,
help_text="Status of the maker:\n"
@ -438,6 +442,7 @@ class OrderDetailSerializer(serializers.ModelSerializer):
"is_maker",
"is_taker",
"is_participant",
"has_password",
"maker_status",
"taker_status",
"price_now",

View File

@ -258,7 +258,7 @@ class OrderView(viewsets.ViewSet):
data["penalty"] = request.user.robot.penalty_expiration
# 2.1) If order has a password
if not data["is_participant"] and order.password is not None:
if not data["is_participant"] and data["has_password"]:
return Response(data, status.HTTP_200_OK)
# 3.a) If not a participant and order is not public, forbid.

View File

@ -405,7 +405,7 @@ paths:
examples:
OrderCancelled:
value:
bad_request: This order has been cancelled collaborativelly
bad_request: This order has been cancelled
summary: Order cancelled
WhenTheOrderIsNotPublicAndYouNeitherTheTakerNorMaker:
value:
@ -1444,6 +1444,9 @@ components:
is_participant:
type: boolean
description: True if you are either a taker or maker, False otherwise
has_password:
type: boolean
description: True if the order is password protected
maker_status:
type: string
description: |-

View File

@ -119,7 +119,7 @@ const OrderPage = (): React.JSX.Element => {
});
}}
/>
{!currentOrder?.maker_hash_id && !currentOrder?.bad_request && <CircularProgress />}
{!currentOrder?.maker && !currentOrder?.bad_request && <CircularProgress />}
{currentOrder?.bad_request && currentOrder.status !== 5 ? (
<>
<Typography align='center' variant='subtitle2' color='secondary'>
@ -141,7 +141,7 @@ const OrderPage = (): React.JSX.Element => {
)}
</>
) : null}
{currentOrder?.maker_hash_id && (!currentOrder.bad_request || currentOrder.status === 5) ? (
{currentOrder?.maker && (!currentOrder.bad_request || currentOrder.status === 5) ? (
currentOrder.is_participant ? (
windowSize.width > doublePageWidth ? (
// DOUBLE PAPER VIEW

View File

@ -301,9 +301,9 @@ const OrderDetails = ({
</ListItem>
)}
<Divider />
{!currentOrder.bad_request && (
{!currentOrder.bad_request && currentOrder.maker_hash_id && (
<>
<Divider />
<ListItem>
<ListItemAvatar sx={{ width: '4em', height: '4em' }}>
<RobotAvatar
@ -323,7 +323,6 @@ const OrderDetails = ({
secondary={t('Order maker')}
/>
</ListItem>
<Collapse in={currentOrder?.is_participant && currentOrder?.taker_nick !== 'None'}>
<Divider />
<ListItem>
@ -539,7 +538,7 @@ const OrderDetails = ({
{/* If the user has a penalty/limit */}
{currentOrder?.penalty !== undefined ? (
<Grid item style={{ width: '100%' }}>
<Grid sx={{ marginBottom: 1, width: '100%', padding: '0 16px' }}>
<Alert severity='warning' sx={{ borderRadius: '0' }}>
<Countdown
date={new Date(currentOrder?.penalty ?? '')}
@ -551,8 +550,8 @@ const OrderDetails = ({
<></>
)}
{currentOrder.bad_request?.includes('password') && (
<Grid item style={{ width: '100%', padding: '16px' }}>
{!currentOrder?.is_participant && currentOrder?.has_password && (
<Grid item style={{ width: '100%', padding: '0 16px' }}>
<TextField
fullWidth
label={`${t('Password')}`}
@ -571,7 +570,7 @@ const OrderDetails = ({
</Grid>
)}
{!currentOrder?.is_participant || currentOrder.bad_request?.includes('password') ? (
{!currentOrder?.is_participant ? (
<Grid item style={{ width: '100%', padding: '8px' }}>
<TakeButton
password={password}

View File

@ -78,6 +78,7 @@ class Order {
is_maker: boolean = false;
is_taker: boolean = false;
is_participant: boolean = false;
has_password: boolean = false;
maker_status: 'Active' | 'Seen recently' | 'Inactive' = 'Active';
taker_status: 'Active' | 'Seen recently' | 'Inactive' = 'Active';
price_now: number | undefined = undefined;

View File

@ -506,8 +506,9 @@ class TradeTest(BaseAPITestCase):
# External user GET
trade.get_order(trade.taker_index)
data = trade.response.json()
self.assertEqual(trade.response.status_code, 403)
self.assertEqual(data["bad_request"], "This order is password protected")
self.assertEqual(trade.response.status_code, 200)
self.assertTrue(data["has_password"])
self.assertNotIn("maker_nick", data)
# Take with no password
trade.take_order()
@ -1072,9 +1073,7 @@ class TradeTest(BaseAPITestCase):
self.assertEqual(trade.response.status_code, 400)
self.assertResponse(trade.response)
self.assertEqual(
data["bad_request"], "This order has been cancelled by the maker"
)
self.assertEqual(data["bad_request"], "This order has been cancelled")
maker_headers = trade.get_robot_auth(trade.maker_index)
maker_nick = read_file(f"tests/robots/{trade.maker_index}/nickname")
@ -1182,21 +1181,15 @@ class TradeTest(BaseAPITestCase):
trade.cancel_order(trade.maker_index)
data = trade.response.json()
self.assertEqual(
data["bad_request"], "This order has been cancelled by the maker"
)
self.assertEqual(data["bad_request"], "This order has been cancelled")
trade.get_order(trade.taker_index)
data = trade.response.json()
self.assertEqual(
data["bad_request"], "This order has been cancelled by the maker"
)
self.assertEqual(data["bad_request"], "This order has been cancelled")
trade.get_order(trade.third_index)
data = trade.response.json()
self.assertEqual(
data["bad_request"], "This order has been cancelled by the maker"
)
self.assertEqual(data["bad_request"], "This order has been cancelled")
def test_cancel_order_cancel_status(self):
"""
@ -1219,7 +1212,7 @@ class TradeTest(BaseAPITestCase):
self.assertEqual(
trade.response.json()["bad_request"],
"This order has been cancelled by the maker",
"This order has been cancelled",
)
def test_cancel_order_different_cancel_status(self):
@ -1281,7 +1274,7 @@ class TradeTest(BaseAPITestCase):
self.assertResponse(trade.response)
self.assertEqual(
trade.response.json()["bad_request"],
"This order has been cancelled collaborativelly",
"This order has been cancelled",
)
maker_headers = trade.get_robot_auth(trade.maker_index)