diff --git a/events/admin.py b/events/admin.py index 3b8cfed..5e1ebff 100644 --- a/events/admin.py +++ b/events/admin.py @@ -1,5 +1,9 @@ from django.contrib import admin -from .models import Event, EventParticipant + +from .models import Event +from .models import EventParticipant +from .models import RequestEvent admin.site.register(Event) admin.site.register(EventParticipant) +admin.site.register(RequestEvent) diff --git a/events/forms.py b/events/forms.py index 3d91c68..94e12d1 100644 --- a/events/forms.py +++ b/events/forms.py @@ -1,9 +1,23 @@ from django.forms import ModelForm + from .models import EventParticipant +from .models import RequestEvent class ParticipantForm(ModelForm): class Meta: model = EventParticipant - fields = ['title', 'student_name', - 'email_id', 'mobile_number', 'roll_no', 'branch'] + fields = [ + "title", + "student_name", + "email_id", + "mobile_number", + "roll_no", + "branch", + ] + + +class RequestEventForm(ModelForm): + class Meta: + model = RequestEvent + fields = ["title", "description", "your_name", "roll_no", "contact"] diff --git a/events/migrations/0008_requestevent.py b/events/migrations/0008_requestevent.py new file mode 100644 index 0000000..6f14b86 --- /dev/null +++ b/events/migrations/0008_requestevent.py @@ -0,0 +1,32 @@ +# Generated by Django 2.2.9 on 2020-08-07 07:54 +from django.db import migrations +from django.db import models + + +class Migration(migrations.Migration): + + dependencies = [ + ("events", "0007_auto_20190924_1641"), + ] + + operations = [ + migrations.CreateModel( + name="RequestEvent", + fields=[ + ( + "id", + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("title", models.CharField(max_length=50)), + ("description", models.TextField()), + ("your_name", models.CharField(max_length=50)), + ("roll_no", models.CharField(max_length=15)), + ("contact", models.CharField(max_length=10)), + ], + ), + ] diff --git a/events/models.py b/events/models.py index 7b1dbef..f808362 100644 --- a/events/models.py +++ b/events/models.py @@ -1,6 +1,6 @@ from django.db import models -from django.urls import reverse_lazy from django.shortcuts import redirect +from django.urls import reverse_lazy class TimeStampedModel(models.Model): @@ -8,6 +8,7 @@ class TimeStampedModel(models.Model): An abstract class model that provides self updating ``created`` and ``modified`` fields. """ + created_at = models.DateTimeField(auto_now_add=True) modified_at = models.DateTimeField(auto_now=True) @@ -15,7 +16,7 @@ class Meta: abstract = True -class Event(TimeStampedModel): +class Event(TimeStampedModel): title = models.CharField(max_length=200, blank=False) description = models.TextField() @@ -24,21 +25,21 @@ def __str__(self): class EventParticipant(TimeStampedModel): - ELECTRONICS = 'ECE' - COMPUTER_SCIENCE = 'CSE' - IT = 'IT' - ELECTRICAL = 'EN' - MECHANICAL = 'ME' - CIVIL = 'CE' - BIOTECH = 'BT' + ELECTRONICS = "ECE" + COMPUTER_SCIENCE = "CSE" + IT = "IT" + ELECTRICAL = "EN" + MECHANICAL = "ME" + CIVIL = "CE" + BIOTECH = "BT" BRANCH_CHOICES = [ - (ELECTRONICS, 'Electronics'), - (COMPUTER_SCIENCE, 'Computer Science'), - (IT, 'IT'), - (ELECTRICAL, 'Electrical'), - (MECHANICAL, 'Mechanical'), - (CIVIL, 'Civil'), - (BIOTECH, 'Biotech'), + (ELECTRONICS, "Electronics"), + (COMPUTER_SCIENCE, "Computer Science"), + (IT, "IT"), + (ELECTRICAL, "Electrical"), + (MECHANICAL, "Mechanical"), + (CIVIL, "Civil"), + (BIOTECH, "Biotech"), ] title = models.ForeignKey(Event, on_delete=models.CASCADE) student_name = models.CharField(max_length=50, blank=False) @@ -53,3 +54,14 @@ class EventParticipant(TimeStampedModel): def __str__(self): return self.student_name + + +class RequestEvent(models.Model): + title = models.CharField(max_length=50, blank=False) + description = models.TextField(blank=False) + your_name = models.CharField(max_length=50, blank=False) + roll_no = models.CharField(max_length=15, blank=False) + contact = models.CharField(max_length=10, blank=False) + + def __str__(self): + return self.title diff --git a/events/urls.py b/events/urls.py index 4586823..570d991 100644 --- a/events/urls.py +++ b/events/urls.py @@ -1,7 +1,11 @@ from django.urls import path -from .views import events, register + +from .views import events +from .views import register +from .views import request_event urlpatterns = [ - path('', events, name='tech_events'), - path('register/', register, name='register'), + path("", events, name="tech_events"), + path("register/", register, name="register"), + path("request_event/", request_event, name="request_event"), ] diff --git a/events/views.py b/events/views.py index 5abf9ed..db6ff9f 100644 --- a/events/views.py +++ b/events/views.py @@ -1,47 +1,85 @@ -from django.http import HttpResponse +import csv + from django.contrib import messages -from django.shortcuts import render, redirect +from django.http import HttpResponse +from django.shortcuts import redirect +from django.shortcuts import render from django.views.generic import ListView -from .models import Event, EventParticipant + from .forms import ParticipantForm -import csv +from .forms import RequestEventForm +from .models import Event +from .models import EventParticipant +from .models import RequestEvent def events(request): - events = Event.objects.all - return render(request, 'events.html', {'events': events}) + events = Event.objects.all() + return render(request, "events.html", {"events": events}) def register(request): - if request.method == 'POST': + if request.method == "POST": form = ParticipantForm(request.POST) if form.is_valid(): form.save() - name = form.cleaned_data.get('student_name') + name = form.cleaned_data.get("student_name") messages.success( - request, f'Thank you {name} for registering yourself, you will be contacted shortly') - return redirect('homepage') + request, + f"Thank you {name} for registering yourself, you will be contacted shortly", + ) + return redirect("homepage") else: form = ParticipantForm() - return render(request, 'event_register.html', {'form': form}) + return render(request, "event_register.html", {"form": form}) def export_to_csv(request): - if (request.method == 'POST'): - token = request.POST.get('token') - if token == 'codeTronics': - response = HttpResponse(content_type='text/csv') - response['Content-Disposition'] = 'attachment; filename=participants.csv' + if request.method == "POST": + token = request.POST.get("token") + if token == "codeTronics": + response = HttpResponse(content_type="text/csv") + response[ + "Content-Disposition"] = "attachment; filename=participants.csv" writer = csv.writer(response) - writer.writerow(['title', 'student_name', 'email_id', - 'mobile_number', 'roll_no', 'branch']) - participants = EventParticipant.objects.all().values_list('title__title', 'student_name', 'email_id', - 'mobile_number', 'roll_no', 'branch') + writer.writerow([ + "title", + "student_name", + "email_id", + "mobile_number", + "roll_no", + "branch", + ]) + participants = EventParticipant.objects.all().values_list( + "title__title", + "student_name", + "email_id", + "mobile_number", + "roll_no", + "branch", + ) for participant in participants: writer.writerow(participant) return response else: error = "Please Enter a Valid Token" - return render(request, 'download.html', {'error': error}) - return render(request, 'download.html') + return render(request, "download.html", {"error": error}) + return render(request, "download.html") + + +def request_event(request): + if request.method == "POST": + form = RequestEventForm(request.POST) + if form.is_valid(): + form.save() + your_name = form.cleaned_data.get("your_name") + title = form.cleaned_data.get("title") + messages.success( + request, + f"Thank you { your_name } for requesting to organise { title }, you will be contacted shortly!", + ) + return redirect("homepage") + else: + form = RequestEventForm() + return render(request, "event_register.html", {"form": form}) diff --git a/templates/event_register.html b/templates/event_register.html index 3a350cf..6df627c 100644 --- a/templates/event_register.html +++ b/templates/event_register.html @@ -8,7 +8,7 @@

-

Register

+

Request An Event

{% csrf_token %} {% bootstrap_form form %} {% buttons %} @@ -18,4 +18,4 @@ {{ form.media }} {% comment %}
{% endcomment %} -{% endblock content %} \ No newline at end of file +{% endblock content %} diff --git a/templates/events.html b/templates/events.html index 0b44134..11d9684 100644 --- a/templates/events.html +++ b/templates/events.html @@ -6,16 +6,27 @@

+ {% if events|length == 0 %} +
+
+

No Ongoing Events

+

Please review after sometime, to see latest ongoing Events!
THANK YOU!

+
+
+ + {% endif %} {% for event in events%}

{{ event.title }}

{{ event.description | linebreaksbr }}

- Register + Register for this Event

- {% endfor %} + {% endfor %} +
+
Request for any Event in your mind!
{% comment %} {% endcomment %} -{% endblock content %} \ No newline at end of file +{% endblock content %}