mirror of
https://github.com/RoboSats/robosats.git
synced 2025-07-21 02:03:14 +00:00
Working version
This commit is contained in:
@ -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(
|
||||
|
@ -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",
|
||||
|
@ -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.
|
||||
|
@ -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: |-
|
||||
|
@ -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
|
||||
|
@ -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}
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user