Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion events/admin.py
Original file line number Diff line number Diff line change
@@ -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)
18 changes: 16 additions & 2 deletions events/forms.py
Original file line number Diff line number Diff line change
@@ -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"]
32 changes: 32 additions & 0 deletions events/migrations/0008_requestevent.py
Original file line number Diff line number Diff line change
@@ -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)),
],
),
]
44 changes: 28 additions & 16 deletions events/models.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
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):
"""[summary]
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)

class Meta:
abstract = True


class Event(TimeStampedModel):
class Event(TimeStampedModel):
title = models.CharField(max_length=200, blank=False)
description = models.TextField()

Expand All @@ -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)
Expand All @@ -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
10 changes: 7 additions & 3 deletions events/urls.py
Original file line number Diff line number Diff line change
@@ -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"),
]
82 changes: 60 additions & 22 deletions events/views.py
Original file line number Diff line number Diff line change
@@ -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})
4 changes: 2 additions & 2 deletions templates/event_register.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<br>
<br>
<div class='myform'>
<center><h1>Register</h1></center>
<center><h1>Request An Event</h1></center>
<form action="" method="POST">{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
Expand All @@ -18,4 +18,4 @@
{{ form.media }}
{% comment %} </div> {% endcomment %}
</div>
{% endblock content %}
{% endblock content %}
17 changes: 14 additions & 3 deletions templates/events.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,27 @@
<br>
<div class="container">
<br>
{% if events|length == 0 %}
<div class="card text-center">
<div class="card-body bg">
<h4 class="card-title">No Ongoing Events </h4>
<p class="card-text">Please review after sometime, to see latest ongoing Events!<br>THANK YOU!</p>
</div>
</div>

{% endif %}
{% for event in events%}
<div class="card text-center">
<div class="card-body bg">
<h4 class="card-title">{{ event.title }}</h4>
<p class="card-text">{{ event.description | linebreaksbr }}</p>
<a href="{% url 'register' %}" class="btn btn-primary">Register</a>
<a href="{% url 'register' %}" class="btn btn-primary">Register for this Event</a>
</div>
</div>
<br>
{% endfor %}
{% endfor %}
<br>
<center><a href="{% url 'request_event' %}" class="btn btn-primary">Request for any Event in your mind!</a></center>
</div>
{% comment %} </div> {% endcomment %}
{% endblock content %}
{% endblock content %}