diff --git a/.gitignore b/.gitignore index 957780d..c47b80b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ staticfiles python-env .DS_Store data/db +.vscode \ No newline at end of file diff --git a/account_settings/__init__.py b/account_settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/account_settings/admin.py b/account_settings/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/account_settings/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/account_settings/apps.py b/account_settings/apps.py new file mode 100644 index 0000000..f6584b2 --- /dev/null +++ b/account_settings/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class EmailsConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'contact_emails' diff --git a/account_settings/migrations/__init__.py b/account_settings/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/account_settings/models.py b/account_settings/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/account_settings/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/account_settings/templates/emails/contact.html b/account_settings/templates/emails/contact.html new file mode 100644 index 0000000..0590314 --- /dev/null +++ b/account_settings/templates/emails/contact.html @@ -0,0 +1,6 @@ + + + +

Message

+ + \ No newline at end of file diff --git a/account_settings/test_views.py b/account_settings/test_views.py new file mode 100644 index 0000000..21e959d --- /dev/null +++ b/account_settings/test_views.py @@ -0,0 +1,33 @@ +import json + +from django.core import mail +from django.test import Client, TestCase +from rest_framework import status + + +class ContactEmailsTest(TestCase): + def test_post_index_request_success(self): + client = Client() + response = client.post( + '/api/v1/contact_emails', + json.dumps({ + 'email': 'user@example.com', + 'message': 'That\'s your message body', + 'name': 'Example Username', + 'reference': 'Example reference text', + 'topicType': 'Example topic type', + }), + content_type='application/json', + ) + data = response.json() + email_body = mail.outbox[0].body + email_subject = mail.outbox[0].subject + self.assertEqual(response.status_code, status.HTTP_201_CREATED) + self.assertEqual(len(mail.outbox), 1) + self.assertEqual('Contact Form Submission', email_subject) + self.assertIn('email: user@example.com', email_body) + self.assertIn('message: That\'s your message body', email_body) + self.assertIn('reference: Example reference text', email_body) + self.assertIn('topic: Example topic type', email_body) + + diff --git a/account_settings/urls.py b/account_settings/urls.py new file mode 100644 index 0000000..c755ae2 --- /dev/null +++ b/account_settings/urls.py @@ -0,0 +1,6 @@ +from django.urls import path +from . import views + +urlpatterns = [ + path('delete_user_account', views.delete_user, name='email'), +] \ No newline at end of file diff --git a/account_settings/views.py b/account_settings/views.py new file mode 100644 index 0000000..aec77ff --- /dev/null +++ b/account_settings/views.py @@ -0,0 +1,30 @@ +import os +import json +from django.contrib.auth import get_user_model +from django.conf import settings +from django.shortcuts import render +from django.http import HttpResponse +from django.core.mail import send_mail +from rest_framework.decorators import api_view +from rest_framework import status +from rest_framework.response import Response + + +@api_view(['DELETE']) + +def delete_user(request, email): + """ + API endpoint for deleting user account + """ +# User = get_user_model() + user = User.objects.get(email=email) + if request.method == 'DELETE': + user.delete() + return JsonResponse({'message': 'User deleted successfully.'}, status=204) + else: + return HttpResponse(status=405) + +# return Response({'status': 'Success'}, status=status.HTTP_201_CREATED) +#does this need to be organized as a class? class UserViewSet(viewsets.ModelViewSet): + +