diff --git a/core/views.py b/core/views.py index 8f10f3b..3f28452 100644 --- a/core/views.py +++ b/core/views.py @@ -2,7 +2,10 @@ from rest_framework.reverse import reverse from rest_framework.decorators import api_view from rest_framework.pagination import PageNumberPagination - +from django.core.mail import send_mail +from django.conf import settings +from datetime import datetime +from django.http import HttpResponse class Pagination(PageNumberPagination): @@ -14,6 +17,19 @@ def get_page_size(self, request): return self.max_page_size return super().get_page_size(request) +# Permit to send feedback emails from users +@api_view(['POST']) +def feedback(request, format=None): + data = request.data + if len(data['message']) < 2: + return HttpResponse(status=500) + + subject = "[WOOLLY][FeedBack] - " + data['reason'] + " - " + data['sender']['name'] + message = 'Utilisateur : ' + data['sender']['name'] + '\n' + 'ID : ' + data['sender']['id'] + '\n' + 'Email : ' + data['sender']['email'] + '\n' + 'Date : ' + datetime.now().strftime("%d/%m/%Y, %H:%M:%S") + '\n' + 'Raison : ' + data['reason'] + '\n \n' + 'Message :' + '\n' + data['message'] + message = message + '\n\nCe message a été généré automatiquement, merci de ne pas y répondre' + email_from = settings.EMAIL_HOST_USER + send_mail(subject, message, email_from, settings.FEEDBACK_EMAILS ) + return Response(data) @api_view(['GET']) def api_root(request, format=None): @@ -45,6 +61,8 @@ def api_root(request, format=None): 'orderlinefields': reverse('orderlinefields-list', **kwargs), 'orderlineitems': reverse('orderlineitems-list', **kwargs), + # TODO PaymentMethods # 'paymentmethods': reverse('paymentmethods-list', **kwargs), + }) diff --git a/example.env b/example.env index 991804f..99151da 100644 --- a/example.env +++ b/example.env @@ -15,3 +15,8 @@ PORTAL_CALLBACK= DATABASE_URL=postgresql://woolly:passwd@localhost:5432/woolly EMAIL_URL=stmp://user@domain@localhost:25?ssl=False + +FEEDBACK_EMAILS=toto@orange.fr + +EMAIL_HOST_PASSWORD= +EMAIL_HOST_USER=example@gmail.com diff --git a/woolly_api/settings.py b/woolly_api/settings.py index 2628b17..12dfd38 100644 --- a/woolly_api/settings.py +++ b/woolly_api/settings.py @@ -36,6 +36,7 @@ def make_path(rel: str) -> str: # Services Configuration # -------------------------------------------------------------------------- + # PayUTC Payment services PAYUTC = { 'app_key': env.str("PAYUTC_APP_KEY"), @@ -65,13 +66,20 @@ def make_path(rel: str) -> str: } # Email server -email = env.dj_email_url("EMAIL_URL") -EMAIL_HOST = email["EMAIL_HOST"] -EMAIL_PORT = email["EMAIL_PORT"] -EMAIL_HOST_USER = email["EMAIL_HOST_USER"] -EMAIL_HOST_PASSWORD = email["EMAIL_HOST_PASSWORD"] -EMAIL_USE_SSL = email["EMAIL_USE_SSL"] -EMAIL_USE_TLS = email["EMAIL_USE_TLS"] +# email = env.dj_email_url("EMAIL_URL") +# EMAIL_HOST = email["EMAIL_HOST"] +# EMAIL_PORT = email["EMAIL_PORT"] +# EMAIL_HOST_USER = email["EMAIL_HOST_USER"] +# EMAIL_HOST_PASSWORD = email["EMAIL_HOST_PASSWORD"] +# EMAIL_USE_SSL = email["EMAIL_USE_SSL"] +# EMAIL_USE_TLS = email["EMAIL_USE_TLS"] +EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' +EMAIL_HOST = 'smtp.gmail.com' +EMAIL_USE_TLS = True +EMAIL_PORT = 587 +EMAIL_HOST_USER = env.str("EMAIL_HOST_USER") +EMAIL_HOST_PASSWORD = env.str("EMAIL_HOST_PASSWORD") +FEEDBACK_EMAILS = env.list("FEEDBACK_EMAILS") # -------------------------------------------------------------------------- # Debug & Security diff --git a/woolly_api/urls.py b/woolly_api/urls.py index bba3dd2..c346cc2 100644 --- a/woolly_api/urls.py +++ b/woolly_api/urls.py @@ -1,7 +1,7 @@ from django.conf.urls import url, include from django.contrib import admin -from core.views import api_root +from core.views import api_root, feedback urlpatterns = [ url(r'^$', api_root, name='root'), # Api Root pour la documentation @@ -9,4 +9,6 @@ url(r'^', include('authentication.urls')), # Routes d'authentification url(r'^', include('sales.urls')), # Routes pour les ventes url(r'^', include('payment.urls')), # Routes pour les paiements + url(r'^feedback/?$', feedback, name='feedback'), + ]