# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
-from datetime import timedelta
-
+from datetime import date, datetime, timedelta
+from decimal import Decimal
import paypalrestsdk
-import pytz
from django.contrib.sites.models import Site
from django.urls import reverse
from django.utils import timezone
plan_id = create_plan(amount)
else:
plan_id = plan.plan_id
- start = (timezone.now() + timedelta(0, 3600*24)).astimezone(pytz.utc).strftime('%Y-%m-%dT%H:%M:%SZ')
+ start = (timezone.now() + timedelta(0, 3600*24)).astimezone(timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')
billing_agreement = paypalrestsdk.BillingAgreement({
"name": "Subskrypcja klubu WL",
"description": "Stałe wsparcie Wolnych Lektur kwotą %s złotych" % amount,
billing_agreement['override_merchant_preferences'] = {
'return_url': absolute_url('paypal_return', {'key': key}),
}
-
+
response = billing_agreement.create()
if response:
return a.state == 'Active'
-def user_is_subscribed(user):
- agreements = BillingAgreement.objects.filter(user=user)
- return any(agreement.check_agreement() for agreement in agreements)
-
-
def execute_agreement(token):
return paypalrestsdk.BillingAgreement.execute(token)
+
+
+def get_donations(agreement_id, year):
+ a = get_agreement(agreement_id)
+ transactions = []
+ for transaction in a.search_transactions(
+ date(year - 1, 12, 31),
+ date(year + 1, 1, 1))['agreement_transaction_list']:
+ if transaction['status'] != 'Completed':
+ continue
+ dt = datetime.strptime(
+ transaction['time_stamp'],
+ '%Y-%m-%dT%H:%M:%S%z'
+ ).astimezone()
+ if dt.year != year:
+ continue
+ assert transaction['amount']['currency'] == 'PLN'
+ transactions.append({
+ 'timestamp': dt,
+ 'amount': Decimal(transaction['amount']['value'])
+ })
+ return transactions