From 32da8157a65767f6f97551108c98e47541408c68 Mon Sep 17 00:00:00 2001 From: badbl0cks <4161747+badbl0cks@users.noreply.github.com> Date: Mon, 7 Apr 2025 18:33:45 -0700 Subject: [PATCH] Refactor email templates --- accounts/models.py | 2 +- seed/0004_TestUsers.json | 207 +- seed/0005_TradeOffers.json | 257 +- seed/M4R9zUMD.txt | 2248 ----------------- theme/templates/email/common/footer.txt | 2 + theme/templates/email/common/header.txt | 1 + theme/templates/email/common/subject.txt | 1 + .../email/trades/trade_update_accepted.txt | 15 + .../trades/trade_update_accepted_subject.txt | 1 + .../email/trades/trade_update_received.txt | 15 + .../trades/trade_update_received_subject.txt | 1 + .../trade_update_rejected_by_acceptor.txt | 13 +- ...de_update_rejected_by_acceptor_subject.txt | 1 + .../trade_update_rejected_by_initiator.txt | 13 +- ...e_update_rejected_by_initiator_subject.txt | 1 + .../email/trades/trade_update_sent.txt | 15 + .../trades/trade_update_sent_subject.txt | 1 + .../trade_update_thanked_by_acceptor.txt | 13 +- ...ade_update_thanked_by_acceptor_subject.txt | 1 + .../trades/trade_update_thanked_by_both.txt | 14 + .../trade_update_thanked_by_both_subject.txt | 1 + .../trade_update_thanked_by_initiator.txt | 13 +- ...de_update_thanked_by_initiator_subject.txt | 1 + theme/templates/home/home.html | 57 +- theme/templates/trades/_trade_offer_list.html | 8 +- .../trades/email/trade_update_accepted.txt | 16 - .../trades/email/trade_update_received.txt | 16 - .../trades/email/trade_update_sent.txt | 16 - .../email/trade_update_thanked_by_both.txt | 15 - theme/templatetags/trade_offer.html | 4 +- trades/signals.py | 23 +- 31 files changed, 476 insertions(+), 2516 deletions(-) delete mode 100644 seed/M4R9zUMD.txt create mode 100644 theme/templates/email/common/footer.txt create mode 100644 theme/templates/email/common/header.txt create mode 100644 theme/templates/email/common/subject.txt create mode 100644 theme/templates/email/trades/trade_update_accepted.txt create mode 100644 theme/templates/email/trades/trade_update_accepted_subject.txt create mode 100644 theme/templates/email/trades/trade_update_received.txt create mode 100644 theme/templates/email/trades/trade_update_received_subject.txt rename theme/templates/{trades/email => email/trades}/trade_update_rejected_by_acceptor.txt (58%) create mode 100644 theme/templates/email/trades/trade_update_rejected_by_acceptor_subject.txt rename theme/templates/{trades/email => email/trades}/trade_update_rejected_by_initiator.txt (53%) create mode 100644 theme/templates/email/trades/trade_update_rejected_by_initiator_subject.txt create mode 100644 theme/templates/email/trades/trade_update_sent.txt create mode 100644 theme/templates/email/trades/trade_update_sent_subject.txt rename theme/templates/{trades/email => email/trades}/trade_update_thanked_by_acceptor.txt (54%) create mode 100644 theme/templates/email/trades/trade_update_thanked_by_acceptor_subject.txt create mode 100644 theme/templates/email/trades/trade_update_thanked_by_both.txt create mode 100644 theme/templates/email/trades/trade_update_thanked_by_both_subject.txt rename theme/templates/{trades/email => email/trades}/trade_update_thanked_by_initiator.txt (55%) create mode 100644 theme/templates/email/trades/trade_update_thanked_by_initiator_subject.txt delete mode 100644 theme/templates/trades/email/trade_update_accepted.txt delete mode 100644 theme/templates/trades/email/trade_update_received.txt delete mode 100644 theme/templates/trades/email/trade_update_sent.txt delete mode 100644 theme/templates/trades/email/trade_update_thanked_by_both.txt diff --git a/accounts/models.py b/accounts/models.py index 1db3d36..cff10f5 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -17,7 +17,7 @@ class CustomUser(AbstractUser): verbose_name="Show Friend Code on Link Previews", help_text="This will primarily affect share link previews on X, Discord, etc." ) - reputation_score = models.PositiveIntegerField(default=0) + reputation_score = models.IntegerField(default=0) def __str__(self): return self.email diff --git a/seed/0004_TestUsers.json b/seed/0004_TestUsers.json index 66637c9..0b584ac 100644 --- a/seed/0004_TestUsers.json +++ b/seed/0004_TestUsers.json @@ -1,82 +1,129 @@ [ -{ - "model": "accounts.customuser", - "pk": 1, - "fields": { - "password": "pbkdf2_sha256$870000$f99EReOECF2LPne1JHADoy$pr/769omIyRNkDhaojgIIm8kZcAeFiR0DOLcUvbLlk4=", - "last_login": "2025-03-13T04:24:11.029Z", - "is_superuser": true, - "username": "badblocks", - "first_name": "", - "last_name": "", - "email": "rob@badblocks.email", - "is_staff": true, - "is_active": true, - "date_joined": "2025-03-13T04:21:04.553Z", - "default_friend_code": 1, - "groups": [], - "user_permissions": [] + { + "model": "accounts.customuser", + "pk": 1, + "fields": { + "password": "pbkdf2_sha256$870000$f99EReOECF2LPne1JHADoy$pr/769omIyRNkDhaojgIIm8kZcAeFiR0DOLcUvbLlk4=", + "last_login": "2025-04-07T07:40:57.629Z", + "is_superuser": true, + "username": "badblocks", + "first_name": "", + "last_name": "", + "email": "rob@badblocks.email", + "is_staff": true, + "is_active": true, + "date_joined": "2025-03-13T04:21:04.553Z", + "default_friend_code": 1, + "show_friend_code_on_link_previews": true, + "reputation_score": 2, + "groups": [], + "user_permissions": [] + } + }, + { + "model": "accounts.customuser", + "pk": 2, + "fields": { + "password": "pbkdf2_sha256$870000$NxQDOyPzAvM3FgLL5z0SRy$JuET4f8HI55Oy1umkzg6WtjFVpYTt+UfpZWqPff4EO4=", + "last_login": "2025-03-13T04:52:57.949Z", + "is_superuser": false, + "username": "nathanward2016@gmail.com", + "first_name": "", + "last_name": "", + "email": "nathanward2016@gmail.com", + "is_staff": false, + "is_active": true, + "date_joined": "2025-03-13T04:52:28.482Z", + "default_friend_code": 2, + "show_friend_code_on_link_previews": false, + "reputation_score": 0, + "groups": [], + "user_permissions": [] + } + }, + { + "model": "accounts.customuser", + "pk": 3, + "fields": { + "password": "pbkdf2_sha256$870000$hbzakvek5c6oJWJ0jMliuz$4yX2/s9BsZ2FqMnOaApWQUraB+FX0JK7RmjjPbaLlgQ=", + "last_login": "2025-04-07T23:30:40.481Z", + "is_superuser": false, + "username": "badblocks2", + "first_name": "", + "last_name": "", + "email": "rob2@badblocks.email", + "is_staff": false, + "is_active": true, + "date_joined": "2025-04-07T07:36:12.011Z", + "default_friend_code": 3, + "show_friend_code_on_link_previews": false, + "reputation_score": 2, + "groups": [], + "user_permissions": [] + } + }, + { + "model": "accounts.friendcode", + "pk": 1, + "fields": { + "friend_code": "9167-8051-9691-8032", + "in_game_name": "badblocks", + "user": 1, + "created_at": "2025-03-13T04:21:05.166Z", + "updated_at": "2025-03-13T04:21:05.166Z" + } + }, + { + "model": "accounts.friendcode", + "pk": 2, + "fields": { + "friend_code": "1234-2938-7848-7636", + "in_game_name": "backrolls", + "user": 2, + "created_at": "2025-03-13T04:52:29.166Z", + "updated_at": "2025-03-13T04:52:29.166Z" + } + }, + { + "model": "accounts.friendcode", + "pk": 3, + "fields": { + "friend_code": "0987-0987-1234-1234", + "in_game_name": "badblocks2", + "user": 3, + "created_at": "2025-04-07T07:36:12.592Z", + "updated_at": "2025-04-07T07:36:12.592Z" + } + }, + { + "model": "account.emailaddress", + "pk": 1, + "fields": { + "user": 1, + "email": "rob@badblocks.email", + "verified": true, + "primary": true + } + }, + { + "model": "account.emailaddress", + "pk": 2, + "fields": { + "user": 2, + "email": "nathanward2016@gmail.com", + "verified": true, + "primary": true + } + }, + { + "model": "account.emailaddress", + "pk": 3, + "fields": { + "user": 3, + "email": "rob2@badblocks.email", + "verified": true, + "primary": true + } } -}, -{ - "model": "accounts.customuser", - "pk": 2, - "fields": { - "password": "pbkdf2_sha256$870000$NxQDOyPzAvM3FgLL5z0SRy$JuET4f8HI55Oy1umkzg6WtjFVpYTt+UfpZWqPff4EO4=", - "last_login": "2025-03-13T04:52:57.949Z", - "is_superuser": false, - "username": "nathanward2016@gmail.com", - "first_name": "", - "last_name": "", - "email": "nathanward2016@gmail.com", - "is_staff": false, - "is_active": true, - "date_joined": "2025-03-13T04:52:28.482Z", - "default_friend_code": 2, - "groups": [], - "user_permissions": [] - } -}, -{ - "model": "accounts.friendcode", - "pk": 1, - "fields": { - "friend_code": "9167-8051-9691-8032", - "in_game_name": "badblocks", - "user": 1, - "created_at": "2025-03-13T04:21:05.166Z", - "updated_at": "2025-03-13T04:21:05.166Z" - } -}, -{ - "model": "accounts.friendcode", - "pk": 2, - "fields": { - "friend_code": "1234-2938-7848-7636", - "in_game_name": "backrolls", - "user": 2, - "created_at": "2025-03-13T04:52:29.166Z", - "updated_at": "2025-03-13T04:52:29.166Z" - } -}, -{ - "model": "account.emailaddress", - "pk": 1, - "fields": { - "user": 1, - "email": "rob@badblocks.email", - "verified": true, - "primary": true - } -}, -{ - "model": "account.emailaddress", - "pk": 2, - "fields": { - "user": 2, - "email": "nathanward2016@gmail.com", - "verified": true, - "primary": true - } -} -] + ] + \ No newline at end of file diff --git a/seed/0005_TradeOffers.json b/seed/0005_TradeOffers.json index c682749..25754c0 100644 --- a/seed/0005_TradeOffers.json +++ b/seed/0005_TradeOffers.json @@ -1168,7 +1168,7 @@ "trade_offer": 33, "card": 236, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1178,7 +1178,7 @@ "trade_offer": 33, "card": 545, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1188,7 +1188,7 @@ "trade_offer": 33, "card": 537, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1198,7 +1198,7 @@ "trade_offer": 33, "card": 248, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1218,7 +1218,7 @@ "trade_offer": 33, "card": 533, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1248,7 +1248,7 @@ "trade_offer": 33, "card": 543, "quantity": 3, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1258,7 +1258,7 @@ "trade_offer": 33, "card": 655, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1268,7 +1268,7 @@ "trade_offer": 33, "card": 542, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1278,7 +1278,7 @@ "trade_offer": 33, "card": 360, "quantity": 2, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1298,7 +1298,7 @@ "trade_offer": 33, "card": 240, "quantity": 2, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -1308,7 +1308,7 @@ "trade_offer": 33, "card": 657, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2028,7 +2028,7 @@ "trade_offer": 33, "card": 227, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2038,7 +2038,7 @@ "trade_offer": 33, "card": 530, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2058,7 +2058,7 @@ "trade_offer": 33, "card": 540, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2068,7 +2068,7 @@ "trade_offer": 33, "card": 239, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2078,7 +2078,7 @@ "trade_offer": 33, "card": 244, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2088,7 +2088,7 @@ "trade_offer": 33, "card": 539, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2128,7 +2128,7 @@ "trade_offer": 33, "card": 532, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2168,7 +2168,7 @@ "trade_offer": 33, "card": 535, "quantity": 3, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2178,7 +2178,7 @@ "trade_offer": 33, "card": 237, "quantity": 1, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2188,7 +2188,7 @@ "trade_offer": 33, "card": 544, "quantity": 4, - "qty_accepted": 0 + "qty_accepted": 1 } }, { @@ -2228,7 +2228,218 @@ "trade_offer": 33, "card": 750, "quantity": 2, - "qty_accepted": 0 + "qty_accepted": 1 + } + }, + { + "model": "trades.tradeacceptance", + "pk": 1, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 542, + "offered_card": 532, + "state": "ACCEPTED", + "hash": "202ffbd4y", + "created_at": "2025-04-07T07:37:58.330Z", + "updated_at": "2025-04-07T07:37:58.330Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 2, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 236, + "offered_card": 530, + "state": "SENT", + "hash": "4ecac062y", + "created_at": "2025-04-07T07:38:40.854Z", + "updated_at": "2025-04-07T07:38:40.854Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 3, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 655, + "offered_card": 237, + "state": "THANKED_BY_INITIATOR", + "hash": "7ae69e4fy", + "created_at": "2025-04-07T07:38:58.971Z", + "updated_at": "2025-04-07T07:38:58.971Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 4, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 360, + "offered_card": 227, + "state": "SENT", + "hash": "a8d73a5ay", + "created_at": "2025-04-07T07:39:56.519Z", + "updated_at": "2025-04-07T07:39:56.519Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 5, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 533, + "offered_card": 539, + "state": "THANKED_BY_BOTH", + "hash": "873e6f61y", + "created_at": "2025-04-07T07:40:18.977Z", + "updated_at": "2025-04-07T07:40:18.977Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 6, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 543, + "offered_card": 540, + "state": "THANKED_BY_ACCEPTOR", + "hash": "9cdb8cc2y", + "created_at": "2025-04-07T07:40:37.114Z", + "updated_at": "2025-04-07T07:40:37.114Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 7, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 248, + "offered_card": 535, + "state": "RECEIVED", + "hash": "8da2e2e8y", + "created_at": "2025-04-07T07:46:45.763Z", + "updated_at": "2025-04-07T07:46:45.763Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 8, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 240, + "offered_card": 544, + "state": "THANKED_BY_BOTH", + "hash": "25c904e6y", + "created_at": "2025-04-07T07:47:08.427Z", + "updated_at": "2025-04-07T07:47:08.427Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 9, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 228, + "offered_card": 535, + "state": "REJECTED_BY_INITIATOR", + "hash": "1720d735y", + "created_at": "2025-04-07T07:47:35.798Z", + "updated_at": "2025-04-07T07:47:35.798Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 10, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 240, + "offered_card": 535, + "state": "REJECTED_BY_INITIATOR", + "hash": "d02caf35y", + "created_at": "2025-04-07T07:47:59.390Z", + "updated_at": "2025-04-07T07:47:59.390Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 11, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 748, + "offered_card": 750, + "state": "REJECTED_BY_ACCEPTOR", + "hash": "ea50fa4ey", + "created_at": "2025-04-07T07:48:30.600Z", + "updated_at": "2025-04-07T07:48:30.600Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 12, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 235, + "offered_card": 529, + "state": "REJECTED_BY_ACCEPTOR", + "hash": "a77cb744y", + "created_at": "2025-04-07T07:48:47.966Z", + "updated_at": "2025-04-07T07:48:47.966Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 13, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 537, + "offered_card": 239, + "state": "ACCEPTED", + "hash": "ac8d996by", + "created_at": "2025-04-07T23:31:50.450Z", + "updated_at": "2025-04-07T23:31:50.450Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 14, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 545, + "offered_card": 244, + "state": "ACCEPTED", + "hash": "01463b9dy", + "created_at": "2025-04-07T23:36:49.271Z", + "updated_at": "2025-04-07T23:36:49.271Z" + } + }, + { + "model": "trades.tradeacceptance", + "pk": 15, + "fields": { + "trade_offer": 33, + "accepted_by": 3, + "requested_card": 657, + "offered_card": 750, + "state": "ACCEPTED", + "hash": "97343361y", + "created_at": "2025-04-08T01:41:36.782Z", + "updated_at": "2025-04-08T01:41:36.782Z" } } -] \ No newline at end of file + ] + \ No newline at end of file diff --git a/seed/M4R9zUMD.txt b/seed/M4R9zUMD.txt deleted file mode 100644 index 3dcdbd9..0000000 --- a/seed/M4R9zUMD.txt +++ /dev/null @@ -1,2248 +0,0 @@ -[ -{ - "model": "trades.tradeoffer", - "pk": 1, - "fields": { - "is_closed": false, - "hash": "8775ce1cz", - "initiated_by": 1, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T04:38:41.385Z", - "updated_at": "2025-03-13T04:38:41.385Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 2, - "fields": { - "is_closed": false, - "hash": "daa6300dz", - "initiated_by": 1, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-03-13T04:39:25.777Z", - "updated_at": "2025-03-13T04:39:25.777Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 3, - "fields": { - "is_closed": false, - "hash": "e6cdbdf8z", - "initiated_by": 1, - "rarity_icon": "🔷🔷🔷", - "rarity_level": 3, - "image": "", - "created_at": "2025-03-13T04:40:07.727Z", - "updated_at": "2025-03-13T04:40:07.727Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 4, - "fields": { - "is_closed": false, - "hash": "a975713ez", - "initiated_by": 1, - "rarity_icon": "🔷🔷🔷🔷", - "rarity_level": 4, - "image": "", - "created_at": "2025-03-13T04:40:29.957Z", - "updated_at": "2025-03-13T04:40:29.957Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 5, - "fields": { - "is_closed": false, - "hash": "37dc0786z", - "initiated_by": 1, - "rarity_icon": "⭐️", - "rarity_level": 5, - "image": "", - "created_at": "2025-03-13T04:41:00.359Z", - "updated_at": "2025-03-13T04:41:00.359Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 6, - "fields": { - "is_closed": false, - "hash": "f10208bdz", - "initiated_by": 1, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-03-13T04:41:31.231Z", - "updated_at": "2025-03-13T04:41:31.231Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 7, - "fields": { - "is_closed": false, - "hash": "88963192z", - "initiated_by": 1, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T04:43:07.737Z", - "updated_at": "2025-03-13T04:43:07.737Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 8, - "fields": { - "is_closed": false, - "hash": "31a7aee8z", - "initiated_by": 1, - "rarity_icon": "🔷🔷🔷", - "rarity_level": 3, - "image": "", - "created_at": "2025-03-13T04:44:05.193Z", - "updated_at": "2025-03-13T04:44:05.193Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 9, - "fields": { - "is_closed": false, - "hash": "7a79e1f7z", - "initiated_by": 1, - "rarity_icon": "🔷🔷🔷🔷", - "rarity_level": 4, - "image": "", - "created_at": "2025-03-13T04:44:35.634Z", - "updated_at": "2025-03-13T04:44:35.634Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 10, - "fields": { - "is_closed": false, - "hash": "a465a255z", - "initiated_by": 1, - "rarity_icon": "⭐️", - "rarity_level": 5, - "image": "", - "created_at": "2025-03-13T04:45:02.040Z", - "updated_at": "2025-03-13T04:45:02.040Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 11, - "fields": { - "is_closed": false, - "hash": "9d871edbz", - "initiated_by": 1, - "rarity_icon": "🔷🔷🔷🔷", - "rarity_level": 4, - "image": "", - "created_at": "2025-03-13T04:45:34.815Z", - "updated_at": "2025-03-13T04:45:34.815Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 12, - "fields": { - "is_closed": false, - "hash": "32b34a89z", - "initiated_by": 2, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-03-13T04:54:17.809Z", - "updated_at": "2025-03-13T04:54:17.809Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 13, - "fields": { - "is_closed": false, - "hash": "f747edbdz", - "initiated_by": 2, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-03-13T04:55:33.344Z", - "updated_at": "2025-03-13T04:55:33.344Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 14, - "fields": { - "is_closed": false, - "hash": "9a13333dz", - "initiated_by": 2, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-03-13T04:58:02.062Z", - "updated_at": "2025-03-13T04:58:02.062Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 15, - "fields": { - "is_closed": false, - "hash": "5b0d6871z", - "initiated_by": 2, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-03-13T04:59:11.177Z", - "updated_at": "2025-03-13T04:59:11.177Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 16, - "fields": { - "is_closed": false, - "hash": "f012360cz", - "initiated_by": 2, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T05:00:49.530Z", - "updated_at": "2025-03-13T05:00:49.530Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 17, - "fields": { - "is_closed": false, - "hash": "a6e927eaz", - "initiated_by": 2, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T05:00:53.037Z", - "updated_at": "2025-03-13T05:00:53.037Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 18, - "fields": { - "is_closed": false, - "hash": "a5ec89b7z", - "initiated_by": 2, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T05:02:36.926Z", - "updated_at": "2025-03-13T05:02:36.926Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 19, - "fields": { - "is_closed": false, - "hash": "ebf6a095z", - "initiated_by": 2, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T05:03:39.241Z", - "updated_at": "2025-03-13T05:03:39.241Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 20, - "fields": { - "is_closed": false, - "hash": "c7541b41z", - "initiated_by": 2, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T05:05:22.304Z", - "updated_at": "2025-03-13T05:05:22.304Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 21, - "fields": { - "is_closed": false, - "hash": "2b97019dz", - "initiated_by": 2, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T05:08:31.437Z", - "updated_at": "2025-03-13T05:08:31.437Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 22, - "fields": { - "is_closed": false, - "hash": "5d90ca78z", - "initiated_by": 2, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-03-13T05:09:40.853Z", - "updated_at": "2025-03-13T05:09:40.853Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 23, - "fields": { - "is_closed": false, - "hash": "73d1e345z", - "initiated_by": 3, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-04-02T21:17:32.395Z", - "updated_at": "2025-04-02T21:17:32.395Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 24, - "fields": { - "is_closed": false, - "hash": "6c7629bez", - "initiated_by": 3, - "rarity_icon": "🔷🔷🔷", - "rarity_level": 3, - "image": "", - "created_at": "2025-04-02T21:36:31.125Z", - "updated_at": "2025-04-02T21:36:31.125Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 25, - "fields": { - "is_closed": false, - "hash": "7d18f985z", - "initiated_by": 3, - "rarity_icon": "🔷🔷🔷🔷", - "rarity_level": 4, - "image": "", - "created_at": "2025-04-02T21:37:37.029Z", - "updated_at": "2025-04-02T21:37:37.029Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 26, - "fields": { - "is_closed": false, - "hash": "2ecd0276z", - "initiated_by": 3, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-04-02T21:38:46.938Z", - "updated_at": "2025-04-02T21:38:46.938Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 27, - "fields": { - "is_closed": false, - "hash": "5982ad1az", - "initiated_by": 3, - "rarity_icon": "🔷🔷🔷", - "rarity_level": 3, - "image": "", - "created_at": "2025-04-02T21:40:00.610Z", - "updated_at": "2025-04-02T21:40:00.610Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 28, - "fields": { - "is_closed": false, - "hash": "30ba0209z", - "initiated_by": 3, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-04-02T21:41:20.609Z", - "updated_at": "2025-04-02T21:41:20.609Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 29, - "fields": { - "is_closed": false, - "hash": "8d9f9daaz", - "initiated_by": 3, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-04-02T21:43:42.498Z", - "updated_at": "2025-04-02T21:43:42.498Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 30, - "fields": { - "is_closed": false, - "hash": "c951c192z", - "initiated_by": 3, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-04-02T21:44:41.279Z", - "updated_at": "2025-04-02T21:44:41.279Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 31, - "fields": { - "is_closed": false, - "hash": "43abb6a1z", - "initiated_by": 3, - "rarity_icon": "🔷🔷", - "rarity_level": 2, - "image": "", - "created_at": "2025-04-02T21:47:20.463Z", - "updated_at": "2025-04-02T21:47:20.463Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 32, - "fields": { - "is_closed": false, - "hash": "784ad2f4z", - "initiated_by": 3, - "rarity_icon": "🔷", - "rarity_level": 1, - "image": "", - "created_at": "2025-04-04T05:26:13.988Z", - "updated_at": "2025-04-04T05:26:13.988Z" - } -}, -{ - "model": "trades.tradeoffer", - "pk": 33, - "fields": { - "is_closed": false, - "hash": "01f3150ez", - "initiated_by": 3, - "rarity_icon": "⭐️", - "rarity_level": 5, - "image": "", - "created_at": "2025-04-04T06:58:06.197Z", - "updated_at": "2025-04-04T06:58:06.197Z" - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 1, - "fields": { - "trade_offer": 1, - "card": 417, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 2, - "fields": { - "trade_offer": 1, - "card": 321, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 3, - "fields": { - "trade_offer": 2, - "card": 115, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 4, - "fields": { - "trade_offer": 2, - "card": 508, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 5, - "fields": { - "trade_offer": 3, - "card": 210, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 6, - "fields": { - "trade_offer": 3, - "card": 55, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 7, - "fields": { - "trade_offer": 4, - "card": 41, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 8, - "fields": { - "trade_offer": 4, - "card": 491, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 9, - "fields": { - "trade_offer": 5, - "card": 549, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 10, - "fields": { - "trade_offer": 5, - "card": 227, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 11, - "fields": { - "trade_offer": 6, - "card": 115, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 12, - "fields": { - "trade_offer": 6, - "card": 507, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 13, - "fields": { - "trade_offer": 7, - "card": 353, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 14, - "fields": { - "trade_offer": 7, - "card": 26, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 15, - "fields": { - "trade_offer": 8, - "card": 35, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 16, - "fields": { - "trade_offer": 8, - "card": 300, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 17, - "fields": { - "trade_offer": 9, - "card": 36, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 18, - "fields": { - "trade_offer": 9, - "card": 379, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 19, - "fields": { - "trade_offer": 10, - "card": 236, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 20, - "fields": { - "trade_offer": 10, - "card": 359, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 21, - "fields": { - "trade_offer": 11, - "card": 41, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 22, - "fields": { - "trade_offer": 11, - "card": 123, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 23, - "fields": { - "trade_offer": 12, - "card": 115, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 24, - "fields": { - "trade_offer": 13, - "card": 18, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 25, - "fields": { - "trade_offer": 13, - "card": 479, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 26, - "fields": { - "trade_offer": 14, - "card": 33, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 27, - "fields": { - "trade_offer": 14, - "card": 70, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 28, - "fields": { - "trade_offer": 15, - "card": 115, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 29, - "fields": { - "trade_offer": 15, - "card": 502, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 30, - "fields": { - "trade_offer": 15, - "card": 1, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 31, - "fields": { - "trade_offer": 16, - "card": 417, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 32, - "fields": { - "trade_offer": 16, - "card": 460, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 33, - "fields": { - "trade_offer": 17, - "card": 417, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 34, - "fields": { - "trade_offer": 17, - "card": 460, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 35, - "fields": { - "trade_offer": 18, - "card": 524, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 36, - "fields": { - "trade_offer": 19, - "card": 449, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 37, - "fields": { - "trade_offer": 19, - "card": 353, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 38, - "fields": { - "trade_offer": 20, - "card": 165, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 39, - "fields": { - "trade_offer": 20, - "card": 213, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 40, - "fields": { - "trade_offer": 20, - "card": 100, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 41, - "fields": { - "trade_offer": 21, - "card": 353, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 42, - "fields": { - "trade_offer": 21, - "card": 489, - "quantity": 1, - "qty_accepted": 1 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 43, - "fields": { - "trade_offer": 22, - "card": 489, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 44, - "fields": { - "trade_offer": 23, - "card": 417, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 45, - "fields": { - "trade_offer": 23, - "card": 654, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 46, - "fields": { - "trade_offer": 24, - "card": 600, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 47, - "fields": { - "trade_offer": 24, - "card": 210, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 48, - "fields": { - "trade_offer": 25, - "card": 332, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 49, - "fields": { - "trade_offer": 25, - "card": 482, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 50, - "fields": { - "trade_offer": 26, - "card": 704, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 51, - "fields": { - "trade_offer": 26, - "card": 739, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 52, - "fields": { - "trade_offer": 26, - "card": 683, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 53, - "fields": { - "trade_offer": 27, - "card": 40, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 54, - "fields": { - "trade_offer": 27, - "card": 55, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 55, - "fields": { - "trade_offer": 27, - "card": 149, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 56, - "fields": { - "trade_offer": 28, - "card": 165, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 57, - "fields": { - "trade_offer": 28, - "card": 91, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 58, - "fields": { - "trade_offer": 28, - "card": 52, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 59, - "fields": { - "trade_offer": 29, - "card": 417, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 60, - "fields": { - "trade_offer": 29, - "card": 449, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 61, - "fields": { - "trade_offer": 29, - "card": 375, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 62, - "fields": { - "trade_offer": 30, - "card": 654, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 63, - "fields": { - "trade_offer": 30, - "card": 653, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 64, - "fields": { - "trade_offer": 30, - "card": 638, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 65, - "fields": { - "trade_offer": 30, - "card": 652, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 66, - "fields": { - "trade_offer": 31, - "card": 321, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 67, - "fields": { - "trade_offer": 31, - "card": 342, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 68, - "fields": { - "trade_offer": 31, - "card": 313, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 69, - "fields": { - "trade_offer": 31, - "card": 288, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 70, - "fields": { - "trade_offer": 32, - "card": 72, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 71, - "fields": { - "trade_offer": 33, - "card": 236, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 72, - "fields": { - "trade_offer": 33, - "card": 545, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 73, - "fields": { - "trade_offer": 33, - "card": 537, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 74, - "fields": { - "trade_offer": 33, - "card": 248, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 75, - "fields": { - "trade_offer": 33, - "card": 235, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 76, - "fields": { - "trade_offer": 33, - "card": 533, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 77, - "fields": { - "trade_offer": 33, - "card": 228, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 78, - "fields": { - "trade_offer": 33, - "card": 233, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 79, - "fields": { - "trade_offer": 33, - "card": 543, - "quantity": 3, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 80, - "fields": { - "trade_offer": 33, - "card": 655, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 81, - "fields": { - "trade_offer": 33, - "card": 542, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 82, - "fields": { - "trade_offer": 33, - "card": 360, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 83, - "fields": { - "trade_offer": 33, - "card": 748, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 84, - "fields": { - "trade_offer": 33, - "card": 240, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferhavecard", - "pk": 85, - "fields": { - "trade_offer": 33, - "card": 657, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 1, - "fields": { - "trade_offer": 1, - "card": 221, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 2, - "fields": { - "trade_offer": 1, - "card": 224, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 3, - "fields": { - "trade_offer": 2, - "card": 517, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 4, - "fields": { - "trade_offer": 2, - "card": 5, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 5, - "fields": { - "trade_offer": 3, - "card": 22, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 6, - "fields": { - "trade_offer": 3, - "card": 331, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 7, - "fields": { - "trade_offer": 4, - "card": 23, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 8, - "fields": { - "trade_offer": 4, - "card": 304, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 9, - "fields": { - "trade_offer": 5, - "card": 530, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 10, - "fields": { - "trade_offer": 5, - "card": 359, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 11, - "fields": { - "trade_offer": 6, - "card": 503, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 12, - "fields": { - "trade_offer": 6, - "card": 27, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 13, - "fields": { - "trade_offer": 7, - "card": 165, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 14, - "fields": { - "trade_offer": 7, - "card": 519, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 15, - "fields": { - "trade_offer": 7, - "card": 30, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 16, - "fields": { - "trade_offer": 8, - "card": 396, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 17, - "fields": { - "trade_offer": 8, - "card": 80, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 18, - "fields": { - "trade_offer": 9, - "card": 304, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 19, - "fields": { - "trade_offer": 9, - "card": 471, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 20, - "fields": { - "trade_offer": 10, - "card": 227, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 21, - "fields": { - "trade_offer": 10, - "card": 530, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 22, - "fields": { - "trade_offer": 11, - "card": 289, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 23, - "fields": { - "trade_offer": 11, - "card": 467, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 24, - "fields": { - "trade_offer": 12, - "card": 510, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 25, - "fields": { - "trade_offer": 13, - "card": 517, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 26, - "fields": { - "trade_offer": 13, - "card": 107, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 27, - "fields": { - "trade_offer": 14, - "card": 57, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 28, - "fields": { - "trade_offer": 14, - "card": 172, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 29, - "fields": { - "trade_offer": 15, - "card": 27, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 30, - "fields": { - "trade_offer": 15, - "card": 151, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 31, - "fields": { - "trade_offer": 15, - "card": 124, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 32, - "fields": { - "trade_offer": 16, - "card": 148, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 33, - "fields": { - "trade_offer": 16, - "card": 38, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 34, - "fields": { - "trade_offer": 17, - "card": 148, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 35, - "fields": { - "trade_offer": 17, - "card": 38, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 36, - "fields": { - "trade_offer": 18, - "card": 106, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 37, - "fields": { - "trade_offer": 19, - "card": 295, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 38, - "fields": { - "trade_offer": 19, - "card": 12, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 39, - "fields": { - "trade_offer": 20, - "card": 321, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 40, - "fields": { - "trade_offer": 20, - "card": 184, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 41, - "fields": { - "trade_offer": 20, - "card": 427, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 42, - "fields": { - "trade_offer": 21, - "card": 321, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 43, - "fields": { - "trade_offer": 21, - "card": 184, - "quantity": 1, - "qty_accepted": 1 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 44, - "fields": { - "trade_offer": 22, - "card": 449, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 45, - "fields": { - "trade_offer": 23, - "card": 321, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 46, - "fields": { - "trade_offer": 23, - "card": 180, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 47, - "fields": { - "trade_offer": 24, - "card": 706, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 48, - "fields": { - "trade_offer": 24, - "card": 40, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 49, - "fields": { - "trade_offer": 25, - "card": 678, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 50, - "fields": { - "trade_offer": 25, - "card": 56, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 51, - "fields": { - "trade_offer": 26, - "card": 115, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 52, - "fields": { - "trade_offer": 26, - "card": 18, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 53, - "fields": { - "trade_offer": 26, - "card": 33, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 54, - "fields": { - "trade_offer": 27, - "card": 95, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 55, - "fields": { - "trade_offer": 27, - "card": 211, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 56, - "fields": { - "trade_offer": 27, - "card": 103, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 57, - "fields": { - "trade_offer": 28, - "card": 138, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 58, - "fields": { - "trade_offer": 28, - "card": 119, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 59, - "fields": { - "trade_offer": 28, - "card": 28, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 60, - "fields": { - "trade_offer": 28, - "card": 106, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 61, - "fields": { - "trade_offer": 29, - "card": 381, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 62, - "fields": { - "trade_offer": 29, - "card": 483, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 63, - "fields": { - "trade_offer": 29, - "card": 436, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 64, - "fields": { - "trade_offer": 29, - "card": 447, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 65, - "fields": { - "trade_offer": 30, - "card": 584, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 66, - "fields": { - "trade_offer": 30, - "card": 596, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 67, - "fields": { - "trade_offer": 31, - "card": 294, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 68, - "fields": { - "trade_offer": 31, - "card": 319, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 69, - "fields": { - "trade_offer": 31, - "card": 334, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 70, - "fields": { - "trade_offer": 32, - "card": 14, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 71, - "fields": { - "trade_offer": 32, - "card": 99, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 72, - "fields": { - "trade_offer": 33, - "card": 227, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 73, - "fields": { - "trade_offer": 33, - "card": 530, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 74, - "fields": { - "trade_offer": 33, - "card": 529, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 75, - "fields": { - "trade_offer": 33, - "card": 540, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 76, - "fields": { - "trade_offer": 33, - "card": 239, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 77, - "fields": { - "trade_offer": 33, - "card": 244, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 78, - "fields": { - "trade_offer": 33, - "card": 539, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 79, - "fields": { - "trade_offer": 33, - "card": 550, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 80, - "fields": { - "trade_offer": 33, - "card": 546, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 81, - "fields": { - "trade_offer": 33, - "card": 659, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 82, - "fields": { - "trade_offer": 33, - "card": 532, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 83, - "fields": { - "trade_offer": 33, - "card": 534, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 84, - "fields": { - "trade_offer": 33, - "card": 356, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 85, - "fields": { - "trade_offer": 33, - "card": 660, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 86, - "fields": { - "trade_offer": 33, - "card": 535, - "quantity": 3, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 87, - "fields": { - "trade_offer": 33, - "card": 237, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 88, - "fields": { - "trade_offer": 33, - "card": 544, - "quantity": 4, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 89, - "fields": { - "trade_offer": 33, - "card": 232, - "quantity": 1, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 90, - "fields": { - "trade_offer": 33, - "card": 548, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 91, - "fields": { - "trade_offer": 33, - "card": 528, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeofferwantcard", - "pk": 92, - "fields": { - "trade_offer": 33, - "card": 750, - "quantity": 2, - "qty_accepted": 0 - } -}, -{ - "model": "trades.tradeacceptance", - "pk": 1, - "fields": { - "trade_offer": 21, - "accepted_by": 1, - "requested_card": 489, - "offered_card": 184, - "state": "ACCEPTED", - "hash": "aa355c7ay", - "created_at": "2025-04-01T05:55:43.486Z", - "updated_at": "2025-04-01T05:55:43.486Z" - } -} -] diff --git a/theme/templates/email/common/footer.txt b/theme/templates/email/common/footer.txt new file mode 100644 index 0000000..56ed0a4 --- /dev/null +++ b/theme/templates/email/common/footer.txt @@ -0,0 +1,2 @@ +Happy trading! +PKMN Trade Club \ No newline at end of file diff --git a/theme/templates/email/common/header.txt b/theme/templates/email/common/header.txt new file mode 100644 index 0000000..cc18f03 --- /dev/null +++ b/theme/templates/email/common/header.txt @@ -0,0 +1 @@ +Hello {{ recipient_user }}, diff --git a/theme/templates/email/common/subject.txt b/theme/templates/email/common/subject.txt new file mode 100644 index 0000000..b1467ca --- /dev/null +++ b/theme/templates/email/common/subject.txt @@ -0,0 +1 @@ +[PKMN Trade Club] \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_accepted.txt b/theme/templates/email/trades/trade_update_accepted.txt new file mode 100644 index 0000000..9546ddd --- /dev/null +++ b/theme/templates/email/trades/trade_update_accepted.txt @@ -0,0 +1,15 @@ +{% include 'email/common/header.txt' %} + +Great news! {{ acting_user }} ({{ acting_user_ign }} {{ acting_user_friend_code }}) has accepted your trade offer. + +Trade Details: +- They have: {{ want_card }} +- They want: {{ has_card }} +(#{{ hash }}) + +What's next? You can now mark the trade as "Sent" once you've offered the card to them in the app, or reject the trade if needed. + +Visit your dashboard to manage this trade: +{{ domain }}{% url 'dashboard' %} + +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_accepted_subject.txt b/theme/templates/email/trades/trade_update_accepted_subject.txt new file mode 100644 index 0000000..c96acf6 --- /dev/null +++ b/theme/templates/email/trades/trade_update_accepted_subject.txt @@ -0,0 +1 @@ +Trade Accepted \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_received.txt b/theme/templates/email/trades/trade_update_received.txt new file mode 100644 index 0000000..3626e16 --- /dev/null +++ b/theme/templates/email/trades/trade_update_received.txt @@ -0,0 +1,15 @@ +{% include 'email/common/header.txt' %} + +Great news! {{ acting_user }} ({{ acting_user_ign }} {{ acting_user_friend_code }}) has marked your trade as "Received". + +Trade Details: +- They sent: {{ want_card }} +- They received: {{ has_card }} +(#{{ hash }}) + +What's next? Send a thank you to this user to increase their reputation! + +Visit your dashboard to send thanks: +{{ domain }}{% url 'dashboard' %} + +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_received_subject.txt b/theme/templates/email/trades/trade_update_received_subject.txt new file mode 100644 index 0000000..4de82b2 --- /dev/null +++ b/theme/templates/email/trades/trade_update_received_subject.txt @@ -0,0 +1 @@ +Trade Received \ No newline at end of file diff --git a/theme/templates/trades/email/trade_update_rejected_by_acceptor.txt b/theme/templates/email/trades/trade_update_rejected_by_acceptor.txt similarity index 58% rename from theme/templates/trades/email/trade_update_rejected_by_acceptor.txt rename to theme/templates/email/trades/trade_update_rejected_by_acceptor.txt index 76570c7..4f97fb1 100644 --- a/theme/templates/trades/email/trade_update_rejected_by_acceptor.txt +++ b/theme/templates/email/trades/trade_update_rejected_by_acceptor.txt @@ -1,16 +1,15 @@ -Hello {{ recipient_user }}, +{% include 'email/common/header.txt' %} We're sorry to inform you that {{ acting_user }} ({{ acting_user_friend_code }}) has canceled their trade acceptance. Trade Details: -- #{{ hash }} -- Card you were going to send: {{ has_card }} -- Card they were offering: {{ want_card }} +- They had: {{ want_card }} +- They wanted: {{ has_card }} +(#{{ hash }}) Your trade offer is still active and available for other users to accept. Visit your dashboard to manage your trade offers: -{% url 'dashboard' %} +{{ domain }}{% url 'dashboard' %} -Happy trading! -PKMN Trade Club \ No newline at end of file +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_rejected_by_acceptor_subject.txt b/theme/templates/email/trades/trade_update_rejected_by_acceptor_subject.txt new file mode 100644 index 0000000..2a2d74c --- /dev/null +++ b/theme/templates/email/trades/trade_update_rejected_by_acceptor_subject.txt @@ -0,0 +1 @@ +Trade Was Rejected \ No newline at end of file diff --git a/theme/templates/trades/email/trade_update_rejected_by_initiator.txt b/theme/templates/email/trades/trade_update_rejected_by_initiator.txt similarity index 53% rename from theme/templates/trades/email/trade_update_rejected_by_initiator.txt rename to theme/templates/email/trades/trade_update_rejected_by_initiator.txt index f0e7309..12e80ba 100644 --- a/theme/templates/trades/email/trade_update_rejected_by_initiator.txt +++ b/theme/templates/email/trades/trade_update_rejected_by_initiator.txt @@ -1,16 +1,15 @@ -Hello {{ recipient_user }}, +{% include 'email/common/header.txt' %} We're sorry to inform you that {{ acting_user }} ({{ acting_user_friend_code }}) has rejected the trade. Trade Details: -- #{{ hash }} -- Card you were going to receive: {{ has_card }} -- Card you were offering: {{ want_card }} +- You had: {{ has_card }} +- You wanted: {{ want_card }} +(#{{ hash }}) Don't worry - there are plenty of other trade opportunities available! You can browse our marketplace for similar trades. Visit the marketplace: -https://pkmntrade.club{% url 'trade_offer_list' %} +{{ domain }}{% url 'trade_offer_list' %} -Better luck with your next trade! -PKMN Trade Club \ No newline at end of file +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_rejected_by_initiator_subject.txt b/theme/templates/email/trades/trade_update_rejected_by_initiator_subject.txt new file mode 100644 index 0000000..2a2d74c --- /dev/null +++ b/theme/templates/email/trades/trade_update_rejected_by_initiator_subject.txt @@ -0,0 +1 @@ +Trade Was Rejected \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_sent.txt b/theme/templates/email/trades/trade_update_sent.txt new file mode 100644 index 0000000..56781ba --- /dev/null +++ b/theme/templates/email/trades/trade_update_sent.txt @@ -0,0 +1,15 @@ +{% include 'email/common/header.txt' %} + +{{ acting_user }} ({{ acting_user_ign }} {{ acting_user_friend_code }}) has marked your trade as "Sent". + +Trade Details: +- You have: {{ want_card }} +- You want: {{ has_card }} +(#{{ hash }}) + +What's next? Once you respond to the trade in the app, please mark the trade as "Received" in your dashboard. + +Visit your dashboard to manage this trade: +{{ domain }}{% url 'dashboard' %} + +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_sent_subject.txt b/theme/templates/email/trades/trade_update_sent_subject.txt new file mode 100644 index 0000000..e9e869b --- /dev/null +++ b/theme/templates/email/trades/trade_update_sent_subject.txt @@ -0,0 +1 @@ +Trade Sent \ No newline at end of file diff --git a/theme/templates/trades/email/trade_update_thanked_by_acceptor.txt b/theme/templates/email/trades/trade_update_thanked_by_acceptor.txt similarity index 54% rename from theme/templates/trades/email/trade_update_thanked_by_acceptor.txt rename to theme/templates/email/trades/trade_update_thanked_by_acceptor.txt index ec1bad1..8b0d384 100644 --- a/theme/templates/trades/email/trade_update_thanked_by_acceptor.txt +++ b/theme/templates/email/trades/trade_update_thanked_by_acceptor.txt @@ -1,16 +1,15 @@ -Hello {{ recipient_user }}, +{% include 'email/common/header.txt' %} {{ acting_user }} ({{ acting_user_friend_code }}) has sent their thanks for the successful trade! Trade Details: -- #{{ hash }} -- Card you sent: {{ has_card }} -- Card they offered: {{ want_card }} +- They sent: {{ want_card }} +- They received: {{ has_card }} +(#{{ hash }}) What's next? Send a thank you to this user to increase their reputation! Visit your dashboard to send thanks: -{% url 'dashboard' %} +{{ domain }}{% url 'dashboard' %} -Happy trading! -PKMN Trade Club \ No newline at end of file +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_thanked_by_acceptor_subject.txt b/theme/templates/email/trades/trade_update_thanked_by_acceptor_subject.txt new file mode 100644 index 0000000..44b8653 --- /dev/null +++ b/theme/templates/email/trades/trade_update_thanked_by_acceptor_subject.txt @@ -0,0 +1 @@ +You Received A Thanks! \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_thanked_by_both.txt b/theme/templates/email/trades/trade_update_thanked_by_both.txt new file mode 100644 index 0000000..3a9fe12 --- /dev/null +++ b/theme/templates/email/trades/trade_update_thanked_by_both.txt @@ -0,0 +1,14 @@ +{% include 'email/common/header.txt' %} + +{{ acting_user }} ({{ acting_user_friend_code }}) has sent their thanks for the successful trade! + +Trade Details: +- {% if is_initiator %}They sent: {{ has_card }}{% else %}You sent: {{ want_card }}{% endif %} +- {% if is_initiator %}They received: {{ want_card }}{% else %}You received: {{ has_card }}{% endif %} +(#{{ hash }}) + +This trade is now completed; no further actions can be made. + +Thank you for using PKMN Trade Club. + +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_thanked_by_both_subject.txt b/theme/templates/email/trades/trade_update_thanked_by_both_subject.txt new file mode 100644 index 0000000..44b8653 --- /dev/null +++ b/theme/templates/email/trades/trade_update_thanked_by_both_subject.txt @@ -0,0 +1 @@ +You Received A Thanks! \ No newline at end of file diff --git a/theme/templates/trades/email/trade_update_thanked_by_initiator.txt b/theme/templates/email/trades/trade_update_thanked_by_initiator.txt similarity index 55% rename from theme/templates/trades/email/trade_update_thanked_by_initiator.txt rename to theme/templates/email/trades/trade_update_thanked_by_initiator.txt index 09956c0..dabccd9 100644 --- a/theme/templates/trades/email/trade_update_thanked_by_initiator.txt +++ b/theme/templates/email/trades/trade_update_thanked_by_initiator.txt @@ -1,16 +1,15 @@ -Hello {{ recipient_user }}, +{% include 'email/common/header.txt' %} {{ acting_user }} ({{ acting_user_friend_code }}) has sent their thanks for the successful trade! Trade Details: -- #{{ hash }} -- Card they sent: {{ has_card }} -- Card you offered: {{ want_card }} +- You sent: {{ want_card }} +- You received: {{ has_card }} +(#{{ hash }}) What's next? Send a thank you to this user to increase their reputation! Visit your dashboard to send thanks: -{% url 'dashboard' %} +{{ domain }}{% url 'dashboard' %} -Happy trading! -PKMN Trade Club \ No newline at end of file +{% include 'email/common/footer.txt' %} \ No newline at end of file diff --git a/theme/templates/email/trades/trade_update_thanked_by_initiator_subject.txt b/theme/templates/email/trades/trade_update_thanked_by_initiator_subject.txt new file mode 100644 index 0000000..44b8653 --- /dev/null +++ b/theme/templates/email/trades/trade_update_thanked_by_initiator_subject.txt @@ -0,0 +1 @@ +You Received A Thanks! \ No newline at end of file diff --git a/theme/templates/home/home.html b/theme/templates/home/home.html index 5097f03..025c681 100644 --- a/theme/templates/home/home.html +++ b/theme/templates/home/home.html @@ -47,7 +47,7 @@
Most Offered
- {% cache 3600 most_offered_cards %} + {% cache 300 most_offered_cards %} {% include "home/_card_list.html" with cards=most_offered_cards %} {% endcache %}
@@ -60,7 +60,7 @@
Most Wanted
- {% cache 3600 most_wanted_cards %} + {% cache 300 most_wanted_cards %} {% include "home/_card_list.html" with cards=most_wanted_cards %} {% endcache %}
@@ -73,7 +73,7 @@
Least Offered
- {% cache 3600 least_offered_cards %} + {% cache 300 least_offered_cards %} {% include "home/_card_list.html" with cards=least_offered_cards %} {% endcache %}
@@ -87,7 +87,6 @@
- {% cache 3600 featured_offers %}
Featured Offers
@@ -102,12 +101,10 @@

No featured offers available.

{% endif %}
- {% endcache %}
- {% cache 3600 recent_offers %}
Recent Offers
@@ -120,53 +117,7 @@ {% endfor %}
- {% endcache %} -{% endblock content %} - -{% block javascript %} - -{% endblock %} - -{% block css %} - -{% endblock %} \ No newline at end of file +{% endblock content %} \ No newline at end of file diff --git a/theme/templates/trades/_trade_offer_list.html b/theme/templates/trades/_trade_offer_list.html index a2e897a..3b5d9f6 100644 --- a/theme/templates/trades/_trade_offer_list.html +++ b/theme/templates/trades/_trade_offer_list.html @@ -1,19 +1,13 @@ {% load trade_offer_tags pagination_tags %} -{% comment %} - This snippet renders a grid of trade offer cards (or acceptance cards) along with pagination controls. - For a TradeOffer, we use {% render_trade_offer %}; for a TradeAcceptance, {% render_trade_acceptance %}. -{% endcomment %} -
+
{% for offer in offers %} -
{% if offer.accepted_by %} {# Render a trade acceptance using our new tag #} {% render_trade_acceptance offer %} {% else %} {% render_trade_offer offer %} {% endif %} -
{% empty %}
No trade offers available.
{% endfor %} diff --git a/theme/templates/trades/email/trade_update_accepted.txt b/theme/templates/trades/email/trade_update_accepted.txt deleted file mode 100644 index 18c4833..0000000 --- a/theme/templates/trades/email/trade_update_accepted.txt +++ /dev/null @@ -1,16 +0,0 @@ -Hello {{ recipient_user }}, - -Great news! {{ acting_user }} ({{ acting_user_friend_code }}) has accepted your trade offer. - -Trade Details: -- #{{ hash }} -- They are offering: {{ want_card }} -- They want: {{ has_card }} - -What's next? You can now mark the trade as "Sent" once you've offered the card to them in the app, or reject the trade if needed. - -Visit your dashboard to manage this trade: -{% url 'dashboard' %} - -Happy trading! -PKMN Trade Club \ No newline at end of file diff --git a/theme/templates/trades/email/trade_update_received.txt b/theme/templates/trades/email/trade_update_received.txt deleted file mode 100644 index 78e4e28..0000000 --- a/theme/templates/trades/email/trade_update_received.txt +++ /dev/null @@ -1,16 +0,0 @@ -Hello {{ recipient_user }}, - -{{ acting_user }} ({{ acting_user_friend_code }}) has marked your trade as "Received". - -Trade Details: -- #{{ hash }} -- Card you sent: {{ has_card }} -- Card they offered: {{ want_card }} - -What's next? Send a thank you to this user to increase their reputation! - -Visit your dashboard to send thanks: -{% url 'dashboard' %} - -Happy trading! -PKMN Trade Club \ No newline at end of file diff --git a/theme/templates/trades/email/trade_update_sent.txt b/theme/templates/trades/email/trade_update_sent.txt deleted file mode 100644 index a49ce02..0000000 --- a/theme/templates/trades/email/trade_update_sent.txt +++ /dev/null @@ -1,16 +0,0 @@ -Hello {{ recipient_user }}, - -{{ acting_user }} ({{ acting_user_friend_code }}) has marked your trade as "Sent". - -Trade Details: -- #{{ hash }} -- Card being sent to you: {{ has_card }} -- Card you're offering: {{ want_card }} - -What's next? Once you respond to the trade in the app, please mark the trade as "Received" in your dashboard. - -Visit your dashboard to manage this trade: -{% url 'dashboard' %} - -Happy trading! -PKMN Trade Club \ No newline at end of file diff --git a/theme/templates/trades/email/trade_update_thanked_by_both.txt b/theme/templates/trades/email/trade_update_thanked_by_both.txt deleted file mode 100644 index 4de1c97..0000000 --- a/theme/templates/trades/email/trade_update_thanked_by_both.txt +++ /dev/null @@ -1,15 +0,0 @@ -Hello {{ recipient_user }}, - -{{ acting_user }} ({{ acting_user_friend_code }}) has sent their thanks for the successful trade! - -Trade Details: -- #{{ hash }} -- Card {% if is_initiator %}you{% else %}they{% endif %} sent: {{ has_card }} -- Card {% if is_initiator %}they{% else %}you{% endif %} offered: {{ want_card }} - -This trade is now completed; no further actions can be made. - -Thank you for using PKMN Trade Club. - -Happy trading! -PKMN Trade Club \ No newline at end of file diff --git a/theme/templatetags/trade_offer.html b/theme/templatetags/trade_offer.html index 249d10d..0610834 100644 --- a/theme/templatetags/trade_offer.html +++ b/theme/templatetags/trade_offer.html @@ -13,7 +13,7 @@ Wants
-
+
{{ initiated_by_email|gravatar:40 }}
@@ -73,7 +73,7 @@ Wants
-
+
{{ initiated_by_email|gravatar:40 }}
diff --git a/trades/signals.py b/trades/signals.py index bb9a769..df92f30 100644 --- a/trades/signals.py +++ b/trades/signals.py @@ -8,7 +8,10 @@ from datetime import timedelta from django.utils import timezone import uuid import hashlib +from django.core.mail import send_mail from django.conf import settings +from django.template.loader import render_to_string +from django.contrib.sites.models import Site ACTIVE_STATES = [ TradeAcceptance.AcceptanceState.ACCEPTED, @@ -92,7 +95,6 @@ def trade_acceptance_post_delete(sender, instance, **kwargs): def trade_acceptance_email_notification(sender, instance, created, **kwargs): # Only proceed if the update was triggered by an acting user. if not hasattr(instance, "_actioning_user"): - print("No actioning user") return # check if were in debug mode @@ -122,42 +124,41 @@ def trade_acceptance_email_notification(sender, instance, created, **kwargs): else: return - print("state", state) - print("acting_user", acting_user) # Determine the non-acting party: if instance.trade_offer.initiated_by == acting_user: # The initiator made the change; notify the acceptor. recipient_user = instance.accepted_by.user - email_template = "trades/email/trade_update_" + state + ".txt" - email_subject = "[PKMN Trade Club] Trade Update" else: # The acceptor made the change; notify the initiator. recipient_user = instance.trade_offer.initiated_by.user - email_template = "trades/email/trade_update_" + state + ".txt" - email_subject = "[PKMN Trade Club] Trade Update" is_initiator = instance.trade_offer.initiated_by == acting_user - from django.template.loader import render_to_string email_context = { "has_card": instance.requested_card, "want_card": instance.offered_card, "hash": instance.hash, "acting_user": acting_user.username, + "acting_user_ign": instance.trade_offer.initiated_by.in_game_name if is_initiator else instance.accepted_by.in_game_name, "recipient_user": recipient_user.username, + "recipient_user_ign": instance.accepted_by.in_game_name if is_initiator else instance.trade_offer.initiated_by.in_game_name, "acting_user_friend_code": instance.trade_offer.initiated_by.friend_code if is_initiator else instance.accepted_by.friend_code, "is_initiator": is_initiator, + "domain": Site.objects.get_current().domain, "pk": instance.pk, } - print("email_context", email_context) + email_template = "email/trades/trade_update_" + state + ".txt" + email_subject = render_to_string("email/common/subject.txt", email_context) + email_subject += render_to_string("email/trades/trade_update_" + state + "_subject.txt", email_context) email_body = render_to_string(email_template, email_context) - from django.core.mail import send_mail + print("initiated by: ", instance.trade_offer.initiated_by, ", accepted by: ", instance.accepted_by, ", acting user: ", acting_user, ", recipient user: ", recipient_user, ", state: ", state) + send_mail( email_subject, email_body, - None, # Django will use DEFAULT_FROM_EMAIL from settings + None, [recipient_user.email], )