1 # -*- coding: utf-8 -*- |
1 from django.core.urlresolvers import reverse |
2 from __future__ import absolute_import |
2 from django.contrib.auth.decorators import login_required |
3 |
3 from django.contrib.auth.forms import AuthenticationForm |
4 # python imports |
4 from django.contrib.auth.models import User |
5 from urlparse import urlparse |
|
6 |
|
7 # django |
|
8 from django.conf import settings |
|
9 from django.shortcuts import render_to_response |
5 from django.shortcuts import render_to_response |
10 from django.template import RequestContext |
6 from django.template import RequestContext |
11 from django.core.urlresolvers import reverse |
|
12 from django.views.generic.list_detail import object_list |
7 from django.views.generic.list_detail import object_list |
13 from django.views.generic.list_detail import object_detail |
8 from django.views.generic.list_detail import object_detail |
14 |
9 |
15 from django.contrib.auth.decorators import login_required |
|
16 from django.contrib.auth.forms import AuthenticationForm |
|
17 from django.contrib.auth.models import User |
|
18 |
|
19 # PIL |
|
20 from PIL import Image |
10 from PIL import Image |
21 |
11 |
22 # tagging |
|
23 from tagging.models import Tag |
12 from tagging.models import Tag |
24 |
13 |
25 #scipycon |
14 from project.scipycon.talk.models import Talk |
|
15 from project.scipycon.talk.forms import TalkSubmitForm |
|
16 from project.scipycon.talk.forms import TalkEditForm |
|
17 from project.scipycon.talk.models import DURATION_CHOICES |
|
18 from project.scipycon.talk.models import AUDIENCE_CHOICES |
26 from project.scipycon.utils import set_message_cookie |
19 from project.scipycon.utils import set_message_cookie |
27 from project.scipycon.utils import slugify |
20 from project.scipycon.utils import slugify |
28 from project.scipycon.user.models import UserProfile |
21 from project.scipycon.user.models import UserProfile |
29 from project.scipycon.user.forms import RegisterForm |
22 from project.scipycon.user.forms import RegisterForm |
30 from project.scipycon.user.utils import scipycon_createuser |
23 from project.scipycon.user.utils import scipycon_createuser |
31 |
24 |
32 from .models import Talk |
|
33 from .forms import TalkSubmitForm |
|
34 from .forms import TalkEditForm |
|
35 from .models import DURATION_CHOICES |
|
36 from .models import AUDIENCE_CHOICES |
|
37 |
25 |
38 def list_talks(request): |
26 def list_talks(request, scope): |
39 objects = Talk.objects.filter(approved=True) |
27 objects = Talk.objects.filter(approved=True) |
40 extra_context = dict(count=objects.count()) |
28 extra_context = dict(count=objects.count()) |
41 return object_list(request, objects, extra_context=extra_context) |
29 return object_list(request, objects, extra_context=extra_context) |
42 |
30 |
43 def talk(request, id): |
31 def talk(request, scope, id): |
44 objects = Talk.objects.filter(approved=True) |
32 objects = Talk.objects.filter(approved=True) |
45 audience = {} |
33 audience = {} |
46 for choice in AUDIENCE_CHOICES: |
34 for choice in AUDIENCE_CHOICES: |
47 audience[choice[0]] = choice[1] |
35 audience[choice[0]] = choice[1] |
48 extra_context = dict(choices=audience) |
36 extra_context = dict(choices=audience) |
49 return object_detail(request, objects, id, extra_context=extra_context) |
37 return object_detail(request, objects, id, extra_context=extra_context) |
50 |
38 |
51 @login_required |
39 @login_required |
52 def edit_talk(request, id, template_name='talk/edit-talk.html'): |
40 def edit_talk(request, scope, id, template_name='talk/edit-talk.html'): |
53 '''Allows users that submitted a talk to edit it until the talk is approved. |
41 """Allows users that submitted a talk to edit it until the talk is approved. |
54 ''' |
42 """ |
|
43 |
55 talk = Talk.objects.get(pk=id) |
44 talk = Talk.objects.get(pk=id) |
56 |
45 |
57 if talk.approved == True: |
46 if talk.approved == True: |
58 redirect_to = reverse('scipycon_account') |
47 redirect_to = reverse('scipycon_account', kwargs={'scope': scope}) |
59 return set_message_cookie(redirect_to, |
48 return set_message_cookie(redirect_to, |
60 msg = u'Sorry but you cannot edit the talk once'\ |
49 msg = u'Sorry but you cannot edit the talk once'\ |
61 + ' it has been accepted.') |
50 + ' it has been accepted.') |
|
51 |
62 if talk.speaker != request.user: |
52 if talk.speaker != request.user: |
63 redirect_to = reverse('scipycon_account') |
53 redirect_to = reverse('scipycon_account', kwargs={'scope': scope}) |
64 return set_message_cookie(redirect_to, |
54 return set_message_cookie(redirect_to, |
65 msg = u'Redirected to account because the talk you selected' \ |
55 msg = u'Redirected to account because the talk you selected' \ |
66 + ' is not your own.') |
56 + ' is not your own.') |
67 |
57 |
68 if request.method == 'POST': |
58 if request.method == 'POST': |
102 }) |
92 }) |
103 |
93 |
104 return render_to_response(template_name, RequestContext(request, locals())) |
94 return render_to_response(template_name, RequestContext(request, locals())) |
105 |
95 |
106 @login_required() |
96 @login_required() |
107 def submit_talk(request, template_name='talk/submit-talk.html'): |
97 def submit_talk(request, scope, template_name='talk/submit-talk.html'): |
108 '''Allows user to edit profile |
98 """Allows user to edit profile |
109 ''' |
99 """ |
|
100 |
|
101 from project.scipycon.base.models import Event |
|
102 |
110 user = request.user |
103 user = request.user |
111 if user.is_authenticated(): |
104 if user.is_authenticated(): |
112 try: |
105 try: |
113 profile = user.get_profile() |
106 profile = user.get_profile() |
114 except: |
107 except: |
115 profile, new = UserProfile.objects.get_or_create(user=user) |
108 scope_entity = Event.objects.get(scope=scope) |
|
109 |
|
110 profile, new = UserProfile.objects.get_or_create( |
|
111 user=user, scope=scope_entity) |
116 if new: |
112 if new: |
117 profile.save() |
113 profile.save() |
|
114 |
118 message = None |
115 message = None |
119 |
116 |
120 if request.method == 'POST': |
117 if request.method == 'POST': |
121 talk_form = TalkSubmitForm(data=request.POST) |
118 talk_form = TalkSubmitForm(data=request.POST) |
122 |
119 |
123 register_form = RegisterForm(data=request.POST, |
120 register_form = RegisterForm(data=request.POST, files=request.FILES) |
124 files=request.FILES) |
|
125 |
121 |
126 if request.POST.get('action', None) == 'login': |
122 if request.POST.get('action', None) == 'login': |
127 login_form = AuthenticationForm(data=request.POST) |
123 login_form = AuthenticationForm(data=request.POST) |
128 if login_form.is_valid(): |
124 if login_form.is_valid(): |
129 |
125 |
130 from django.contrib.auth import login |
126 from django.contrib.auth import login |
131 login(request, login_form.get_user()) |
127 login(request, login_form.get_user()) |
132 |
128 |
133 redirect_to = reverse('scipycon_submit_talk') |
129 redirect_to = reverse('scipycon_submit_talk', |
|
130 kwargs={'scope': scope}) |
134 return set_message_cookie(redirect_to, |
131 return set_message_cookie(redirect_to, |
135 msg = u'You have been logged in.') |
132 msg = u'You have been logged in.') |
136 |
133 |
137 if request.POST.get('action', None) == 'register': |
134 if request.POST.get('action', None) == 'register': |
138 # add the new user |
135 # add the new user |
148 speaker = User.objects.get(pk=user.id), |
145 speaker = User.objects.get(pk=user.id), |
149 authors_bio = talk_form.data.get('authors_bio'), |
146 authors_bio = talk_form.data.get('authors_bio'), |
150 contact = talk_form.data.get('contact'), |
147 contact = talk_form.data.get('contact'), |
151 title = talk_form.data.get('title'), |
148 title = talk_form.data.get('title'), |
152 abstract = talk_form.data.get('abstract'), |
149 abstract = talk_form.data.get('abstract'), |
153 # outline = talk_form.data.get('outline'), |
|
154 topic = talk_form.data.get('topic'), |
150 topic = talk_form.data.get('topic'), |
155 # topic_other = talk_form.data.get('topic_other'), |
|
156 duration = talk_form.data.get('duration'), |
151 duration = talk_form.data.get('duration'), |
157 audience = talk_form.data.get('audience'), |
152 audience = talk_form.data.get('audience'), |
158 # audience_other = talk_form.data.get('audience_other'), |
|
159 approved = False, |
153 approved = False, |
160 # tags = talk_form.data.get('tags') |
154 # tags = talk_form.data.get('tags') |
161 ) |
155 ) |
162 talk.save() |
156 talk.save() |
163 # Saved, ... redirect back to account |
157 # Saved, ... redirect back to account |
164 redirect_to = reverse('scipycon_account') |
158 redirect_to = reverse('scipycon_account', |
|
159 kwargs={'scope': scope}) |
165 return set_message_cookie(redirect_to, |
160 return set_message_cookie(redirect_to, |
166 msg = u'Thanks, your talk has been submitted.') |
161 msg = u'Thanks, your talk has been submitted.') |
167 else: |
162 else: |
168 redirect_to = reverse('scipycon_submit_talk') |
163 redirect_to = reverse('scipycon_submit_talk', |
|
164 kwargs={'scope': scope}) |
169 return set_message_cookie(redirect_to, |
165 return set_message_cookie(redirect_to, |
170 msg = u'Something is wrong here.') |
166 msg = u'Something is wrong here.') |
171 |
167 |
172 else: |
168 else: |
173 talk_form = TalkSubmitForm() |
169 talk_form = TalkSubmitForm() |