diff --git a/api_volontaria/apps/donation/admin.py b/api_volontaria/apps/donation/admin.py new file mode 100644 index 00000000..dd9dde09 --- /dev/null +++ b/api_volontaria/apps/donation/admin.py @@ -0,0 +1,11 @@ +from django.contrib import admin + +# Register your models here. +from .models import BankConnection +admin.site.register(BankConnection) + +from .models import StripeConnection +admin.site.register(StripeConnection) + +from .models import Donation +admin.site.register(Donation) diff --git a/api_volontaria/apps/donation/apps.py b/api_volontaria/apps/donation/apps.py new file mode 100644 index 00000000..f6211a75 --- /dev/null +++ b/api_volontaria/apps/donation/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class DonationConfig(AppConfig): + name = 'donation' \ No newline at end of file diff --git a/api_volontaria/apps/donation/models.py b/api_volontaria/apps/donation/models.py new file mode 100644 index 00000000..c9415c3b --- /dev/null +++ b/api_volontaria/apps/donation/models.py @@ -0,0 +1,85 @@ +from django.db import models +from api_volontaria import settings +#import stripe +##stripe.api_key =settings.STRIPE_API_KEY +from django.contrib.auth import get_user_model +#from datetime import datetime, timedelta +#from babel.dates import format_date +# # Create your models here. + +User = get_user_model() + +class BankConnection(models.Model): + """ + Name of the transaction. + """ + + class Meta: + verbose_name = ("Bankconnection") + + name = models.CharField(max_length=30) + + def __str__(self): + return self.name + + +class StripeConnection(BankConnection): + """ + Details of the credit card. + """ +## stripe.api_key =settings.STRIPE_API_KEY + + class Meta: + verbose_name = ("Stripeconnection") + + # public_key=models.TextField( + # default=None, + # blank=True, + # null=True, + # ) + # private_key=models.TextField( + # default=None, + # blank=True, + # null=True, + # ) + public_key='pk_test_51HRPCFEmFI9ybcIhusAAdKJEABBRczFyrffAL8Em8OmfZh8EFagYgy3tMyBmwCIq3851bmnKgPkaLp6gNt9aQ05M00lJ6na6sa' + private_key=settings.STRIPE_API_KEY + +class Donation(models.Model): + """ + Information about the user. + """ + class Meta: + verbose_name = ("Donation") + + email=models.CharField( + max_length=30, + default=None, + blank=True, + null=True, + ) + user = models.ForeignKey( + User, blank=True, + null=True, + on_delete=models.CASCADE, + ) + amount=models.IntegerField( + default=None, + blank=True, + null=True, + ) + message=models.TextField( + max_length=120, + default=None, + blank=True, + null=True, + ) + created_at=models.DateTimeField( + verbose_name=("Created at"), + auto_now_add=True, + blank=True, + null=True, + ) + + def __str__(self): + return self.user \ No newline at end of file diff --git a/api_volontaria/apps/donation/serializers.py b/api_volontaria/apps/donation/serializers.py new file mode 100644 index 00000000..fedd266c --- /dev/null +++ b/api_volontaria/apps/donation/serializers.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Oct 19 16:46:05 2020 + +@author: Nathalie +""" +import stripe +from rest_framework import serializers +from api_volontaria.apps.donation.models import ( + BankConnection, + StripeConnection, + Donation, +) + +class BankConnectionSerializer(serializers.Serializer): + id = serializers.IntegerField(read_only=True) + + class Meta: + model = BankConnection + fields = '__all__' + +class StripeConnectionSerializer(serializers.Serializer): + id = serializers.IntegerField(read_only=True) + + class Meta: + model = StripeConnection + fields = '__all__' + +class DonationSerializer(serializers.Serializer): +## id = serializers.IntegerField(read_only=True) + + def __init__(self, number, exp_month, exp_year, cvc): + self.number=number + self.exp_month=exp_month + self.exp_year=exp_year + self.cvc=cvc + + def get_number(self): + return self.number + def get_exp_month(self): + return self.exp_month + def get_exp_year(self): + return self.exp_year + def get_cvc(self): + return self.cvc + + created_token=stripe.Token.create( + card={ + "number":get_number(), + "exp_month":get_exp_month(), + "exp_year":get_exp_year(), + "cvc":get_cvc(),}, + ) + + id = serializers.IntegerField(read_only=True) + + class Meta: + model = Donation + fields = [ + 'email', + 'user', + 'amount', + 'message', + 'created_at', + 'created_token' + ] \ No newline at end of file diff --git a/api_volontaria/apps/donation/urls.py b/api_volontaria/apps/donation/urls.py new file mode 100644 index 00000000..5d7cd8a1 --- /dev/null +++ b/api_volontaria/apps/donation/urls.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Nov 11 16:24:41 2020 + +@author: Nathalie +""" +from django.contrib import admin +from django.urls import include, path + +urlpatterns = [ + path('donation/', include('donation.urls')), + path('admin/', admin.site.urls), + ] + diff --git a/api_volontaria/apps/donation/views.py b/api_volontaria/apps/donation/views.py new file mode 100644 index 00000000..c6a30799 --- /dev/null +++ b/api_volontaria/apps/donation/views.py @@ -0,0 +1,39 @@ +from django.shortcuts import render +from django.contrib.auth import get_user_model +from django_filters.rest_framework import DjangoFilterBackend +from dry_rest_permissions.generics import DRYPermissions, \ + DRYPermissionFiltersBase +from rest_framework import viewsets + +from api_volontaria.apps.donation.models import ( + BankConnection, + StripeConnection, + Donation, +) +from api_volontaria.apps.donation.serializers import ( + BankConnectionSerializer, + StripeConnectionSerializer, + DonationSerializer, +) +# Create your views here. + +class BankConnectionViewSet(viewsets.ModelViewSet): + + queryset = BankConnection.objects.all() + serializer_class = BankConnectionSerializer + filter_fields = '__all__' +## permission_classes = (DRYPermissions,) + +class StripeConnectionViewSet(viewsets.ModelViewSet): + + queryset = StripeConnection.objects.all() + serializer_class = StripeConnectionSerializer + filter_fields = '__all__' +## permission_classes = (DRYPermissions,) + +class DonationViewSet(viewsets.ModelViewSet): + + queryset = Donation.objects.all() + serializer_class = DonationSerializer + filter_fields = '__all__' +## permission_classes = (DRYPermissions,) \ No newline at end of file diff --git a/api_volontaria/projectdonation.py b/api_volontaria/projectdonation.py new file mode 100644 index 00000000..582918f5 --- /dev/null +++ b/api_volontaria/projectdonation.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +""" +Spyder Editor + +This is a temporary script file. +""" + +# Set your secret key. Remember to switch to your live secret key in production! +# See your keys here: https://dashboard.stripe.com/account/apikeys +import stripe +stripe.api_key = '' +##import factory +##src="https://js.stripe.com/v3/" +from django.db import models +from django.contrib.auth import get_user_model +# from api_volontaria import settings +# stripe.api_key =settings.STRIPE_API_KEY + + +class BankConnection(object): +## +# Comments here +## + name = models.CharField(max_length=30) + + # def __str__(self): + # return self.name + +class StripeConnection(BankConnection): +## +# Comments here +## + number=input('Card number:') + exp_month=int(input('Expiration month:')) + exp_year=int(input('Expiration year:')) + cvc= int(input('Card security code:')) + stripe.Token.create( + card={"number": number,"exp_month": exp_month,"exp_year": exp_year,"cvc": cvc,},) + + source=stripe.Token.retrieve["id"] + amount=int(input('Amount')) + currency=input('Currency') + description=input('Description') + + stripe.Charge.create(amount, currency,source, description,) + +class Donation(object): +## +# Comments here +## + email=models.CharField(max_length=30) + User=get_user_model() + user = models.ForeignKey(User, models.SET_NULL, blank=True, null=True,) + amount=models.IntegerField(max_length=6) + message=models.TextField(max_length=120) + created_at= models.DatetimeField