# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.utils.encoding import force_text
from django.contrib.contenttypes.models import ContentType
from django.template.context import RequestContext
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response, redirect
from django.views.decorators.csrf import csrf_exempt
from django.core.context_processors import csrf
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.contrib.admin.models import CHANGE
from django.contrib.auth.decorators import login_required
from django.core.mail import send_mail
from django.db.models import F
import csv
from django.core.mail import EmailMultiAlternatives
from website.forms import ProposalForm, UserRegisterForm, UserLoginForm, WorkshopForm, ContactForm
from website.models import Proposal, Comments
from social.apps.django_app.default.models import UserSocialAuth
import random
import string
def userregister(request):
context = {}
context.update(csrf(request))
registered_emails = []
users = User.objects.all()
for user in users:
registered_emails.append(user.email)
if request.user.is_anonymous():
if request.method == 'POST':
form = UserRegisterForm(request.POST)
if form.is_valid():
data = form.cleaned_data
if data['email'] in registered_emails:
context['form'] = form
context['email_registered'] = True
return render_to_response('user-register.html', context)
else:
form.save()
context['registration_complete'] = True
# form = UserLoginForm()
# context['form'] = form
return render_to_response('cfp.html', context)
else:
context.update(csrf(request))
context['form'] = form
return render_to_response('user-register.html', context)
else:
form = UserRegisterForm()
context.update(csrf(request))
context['form'] = form
return render_to_response('user-register.html', context)
else:
context['user'] = request.user
return render_to_response('cfp.html', context)
def contact_us(request,next_url):
pass
context = {}
if request.method == "POST":
form = ContactForm(request.POST)
sender_name = request.POST['name']
sender_email = request.POST['email']
to = ('scipy@fossee.in',)
subject = "Query from - "+sender_name
message = request.POST['message']
try:
send_mail(subject, message, sender_email, to)
context['mailsent'] = True
context['user'] = user
except:
context['mailfailed'] = True
context['user'] = user
return redirect(next_url,context)
def home(request):
#pass
context = {}
user = request.user
context.update(csrf(request))
if request.method == "POST":
sender_name = request.POST['name']
sender_email = request.POST['email']
to = ('scipy@fossee.in',)
subject = "Query from - "+sender_name
message = request.POST['message']
try:
send_mail(subject, message, sender_email, to)
context['mailsent'] = True
if user.is_authenticated():
context['user'] = user
except:
context['mailfailed'] = True
if user.is_authenticated():
context['user'] = user
return render_to_response('base.html', context)
def cfp(request):
if request.method == "POST":
context = {}
context.update(csrf(request))
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
if 'next' in request.GET:
next = request.GET['next']
return HttpResponseRedirect(next)
proposals = Proposal.objects.filter(user = request.user).count()
context['user'] = user
context['proposals'] = proposals
return render_to_response('cfp.html', context)
else:
context['invalid'] = True
context['form'] = UserLoginForm
context['user'] = user
return render_to_response('cfp.html', context)
else:
form = UserLoginForm()
context = RequestContext(request, {'request': request,
'user': request.user,
'form': form})
context.update(csrf(request))
return render_to_response('cfp.html',
context_instance=context)
def submitcfp(request):
context = {}
if request.user.is_authenticated():
social_user = request.user
context.update(csrf(request))
django_user = User.objects.get(username=social_user)
context['user'] = django_user
proposals_a = Proposal.objects.filter(user = request.user, proposal_type = 'ABSTRACT').count()
if request.method == 'POST':
form = ProposalForm(request.POST, request.FILES)
if form.is_valid():
data = form.save(commit=False)
data.user = django_user
data.save()
context['proposal_submit'] = True
sender_name = "SciPy India 2016"
sender_email = "scipy@fossee.in"
subject = "SciPy India - Proposal Submission Acknowledgment"
to = (social_user.email, )
message = """Dear """+django_user.first_name+""",\n\nThank you for showing interest & submitting a talk/workshop at SciPy India 2016 conference.We have received your proposal (abstract/workshop description)for the talk/workshop titled '"""+request.POST['title']+"""'.\nReviewal of the proposals will start once the CFP closes.\nYou will be notified regarding selection/rejection of your talk via email.\n\nThank You ! \n\nRegards,\nSciPy India 2016,\nFOSSEE - IIT Bombay"""
send_mail(subject, message, sender_email, to)
return render_to_response('cfp.html', context)
else:
context['proposal_form'] = form
context['proposals_a'] = proposals_a
return render_to_response('submit-cfp.html', context)
else:
form = ProposalForm()
context['proposals_a'] = proposals_a
context['proposal_form'] = form
return render_to_response('submit-cfp.html', context) #when link clicked
else:
context['login_required'] = True
return render_to_response('cfp.html', context)
def submitcfw(request):
context = {}
if request.user.is_authenticated():
social_user = request.user
context.update(csrf(request))
django_user = User.objects.get(username=social_user)
context['user'] = django_user
proposals_w = Proposal.objects.filter(user = request.user, proposal_type = 'WORKSHOP').count()
if request.method == 'POST':
form = WorkshopForm(request.POST, request.FILES)
if form.is_valid():
data = form.save(commit=False)
data.user = django_user
data.save()
context['proposal_submit'] = True
sender_name = "SciPy India 2016"
sender_email = "scipy@fossee.in"
subject = "SciPy India - Proposal Acknowledgment"
to = (social_user.email, )
message = """Dear """+django_user.first_name+""",\n\nThank you for showing interest & submitting a talk at SciPy India 2016 conference. We have received your proposal for the talk titled '"""+request.POST['title']+"""'.\nReviewal of the proposals will start once the CFP closes.\nYou will be notified regarding selection/rejection of your talk via email.\n\nThank You ! \n\nRegards,\nSciPy India 2016,\nFOSSEE - IIT Bombay"""
send_mail(subject, message, sender_email, to)
return render_to_response('cfp.html', context)
else:
context['proposal_form'] = form
context['proposals_w'] = proposals_w
return render_to_response('submit-cfw.html', context)
else:
form = WorkshopForm()
context['proposal_form'] = form
context['proposals_w'] = proposals_w
return render_to_response('submit-cfw.html', context)
else:
context['login_required'] = True
return render_to_response('cfp.html', context)
def view_abstracts(request):
user = request.user
context = {}
count_list =[]
if user.is_authenticated():
if user.is_superuser :
proposals = Proposal.objects.all()
context['proposals'] = proposals
for proposal in proposals:
count = Comments.objects.filter(proposal = proposal).count()
# print "-----------count ", count
count_list.append(count)
print "-----------count ", count_list
context['counts'] = count_list
context['user'] = user
return render(request, 'view-abstracts.html', context)
elif user is not None:
if Proposal.objects.filter(user = user).exists :
proposals = Proposal.objects.filter(user = user)
print "-----------count ", count_list
context['counts'] = count_list
context['proposals'] = proposals
context['user'] = user
return render(request, 'view-abstracts.html', context)
else:
return render(request, 'cfp.html')
else:
return render(request, 'cfp.html')
def abstract_details(request, proposal_id=None):
user = request.user
context = {}
if user.is_authenticated():
if user.is_superuser :
proposals = Proposal.objects.all()
context['proposals'] = proposals
context['user'] = user
return render(request, 'abstract_details.html', context)
elif user is not None:
print "---------------------->>>>>>>>>>", proposal_id
proposal = Proposal.objects.get(id=proposal_id)
comments = Comments.objects.filter(proposal=proposal)
context['proposal'] = proposal
context['user'] = user
context['comments'] = comments
return render(request, 'abstract-details.html', context)
else:
return render(request, 'cfp.html')
else:
return render(request, 'cfp.html')
def rate_proposal(request, proposal_id = None):
user = request.user
context = {}
if user.is_authenticated():
proposal = Proposal.objects.get(id=proposal_id)
if request.method == 'POST':
print"in rating"
rate = request.POST.get('rating')
print"rate-------" , rate
proposal.rate = rate
proposal.save()
comments = Comments.objects.filter(proposal=proposal)
context['proposal'] = proposal
context['comments'] = comments
context.update(csrf(request))
return render(request, 'comment-abstract.html', context)
else:
comments = Comments.objects.filter(proposal=proposal)
context['proposal'] = proposal
context['comments'] = comments
context.update(csrf(request))
return render(request, 'comment-abstract.html', context)
else:
return render(request, 'comment-abstract.html', context)
def comment_abstract(request, proposal_id = None):
user = request.user
context = {}
if user.is_authenticated():
proposal = Proposal.objects.get(id=proposal_id)
if request.method == 'POST':
comment = Comments()
comment.comment = request.POST['comment']
comment.user = user
comment.proposal = proposal
comment.save()
comments = Comments.objects.filter(proposal=proposal)
print "proposal", proposal.title
print "comment", comment.comment
print "moderator", request.user
print "proposal poster", proposal.user.email
sender_name = "SciPy India 2016"
sender_email = "scipy@fossee.in"
subject = "SciPy India - Comment on Your Proposal"
to = (proposal.user.email, )
message = """
Dear {0},
There is a comment posted on your proposal for the talk/workshop titled {1}.
Please login to link and check the comment and do the needful.
Thank You !
Regards,
SciPy India 2016,
FOSSEE - IIT Bombay.
""".format(
proposal.user.first_name,
proposal.title,
)
email = EmailMultiAlternatives(
subject,'',
sender_email, to,
headers={"Content-type":"text/html;charset=iso-8859-1"}
)
email.attach_alternative(message, "text/html")
email.send(fail_silently=True)
# message = """Dear """+proposal.user.first_name+"""There is a comment posted on your proposal for the talk/workshop titled '"""+ proposal.title +"""'.Please login to link and check the comment and do the needful.\n\nThank You ! \n\nRegards,\nSciPy India 2016,\nFOSSEE - IIT Bombay"""
# send_mail(subject, message, sender_email, to)
proposal.status="Commented"
proposal.save()
context['proposal'] = proposal
context['comments'] = comments
context.update(csrf(request))
return render(request, 'comment-abstract.html', context)
else:
comments = Comments.objects.filter(proposal=proposal)
context['proposal'] = proposal
context['comments'] = comments
context.update(csrf(request))
return render(request, 'comment-abstract.html', context)
else:
return render(request, 'comment-abstract.html', context)
def status(request, proposal_id= None):
user = request.user
context = {}
if user.is_authenticated():
proposal = Proposal.objects.get(id=proposal_id)
if 'accept' in request.POST:
proposal.status="Accepted"
proposal.save()
sender_name = "SciPy India 2016"
sender_email = "scipy@fossee.in"
subject = "SciPy India - Proposal Accepted"
to = (proposal.user.email, )
message = """Dear """+proposal.user.first_name+"""Congratulations your proposal for the talk/workshop titled '"""+ proposal.title+ """'is accepted you shall present the talk/ conduct the workshop at the conference.\n\nYou will be notified regarding instructions of your talk/workshop via email.\n\nThank You ! \n\nRegards,\nSciPy India 2016,\nFOSSEE - IIT Bombay"""
send_mail(subject, message, sender_email, to)
context.update(csrf(request))
elif 'reject' in request.POST:
proposal.status="Rejected"
proposal.save()
sender_name = "SciPy India 2016"
sender_email = "scipy@fossee.in"
subject = "SciPy India - Proposal Rejected"
to = (proposal.user.email, )
message = """Dear """+proposal.user.first_name+"""We regret to inform you that your proposal for the talk/workshop titled '"""+ proposal.title +"""'.\n\nThank You ! \n\nRegards,\nSciPy India 2016,\nFOSSEE - IIT Bombay"""
send_mail(subject, message, sender_email, to)
context.update(csrf(request))
elif 'resubmit' in request.POST:
proposal.status="Resubmit"
proposal.save()
sender_name = "SciPy India 2016"
sender_email = "scipy@fossee.in"
subject = "SciPy India - Resubmit"
to = (proposal.user.email, )
message = """Dear """+proposal.user.first_name+""",\n\nThank You ! \n\nRegards,\nSciPy India 2016,\nFOSSEE - IIT Bombay"""
send_mail(subject, message, sender_email, to)
context.update(csrf(request))
proposals = Proposal.objects.all()
context['proposals'] = proposals
context['user'] = user
return render(request, 'view-abstracts.html', context)
def delete(request):
user = request.user
context = {}
if user.is_authenticated():
if 'delete' in request.POST:
delete_proposal = request.POST.getlist('delete_proposal')
print"-------------- in delete", delete_proposal
for proposal_id in delete_proposal:
print proposal_id
proposal = Proposal.objects.get(id = proposal_id)
proposal.delete()
context.update(csrf(request))
elif 'dump' in request.POST:
print" in dump"
delete_proposal = request.POST.getlist('delete_proposal')
try:
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="Proposals.csv"'
writer = csv.writer(response)
header = [
'name',
'username',
'email',
'about_me',
'phone',
'title',
'abstract',
'prerequisite',
'duration',
'attachment',
'date_created',
'status',
'proposal_type',
'tags',
'rate',
]
writer.writerow(header)
for proposal_id in delete_proposal:
proposal = Proposal.objects.get(id = proposal_id)
print"proposal", proposal
row = [
'{0} {1}'.format(proposal.user.first_name, proposal.user.last_name),
proposal.user.username,
proposal.user.email,
proposal.about_me,
proposal.phone,
proposal.title,
proposal.abstract,
proposal.prerequisite,
proposal.duration,
proposal.attachment,
proposal.date_created,
proposal.status,
proposal.proposal_type,
proposal.tags,
proposal.rate
]
writer.writerow(row)
return response
except:
proposals = Proposal.objects.all()
context['proposals'] = proposals
context['user'] = user
return render(request, 'view-abstracts.html', context)
else:
proposals = Proposal.objects.all()
context['proposals'] = proposals
context['user'] = user
return render(request, 'view-abstracts.html', context)
else:
return render(request, 'view-abstracts.html', context)