Commit 0ede88b0 authored by AMAN MORESHWAR JANGDE's avatar AMAN MORESHWAR JANGDE

Merge branch 'Prof_module_impl' into 'master'

Prof module impl

See merge request !1
parents c9c97d64 f54704fc
*.sqlite3
\ No newline at end of file
djangodb
\ No newline at end of file
......@@ -29,11 +29,23 @@ urlpatterns = [
path('', views.default),
path('subjects/', views.show_subjects),
path('available_subjects/', views.show_all_subjects),
path('pending_subjects/', views.show_pending_subjects),
path('reject_subject/<str:sub_code>', views.reject_subject),
path('request_subject/<str:sub_code>', views.request_subject),
path('withdraw_subject/<str:sub_code>', views.withdraw_subject),
path('topics/<str:id>', views.show_topics),
path('threads/<int:id>', views.show_threads),
path('login', views.login),
path('signup', views.signup),
path('logout', views.logout),
path('prof/', views.prof_home),
path('prof/subjects/', views.prof_subjects),
path('prof/student_list/<str:sub_code>', views.student_list),
path('prof/student/accept/<str:sub_code>/<int:pid>', views.accept_student),
path('prof/student/reject/<str:sub_code>/<int:pid>', views.reject_student),
# path('add_thread/<int:id>', views.add_message),
]
# Generated by Django 2.0.3 on 2019-11-25 19:50
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('discussion', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='subject_student',
name='is_accepted',
field=models.BooleanField(default=False),
),
]
......@@ -28,6 +28,7 @@ class Subject(models.Model):
class Subject_Student(models.Model):
subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
student = models.ForeignKey(Person, on_delete=models.CASCADE)
is_accepted = models.BooleanField(default=False)
class Meta:
db_table = "subject_student"
......
......@@ -4,6 +4,7 @@
{% block nav-subjects %}<li ><a href="/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}<li class="active"><a href="/available_subjects">Available Subjects</a></li>{% endblock %}
{% block nav-pending-subjects %}<li><a href="/pending_subjects">Pending Requests</a></li>{% endblock %}
{% block body%}
<div class="container" style="margin-top:50px;">
<div style="width: 70%; margin-left: 20px;">
......@@ -24,7 +25,12 @@
<td style="text-align: center;">{{ subject.sub_code }}</td>
<td style="text-align: center;">{{ subject.sub_name }}</td>
<td style="text-align: center;">{{ subject.prof.fname }} {{ subject.prof.lname }}</td>
<td style="text-align: center;"><button class="btn btn-primary">Request</button></td>
<td style="text-align: center;">
<a href="/request_subject/{{subject.sub_code}}">
<button class="btn btn-primary">Request
</button>
</a>
</td>
</tr>
{% endfor %}
</tbody>
......
......@@ -34,7 +34,7 @@
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Coursebook</a>
{% block nav-brand %}<a class="navbar-brand" href="/">Coursebook</a>{% endblock %}
</div>
<div class="collapse navbar-collapse" id="mynavbar">
......@@ -43,6 +43,7 @@
{% if context is not None %}
{% block nav-subjects %}<li><a href="/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}<li><a href="/available_subjects">Available Subjects</a></li>{% endblock %}
{% block nav-pending-subjects %}{% endblock %}
{% endif %}
</ul>
......@@ -52,7 +53,7 @@
{% block nav-signup %}<li><a href="/signup"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>{%endblock%}
{%block nav-login%}<li><a href="/login"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>{%endblock%}
{% else %}
<li><a href="/"><span class="glyphicon glyphicon-user"></span> {{context}}</a></li>
{% block nav-profile %}<li><a href="/"><span class="glyphicon glyphicon-user"></span> {{context}}</a></li>{%endblock%}
<li><a href="/logout"><span class="glyphicon glyphicon-log-in"></span> Logout</a></li>
{% endif %}
</ul>
......
......@@ -4,8 +4,9 @@
{% block nav-subjects %}<li ><a href="/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}<li><a href="/available_subjects">Available Subjects</a></li>{% endblock %}
{% block nav-pending-subjects %}<li><a href="/pending_subjects">Pending Requests</a></li>{% endblock %}
{% block body%}
<div class="container" style="margin-top:70px;">
<div class="container" style="margin-top:250px;">
{% load static %}
<img src="{%static 'img/logo.png'%}" width="80%" height="50%" style="margin: auto; padding-left: 18%"/>
<br><br>
......
......@@ -4,8 +4,9 @@
{% block style-discussion-topics %}<link rel="stylesheet" href="{% static 'css/discussion_topics.css' %}">{% endblock %}
{% block nav-home %}<li><a href="/">Home</a></li>{% endblock %}
{% block nav-subjects %}<li><a href="/subjects">My Subjects</a></li>{% endblock %}
{% block nav-search-subjects %}<li><a href="/subjects">Search Subjects</a></li>{% endblock %}
{% block nav-subjects %}<li class="active"><a href="/subjects">My Subjects</a></li>{% endblock %}
{% block nav-pending-subjects %}<li ><a href="/pending_subjects">Pending Requests</a></li>{% endblock %}
{% block body%}
<div class="container message-wrap " style="margin-top:50px">
<p>
......@@ -73,9 +74,11 @@
<div>
{{form.title}}
</div>
<div>
<span>Include Prof {{form.is_prof_included}}</span>
</div>
{% if is_prof == False %}
<div>
<span>Include Prof {{form.is_prof_included}}</span>
</div>
{% endif %}
</div>
<div>
<button type="submit" class=" col-sm-4 btn send-message-btn" role="button"><i class="fa fa-plus"></i> Add Topic</a>
......
{% extends "base.html" %}
{% block nav-home %}<li><a href="/">Home</a></li>{% endblock %}
{% block nav-subjects %}<li ><a href="/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}<li ><a href="/available_subjects">Available Subjects</a></li>{% endblock %}
{% block nav-pending-subjects %}<li class="active"><a href="/pending_subjects">Pending Requests</a></li>{% endblock %}
{% block body%}
<div class="container" style="margin-top:50px;">
<div style="width: 70%; margin-left: 20px;">
<h2>Pending Course Requests</h2>
<table style="width:100%;border: solid grey 1px;box-shadow: 2px 2px;" class="table table-hover">
<thead>
<tr>
<th style="text-align: center;">Course ID</th>
<th style="text-align: center;">Course Name</th>
<th style="text-align: center;">Professor</th>
<th style="text-align: center;">Action</th>
</tr>
</thead>
<tbody>
{% for sub_stud in sub_studs %}
{% if sub_stud.is_accepted == False %}
<tr>
<td style="text-align: center;">{{ sub_stud.subject.sub_code }}</td>
<td style="text-align: center;">{{ sub_stud.subject.sub_name }}</td>
<td style="text-align: center;">{{ sub_stud.subject.prof.fname }} {{ sub_stud.subject.prof.lname }}</td>
<td style="text-align: center;">
<a href="/reject_subject/{{sub_stud.subject.sub_code}}">
<button class="btn btn-danger">Cancel
</button>
</a>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% load static %}
{% block style-discussion-topics %}<link rel="stylesheet" href="{% static 'css/discussion_topics.css' %}">{% endblock %}
{% block nav-brand %}<a class="navbar-brand" href="/prof">Coursebook</a>{% endblock %}
{% block nav-home %}<li ><a href="/prof">Home</a></li>{% endblock %}
{% block nav-subjects %}<li class="active"><a href="/prof/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}{% endblock %}
{% block nav-profile %}<li><a href="/prof"><span class="glyphicon glyphicon-user"></span> {{context}}</a></li>{%endblock%}
{% block body%}
<div class="container message-wrap " style="margin-top:50px">
<p>
<h3>
Topics in {{sub_code}}
</h3>
</p>
<div class="list-view">
<div class="list-group">
{% for topic in topics %}
<a href="/threads/{{topic.id}}" class="list-group-item">
<!-- <div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div> -->
<div class="topic-body">
<h4 class="list-group-item-heading">{{topic.title}}</h4>
<!-- <p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p> -->
</div>
</a>
{% endfor %}
<!-- <a href="#" class="list-group-item">
<div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div>
<div class="topic-body">
<h4 class="list-group-item-heading">First List Group Item Heading</h4>
<p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p>
</div>
</a>
<a href="#" class="list-group-item">
<div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div>
<div class="topic-body">
<h4 class="list-group-item-heading">First List Group Item Heading</h4>
<p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p>
</div>
</a>
<a href="#" class="list-group-item">
<div class="time">
<div ><i class="fa fa-calendar"></i> Saturday</div>
<div >12/12/19</div>
<div ><i class="fa fa-clock-o"></i> 12.10pm</div>
</div>
<div class="topic-body">
<h4 class="list-group-item-heading">First List Group Item Heading</h4>
<p class="list-group-item-text">List Group Item Text List Group Item Text List Group Item Text List Group Item Text</p>
</div>
</a> -->
<div class="send-wrap ">
<form method="POST" class="post-form" action="/topics/{{sub_code}}">
{% csrf_token %}
<br>
<p class="add-new-topic">Add New Topic</p>
<div>
{{form.title}}
</div>
{% if is_prof == False %}
<div>
<span>Include Prof {{form.is_prof_included}}</span>
</div>
{% endif %}
</div>
<div>
<button type="submit" class=" col-sm-4 btn send-message-btn" role="button"><i class="fa fa-plus"></i> Add Topic</a>
</div>
</div>
</div>
</div>
{% endblock %}
\ No newline at end of file
{% extends "base.html" %}
{% block nav-brand %}<a class="navbar-brand" href="/prof">Coursebook</a>{% endblock %}
{% block nav-home %}<li class="active"><a href="/prof">Home</a></li>{% endblock %}
{% block nav-subjects %}<li ><a href="/prof/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}{% endblock %}
{% block nav-profile %}<li><a href="/prof"><span class="glyphicon glyphicon-user"></span> {{context}}</a></li>{%endblock%}
{% block body%}
<div class="container" style="margin-top:250px;">
{% load static %}
<img src="{%static 'img/logo.png'%}" width="80%" height="50%" style="margin: auto; padding-left: 18%"/>
<br><br>
</div>
{% endblock %}
{% extends "base.html" %}
{% block nav-brand %}<a class="navbar-brand" href="/prof">Coursebook</a>{% endblock %}
{% block nav-home %}<li ><a href="/prof">Home</a></li>{% endblock %}
{% block nav-subjects %}<li class="active"><a href="/prof/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}{% endblock %}
{% block nav-profile %}<li><a href="/prof"><span class="glyphicon glyphicon-user"></span> {{context}}</a></li>{%endblock%}
{% block body%}
<div class="container" style="margin-top:50px;">
<div style="width: 70%; margin-left: 20px;">
<h2>Courses</h2>
<table style="width:100%;border: solid grey 1px;box-shadow: 2px 2px;" class="table table-hover">
<thead>
<tr>
<th style="text-align: center;">Course ID</th>
<th style="text-align: center;">Course Name</th>
<th style="text-align: center;">Links</th>
</tr>
</thead>
<tbody>
{% for subject in subjects %}
<tr>
<td style="text-align: center;"><a href="/topics/{{ subject.sub_code }}">{{ subject.sub_code }}</a></td>
<td style="text-align: center;">{{ subject.sub_name }}</td>
<td style="text-align: center;"><a href="/prof/student_list/{{ subject.sub_code }}">View Students</a></td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
{% extends "base.html" %}
{% block nav-brand %}<a class="navbar-brand" href="/prof">Coursebook</a>{% endblock %}
{% block nav-home %}<li ><a href="/prof">Home</a></li>{% endblock %}
{% block nav-subjects %}<li ><a href="/prof/subjects">My Subjects</a></li>{% endblock %}
{% block nav-available-subjects %}{% endblock %}
{% block nav-profile %}<li><a href="/prof"><span class="glyphicon glyphicon-user"></span> {{context}}</a></li>{%endblock%}
{% block body%}
<div class="container" style="margin-top:50px;">
<div style="width: 70%; margin-left: 20px;">
<h2><span>{{subject.sub_code}}</span> - <span>{{subject.sub_name}}</span></h2>
<table style="width:100%;border: solid grey 1px;box-shadow: 2px 2px;" class="table table-hover">
<thead>
<tr>
<th style="text-align: center;">Enrollment Number</th>
<th style="text-align: center;">First Name</th>
<th style="text-align: center;">Last Name</th>
<th style="text-align: center;">Status</th>
<th style="text-align: center;">Action</th>
</tr>
</thead>
<tbody>
{% for sub_stud in sub_studs %}
<tr>
<td style="text-align: center;">{{ sub_stud.student.pid }}</td>
<td style="text-align: center;">{{ sub_stud.student.fname }}</td>
<td style="text-align: center;">{{ sub_stud.student.lname }}</td>
{% if sub_stud.is_accepted %}
<td style="text-align: center;"><button class="btn btn-default">Accepted</button></td>
{% else %}
<td style="text-align: center;"><button class="btn btn-default">Pending...</button></td>
{% endif %}
<td style="text-align: center;">
{% if sub_stud.is_accepted %}
<button class="btn btn-basic">Accept</button>
<a href="/prof/student/reject/{{subject.sub_code}}/{{ sub_stud.student.pid }}"><button class="btn btn-danger">Remove</button></a>
{% else %}
<a href="/prof/student/accept/{{subject.sub_code}}/{{ sub_stud.student.pid }}"><button class="btn btn-success">Accept</button></a>
<a href="/prof/student/reject/{{subject.sub_code}}/{{ sub_stud.student.pid }}"><button class="btn btn-danger">Reject</button></a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}
......@@ -4,6 +4,7 @@
{% block nav-subjects %}<li class="active"><a href="/subjects">My Subjects</a></li>{% endblock %}
{% block nav-search-subjects %}<li><a href="/subjects">Available Subjects</a></li>{% endblock %}
{% block nav-pending-subjects %}<li ><a href="/pending_subjects">Pending Requests</a></li>{% endblock %}
{% block body%}
<div class="container" style="margin-top:50px;">
<div style="width: 70%; margin: auto;">
......@@ -13,16 +14,27 @@
<thead>
<tr>
<th style="text-align: center;">Course ID</th>
<th style="text-align: center;">Course Name</th>
<th style="text-align: center;">Course Name</th>
<th style="text-align: center;">Professor</th>
<th style="text-align: center;">Action</th>
<!-- <th>Professor</th> -->
</tr>
</thead>
<tbody>
{% for sub_stu in subject_student %}
<tr>
<td style="text-align: center;"><a href="/topics/{{ sub_stu.subject.sub_code }}">{{ sub_stu.subject.sub_code }} </a></td>
<td style="text-align: center;">{{ sub_stu.subject.sub_name }}</td>
</tr>
{% for sub_stud in subject_student %}
{% if sub_stud.is_accepted %}
<tr>
<td style="text-align: center;"><a href="/topics/{{ sub_stud.subject.sub_code }}">{{ sub_stud.subject.sub_code }} </a></td>
<td style="text-align: center;">{{ sub_stud.subject.sub_name }}</td>
<td style="text-align: center;">{{ sub_stud.subject.prof.fname }} {{ sub_stud.subject.prof.lname }}</td>
<td style="text-align: center;">
<a href="/withdraw_subject/{{sub_stud.subject.sub_code}}">
<button class="btn btn-success">Withdraw
</button>
</a>
</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
......
......@@ -19,6 +19,9 @@ def login(request):
# request.session['session_context']['fname'] = login.fname
# request.session['session_context']['lname'] = login.lname
request.session['session_context'] = login.pid
if(login.is_prof == True):
return redirect('/prof')
return redirect('/')
......@@ -60,6 +63,7 @@ def signup(request):
def default(request):
is_prof = False
try:
context = request.session['session_context']
except:
......@@ -67,6 +71,93 @@ def default(request):
return render(request, 'default.html' ,{'context':context})
def prof_home(request):
try:
context = request.session['session_context']
except:
context = None
return render(request, 'prof_home.html' ,{'context':context})
def prof_subjects(request):
context = request.session['session_context']
try:
prof = Person.objects.get(pid=context)
subjects = Subject.objects.filter(prof = prof)
except:
subjects = None
return render(request,"prof_subjects.html",{'subjects':subjects, 'context':context})
def student_list(request, sub_code):
context = request.session['session_context']
sub_studs = None
try:
prof = Person.objects.get(pid=context)
subject = Subject.objects.get(prof = prof, sub_code=sub_code)
sub_studs = Subject_Student.objects.filter(subject = subject)
except:
sub_studs = None
return render(request,"students_list.html",{'subject':subject, 'context':context, 'sub_studs':sub_studs})
def accept_student(request, sub_code, pid):
context = request.session['session_context']
try:
sub_stud_to_accept = Subject_Student.objects.get(student = Person.objects.get(pid=pid), subject = Subject.objects.get(sub_code=sub_code))
sub_stud_to_accept.is_accepted = True
sub_stud_to_accept.save()
except Exception as e:
print (e)
return redirect('/prof/student_list/'+sub_code)
def request_subject(request, sub_code):
context = request.session['session_context']
try:
subject = Subject.objects.get(sub_code = sub_code)
student = Person.objects.get(pid = context)
sub_stud = Subject_Student(subject = subject, student = student)
sub_stud.save()
except Exception as e:
print (e)
return redirect('/available_subjects')
def reject_student(request, sub_code, pid):
context = request.session['session_context']
try:
Subject_Student.objects.get(student = Person.objects.get(pid=pid), subject = Subject.objects.get(sub_code=sub_code)).delete()
except Exception as e:
print (e)
return redirect('/prof/student_list/'+sub_code)
def reject_subject(request, sub_code):
context = request.session['session_context']
try:
Subject_Student.objects.get(student = Person.objects.get(pid=context), subject = Subject.objects.get(sub_code=sub_code)).delete()
except Exception as e:
print (e)
return redirect('/pending_subjects')
def withdraw_subject(request, sub_code):
context = request.session['session_context']
try:
Subject_Student.objects.get(student = Person.objects.get(pid=context), subject = Subject.objects.get(sub_code=sub_code)).delete()
except Exception as e:
print (e)
return redirect('/subjects')
def show_subjects(request):
context = request.session['session_context']
try:
......@@ -79,16 +170,44 @@ def show_subjects(request):
def show_all_subjects(request):
context = request.session['session_context']
subjects = Subject.objects.all()
sub_studs = Subject_Student.objects.filter(student = Person.objects.get(pid=context))
my_subs = []
for sub_stud in sub_studs:
my_subs.append(sub_stud.subject.sub_code)
subjects = subjects.exclude(sub_code__in=my_subs)
return render(request,"available_subjects.html",{'subjects':subjects, 'context':context})
def show_pending_subjects(request):
context = request.session['session_context']
sub_studs = Subject_Student.objects.filter(student = Person.objects.get(pid=context))
return render(request,"pending_subjects.html",{'sub_studs':sub_studs, 'context':context})
def show_topics(request, id):
context = request.session['session_context']
is_prof = False
try:
subject = Subject.objects.get(sub_code=id)
except:
return redirect('/')
topics = Topic.objects.filter(subject = subject)
try:
person = Person.objects.get(pid=context)
is_prof = person.is_prof
except Exception as e:
print (e)
if is_prof:
topics = Topic.objects.filter(subject = subject, is_prof_included=True)
else:
topics = Topic.objects.filter(subject = subject)
if request.method == "POST":
form = TopicForm(request.POST)
......@@ -103,7 +222,11 @@ def show_topics(request, id):
pass
else:
form = TopicForm()
return render(request,'discussion_topics.html',{'form':form, 'sub_code':id, 'topics':topics, 'context':context})
if is_prof:
return render(request,'prof_discussion_topics.html',{'form':form, 'sub_code':id, 'topics':topics, 'context':context, 'is_prof':is_prof})
else:
return render(request,'discussion_topics.html',{'form':form, 'sub_code':id, 'topics':topics, 'context':context, 'is_prof':is_prof})
def show_threads(request, id):
context = request.session['session_context']
......
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment