Commit 787c83d5 authored by KUNAL GOYAL's avatar KUNAL GOYAL

some changes 2

parent 9414fe04
from django import forms from django import forms
from allocation.models import Applicant,Choice from allocation.models import *
from django.forms import ModelForm from django.forms import ModelForm
# class PreferenceForm(forms.Form): # class PreferenceForm(forms.Form):
...@@ -10,4 +10,13 @@ from django.forms import ModelForm ...@@ -10,4 +10,13 @@ from django.forms import ModelForm
# class PreferenceForm(ModelForm): # class PreferenceForm(ModelForm):
# class Meta: # class Meta:
# model = Applicant # model = Applicant
# fields = ['name', 'rank', 'choices'] # fields = ['name', 'rank', 'choices']
\ No newline at end of file
# class AppForm(ModelForm):
# def __init__(self, *args, **kwargs):
# super(AppForm, self).__init__(*args, **kwargs)
# applicant=Applicant.objects.filter(name=self.request.user.username)
# self.fields['choices'].queryset = Choice.objects.filter(institute=applicant__institute)
# class Meta:
# model = Application
# fields = ['applicant','choice', 'priority']
\ No newline at end of file
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import models from django.db import models
from django.core.validators import MaxValueValidator, MinValueValidator
# import CsvModel # import CsvModel
import csv import csv
import os import os
...@@ -28,7 +29,7 @@ class Applicant(models.Model): ...@@ -28,7 +29,7 @@ class Applicant(models.Model):
choices = models.ManyToManyField(Choice, through='Application', related_name='applicants') choices = models.ManyToManyField(Choice, through='Application', related_name='applicants')
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
alloted_choice = models.ManyToManyField(Choice, through='Allocationcl', related_name='alloted_applicant') alloted_choice = models.ManyToManyField(Choice, through='Allocationcl', related_name='alloted_applicant')
rank = models.IntegerField() rank = models.IntegerField(validators=[MinValueValidator(1)])
def __str__(self): def __str__(self):
return self.name return self.name
def ordered_choices(self): def ordered_choices(self):
...@@ -39,7 +40,7 @@ class Applicant(models.Model): ...@@ -39,7 +40,7 @@ class Applicant(models.Model):
class Application(models.Model): class Application(models.Model):
applicant = models.ForeignKey(Applicant, on_delete=models.CASCADE) applicant = models.ForeignKey(Applicant, on_delete=models.CASCADE)
choice = models.ForeignKey(Choice, on_delete=models.CASCADE) choice = models.ForeignKey(Choice, on_delete=models.CASCADE)
priority = models.IntegerField() priority = models.IntegerField(validators=[MinValueValidator(1)])
class Meta: class Meta:
# if you have an inline configured in the admin, this will # if you have an inline configured in the admin, this will
# make the roles order properly # make the roles order properly
......
...@@ -11,7 +11,10 @@ ...@@ -11,7 +11,10 @@
{% if applicant.institute.name == request.user.username %} {% if applicant.institute.name == request.user.username %}
<p><b>Name:</b> {{ applicant.name }}</p> <p><b>Name:</b> {{ applicant.name }}</p>
<p><b>Rank:</b> {{ applicant.rank }}</p> <p><b>Rank:</b> {{ applicant.rank }}</p>
<p><b>Allotted Choice:</b> {{ applicant.alloted_choice }} <p><b>Allotted Choice:</b>
{% for choice in applicant.alloted_choice.all %}
{{choice}}
{% endfor %}
{% else %} {% else %}
Unauthorised access Unauthorised access
{% endif %} {% endif %}
......
...@@ -37,24 +37,32 @@ ...@@ -37,24 +37,32 @@
<!-- Content --> <!-- Content -->
<div id="content" class="{% block coltype %}colM{% endblock %}"> <div id="content" class="{% block coltype %}colM{% endblock %}">
{% block content %} {% block content %}
{% if form.errors %} {% if success %}
<p style="color: red;"> <p style="color:green">update successfull</p>
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %} {% endif %}
<p> <b>Name:</b> {{applicant.name}}<br> <p> <b>Name:</b> {{applicant.name}}<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>
<form action="/allocation/submit" method="post">{% csrf_token %} <form action="/allocation/" method="post">{% csrf_token %}
{{ formset.management_form }} {{ formset.management_form }}
{% for form in formset %} {% for form in formset %}
{{ form }}<br> {{ form.non_field_errors }}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form.visible_fields %}
<div class="fieldWrapper">
{{ field.errors }}
{{ field.label_tag }} {{ field }}
</div>
{% endfor %}
<!-- {{ form.applicant }} {{ form.choice }} {{ form.priority }}<br> --> <!-- {{ form.applicant }} {{ form.choice }} {{ form.priority }}<br> -->
<br>
{% endfor %} {% endfor %}
<input type="submit" value="Submit"> <input type="submit" value="Submit">
</form> </form>
...@@ -63,7 +71,6 @@ ...@@ -63,7 +71,6 @@
</div> </div>
<!-- END Content --> <!-- END Content -->
{% block footer %}<div id="footer"></div>{% endblock %}
</div> </div>
</body> </body>
......
...@@ -6,7 +6,7 @@ from django.contrib.auth import views as auth_views ...@@ -6,7 +6,7 @@ from django.contrib.auth import views as auth_views
app_name = 'allocation' app_name = 'allocation'
urlpatterns = [ urlpatterns = [
url(r'^$', views.index, name='index'), url(r'^$', views.index, name='index'),
url(r'^submit$', views.submit, name='submit'), #url(r'^submit$', views.submit, name='submit'),
url(r'^admin$', views.admin1, name='admin1'), url(r'^admin$', views.admin1, name='admin1'),
url(r'^admin/choices$', views.ChoiceListView.as_view(), name='choice_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'^admin/applicants$', views.ApplicantListView.as_view(), name='applicant_list'),
......
...@@ -3,9 +3,8 @@ from django.contrib.auth import authenticate ...@@ -3,9 +3,8 @@ from django.contrib.auth import authenticate
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User from django.contrib.auth.models import User
from allocation.models import * from allocation.models import *
#from allocation.forms import PreferenceForm #from allocation.forms import AppForm
from django.forms import modelform_factory from django.forms import modelformset_factory, formset_factory, modelform_factory, ModelForm
from django.forms import modelformset_factory
from django.views import generic from django.views import generic
from django.views.generic.edit import * from django.views.generic.edit import *
...@@ -51,7 +50,7 @@ def choice_make(request): ...@@ -51,7 +50,7 @@ def choice_make(request):
file_data = csvfile.read().decode("utf-8") file_data = csvfile.read().decode("utf-8")
lines = file_data.split("\n") lines = file_data.split("\n")
user_name = request.user.username user_name = request.user.username
institute = Institute.objects.filter(name=user_name)[0] institute = get_object_or_404(Institute, name=user_name)
for line in lines: for line in lines:
line = line.split(',') line = line.split(',')
# tmp = Choice.objects.create(choice_name=line[0],capacity=line[1]) # tmp = Choice.objects.create(choice_name=line[0],capacity=line[1])
...@@ -66,7 +65,7 @@ def applicant_make(request): ...@@ -66,7 +65,7 @@ def applicant_make(request):
csvfile = request.FILES['myfile'] csvfile = request.FILES['myfile']
file_data = csvfile.read().decode("utf-8") file_data = csvfile.read().decode("utf-8")
user_name = request.user.username user_name = request.user.username
institute = Institute.objects.filter(name=user_name)[0] institute = get_object_or_404(Institute, name=user_name)
lines = file_data.split("\n") lines = file_data.split("\n")
for line in lines: for line in lines:
line = line.split(',') line = line.split(',')
...@@ -80,35 +79,58 @@ def applicant_make(request): ...@@ -80,35 +79,58 @@ def applicant_make(request):
return HttpResponse("Error") return HttpResponse("Error")
AppFormset = modelformset_factory(Application,fields=("choice", "priority" ), extra=5) #AppFormset = modelformset_factory(Application,fields=("choice", "priority" ), extra=5)
# @login_required(login_url='/admin/login')
# def index(request): #for /allocation
# applicant=get_object_or_404(Applicant, name=request.user.username)
# # form1 = modelform_factory(Applicant, fields=("name", "rank" ))
# formset = AppFormset(queryset=Application.objects.filter(applicant=applicant),)
# return render(request, 'allocation/index.html', {'applicant': applicant, 'formset': formset,})
# AppFormset = formset_factory(AppForm, extra=5)
# @login_required(login_url='/admin/login')
# def index(request): #for /allocation
# applicant=get_object_or_404(Applicant,name=request.user.username)
# # form1 = modelform_factory(Applicant, fields=("name", "rank" ))
# formset = AppFormset()
# return render(request, 'allocation/index.html', {'applicant': applicant, 'formset': formset,})
@login_required(login_url='/admin/login')
def index(request): #for /allocation
applicant=get_object_or_404(Applicant, name=request.user.username)
# form1 = modelform_factory(Applicant, fields=("name", "rank" ))
formset = AppFormset(queryset=Application.objects.filter(applicant=applicant),)
return render(request, 'allocation/index.html', {'applicant': applicant, 'formset': formset,})
# def submit(request): # def submit(request):
# if request.method == 'POST': # if request.method == 'POST':
# formset = AppFormset(request.POST) # formset = AppFormset(request.POST)
# if formset.is_valid(): # instances = formset.save()
# for form in formset: # return HttpResponse("successful")
# if form.is_valid():
# cd = f.cleaned_data def make_application_form(applicant1):
# application.applicant=cd.get('applicant') class ApplicationForm(forms.ModelForm):
# application.choice=cd.get('choice') choice = forms.ModelChoiceField(queryset=Choice.objects.filter(institute=applicant1.institute))
# application.priority=cd.get('priority') applicant = forms.ModelChoiceField(widget=forms.HiddenInput(), initial=applicant1, queryset=Applicant.objects.all() )
# application.save() class Meta:
# else: model = Application
# return HttpResponse('error') fields = ['applicant','choice', 'priority']
return ApplicationForm
def submit(request): @login_required(login_url='/admin/login')
if request.method == 'POST': def index(request):
formset = AppFormset(request.POST) applicant=get_object_or_404(Applicant,name=request.user.username)
instances = formset.save() ApplicationForm = make_application_form(applicant)
return HttpResponse("successful") ApplicationFormSet = modelformset_factory(Application, form=ApplicationForm, extra=5)
if request.method == "POST":
formset = ApplicationFormSet(request.POST, queryset=Application.objects.filter(applicant=applicant))
if formset.is_valid():
#Application.objects.filter(applicant=applicant).delete()
formset.save()
return render(request, 'allocation/index.html', {'applicant': applicant, 'formset': formset, 'success':True,})
else:
form_errors = formset.errors
return render(request, 'allocation/index.html', {'applicant': applicant, 'formset': formset,'form_errors': form_errors})
else:
formset = ApplicationFormSet(queryset=Application.objects.filter(applicant=applicant),)
return render(request, 'allocation/index.html', {'applicant': applicant, 'formset': formset,})
@login_required(login_url='/admin/login') @login_required(login_url='/admin/login')
def admin1(request): def admin1(request):
......
No preview for this file type
...@@ -31,7 +31,6 @@ ALLOWED_HOSTS = [] ...@@ -31,7 +31,6 @@ ALLOWED_HOSTS = []
# Application definition # Application definition
INSTALLED_APPS = [ INSTALLED_APPS = [
'guardian',
'allocation.apps.AllocationConfig', 'allocation.apps.AllocationConfig',
'django.contrib.admin', 'django.contrib.admin',
'django.contrib.auth', 'django.contrib.auth',
...@@ -124,4 +123,6 @@ STATIC_URL = '/static/' ...@@ -124,4 +123,6 @@ STATIC_URL = '/static/'
AUTHENTICATION_BACKENDS = ( #django-guardian AUTHENTICATION_BACKENDS = ( #django-guardian
'django.contrib.auth.backends.ModelBackend', # this is default 'django.contrib.auth.backends.ModelBackend', # this is default
'guardian.backends.ObjectPermissionBackend', 'guardian.backends.ObjectPermissionBackend',
) )
\ No newline at end of file
LOGOUT_REDIRECT_URL = '/'
\ No newline at end of file
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