diff --git a/homeapp/__pycache__/forms.cpython-310.pyc b/homeapp/__pycache__/forms.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a4459ab3cafe0f54f85737ce51465a4f02cef8db Binary files /dev/null and b/homeapp/__pycache__/forms.cpython-310.pyc differ diff --git a/homeapp/__pycache__/urls.cpython-310.pyc b/homeapp/__pycache__/urls.cpython-310.pyc index 606e92d552dcb1f98e612606376d0426ed5f93c7..3e67c69df2fe21e6edbad0b535a118df5c77d7c9 100644 Binary files a/homeapp/__pycache__/urls.cpython-310.pyc and b/homeapp/__pycache__/urls.cpython-310.pyc differ diff --git a/homeapp/__pycache__/views.cpython-310.pyc b/homeapp/__pycache__/views.cpython-310.pyc index ea8f64c53fe630f0f22bd091c1d53eaed6656f07..e0f78d5e1df0c574f5d2faf4a2b47805cd2143db 100644 Binary files a/homeapp/__pycache__/views.cpython-310.pyc and b/homeapp/__pycache__/views.cpython-310.pyc differ diff --git a/homeapp/forms.py b/homeapp/forms.py new file mode 100644 index 0000000000000000000000000000000000000000..5c33f15b97a0a53807eec9f6df350d7033c21d89 --- /dev/null +++ b/homeapp/forms.py @@ -0,0 +1,8 @@ +from django import forms + +class ContactForm(forms.Form): + name = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': 'formfield'})) + email = forms.EmailField(required=True, widget=forms.TextInput(attrs={'class': 'formfield'})) + subject = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': 'formfield'})) + + message = forms.CharField(widget=forms.Textarea(attrs={'class': 'formfield'}), required=True) diff --git a/homeapp/templates/homeapp/contact.html b/homeapp/templates/homeapp/contact.html new file mode 100644 index 0000000000000000000000000000000000000000..40272c5127e435a286839c5f4a55d00ddce74056 --- /dev/null +++ b/homeapp/templates/homeapp/contact.html @@ -0,0 +1,18 @@ +{% extends "base.html" %} + +{% block title %} + <title>Music Contact</title> +{% endblock title%} + +{% block content %} +<h1 style="text-align: center;">Contact Us</h1><br><br> + +<form method="post", class="myborder"> + {% csrf_token %} + {{ form.as_p }} + <div class="form-actions"> + <button type="submit" class="contactbutton">Send</button> + </div> +</form> + +{% endblock content %} \ No newline at end of file diff --git a/homeapp/urls.py b/homeapp/urls.py index 0d4ddcf879a0cef265bd48eca63ebb399a93e3fa..b8c648c5c42fddb1ed4f13972f0ed4120c6b83e2 100644 --- a/homeapp/urls.py +++ b/homeapp/urls.py @@ -3,4 +3,5 @@ from . import views urlpatterns = [ path('', views.home, name='home'), + path('contact', views.contact, name='contact'), ] \ No newline at end of file diff --git a/homeapp/views.py b/homeapp/views.py index 0d89966ebbe2a90a34e82adf87fcfe311f1dd412..ab9c2e5448261cade9069c072b17f77e5d6e2cee 100644 --- a/homeapp/views.py +++ b/homeapp/views.py @@ -1,5 +1,34 @@ -from django.shortcuts import render +from django.core.mail import send_mail, BadHeaderError +from django.http import HttpResponse, HttpResponseRedirect +from django.shortcuts import render, redirect +from django.urls import reverse +from .forms import ContactForm +from django.contrib import messages + def home(request): context = {} - return render(request, 'homeapp/home.html', context) \ No newline at end of file + return render(request, 'homeapp/home.html', context) + +def contact(request): + if request.method == "GET": + form = ContactForm() + else: + form = ContactForm(request.POST) + if form.is_valid(): + name = form.cleaned_data['name'] + subject = form.cleaned_data['subject'] + email = form.cleaned_data['email'] + message = name + ':\n' + form.cleaned_data['message'] + try: + send_mail(subject, message, email, ['myemail@mydomain.com']) + except BadHeaderError: + messages.add_message(request, messages.ERROR, 'Message Not Sent') + return HttpResponse("Invalid header found.") + + messages.add_message(request, messages.SUCCESS, 'Message Sent') + return redirect(reverse('home')) + else: + messages.add_message(request, messages.ERROR, 'Invalid Form Data; Message Not Sent') + + return render(request, 'homeapp/contact.html', {"form": form}) \ No newline at end of file diff --git a/music/__pycache__/settings.cpython-310.pyc b/music/__pycache__/settings.cpython-310.pyc index ba468e10c0ac50ae5816ee96e61e5e0eb6fd67a9..062d0d2223d90fab4da6e275e56d3ae13b2f7ee9 100644 Binary files a/music/__pycache__/settings.cpython-310.pyc and b/music/__pycache__/settings.cpython-310.pyc differ diff --git a/music/__pycache__/urls.cpython-310.pyc b/music/__pycache__/urls.cpython-310.pyc index b68ac0b78102b59cbcded475b1c58673e2fe3c29..f7dd1fd04f927c2198835a23a015e0459b710543 100644 Binary files a/music/__pycache__/urls.cpython-310.pyc and b/music/__pycache__/urls.cpython-310.pyc differ diff --git a/music/settings.py b/music/settings.py index b0a970b1dd759e3fba9c5876dbcf2af4cf08328e..554167da5f0f5875c3733afcf3d76f5eba7bfc79 100644 --- a/music/settings.py +++ b/music/settings.py @@ -131,4 +131,7 @@ STATICFILES_FINDERS = [ 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'sass_processor.finders.CssFinder', -] \ No newline at end of file +] + +DEFAULT_FROM_EMAIL = "lb01545@surrey.ac.uk" +EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" \ No newline at end of file diff --git a/music/urls.py b/music/urls.py index d03237d69c81a1ad5ae80bab58abf7a3882ab25b..67257d16347ececb23cb53e7033f47063a797365 100644 --- a/music/urls.py +++ b/music/urls.py @@ -17,6 +17,6 @@ from django.contrib import admin from django.urls import path, include urlpatterns = [ - path('home/', include('homeapp.urls')), path('admin/', admin.site.urls), + path('', include('homeapp.urls')), ] diff --git a/static/css/base.css b/static/css/base.css index 4324552c516196e09a771861b159604c7ba76fe5..bdbf88c2e5db54b11c5b1fff31ade15fd5b9c046 100644 --- a/static/css/base.css +++ b/static/css/base.css @@ -11,4 +11,38 @@ h1 { p { color: white; } +.formfield { + display: block; } + +.success { + background-color: #00FF00; } + +.error, .errorlist { + background-color: #FF0000; } + +.myborder { + width: 500px; + margin: 0 auto; + padding: 20px; + border-style: solid; + border-radius: 10px; + border-color: #2c2c2c; + background: #2c2c2c; } + +.contactbutton { + color: #fff; + background-color: #1DB954; + border-color: #1DB954; + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; + width: 100%; + border: 1px solid transparent; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + +.contactbutton:hover { + background-color: #1db944af; + border-color: #1db944af; + border: 1px solid transparent; } + /*# sourceMappingURL=base.css.map */ \ No newline at end of file diff --git a/static/css/base.css.map b/static/css/base.css.map index c620a1eb950d4423d227e3644293e9ab7210470a..e97f6ebd1273111da0a9cc852f60ff4b44674ac3 100644 --- a/static/css/base.css.map +++ b/static/css/base.css.map @@ -5,5 +5,5 @@ "base.scss" ], "names": [], - "mappings": "AAEA,AAAA,IAAI,CAAC;EACJ,WAAW,EAHL,eAAe,EAAE,SAAS;EAIhC,gBAAgB,EAHT,OAAO;EAId,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI,GACb;;AACD,AAAA,EAAE,CAAC;EACF,cAAc,EAAE,SAAS;EACzB,KAAK,EAAE,KAAK,GACZ;;AACD,AAAA,CAAC,CAAC;EACE,KAAK,EAAE,KAAK,GACf" + "mappings": "AAGA,AAAA,IAAI,CAAC;EACJ,WAAW,EAJL,eAAe,EAAE,SAAS;EAKhC,gBAAgB,EAJT,OAAO;EAKd,MAAM,EAAE,IAAI;EACZ,OAAO,EAAE,IAAI,GACb;;AAED,AAAA,EAAE,CAAC;EACF,cAAc,EAAE,SAAS;EACzB,KAAK,EAAE,KAAK,GACZ;;AAED,AAAA,CAAC,CAAC;EACE,KAAK,EAAE,KAAK,GACf;;AAED,AAAA,UAAU,CAAC;EACP,OAAO,EAAE,KAAK,GACjB;;AAED,AAAA,QAAQ,CAAA;EACJ,gBAAgB,EAAE,OACtB,GAAC;;AAED,AAAA,MAAM,EAAE,UAAU,CAAA;EACd,gBAAgB,EAAE,OACtB,GAAC;;AAED,AAAA,SAAS,CAAA;EACL,KAAK,EAAC,KAAK;EACX,MAAM,EAAC,MAAM;EACb,OAAO,EAAE,IAAI;EACb,YAAY,EAAC,KAAK;EAClB,aAAa,EAAE,IAAI;EACnB,YAAY,EAAC,OAAO;EACpB,UAAU,EAAE,OAAO,GACtB;;AAED,AAAA,cAAc,CAAC;EACX,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;EACzB,YAAY,EAAE,OAAO;EACrB,OAAO,EAAE,WAAW;EACpB,SAAS,EAAE,OAAO;EAClB,aAAa,EAAE,MAAM;EACrB,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,qBAAqB;EAC7B,UAAU,EAAE,yHAAyH,GACxI;;AAED,AAAA,cAAc,CAAC,KAAK,CAAC;EACjB,gBAAgB,EAAE,SAAS;EAC3B,YAAY,EAAE,SAAS;EACvB,MAAM,EAAE,qBAAqB,GAChC" } \ No newline at end of file diff --git a/static/css/base.scss b/static/css/base.scss index 02b831268457dea9c76e722a556e12c19551b35a..d31f4d51ec06c74f3fbe9ab5e3c6f9c17a724c67 100644 --- a/static/css/base.scss +++ b/static/css/base.scss @@ -1,15 +1,58 @@ $font: 'Lucida Grande', monospace; $color: #191414; + body { font-family: $font; background-color: $color; margin: 10px; padding: 10px; } + h1 { text-transform: uppercase; color: white; } + p { color: white; +} + +.formfield { + display: block; +} + +.success{ + background-color: #00FF00 +} + +.error, .errorlist{ + background-color: #FF0000 +} + +.myborder{ + width:500px; + margin:0 auto; + padding: 20px; + border-style:solid; + border-radius: 10px; + border-color:#2c2c2c; + background: #2c2c2c; +} + +.contactbutton { + color: #fff; + background-color: #1DB954; + border-color: #1DB954; + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; + width: 100%; + border: 1px solid transparent; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +.contactbutton:hover { + background-color: #1db944af; + border-color: #1db944af; + border: 1px solid transparent; } \ No newline at end of file