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 @@
Please review after sometime, to see latest ongoing Events!
THANK YOU!