# -*- 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)