Skip to content

Commit 58f394a

Browse files
committed
Linter complaints
1 parent 54c97b0 commit 58f394a

7 files changed

Lines changed: 118 additions & 85 deletions

File tree

pretix_eth/management/commands/confirm_payments.py

Lines changed: 57 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,17 @@ def confirm_payments_for_event(self, event: Event, no_dry_run, log_verbosity=0):
5858
)
5959
)
6060
if log_verbosity > 0:
61-
logger.info(f" * Found {unconfirmed_order_payments.count()} unconfirmed order payments")
61+
logger.info(
62+
f" * Found {unconfirmed_order_payments.count()} "
63+
f"unconfirmed order payments"
64+
)
6265

6366
for order_payment in unconfirmed_order_payments:
6467
if log_verbosity > 0:
65-
logger.info(f" * trying to confirm payment: {order_payment} (has {order_payment.signed_messages.all().count()} signed messages)")
68+
logger.info(
69+
f" * trying to confirm payment: {order_payment} "
70+
f"(has {order_payment.signed_messages.all().count()} signed messages)"
71+
)
6672
# it is tempting to put .filter(invalid=False) here, but remember
6773
# there is still a chance that low-gas txs are mined later on.
6874
for signed_message in order_payment.signed_messages.all():
@@ -89,44 +95,69 @@ def confirm_payments_for_event(self, event: Event, no_dry_run, log_verbosity=0):
8995
# Get balance
9096
w3 = Web3(load_provider_from_uri(network_rpc_url))
9197
if log_verbosity > 0:
92-
logger.info(f" * Looking for a receip for a transaction with hash={signed_message.transaction_hash}")
98+
logger.info(
99+
f" * Looking for a receip for a transaction with "
100+
f"hash={signed_message.transaction_hash}"
101+
)
93102
try:
94103
receipt = w3.eth.getTransactionReceipt(signed_message.transaction_hash)
95104
except TransactionNotFound:
96105
if log_verbosity > 0:
97-
logger.info(f" * Transaction hash={signed_message.transaction_hash} not found, skipping.")
98-
if signed_message.age > 30*60:
106+
logger.info(
107+
f" * Transaction"
108+
f" hash={signed_message.transaction_hash} not found,"
109+
f" skipping."
110+
)
111+
if signed_message.age > 30 * 60:
99112
signed_message.invalidate()
100113
continue
101114

102115
if receipt.status == 0:
103116
if log_verbosity > 0:
104-
logger.info(f" * Transaction hash={signed_message.transaction_hash} was has status=0, invalidating.")
117+
logger.info(
118+
f" * Transaction hash={signed_message.transaction_hash}"
119+
f" was has status=0, invalidating."
120+
)
105121
signed_message.invalidate()
106122
continue
107123

108124
block_number = receipt.blockNumber
109125

110-
if block_number is None or block_number + SAFETY_BLOCK_COUNT > w3.eth.get_block_number():
111-
logger.warning(f" * Transfer found in a block that is too young, waiting until at least {SAFETY_BLOCK_COUNT} more blocks are confirmed.")
126+
if (
127+
block_number is None
128+
or block_number + SAFETY_BLOCK_COUNT > w3.eth.get_block_number()
129+
):
130+
logger.warning(
131+
f" * Transfer found in a block that is too young, "
132+
f"waiting until at least {SAFETY_BLOCK_COUNT} more blocks are confirmed."
133+
)
112134
continue
113135

114136
if token.IS_NATIVE_ASSET:
115137
# ETH
116-
payment_amount = w3.eth.getTransaction(signed_message.transaction_hash).value
138+
payment_amount = w3.eth.getTransaction(
139+
signed_message.transaction_hash).value
117140
receipt_reciever = receipt.to.lower()
118141
correct_recipient = receipt_reciever == signed_message.recipient_address.lower()
119142

120143
else:
121144
# DAI
122-
contract = w3.eth.contract(address=token.ADDRESS, abi=TOKEN_ABI)
123-
transaction_details = contract.events.Transfer().processReceipt(receipt)[0].args
145+
contract = w3.eth.contract(address=token.ADDRESS,
146+
abi=TOKEN_ABI)
147+
transaction_details = \
148+
contract.events.Transfer().processReceipt(receipt)[0].args
124149
payment_amount = transaction_details.value
125150
# check that the payment happened on the right contract address
126151
correct_contract = token.ADDRESS.lower() == receipt.to.lower()
127-
# take recipient address from the topics, not from the "from" field, as that's the contract address
128-
receipt_reciever = receipt.logs[0].topics[2][12:].hex().lower()
129-
correct_recipient = correct_contract and (receipt_reciever == signed_message.recipient_address.lower())
152+
# take recipient address from the topics,
153+
# not from the "from" field, as that's the contract address
154+
receipt_reciever = receipt.logs[0].topics[2][
155+
12:].hex().lower()
156+
correct_recipient = (
157+
correct_contract
158+
and (
159+
receipt_reciever == signed_message.recipient_address.lower())
160+
)
130161

131162

132163
receipt_sender = getattr(receipt, 'from').lower()
@@ -137,18 +168,26 @@ def confirm_payments_for_event(self, event: Event, no_dry_run, log_verbosity=0):
137168
f" * Transaction hash provided does not match correct sender and recipient"
138169
)
139170
if log_verbosity > 0:
140-
logger.info(f"receipt sender={receipt_sender}, expected sender={signed_message.sender_address.lower()}")
141-
logger.info(f"receipt recipient={receipt_reciever}, expected recipient={signed_message.recipient_address.lower()}")
171+
logger.info(
172+
f"receipt sender={receipt_sender}, "
173+
f"expected sender={signed_message.sender_address.lower()}"
174+
)
175+
logger.info(
176+
f"receipt recipient={receipt_reciever}, "
177+
f"expected recipient={signed_message.recipient_address.lower()}"
178+
)
142179
continue
143180

144181
if payment_amount > 0:
145182
logger.info(f"Payments found for {full_id} at {signed_message.sender_address}:")
146183
if payment_amount < expected_amount:
147184
logger.warning(
148-
f" * Expected payment of at least {expected_amount} {token.TOKEN_SYMBOL}"
185+
f" * Expected payment of at least"
186+
f" {expected_amount} {token.TOKEN_SYMBOL}"
149187
)
150188
logger.warning(
151-
f" * Given payment was {payment_amount} {token.TOKEN_SYMBOL}"
189+
f" * Given payment was"
190+
f" {payment_amount} {token.TOKEN_SYMBOL}"
152191
)
153192
logger.warning(f" * Skipping") # noqa: F541
154193
continue

pretix_eth/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,11 @@ class SignedMessage(models.Model):
1313
sender_address = models.CharField(max_length=42)
1414
recipient_address = models.CharField(max_length=42)
1515
chain_id = models.IntegerField()
16-
order_payment = models.ForeignKey(to=OrderPayment, on_delete=models.CASCADE, related_name='signed_messages')
16+
order_payment = models.ForeignKey(
17+
to=OrderPayment,
18+
on_delete=models.CASCADE,
19+
related_name='signed_messages',
20+
)
1721
transaction_hash = models.CharField(max_length=66, null=True)
1822
invalid = models.BooleanField(default=False)
1923
created_at = models.DateTimeField(editable=False, null=True)

pretix_eth/network/tokens.py

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,37 +26,40 @@
2626
},
2727
{
2828
"constant": False,
29-
"inputs": [{"name": "_to", "type": "address"}, {"name": "_value", "type": "uint256"}],
29+
"inputs": [
30+
{"name": "_to", "type": "address"},
31+
{"name": "_value", "type": "uint256"},
32+
],
3033
"name": "transfer",
3134
"outputs": [{"name": "", "type": "bool"}],
32-
"type": "function"
35+
"type": "function",
3336
},
3437
# Event
3538
{
36-
"anonymous": False,
37-
"inputs": [
38-
{
39-
"indexed": True,
40-
"internalType": "address",
41-
"name": "from",
42-
"type": "address"
43-
},
44-
{
45-
"indexed": True,
46-
"internalType": "address",
47-
"name": "to",
48-
"type": "address"
49-
},
50-
{
51-
"indexed": False,
52-
"internalType": "uint256",
53-
"name": "value",
54-
"type": "uint256"
55-
}
56-
],
57-
"name": "Transfer",
58-
"type": "event"
59-
}
39+
"anonymous": False,
40+
"inputs": [
41+
{
42+
"indexed": True,
43+
"internalType": "address",
44+
"name": "from",
45+
"type": "address",
46+
},
47+
{
48+
"indexed": True,
49+
"internalType": "address",
50+
"name": "to",
51+
"type": "address",
52+
},
53+
{
54+
"indexed": False,
55+
"internalType": "uint256",
56+
"name": "value",
57+
"type": "uint256",
58+
},
59+
],
60+
"name": "Transfer",
61+
"type": "event",
62+
},
6063
]
6164

6265

@@ -163,13 +166,13 @@ def get_balance_of_address(self, hex_wallet_address, rpc_url):
163166

164167
def get_transaction_link(self, transaction_hash: Optional[str]) -> Optional[
165168
str]:
166-
return '{base}/tx/{hash}'.format(
169+
return "{base}/tx/{hash}".format(
167170
base=self.EIP3091_EXPLORER_URL,
168171
hash=transaction_hash,
169172
)
170173

171174
def get_address_link(self, address: Optional[str]) -> Optional[str]:
172-
return '{base}/address/{address}'.format(
175+
return "{base}/address/{address}".format(
173176
base=self.EIP3091_EXPLORER_URL,
174177
address=address,
175178
)

pretix_eth/payment.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
from eth_utils import from_wei
2020

21-
#from .models import WalletAddress
2221
from .network.tokens import (
2322
IToken,
2423
registry,
@@ -215,7 +214,8 @@ def payment_prepare(self, request: HttpRequest, payment: OrderPayment):
215214
return False
216215

217216
def payment_is_valid_session(self, request):
218-
# Note: payment_currency_type check already done in token_verbose_name_to_token_network_id()
217+
# Note: payment_currency_type check already done
218+
# in token_verbose_name_to_token_network_id()
219219
return all(
220220
(
221221
"payment_currency_type" in request.session,
@@ -225,7 +225,8 @@ def payment_is_valid_session(self, request):
225225
)
226226

227227
def _payment_is_valid_info(self, payment: OrderPayment) -> bool:
228-
# Note: payment_currency_type check already done in token_verbose_name_to_token_network_id()
228+
# Note: payment_currency_type check already done
229+
# in token_verbose_name_to_token_network_id()
229230
return all(
230231
(
231232
"currency_type" in payment.info_data,
@@ -302,7 +303,8 @@ def payment_control_render(self, request: HttpRequest, payment: OrderPayment):
302303

303304
hex_wallet_address = self.get_receiving_address()
304305

305-
# display all submitted transaction hashes along with their respective sendr and recipient addresses
306+
# display all submitted transaction hashes along with
307+
# their respective sendr and recipient addresses
306308
last_signed_message: SignedMessage = payment.signed_messages.last()
307309

308310
if last_signed_message is not None:
@@ -343,4 +345,4 @@ def payment_partial_refund_supported(self, payment: OrderPayment):
343345
return self.payment_refund_supported(payment)
344346

345347
def execute_refund(self, refund: OrderRefund):
346-
raise Exception("Refunds are disabled for this payment provider for private key security reasons.")
348+
raise Exception("Refunds are disabled for this payment provider.")

pretix_eth/serializers.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
from pretix_eth.utils import get_message_to_sign
99

1010

11-
1211
class TransactionDetailsSerializer(Serializer):
1312
chain_id = fields.IntegerField()
1413
currency = fields.CharField()
15-
erc20_contract_address = fields.CharField(allow_null=True) # contract address for non-native currencies like DAI
14+
# contract address for non-native ERC20 currencies like DAI
15+
erc20_contract_address = fields.CharField(allow_null=True)
1616
recipient_address = fields.CharField()
1717
amount = fields.CharField()
1818
message = fields.CharField()
@@ -38,11 +38,12 @@ def to_representation(self, instance):
3838
"chain_id": token.CHAIN_ID,
3939
"network_identifier": token.NETWORK_IDENTIFIER,
4040
"currency": token.TOKEN_SYMBOL,
41-
"erc20_contract_address": token.ADDRESS,
41+
"erc20_contract_address": token.ADDRESS,
4242
"recipient_address": recipient_address,
4343
"amount": str(instance.info_data.get('amount')),
4444
"message": get_message_to_sign(
45-
sender_address=self.context.get('request').query_params.get('sender_address'),
45+
sender_address=self.context.get('request').query_params.get(
46+
'sender_address'),
4647
receiver_address=recipient_address,
4748
chain_id=token.CHAIN_ID,
4849
order_code=instance.order.code

pretix_eth/signals.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
from django.dispatch import receiver
2-
from django.urls import resolve, reverse
3-
from django.utils.translation import gettext_lazy as _
42
from django.template.loader import get_template
53

64
from pretix.base.middleware import _parse_csp, _merge_csp, _render_csp
@@ -9,17 +7,11 @@
97
process_response,
108
)
119
from pretix.base.signals import (
12-
logentry_display,
1310
register_payment_providers,
1411
register_data_exporters,
1512
)
1613

17-
from pretix.control.signals import (
18-
event_dashboard_widgets,
19-
nav_event_settings,
20-
)
2114
from .exporter import EthereumOrdersExporter
22-
from . import models
2315

2416

2517
NUM_WIDGET = '<div class="numwidget"><span class="num">{num}</span><span class="text">{text}</span></div>' # noqa: E501
@@ -36,12 +28,12 @@ def signal_process_response(sender, request, response, **kwargs):
3628
'style-src': [
3729
"'sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU='",
3830
"'sha256-O+AX3tWIOimhuzg+lrMfltcdtWo7Mp2Y9qJUkE6ysWE='",
39-
"'sha256-loEB2lJVNc8mwYhvyJtb9aHD7kvSHU2kaRWkXHRpApY='", # walletconnect-web3-provider-1.8.0.js
4031
],
4132
'script-src': [
42-
"'sha256-G0alWBi3d/qUeACYUzGOmJ34+fZaiiZaP2XpCEg7UFA='", # web3modal-HOTFIX.js
43-
"'sha256-loEB2lJVNc8mwYhvyJtb9aHD7kvSHU2kaRWkXHRpApY='", # walletconnect-web3-provider-1.8.0.js
44-
"'sha256-sqlmDxtDyZOFztnt94HoSfNbtRvmgNuCqYTRVVH6X3k='", # web3.min-1.7.5.js
33+
# web3modal-HOTFIX.js
34+
"'sha256-G0alWBi3d/qUeACYUzGOmJ34+fZaiiZaP2XpCEg7UFA='",
35+
# web3.min-1.7.5.js
36+
"'sha256-sqlmDxtDyZOFztnt94HoSfNbtRvmgNuCqYTRVVH6X3k='",
4537
],
4638
# Chrome correctly errors out without this CSP
4739
'connect-src': [

pretix_eth/utils.py

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,9 @@
88

99

1010
def get_message_to_sign(
11-
sender_address: str,
12-
receiver_address: str,
13-
chain_id: int,
11+
sender_address: str, receiver_address: str, chain_id: int,
1412
order_code: str
15-
):
16-
13+
):
1714
message_structured = {
1815
"domain": {
1916
"chainId": chain_id,
@@ -49,17 +46,12 @@ def get_message_to_sign(
4946

5047

5148
def get_rpc_url_for_network(payment_provider, network_id):
52-
rpc_urls = json.loads(
53-
payment_provider.settings.NETWORK_RPC_URL
54-
)
55-
56-
expected_network_rpc_url_key = f"{network_id}_RPC_URL"
49+
rpc_urls = json.loads(payment_provider.settings.NETWORK_RPC_URL)
5750

58-
if expected_network_rpc_url_key in rpc_urls:
59-
return rpc_urls[expected_network_rpc_url_key]
60-
else:
61-
logger.warning(
62-
f"No RPC URL configured for {network_id}. Skipping..."
63-
)
64-
return None
51+
expected_network_rpc_url_key = f"{network_id}_RPC_URL"
6552

53+
if expected_network_rpc_url_key in rpc_urls:
54+
return rpc_urls[expected_network_rpc_url_key]
55+
else:
56+
logger.warning(f"No RPC URL configured for {network_id}. Skipping...")
57+
return None

0 commit comments

Comments
 (0)