Commit f6b64541 authored by amanjain2898@gmail.com's avatar amanjain2898@gmail.com

asd

parents d638ba4d 2d35b209
No preview for this file type
...@@ -15,18 +15,14 @@ def allocator(univ): ...@@ -15,18 +15,14 @@ def allocator(univ):
i=0 i=0
flag=True flag=True
while x.is_float and flag and i<len(choices): #< loop over all preferences till allocated while x.is_float and flag and i<len(choices): #< loop over all preferences till allocated
if choices[i].capacity>choices[i].seats_filled : l=len(choices[i].alloted_applicant.all())
if choices[i].capacity>l:
given_choice=x.alloted_choice.all() #< \c given_choice\ stores already alloted choice given_choice=x.alloted_choice.all() #< \c given_choice\ stores already alloted choice
if given_choice: if given_choice:
g=given_choice[0]
g.seats_filled=g.seats_filled-1
x.alloted_choice.clear() x.alloted_choice.clear()
x.save() x.save()
g.save()
clalloc=Allocationcl(choice=choices[i],applicant=x) #< link Choice to Applicant using Application model clalloc=Allocationcl(choice=choices[i],applicant=x) #< link Choice to Applicant using Application model
clalloc.save() clalloc.save()
choices[i].seats_filled=choices[i].seats_filled+1
choices[i].save()
flag=False flag=False
i=i+1 i=i+1
return a return a
\ No newline at end of file
...@@ -21,8 +21,8 @@ class InstituteAdmin(admin.ModelAdmin): ...@@ -21,8 +21,8 @@ class InstituteAdmin(admin.ModelAdmin):
list_display=['name','is_allocated'] list_display=['name','is_allocated']
class ChoiceAdmin(admin.ModelAdmin): class ChoiceAdmin(admin.ModelAdmin):
fields=['choice_name', 'capacity','institute', 'seats_filled'] fields=['choice_name', 'capacity','institute']
list_display=['choice_name','institute', 'capacity', 'seats_filled' ] list_display=['choice_name','institute', 'capacity']
admin.site.register(Institute, InstituteAdmin) admin.site.register(Institute, InstituteAdmin)
admin.site.register(Choice, ChoiceAdmin) admin.site.register(Choice, ChoiceAdmin)
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-25 21:03
from __future__ import unicode_literals
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Allocationcl',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
],
options={
'verbose_name_plural': 'Allocated Choice',
'verbose_name': 'Allocated Choice',
'ordering': ['applicant__rank'],
},
),
migrations.CreateModel(
name='Applicant',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200)),
('rank', models.IntegerField(validators=[django.core.validators.MinValueValidator(1)])),
('is_float', models.BooleanField(default=True)),
],
),
migrations.CreateModel(
name='Application',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('priority', models.IntegerField(validators=[django.core.validators.MinValueValidator(1)])),
('applicant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='allocation.Applicant')),
],
options={
'ordering': ['priority'],
},
),
migrations.CreateModel(
name='Choice',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('choice_name', models.CharField(max_length=200)),
('capacity', models.IntegerField()),
('seats_filled', models.IntegerField(default=0)),
],
),
migrations.CreateModel(
name='Institute',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200)),
('is_allocated', models.BooleanField(default=False)),
],
options={
'verbose_name_plural': 'Institutes',
'verbose_name': 'Institute',
},
),
migrations.AddField(
model_name='choice',
name='institute',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='choices', to='allocation.Institute'),
),
migrations.AddField(
model_name='application',
name='choice',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='allocation.Choice'),
),
migrations.AddField(
model_name='applicant',
name='alloted_choice',
field=models.ManyToManyField(related_name='alloted_applicant', through='allocation.Allocationcl', to='allocation.Choice'),
),
migrations.AddField(
model_name='applicant',
name='choices',
field=models.ManyToManyField(related_name='applicants', through='allocation.Application', to='allocation.Choice'),
),
migrations.AddField(
model_name='applicant',
name='institute',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='applicants', to='allocation.Institute'),
),
migrations.AddField(
model_name='allocationcl',
name='applicant',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='allocation.Applicant'),
),
migrations.AddField(
model_name='allocationcl',
name='choice',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='allocation.Choice'),
),
]
...@@ -6,8 +6,6 @@ from django.core.validators import MaxValueValidator, MinValueValidator ...@@ -6,8 +6,6 @@ from django.core.validators import MaxValueValidator, MinValueValidator
import csv import csv
import os import os
## Models file
# It contains all the models used to define the database
## Institute Model ## Institute Model
# @brief Stores information about all institutes in a table # @brief Stores information about all institutes in a table
class Institute(models.Model): class Institute(models.Model):
...@@ -29,7 +27,6 @@ class Choice(models.Model): ...@@ -29,7 +27,6 @@ class Choice(models.Model):
choice_name = models.CharField(max_length=200) #< object containing name of choice choice_name = models.CharField(max_length=200) #< object containing name of choice
institute=models.ForeignKey(Institute, on_delete=models.CASCADE, related_name='choices') #< Object containing related institute primary key institute=models.ForeignKey(Institute, on_delete=models.CASCADE, related_name='choices') #< Object containing related institute primary key
capacity = models.IntegerField() #< Object containing maximum number of applicants allowed capacity = models.IntegerField() #< Object containing maximum number of applicants allowed
seats_filled=models.IntegerField(default=0) #< Object containing number of seats currently occupied
## String Conversion ## String Conversion
# @param self Pointer to itself # @param self Pointer to itself
# @return name Name of Choice # @return name Name of Choice
......
...@@ -9,44 +9,6 @@ ...@@ -9,44 +9,6 @@
{% block content %} {% block content %}
<h1>Applicants</h1> <h1>Applicants</h1>
<!-- <script>
function validate_fileupload(fileName){
var allowed_extensions = "csv";
var file_extension = fileName.split('.').pop();
// document.getElementById('errfn').innerHTML = file_extension;
if(allowed_extensions==file_extension){
return true; // valid file extension
}
// document.getElementById('errfn').innerHTML = "This is not a valid file format";
alert("Sorry, only .txt files are allowed");
return false;
}
</script> -->
<!--
{% if success %}
<ul>
<li style="float:right; vertical-align: top;">
<h3 style="margin-top: -50px"> For uploading Applicant</h3>
<form name="myform" method="POST" action="/allocation/applicant_make" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="myfile" accept=".csv" id="upload_file" title='Please upload file in .csv format only'>
<button type="submit">Upload</button>
<div id="errfn">
<p style="color:red">Invalid input</p>
</div>
</form>
</li>
{% for applicant in applicant_list %}
<li>
<a href="{% url 'allocation:applicant-detail' applicant.pk %}">{{ applicant.name }}</a>
</li>
{% endfor %}
</ul>
{% else %} -->
{% if applicant_list %} {% if applicant_list %}
<ul> <ul>
<li style="float:right; vertical-align: top;"> <li style="float:right; vertical-align: top;">
......
...@@ -11,13 +11,31 @@ ...@@ -11,13 +11,31 @@
{% if choice.institute.name == request.user.username %} {% if choice.institute.name == request.user.username %}
<p><b>Choice name:</b> {{ choice.choice_name }}</p> <p><b>Choice name:</b> {{ choice.choice_name }}</p>
<p><b>Capacity:</b> {{ choice.capacity }}</p> <p><b>Capacity:</b> {{ choice.capacity }}</p>
<p><b>Seats Filled:</b> {{ choice.seats_filled }}</p> <p><b>Seats Filled:</b> {{ choice.alloted_applicant.all|length }}</p>
<form action="{% url 'allocation:choice-update' choice.pk %}"> <form action="{% url 'allocation:choice-update' choice.pk %}">
<input type="submit" value="Update" /> <input type="submit" value="Update" />
</form> </form>
<form action="{% url 'allocation:choice-delete' choice.pk %}"> <form action="{% url 'allocation:choice-delete' choice.pk %}">
<input style="background-color: red;" type="submit" value="Delete" /> <input style="background-color: red;" type="submit" value="Delete" />
</form> </form>
<br>
<p>List of Applicants who have been allocated {{ choice.choice_name }} choice: </p>
<ul>
{% for applicant in choice.alloted_applicant.all %}
<table style="width:100%">
<tr>
<th>Name</th>
<th>Rank</th>
</tr>
{% for applicant in choice.alloted_applicant.all %}
<tr>
<td> <a href="{% url 'allocation:applicant-detail' applicant.pk %}">{{ applicant.name }}</a></td>
<td> {{ applicant.rank }}</td>
</tr>
{% endfor %}
</table>
{% endfor %}
</ul>
{% else %} {% else %}
Unauthorised access Unauthorised access
{% endif %} {% endif %}
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<!-- Header --> <!-- Header -->
<div id="header"> <div id="header">
<div id="branding"> <div id="branding">
<h1>Student Portal</h1> <h1>Applicant Portal</h1>
</div> </div>
{% block usertools %} {% block usertools %}
<div id="user-tools"> <div id="user-tools">
...@@ -55,24 +55,27 @@ ...@@ -55,24 +55,27 @@
</form> </form>
{% endif %} {% endif %}
{% if success %} {% if success %}
<p style="color:green">update successfull</p> <p style="color:green">Your choices have been registered.</p>
{% endif %} {% endif %}
<p> <b>Name:</b> {{applicant.name}}<br> <p> <b>Name:</b> {{applicant.name}}<br>
<b>Institute:</b> {{applicant.institute}}<br>
<b>Rank:</b> {{applicant.rank}}<br> <b>Rank:</b> {{applicant.rank}}<br>
<b>Allocated choice:</b> <b>Allocated choice:</b>
{% for choice in applicant.alloted_choice.all %} {% for choice in applicant.alloted_choice.all %}
{{choice}} {{choice}}
{% endfor %} {% endfor %}
</p> </p>
<p>Fill your choices and priorities:</p>
<form action="/allocation/" method="post">{% csrf_token %} <form action="/allocation/" method="post">{% csrf_token %}
{{ formset.management_form }} {{ formset.management_form }}
<ul>
{% for form in formset %} {% for form in formset %}
{{ form.non_field_errors }} {{ form.non_field_errors }}
{% for hidden in form.hidden_fields %} {% for hidden in form.hidden_fields %}
{{ hidden }} {{ hidden }}
{% endfor %} {% endfor %}
<li>
{% for field in form.visible_fields %} {% for field in form.visible_fields %}
<div class="fieldWrapper"> <div class="fieldWrapper">
{{ field.errors }} {{ field.errors }}
...@@ -82,6 +85,7 @@ ...@@ -82,6 +85,7 @@
<!-- {{ form.applicant }} {{ form.choice }} {{ form.priority }}<br> --> <!-- {{ form.applicant }} {{ form.choice }} {{ form.priority }}<br> -->
<br> <br>
{% endfor %} {% endfor %}
</ul>
{% if not applicant.institute.is_allocated %} {% if not applicant.institute.is_allocated %}
<input type="submit" value="Submit"> <input type="submit" value="Submit">
{% endif %} {% endif %}
......
...@@ -16,8 +16,7 @@ urlpatterns = [ ...@@ -16,8 +16,7 @@ urlpatterns = [
url(r'^admin/applicants$', views.ApplicantListView.as_view(), name='applicant_list'), #< creates URL to display all applicants in Institute Login url(r'^admin/applicants$', views.ApplicantListView.as_view(), name='applicant_list'), #< creates URL to display all applicants in Institute Login
url(r'^choice/(?P<pk>\d+)$', views.ChoiceDetailView.as_view(), name='choice-detail'), #< creates URL to display a particular choice in Institute Login url(r'^choice/(?P<pk>\d+)$', views.ChoiceDetailView.as_view(), name='choice-detail'), #< creates URL to display a particular choice in Institute Login
url(r'^applicant/(?P<pk>\d+)$', views.ApplicantDetailView.as_view(), name='applicant-detail'), #< creates URL to display a particular applicant in Institute Login url(r'^applicant/(?P<pk>\d+)$', views.ApplicantDetailView.as_view(), name='applicant-detail'), #< creates URL to display a particular applicant in Institute Login
url(r'^choice/create$', views.ChoiceCreateView.as_view(), name='choice-create'), #< creates URL to create a particular choice in Institute Login url(r'^choice/(?P<pk>\d+)/update$', views.ChoiceUpdate.as_view(), name='choice-update'), #< creates URL to update a particular choice in Institute Login
url(r'^choice/(?P<pk>\d+)/update$', views.ChoiceUpdate.as_view(), name='choice-update'), #< creates URL to update a particular choice in Institute Login
url(r'^choice/(?P<pk>\d+)/delete$', views.ChoiceDelete.as_view(), name='choice-delete'), #< creates URL to deleten a particular choice in Institute Login url(r'^choice/(?P<pk>\d+)/delete$', views.ChoiceDelete.as_view(), name='choice-delete'), #< creates URL to deleten a particular choice in Institute Login
url(r'^applicant/(?P<pk>\d+)/update$', views.ApplicantUpdate.as_view(), name='applicant-update'), #< creates URL to update a particular applicant in Institute Login url(r'^applicant/(?P<pk>\d+)/update$', views.ApplicantUpdate.as_view(), name='applicant-update'), #< creates URL to update a particular applicant in Institute Login
url(r'^applicant/(?P<pk>\d+)/delete$', views.ApplicantDelete.as_view(), name='applicant-delete'), #< creates URL to delete a particular applicant in Institute Login url(r'^applicant/(?P<pk>\d+)/delete$', views.ApplicantDelete.as_view(), name='applicant-delete'), #< creates URL to delete a particular applicant in Institute Login
......
This diff is collapsed.
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