Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
phemmylintry committed Jul 12, 2020
1 parent fa7ee67 commit ff26e7d
Show file tree
Hide file tree
Showing 14 changed files with 39 additions and 41 deletions.
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
## A Dockerized Micro-service for sending Email Notifications by Team-Fierce

![alt text](https://res.cloudinary.com/echefulouis/image/upload/v1591716347/Capture_p1txz0.png)

# Description:
This is an Email micro-service that sends emails using Swagger UI template and an API. It was built to avoid development teams having to configure mail over and over on projects involving a micro-services infrastructure.

Expand Down
Binary file modified api/__pycache__/serializers.cpython-38.pyc
Binary file not shown.
1 change: 0 additions & 1 deletion api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
from django.contrib.auth.models import User

class MailSerializer(serializers.Serializer):
name = serializers.CharField()
recipient = serializers.EmailField()
sender = serializers.EmailField()
subject = serializers.CharField()
Expand Down
4 changes: 2 additions & 2 deletions newsletter/serializers.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
from rest_framework import serializers
from .models import Newsletter

class NewsletterSerializers(serializers.ModelSerializer):
class NewsletterSerializer(serializers.ModelSerializer):
class Meta:
model = Newsletter
fields = ('subject', 'body', 'from_email', 'to_email')


class CustomSerializers(serializers.ModelSerializer):
class CustomSerializer(serializers.ModelSerializer):
class Meta:
model = Newsletter
fields = ('subject', 'from_email', 'to_email')
22 changes: 11 additions & 11 deletions newsletter/tasks.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
from celery import shared_task
from django.shortcuts import render
from sendgrid import SendGridAPIClient
from send_email_microservice.settings import SENDGRID_API_KEY
from sendgrid.helpers.mail import *
from time import sleep
from django.core.mail import send_mail


@shared_task
def send_email():
sleep(10)
send_mail(subject, body, from_email, [to_email])
return send_mail
@shared_task()
def send_mail(sender, recipient, subject, content):

@shared_task
def send_custom_mail():
sleep(10)
message = EmailMultiAlternatives(subject, newsletter_mail, from_email, [to_email])
return message
sg = SendGridAPIClient(api_key=SENDGRID_API_KEY)

mail = Mail(sender, recipient, subject, content)

send = sg.send(mail)

return send
6 changes: 3 additions & 3 deletions newsletter/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@


urlpatterns = [
# path('newsletter_all/', views.DisplayAll.as_view(), name='DisplayAll'),
# path('create_newsletter/', views.SendNewsletter.as_view(), name='SendEmail'),
# path('custom_newsletter/', views.SendCustomMail.as_view(), name='SendCustomMail'),
path('newsletter_all/', views.DisplayAll.as_view(), name='DisplayAll'),
path('create_newsletter/', views.SendNewsletter.as_view(), name='SendEmail'),
path('custom_newsletter/', views.SendCustomMail.as_view(), name='SendCustomMail'),
]
32 changes: 16 additions & 16 deletions newsletter/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
from rest_framework.views import APIView
from rest_framework.response import Response
from .models import Newsletter
from .tasks import send_email, send_custom_mail
from .serializers import NewsletterSerializers, CustomSerializers
from .tasks import send_mail
from .serializers import NewsletterSerializer, CustomSerializer


MAIL_RESPONSES = {
Expand All @@ -23,32 +23,32 @@ class DisplayAll(APIView):
"""Displays all the newsletters in the database"""
def get(self, request):
newsletters = Newsletter.objects.all()
serializer = NewsletterSerializers(newsletters, many=True)
serializer = NewsletterSerializer(newsletters, many=True)
return Response(serializer.data)



class SendNewsletter(APIView):
"""Creates a newsletter"""
@swagger_auto_schema(
request_body=NewsletterSerializers,
request_body=NewsletterSerializer,
operation_description="Sends a newsletter.",
responses=MAIL_RESPONSES,
tags=['Send Newsletter']
)

def post(self, request):
newsletter = Newsletter.objects.create(subject=request.data['subject'],
body=request.data['body'],
from_email=settings.EMAIL_HOST_USER,
to_email=request.data['to_email'])
serializer = NewsletterSerializers(data=request.data)
serializer = NewsletterSerializer(data=request.data)
if serializer.is_valid():
subject = serializer.validated_data.get('subject')
body = serializer.validated_data.get('body')
from_email = settings.EMAIL_HOST_USER
to_email = serializer.validated_data.get('to_email')
message = send_email.delay(subject, body, from_email, [to_email])
validated_data = serializer.validated_data

subject = validated_data['subject']
content = validated_data['body']
sender = validated_data['from_email']
recipient = validated_data['to_email']

send_mail(sender, recipient, subject, content)

return Response({'status': 'success',
'data': {'message': 'Mail Sent Successfully'}},
status=status.HTTP_200_OK)
Expand All @@ -62,12 +62,12 @@ def post(self, request):
class SendCustomMail(APIView):
"""Sends custom(Predefined) Newsletters"""
@swagger_auto_schema(
request_body=NewsletterSerializers,
request_body=NewsletterSerializer,
operation_description="Sends predefined templates.",
responses=MAIL_RESPONSES
)
def post(self, request):
serializer = CustomSerializers(data=request.data)
serializer = CustomSerializer(data=request.data)
if serializer.is_valid():
subject = serializer.validated_data.get('subject')
from_email = settings.EMAIL_HOST_USER
Expand Down
2 changes: 2 additions & 0 deletions registration/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ def send_mail(sender, recipient, subject, content):

mail = Mail(sender, recipient, subject, content)

# mail.reply_to = ReplyTo(reply_to)

send = sg.send(mail)

return send
2 changes: 1 addition & 1 deletion send_certificate/serializers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from rest_framework import serializers

class SendCertificatSerializer(serializers.Serializer):
class SendCertificateSerializer(serializers.Serializer):
recipient = serializers.EmailField()
participant_name = serializers.CharField()
certificate_link = serializers.CharField()
Expand Down
6 changes: 3 additions & 3 deletions send_certificate/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from rest_framework.decorators import api_view
from drf_yasg.utils import swagger_auto_schema
from sendgrid.helpers.mail import *
from .serializers import SendCertificatSerializer
from .serializers import SendCertificateSerializer
from django.template.loader import get_template
from .tasks import send_mail
from rest_framework import mixins
Expand All @@ -22,15 +22,15 @@

class SendCertificateLink(APIView):
@swagger_auto_schema(
request_body=SendCertificatSerializer,
request_body=SendCertificateSerializer,
operation_summary="Predefined template to send out certificatee links to participants",
operation_description="Sends certificate links, it takes in parameters such as sender, recipient , body(which can be left empty), and the link to download the certificate",
responses=MAIL_RESPONSES,
tags=['Certificate Email']
)

def post(self, request, *args, **kwargs):
serializer= SendCertificatSerializer(data=request.data)
serializer= SendCertificateSerializer(data=request.data)
if serializer.is_valid():
validated_data = serializer.validated_data
context = {
Expand Down
Binary file modified send_email_microservice/__pycache__/settings.cpython-38.pyc
Binary file not shown.
Binary file modified send_email_microservice/__pycache__/urls.cpython-38.pyc
Binary file not shown.
2 changes: 1 addition & 1 deletion send_email_microservice/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
SECRET_KEY = '0#iz6gmldf!6jvht^n6ub#^%m=zd85e&xw7-q3l5enrkwn%@p3'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
DEBUG = False

ALLOWED_HOSTS = ['*', 'email-microdev.herokuapp.com']

Expand Down
1 change: 0 additions & 1 deletion send_email_microservice/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@
path('v1/', include('api.urls')),
path('v1/', include('awsmail.urls')),
path('v1/', include('aws_sns.urls')),
#path('v1/', include('password_reset.urls')),
path('v1/', include('registration.urls')),
path('v1/', include('confirmation.urls')),
path('v1/', include('invitation.urls')),
Expand Down

0 comments on commit ff26e7d

Please sign in to comment.