Coverage for polar/transaction/schemas.py: 100%

16 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 12:42 +0000

1from pydantic import UUID4 

2 

3from polar.enums import SubscriptionRecurringInterval 

4from polar.kit.schemas import IDSchema, Schema, TimestampedSchema 

5from polar.models.pledge import PledgeState 

6from polar.models.transaction import PlatformFeeType, Processor, TransactionType 

7 

8 

9class TransactionUser(IDSchema, Schema): 

10 public_name: str 

11 avatar_url: str 

12 

13 

14class TransactionPledge(IDSchema, TimestampedSchema): 

15 state: PledgeState 

16 issue_reference: str 

17 

18 

19class TransactionOrganization(IDSchema, TimestampedSchema): 

20 name: str 

21 slug: str 

22 avatar_url: str | None 

23 

24 

25class TransactionIssueReward(IDSchema, TimestampedSchema): 

26 issue_reference: str 

27 share_thousands: int 

28 

29 

30class TransactionProduct(IDSchema, TimestampedSchema): 

31 name: str 

32 recurring_interval: SubscriptionRecurringInterval | None 

33 organization_id: UUID4 | None 

34 organization: TransactionOrganization | None 

35 

36 

37class TransactionOrder(IDSchema, TimestampedSchema): 

38 product: TransactionProduct | None 

39 subscription_id: UUID4 | None 

40 

41 

42class TransactionEmbedded(IDSchema, TimestampedSchema): 

43 type: TransactionType 

44 processor: Processor | None 

45 

46 currency: str 

47 amount: int 

48 account_currency: str 

49 account_amount: int 

50 

51 platform_fee_type: PlatformFeeType | None 

52 

53 pledge_id: UUID4 | None 

54 issue_reward_id: UUID4 | None 

55 order_id: UUID4 | None 

56 

57 payout_transaction_id: UUID4 | None 

58 incurred_by_transaction_id: UUID4 | None 

59 

60 

61class Transaction(TransactionEmbedded): 

62 pledge: TransactionPledge | None 

63 issue_reward: TransactionIssueReward | None 

64 order: TransactionOrder | None 

65 

66 account_incurred_transactions: list[TransactionEmbedded] 

67 

68 incurred_amount: int 

69 gross_amount: int 

70 net_amount: int 

71 

72 

73class TransactionDetails(Transaction): 

74 paid_transactions: list[Transaction] 

75 

76 

77class TransactionsBalance(Schema): 

78 currency: str 

79 amount: int 

80 account_currency: str 

81 account_amount: int 

82 

83 

84class TransactionsSummary(Schema): 

85 balance: TransactionsBalance 

86 payout: TransactionsBalance