it/itf/festival/views.py
2011-10-08 03:03:05 -04:00

227 lines
7.3 KiB
Python
Executable File

# Create your views here.
from django.shortcuts import render_to_response, get_object_or_404
from django.http import HttpResponse
from festival.models import *
from bestpractices.models import *
from utils import validateEmail
from forms import MeetingCommentForm
import random
try:
import json
except:
import simplejson as json
from django.core.mail import send_mail
from settings import ERANG_SUBSCRIBE_URL
import urllib2
def index(request):
index_data = {}
new_meetings = MeetingDay.objects.all().order_by('-meeting_date')[:5] # get 5 latest meetings
projects = Project.objects.all().order_by('start_date')
index_data['latest_meetings'] = new_meetings
index_data['projects'] = projects
return render_to_response("festival_index.html", { 'data' : index_data })
def meeting_details(request, meeting_id):
meeting_data = {}
meeting_data['meeting'] = get_object_or_404(Meeting, id=meeting_id)
# meeting_data['sessions'] = Session.objects.filter(day__meeting__id=meeting_id) # get meetings session objs
meeting_data['talks'] = Talk.objects.filter(session__day__meeting__id=meeting_id)
meeting_data['images'] = Image.objects.filter(meeting__id=meeting_id)
meeting_data['sessions'] = Session.objects.filter(day__meeting__id=meeting_id).order_by("day").order_by("session_no")
meeting_data['documents'] = Document.objects.filter(meeting__id=meeting_id).exclude(talk__isnull=False)
meeting_data['comments'] = Comment.objects.filter(meeting__id=meeting_id).exclude(is_displayed=False)
captcha_length = CommentCaptcha.objects.all().count()
random_captcha = random.randint(1,captcha_length)
captcha = CommentCaptcha.objects.get(pk=random_captcha)
captcha_d = {
'question': captcha.question,
'id': captcha.id
}
for s in meeting_data['sessions']:
s.talks = Talk.objects.select_related('image', 'audio', 'document').filter(session__id=s.id)
for t in s.talks:
t.images = Image.objects.filter(talk__id=t.id)
t.documents = Document.objects.filter(talk__id=t.id)
t.audio = Audio.objects.filter(talk__id=t.id)
t.video = Video.objects.filter(talk__id=t.id)
meeting_data['imagegallery'] = Image.objects.filter(meeting__id=meeting_id)
meeting_data['participants'] = Participant.objects.filter(meeting__id=meeting_id).order_by('name')
comment_form = MeetingCommentForm()
return render_to_response("meeting.html", { 'data' : meeting_data, 'comment_form': comment_form, 'id': meeting_id, 'captcha': captcha_d })
def meetings(request):
meetings = list(Meeting.objects.all())
for m in meetings:
m.dates = MeetingDay.objects.filter(meeting__id=m.id).order_by('-meeting_date')
m.end_date = m.dates[0].meeting_date
m.start_date = m.dates[len(m.dates) - 1].meeting_date
meetings.sort(sort_meetings)
return render_to_response("meetings.html", {'meetings': meetings})
def meeting_comment(request):
if request.GET.has_key('captcha') and request.is_ajax():
captcha_answer = str(request.GET['captcha']).strip()
captcha_id = int(request.GET['captcha_id'])
captcha_obj = CommentCaptcha.objects.get(pk=captcha_id)
correct_answer = str(captcha_obj.answer).strip()
# print captcha_answer.lower + " " + correct_answer
if correct_answer.lower() != captcha_answer.lower():
r = {
'status': 0,
'msg': 'Please answer the question in the box correctly. Thanks.'
}
else:
comment_form = MeetingCommentForm(request.GET)
if comment_form.is_valid():
c = comment_form.save(commit=False)
meeting_id = int(request.GET['meeting_id'])
meeting_obj = Meeting.objects.get(pk=meeting_id)
c.meeting = meeting_obj
c.save()
r = {
'status': 1,
'msg': 'Comment saved.'
}
else:
#TODO: Pass validation errors properly accessing form.errors
r = {
'status': 0,
'msg': 'Please enter a valid email address. We will never display it publicly, sell it, or use it to send you unsolicited email. Thanks.'
}
else:
r = {
'status': 0,
'msg': 'Please answer the question in the box correctly. Thanks.'
}
return HttpResponse(json.dumps(r), mimetype="application/json")
def sort_meetings(m1, m2):
if m1.start_date < m2.end_date:
return 1
else:
return -1
def wireframe(request):
return render_to_response("festival_wireframe.html")
def erang(request):
return render_to_response("erang.html")
def publications(request):
return render_to_response("publications.html")
def surveys(request):
return render_to_response("surveys.html")
def home(request):
return render_to_response("home.html")
def projects(request):
projects = Project.objects.all();
return render_to_response("projects.html", {'projects': projects})
def resources(request):
resources = Document.objects.filter(is_resource=True).order_by('title')
return render_to_response("resources.html", {'resources': resources})
def people(request):
participants = Participant.objects.all().order_by('name')
l = []
l2 = []
for p in participants:
if p.name in l:
pass
else:
l.append(p.name)
l2.append(p)
participants = l2
return render_to_response("people.html", {'participants': participants})
def project(request, project_id):
project = get_object_or_404(Project, id=project_id)
return render_to_response("project.html", {'project': project})
def save_email(request):
email = request.GET['email']
if validateEmail(email):
t = Signup(email=email)
t.save()
erang_subscribe_url = ERANG_SUBSCRIBE_URL + "email"
subscribed = urllib2.urlopen(erang_subscribe_url).read()
return HttpResponse("1")
else:
return HttpResponse("0")
def email_signups(request):
to_emails = ['sanjaybhangar@gmail.com']
arr = []
for s in Signup.objects.all():
arr.append(s.email)
eml_list = "\n".join(arr)
message_pre = "Someone pinged http://theatreforum.in/emailsharvarialltheemails/ , so here it is: \n\n"
message = message_pre + eml_list
send_mail("List of Signups on theatreforum.in", message, 'do_not_reply@theatreforum.in', to_emails, fail_silently=False)
return HttpResponse("ok")
def video(request, video_id):
video = get_object_or_404(Video, id=video_id)
return render_to_response("video.html", {'video': video})
def bestpractices(request):
return render_to_response("bestpractices.html", {
'downloads': BestPracticeDownload.objects.all()
})
def bpguidelines(request):
return render_to_response("bpguidelines.html", {
'guidelines': Guideline.objects.all()
})
def bpstories(request):
stories = []
for bp in BestPractice.objects.all():
stories.append({
'id': bp.id,
'title': bp.title
})
return render_to_response("bpstories.html", {
'stories': stories
})
def bpglossary(request):
return render_to_response("bpglossary.html", {
'terms': Glossary.objects.all()
})
def bpstory(request, story_id):
story_dict = BestPractice.objects.get(pk=story_id).info_dict()
return render_to_response("bpstory.html", story_dict)
def bpguideline(request, guideline_id):
guideline_dict = Guideline.objects.get(pk=guideline_id).get_dict()
return render_to_response("bpguideline.html", guideline_dict)
def bpfaq(request):
faqs = BestPracticeFAQ.objects.all()
return render_to_response("bpfaq.html", {
'faqs': faqs
})
def bpdownload(request):
return render_to_response("bpdownload.html")