Commit dbd1786b authored by KUNAL GOYAL's avatar KUNAL GOYAL

institute login

parents 76011664 b7d5c58d
No preview for this file type
from allocation.models import *
def f():
a=Applicant.objects.all().order_by('rank')
c=Choice.objects.all()
def allocator(univ):
a=Applicant.objects.filter(institute__name=univ).order_by('rank')
c=Choice.objects.filter(institute__name=univ)
my_dict=dict([(x,0) for x in c])
for x in a:
choices=x.ordered_choices()
......
from django.contrib import admin
from .models import Applicant,Choice,Application,Allocationcl
from .models import *
admin.site.register(Choice)
# class UnivAppInLine(admin.TabularInline):
# model=UnivApp
# extra=0
# class UnivChoiceInLine(admin.TabularInline):
# model=UnivChoice
# extra=0
class ChoiceInline(admin.TabularInline):
model = Application #https://stackoverflow.com/questions/5947843/django-how-does-manytomanyfield-with-through-appear-in-admin
extra = 2
class ApplicantAdmin(admin.ModelAdmin):
fields = ['name', 'rank']
inlines = [ChoiceInline]
class AllotedChoiceToAppInLine(admin.TabularInline):
model=Allocationcl
extra=0
class ApplicantAdmin(admin.ModelAdmin):
fields = ['name', 'rank','institute']
inlines = [ChoiceInline, AllotedChoiceToAppInLine]
# class ChoiceAdmin(admin.ModelAdmin):
# fields=['choice_name', 'capacity']
# inlines=[UnivChoiceInLine]
admin.site.register(Institute)
admin.site.register(Choice)
admin.site.register(Applicant, ApplicantAdmin)
{% load i18n static %}<!DOCTYPE html>
{% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %}
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
<head>
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
{% block extrastyle %}{% endblock %}
{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
{% block extrahead %}{% endblock %}
{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
</head>
{% load i18n %}
<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}"
data-admin-utc-offset="{% now "Z" %}">
<!-- Container -->
<div id="container">
{% if not is_popup %}
<!-- Header -->
<div id="header">
<div id="branding">
{% block branding %}{% endblock %}
</div>
{% block usertools %}
{% if has_permission %}
<div id="user-tools">
{% block welcome-msg %}
{% trans 'Welcome,' %}
<strong>{% firstof user.get_short_name user.get_username %}</strong>.
{% endblock %}
{% block userlinks %}
{% if site_url %}
<a href="{{ site_url }}">{% trans 'View site' %}</a> /
{% endif %}
{% if user.is_active and user.is_staff %}
{% url 'django-admindocs-docroot' as docsroot %}
{% if docsroot %}
<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> /
{% endif %}
{% endif %}
{% if user.has_usable_password %}
<a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a> /
{% endif %}
<a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
{% endblock %}
</div>
{% endif %}
{% endblock %}
{% block nav-global %}{% endblock %}
</div>
<!-- END Header -->
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
{% if title %} &rsaquo; {{ title }}{% endif %}
</div>
{% endblock %}
{% endif %}
{% block messages %}
{% if messages %}
<ul class="messagelist">{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message|capfirst }}</li>
{% endfor %}</ul>
{% endif %}
{% endblock messages %}
<!-- Content -->
<div id="content" class="{% block coltype %}colM{% endblock %}">
{% block pretitle %}{% endblock %}
{% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
{% block content %}
{% block object-tools %}{% endblock %}
{{ content }}
{% endblock %}
{% block sidebar %}{% endblock %}
<br class="clear" />
</div>
<!-- END Content -->
{% block footer %}<div id="footer"></div>{% endblock %}
</div>
<!-- END Container -->
</body>
</html>
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-01 17:09
# Generated by Django 1.11.5 on 2017-10-21 06:24
from __future__ import unicode_literals
from django.db import migrations, models
......@@ -14,6 +14,17 @@ class Migration(migrations.Migration):
]
operations = [
migrations.CreateModel(
name='Allocationcl',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
],
options={
'verbose_name': 'Allocated Choice',
'verbose_name_plural': 'Allocated Choice',
'ordering': ['applicant__rank'],
},
),
migrations.CreateModel(
name='Applicant',
fields=[
......@@ -29,6 +40,9 @@ class Migration(migrations.Migration):
('priority', models.IntegerField()),
('applicant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='allocation.Applicant')),
],
options={
'ordering': ['priority'],
},
),
migrations.CreateModel(
name='Choice',
......@@ -38,14 +52,50 @@ class Migration(migrations.Migration):
('capacity', models.IntegerField()),
],
),
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)),
],
options={
'verbose_name': 'Institute',
'verbose_name_plural': 'Institutes',
},
),
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(through='allocation.Application', to='allocation.Choice'),
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'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-09 20:28
from __future__ import unicode_literals
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('allocation', '0001_initial'),
]
operations = [
migrations.AlterModelOptions(
name='application',
options={'ordering': ['priority']},
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-14 12:11
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('allocation', '0002_auto_20171010_0158'),
]
operations = [
migrations.CreateModel(
name='Allocationcl',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('applicant', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='allocation.Applicant')),
('choice', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='allocation.Choice')),
],
options={
'ordering': ['applicant__rank'],
},
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-14 13:00
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('allocation', '0003_allocationcl'),
]
operations = [
migrations.AddField(
model_name='applicant',
name='alloted_choice',
field=models.ManyToManyField(related_name='alloted_choice', through='allocation.Allocationcl', to='allocation.Choice'),
),
migrations.AlterField(
model_name='applicant',
name='choices',
field=models.ManyToManyField(related_name='choices', through='allocation.Application', to='allocation.Choice'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-15 21:52
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('allocation', '0004_auto_20171014_1830'),
]
operations = [
migrations.RemoveField(
model_name='applicant',
name='alloted_choice',
),
migrations.AddField(
model_name='applicant',
name='alloted_choice',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='alloted_choice', to='allocation.Choice'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-15 21:56
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('allocation', '0005_auto_20171016_0322'),
]
operations = [
migrations.RemoveField(
model_name='applicant',
name='alloted_choice',
),
migrations.AddField(
model_name='applicant',
name='alloted_choice',
field=models.ManyToManyField(related_name='alloted_choice', to='allocation.Choice'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-15 21:58
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('allocation', '0006_auto_20171016_0326'),
]
operations = [
migrations.AlterField(
model_name='applicant',
name='alloted_choice',
field=models.ManyToManyField(default=None, related_name='alloted_choice', to='allocation.Choice'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-15 22:01
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('allocation', '0007_auto_20171016_0328'),
]
operations = [
migrations.RemoveField(
model_name='applicant',
name='alloted_choice',
),
migrations.AddField(
model_name='applicant',
name='alloted_choice',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='alloted_choice', to='allocation.Choice'),
),
]
# -*- coding: utf-8 -*-
# Generated by Django 1.11.5 on 2017-10-15 22:14
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('allocation', '0008_auto_20171016_0331'),
]
operations = [
migrations.RemoveField(
model_name='applicant',
name='alloted_choice',
),
migrations.AddField(
model_name='applicant',
name='alloted_choice',
field=models.ManyToManyField(related_name='alloted_choice', through='allocation.Allocationcl', to='allocation.Choice'),
),
]
from django.db import models
# import math
class Institute(models.Model):
name=models.CharField(max_length=200)
def __str__(self):
return self.name
class Meta:
verbose_name='Institute'
verbose_name_plural='Institutes'
class Choice(models.Model):
choice_name = models.CharField(max_length=200)
# alloted_applicants = models.ManyToManyField(Applicant, through='Allocationcl')
institute=models.ForeignKey(Institute, on_delete=models.CASCADE, related_name='choices')
capacity = models.IntegerField()
def __str__(self):
return self.choice_name
......@@ -12,9 +20,10 @@ class Choice(models.Model):
# Null_Choice.save()
class Applicant(models.Model):
choices = models.ManyToManyField(Choice, through='Application', related_name='choices')
institute=models.ForeignKey(Institute,on_delete=models.CASCADE,related_name='applicants')
choices = models.ManyToManyField(Choice, through='Application', related_name='applicants')
name = models.CharField(max_length=200)
alloted_choice = models.ManyToManyField(Choice, through='Allocationcl', related_name='alloted_choice')
alloted_choice = models.ManyToManyField(Choice, through='Allocationcl', related_name='alloted_applicant')
rank = models.IntegerField()
def __str__(self):
return self.name
......@@ -24,12 +33,13 @@ class Applicant(models.Model):
return self.choices.all().order_by('application__priority')
class Application(models.Model):
choice = models.ForeignKey(Choice, on_delete=models.CASCADE)
applicant = models.ForeignKey(Applicant, on_delete=models.CASCADE)
choice = models.ForeignKey(Choice, on_delete=models.CASCADE)
priority = models.IntegerField()
class Meta:
# if you have an inline configured in the admin, this will
# make the roles order properly
ordering = ['priority']
......@@ -40,4 +50,17 @@ class Allocationcl(models.Model):
class Meta:
# if you have an inline configured in the admin, this will
# make the roles order properly
verbose_name='Allocated Choice'
verbose_name_plural='Allocated Choice'
ordering = ['applicant__rank']
# class UnivChoice(models.Model):
# ,limit_choices_to={'institute':applicant.institute}
# choice=models.ForeignKey(Choice,on_delete=models.CASCADE)
# university=models.ForeignKey(University,on_delete=models.CASCADE)
# , limit_choices_to={'university__name':'applicant_university__name'}
# class UnivApp(models.Model):
# applicant=models.ForeignKey(Applicant,on_delete=models.CASCADE)
# university=models.ForeignKey(University,on_delete=models.CASCADE)
# class Meta:
# ordering=['applicant__rank']
\ No newline at end of file
......@@ -4,9 +4,10 @@
<h1 id="site-name">Institute Homepage</h1>
{% endblock %}
{% block usertools %}
{% block welcome-msg %}
{% trans 'Welcome,' %}
<!-- <strong>{{ university.name }}</strong>. -->
<strong> {{institute.name}}</strong>.
{% endblock %}
{% block userlinks %}
{% if user.has_usable_password %}
......@@ -14,7 +15,15 @@
{% endif %}
<a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
{% endblock %}
{% endblock %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'allocation:admin1' %}">{% trans 'Home' %}</a>
</div>
{% endblock %}
{% block content %}
<h1></h1>
<p><a href="{% url 'allocation:applicant_list' %}">Applicants</a></p>
<p><a href="{% url 'allocation:choice_list' %}">Choices</a></p>
{% endblock %}
\ No newline at end of file
{% extends "allocation/admin1.html" %}
{% load i18n admin_urls static admin_list %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'allocation:admin1' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'allocation:applicant_list' %}">{% trans 'Applicants' %}</a>
&rsaquo; {{ applicant.name }}
</div>
{% endblock %}
{% block content %}
{% if applicant.institute.name == request.user.username %}
<p>Name: {{ applicant.name }}</p>
<p>Rank: {{ applicant.rank }}</p>
<p>Alloted Choice: {{ applicant.alloted_choice }}
{% else %}
Unauthorised access
{% endif %}
{% endblock %}
{% extends "allocation/admin1.html" %}
{% load i18n admin_urls static admin_list %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'allocation:admin1' %}">{% trans 'Home' %}</a>
&rsaquo; Applicants
</div>
{% endblock %}
{% block content %}
<h1>Applicants</h1>
{% if applicant_list %}
<ul>
{% for applicant in applicant_list %}
<li>
<a href="{% url 'allocation:applicant-detail' applicant.pk %}">{{ applicant.name }}</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>There are no applicants.</p>
{% endif %}
{% endblock %}
{% extends "allocation/admin1.html" %}
{% load i18n admin_urls static admin_list %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'allocation:admin1' %}">{% trans 'Home' %}</a>
&rsaquo; <a href="{% url 'allocation:choice_list' %}">{% trans 'Choices' %}</a>
&rsaquo; {{ choice.choice_name }}
</div>
{% endblock %}
{% block content %}
{% if choice.institute.name == request.user.username %}
<p>{{ choice.choice_name }}</p>
<p>Capacity: {{ choice.capacity }}</p>
{% else %}
Unauthorised access
{% endif %}
{% endblock %}
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Save" />
</form>
\ No newline at end of file
{% extends "allocation/admin1.html" %}
{% load i18n admin_urls static admin_list %}
{% block breadcrumbs %}
<div class="breadcrumbs">
<a href="{% url 'allocation:admin1' %}">{% trans 'Home' %}</a>
&rsaquo; Choices
</div>
{% endblock %}
{% block content %}
<h1>Choice List</h1>
{% if choice_list %}
<ul>
{% for choice in choice_list %}
<li>
<a href="{% url 'allocation:choice-detail' choice.pk %}">{{ choice.choice_name }}</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>There are no choices available.</p>
{% endif %}
{% endblock %}
......@@ -8,8 +8,11 @@ urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^submit$', views.submit, name='submit'),
url(r'^admin$', views.admin1, name='admin1'),
url(r'^admin/choices$', views.ChoiceListView, name='choice_list'),
url(r'^admin/applicants$', views.ApplicantListView, name='applicant_list'),
url(r'^admin/choices$', views.ChoiceListView.as_view(), name='choice_list'),
url(r'^admin/applicants$', views.ApplicantListView.as_view(), name='applicant_list'),
url(r'^choice/(?P<pk>\d+)$', views.ChoiceDetailView.as_view(), name='choice-detail'),
url(r'^applicant/(?P<pk>\d+)$', views.ApplicantDetailView.as_view(), name='applicant-detail'),
url(r'^choice/create$', views.ChoiceCreateView.as_view(), name='choice-create'),
#url(r'^login/$', auth_views.login,name='login'),
#url(r'^logout/$', auth_views.logout, name='logout1'),
]
\ No newline at end of file
......@@ -3,11 +3,12 @@ from django.http import HttpResponse
from django.contrib.auth import authenticate
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from allocation.models import Applicant,Application,Choice
from allocation.models import *
#from allocation.forms import PreferenceForm
from django.forms import modelform_factory
from django.forms import modelformset_factory
from django.views import generic
from django.views.generic.edit import CreateView
# @login_required(login_url='/admin/login')
# def index(request): #for /allocation
......@@ -50,15 +51,53 @@ def submit(request):
instances = formset.save()
return HttpResponse("successful")
@login_required(login_url='/admin/login')
def admin1(request):
return render(request, 'allocation/admin1.html')
institute=Institute.objects.filter(name=request.user.username)[0]
return render(request, 'allocation/admin1.html',{'institute': institute})
class ChoiceListView(generic.ListView):
model = Choice
def get_context_data(self, **kwargs):
institute=Institute.objects.filter(name=self.request.user.username)[0]
context = super(ChoiceListView, self).get_context_data(**kwargs)
context['institute'] = institute
return context
def get_queryset(self):
institute=Institute.objects.filter(name=self.request.user.username)[0]
return Choice.objects.filter(institute__name=institute.name)
class ApplicantListView(generic.ListView):
model = Applicant
def get_context_data(self, **kwargs):
institute=Institute.objects.filter(name=self.request.user.username)[0]
context = super(ApplicantListView, self).get_context_data(**kwargs)
context['institute'] = institute
return context
def get_queryset(self):
institute=Institute.objects.filter(name=self.request.user.username)[0]
return Applicant.objects.filter(institute__name=institute.name)
class ChoiceDetailView(generic.DetailView):
model = Choice
def get_context_data(self, **kwargs):
institute=Institute.objects.filter(name=self.request.user.username)[0]
context = super(ChoiceDetailView, self).get_context_data(**kwargs)
context['institute'] = institute
return context
class ApplicantDetailView(generic.DetailView):
model = Applicant
def get_context_data(self, **kwargs):
institute=Institute.objects.filter(name=self.request.user.username)[0]
context = super(ApplicantDetailView, self).get_context_data(**kwargs)
context['institute'] = institute
return context
class ChoiceCreateView(CreateView):
model = Choice
fields = ['choice_name', 'capacity', 'institute']
......
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