Commit b2b8a9339c7055adc791d58cbf4b1f8ee60e6688
1 parent
d60e01e7
Exists in
master
and in
3 other branches
criado as telas de visualização da web conferencia
Showing
6 changed files
with
228 additions
and
115 deletions
Show diff stats
... | ... | @@ -0,0 +1,32 @@ |
1 | +# -*- coding: utf-8 -*- | |
2 | +# Generated by Django 1.10.4 on 2017-03-14 19:18 | |
3 | +from __future__ import unicode_literals | |
4 | + | |
5 | +from django.db import migrations, models | |
6 | +import django.db.models.deletion | |
7 | + | |
8 | + | |
9 | +class Migration(migrations.Migration): | |
10 | + | |
11 | + initial = True | |
12 | + | |
13 | + dependencies = [ | |
14 | + ('topics', '0007_auto_20170123_1911'), | |
15 | + ] | |
16 | + | |
17 | + operations = [ | |
18 | + migrations.CreateModel( | |
19 | + name='Webconference', | |
20 | + fields=[ | |
21 | + ('resource_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='topics.Resource')), | |
22 | + ('presentation', models.TextField(blank=True, verbose_name='Presentation')), | |
23 | + ('start', models.DateTimeField(verbose_name='Start date/hour')), | |
24 | + ('end', models.DateTimeField(verbose_name='End date/hour')), | |
25 | + ], | |
26 | + options={ | |
27 | + 'verbose_name_plural': 'Web Conferences', | |
28 | + 'verbose_name': 'Web Conference', | |
29 | + }, | |
30 | + bases=('topics.resource',), | |
31 | + ), | |
32 | + ] | ... | ... |
webconference/templates/webconference/view.html
1 | 1 | {% extends 'subjects/view.html' %} |
2 | 2 | |
3 | -{% load static i18n pagination permissions_tags subject_counter %} | |
3 | +{% load static i18n pagination permissions_tags subject_counter access_conference %} | |
4 | 4 | {% load django_bootstrap_breadcrumbs %} |
5 | 5 | |
6 | 6 | {% block javascript%} |
... | ... | @@ -10,7 +10,7 @@ |
10 | 10 | {% block breadcrumbs %} |
11 | 11 | {{ block.super }} |
12 | 12 | {% breadcrumb topic 'subjects:topic_view' subject.slug topic.slug %} |
13 | - {% breadcrumb web conference 'webconferences:view' webconference.slug %} | |
13 | + {% breadcrumb webconference 'webconferences:view' webconference.slug %} | |
14 | 14 | {% endblock %} |
15 | 15 | |
16 | 16 | {% block content %} |
... | ... | @@ -51,8 +51,25 @@ |
51 | 51 | </div> |
52 | 52 | <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content"> |
53 | 53 | {% autoescape off %} |
54 | - {{ webconference.content }} | |
54 | + {{ webconference.presentation }} | |
55 | 55 | {% endautoescape %} |
56 | + <div class=""> | |
57 | + <p><b>{% trans "Start date/hour" %}:</b> {{webconference.start}}</p> | |
58 | + </div> | |
59 | + <div class=""> | |
60 | + <p><b>{% trans "End date/hour" %}:</b> {{webconference.end}}</p> | |
61 | + </div> | |
62 | + | |
63 | + {% access_conference webconference.start as access %} | |
64 | + {% if access %} | |
65 | + <!-- Button to join in web conference --> | |
66 | + <div class="row"> | |
67 | + <div class="text-center"> | |
68 | + <a href="#" class="btn btn-raised btn-success">{% trans "Participate" %}</a> | |
69 | + </div> | |
70 | + </div> | |
71 | + {% endif %} | |
72 | + | |
56 | 73 | </div> |
57 | 74 | </div> |
58 | 75 | {% endblock %} | ... | ... |
webconference/templates/webconference/window_view.html
1 | -{{ webconference.content|safe }} | |
1 | +<!DOCTYPE html> | |
2 | + | |
3 | +{% load static i18n access_conference%} | |
4 | + | |
5 | +<html> | |
6 | +<head> | |
7 | + <title>{{ title }} | {{ theme.title }}</title> | |
8 | + | |
9 | + <script type="text/javascript" src="{% static 'js/jquery-3.1.0.min.js' %}"></script> | |
10 | + <link rel="stylesheet" type="text/css" href="{% static 'bootstrap-3.3.7/css/bootstrap.css' %}"> | |
11 | + | |
12 | + <meta http-equiv="Cache-Control" content="no-cache, no-store" /> | |
13 | + <link href="{{ theme.favicon_url }}" rel="shortcut icon" /> | |
14 | + | |
15 | + <style type="text/css"> | |
16 | + body { | |
17 | + padding: 0; | |
18 | + margin: 0; | |
19 | + overflow: hidden; | |
20 | + } | |
21 | + </style> | |
22 | +</head> | |
23 | +<body> | |
24 | + <div class="container"> | |
25 | + <br> | |
26 | + <div class="row"> | |
27 | + <div class="col-md-12"> | |
28 | + {% autoescape off %} | |
29 | + {{ webconference.presentation }} | |
30 | + {% endautoescape %} | |
31 | + <div class=""> | |
32 | + <p><b>{% trans "Start date/hour" %}:</b> {{webconference.start}}</p> | |
33 | + </div> | |
34 | + <div class=""> | |
35 | + <p><b>{% trans "End date/hour" %}:</b> {{webconference.end}}</p> | |
36 | + </div> | |
37 | + | |
38 | + {% access_conference webconference.start as access %} | |
39 | + {% if access %} | |
40 | + <!-- Button to join in web conference --> | |
41 | + <div class="row"> | |
42 | + <div class="text-center"> | |
43 | + <a href="#" class="btn btn-raised btn-success">{% trans "Participate" %}</a> | |
44 | + </div> | |
45 | + </div> | |
46 | + {% endif %} | |
47 | + | |
48 | + </div> | |
49 | + </div> | |
50 | + </div> | |
51 | + | |
52 | + {#<!-- <input type="hidden" id="log_finish_url" value="{% url 'youtube:finish' youtube.slug %}" />#} | |
53 | + {#<input type="hidden" id="log_url" value="{% url 'youtube:watch' youtube.slug %}" />#} | |
54 | + {#<input type="hidden" id="log_id" value="" /> -->#} | |
55 | + {#<!-- <iframe src="{{ youtube.get_embed_url }}?enablejsapi=1" frameborder="0" allowfullscreen id="video"></iframe> -->#} | |
56 | + | |
57 | +</body> | |
58 | +</html> | ... | ... |
... | ... | @@ -0,0 +1,12 @@ |
1 | +import datetime | |
2 | +from django import template | |
3 | +from django.utils import timezone | |
4 | +register = template.Library() | |
5 | + | |
6 | +@register.simple_tag | |
7 | +def access_conference(hour_conference): | |
8 | + hour = datetime.datetime.now() + datetime.timedelta(minutes=10) # utilizado para poder começar a seção 10 min antes do tempo marcado | |
9 | + hour_conference = hour_conference - datetime.timedelta(hours=3) # utilizado para converter a hora para UTC-3 | |
10 | + if (hour_conference.timetuple() < hour.timetuple()): | |
11 | + return True | |
12 | + return False | ... | ... |
webconference/views.py
... | ... | @@ -26,44 +26,44 @@ class NewWindowView(LoginRequiredMixin, |
26 | 26 | # log_resource = 'webpage' |
27 | 27 | # log_context = {} |
28 | 28 | |
29 | - login_url = reverse_lazy("users:login") | |
30 | - redirect_field_name = 'next' | |
31 | - | |
32 | - template_name = 'webconference/window_view.html' | |
33 | - model = Webconference | |
34 | - context_object_name = 'webconference' | |
35 | - | |
36 | - def dispatch(self, request, *args, **kwargs): | |
37 | - slug = self.kwargs.get('slug', '') | |
38 | - webconference = get_object_or_404(Webconference, slug = slug) | |
39 | - | |
40 | - if not has_resource_permissions(request.user, webconference): | |
41 | - return redirect(reverse_lazy('subjects:home')) | |
42 | - | |
43 | - return super(NewWindowView, self).dispatch(request, *args, **kwargs) | |
44 | - | |
45 | - def get_context_data(self, **kwargs): | |
46 | - context = super(NewWindowView, self).get_context_data(**kwargs) | |
47 | - | |
48 | - # self.log_context['category_id'] = self.object.topic.subject.category.id | |
49 | - # self.log_context['category_name'] = self.object.topic.subject.category.name | |
50 | - # self.log_context['category_slug'] = self.object.topic.subject.category.slug | |
51 | - # self.log_context['subject_id'] = self.object.topic.subject.id | |
52 | - # self.log_context['subject_name'] = self.object.topic.subject.name | |
53 | - # self.log_context['subject_slug'] = self.object.topic.subject.slug | |
54 | - # self.log_context['topic_id'] = self.object.topic.id | |
55 | - # self.log_context['topic_name'] = self.object.topic.name | |
56 | - # self.log_context['topic_slug'] = self.object.topic.slug | |
57 | - # self.log_context['webpage_id'] = self.object.id | |
58 | - # self.log_context['webpage_name'] = self.object.name | |
59 | - # self.log_context['webpage_slug'] = self.object.slug | |
60 | - # self.log_context['timestamp_start'] = str(int(time.time())) | |
61 | - | |
62 | - # super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | |
29 | + login_url = reverse_lazy("users:login") | |
30 | + redirect_field_name = 'next' | |
31 | + | |
32 | + template_name = 'webconference/window_view.html' | |
33 | + model = Webconference | |
34 | + context_object_name = 'webconference' | |
35 | + | |
36 | + def dispatch(self, request, *args, **kwargs): | |
37 | + slug = self.kwargs.get('slug', '') | |
38 | + webconference = get_object_or_404(Webconference, slug = slug) | |
39 | + | |
40 | + if not has_resource_permissions(request.user, webconference): | |
41 | + return redirect(reverse_lazy('subjects:home')) | |
42 | + | |
43 | + return super(NewWindowView, self).dispatch(request, *args, **kwargs) | |
44 | + | |
45 | + def get_context_data(self, **kwargs): | |
46 | + context = super(NewWindowView, self).get_context_data(**kwargs) | |
47 | + context['title'] = _("%s - Web Conference")%(self.object.name) | |
48 | + # self.log_context['category_id'] = self.object.topic.subject.category.id | |
49 | + # self.log_context['category_name'] = self.object.topic.subject.category.name | |
50 | + # self.log_context['category_slug'] = self.object.topic.subject.category.slug | |
51 | + # self.log_context['subject_id'] = self.object.topic.subject.id | |
52 | + # self.log_context['subject_name'] = self.object.topic.subject.name | |
53 | + # self.log_context['subject_slug'] = self.object.topic.subject.slug | |
54 | + # self.log_context['topic_id'] = self.object.topic.id | |
55 | + # self.log_context['topic_name'] = self.object.topic.name | |
56 | + # self.log_context['topic_slug'] = self.object.topic.slug | |
57 | + # self.log_context['webpage_id'] = self.object.id | |
58 | + # self.log_context['webpage_name'] = self.object.name | |
59 | + # self.log_context['webpage_slug'] = self.object.slug | |
60 | + # self.log_context['timestamp_start'] = str(int(time.time())) | |
61 | + | |
62 | + # super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) | |
63 | 63 | # |
64 | - # self.request.session['log_id'] = Log.objects.latest('id').id | |
64 | + # self.request.session['log_id'] = Log.objects.latest('id').id | |
65 | 65 | |
66 | - return context | |
66 | + return context | |
67 | 67 | |
68 | 68 | class InsideView(LoginRequiredMixin, |
69 | 69 | # '''LogMixin,''' |
... | ... | @@ -124,83 +124,78 @@ class CreateView(LoginRequiredMixin, |
124 | 124 | # log_action = 'create' |
125 | 125 | # log_resource = 'webpage' |
126 | 126 | # log_context = {} |
127 | + login_url = reverse_lazy("users:login") | |
128 | + redirect_field_name = 'next' | |
127 | 129 | |
128 | - login_url = reverse_lazy("users:login") | |
129 | - redirect_field_name = 'next' | |
130 | - | |
131 | - template_name = 'webconference/create.html' | |
132 | - form_class = WebconferenceForm | |
133 | - | |
134 | - def dispatch(self, request, *args, **kwargs): | |
135 | - slug = self.kwargs.get('slug', '') | |
136 | - topic = get_object_or_404(Topic, slug = slug) | |
137 | - | |
138 | - if not has_subject_permissions(request.user, topic.subject): | |
139 | - return redirect(reverse_lazy('subjects:home')) | |
140 | - | |
141 | - return super(CreateView, self).dispatch(request, *args, **kwargs) | |
130 | + template_name = 'webconference/create.html' | |
131 | + form_class = WebconferenceForm | |
142 | 132 | |
143 | - def get(self, request, *args, **kwargs): | |
144 | - self.object = None | |
133 | + def dispatch(self, request, *args, **kwargs): | |
134 | + slug = self.kwargs.get('slug', '') | |
135 | + topic = get_object_or_404(Topic, slug = slug) | |
145 | 136 | |
146 | - form_class = self.get_form_class() | |
147 | - form = self.get_form(form_class) | |
137 | + if not has_subject_permissions(request.user, topic.subject): | |
138 | + return redirect(reverse_lazy('subjects:home')) | |
139 | + return super(CreateView, self).dispatch(request, *args, **kwargs) | |
148 | 140 | |
149 | - slug = self.kwargs.get('slug', '') | |
150 | - topic = get_object_or_404(Topic, slug = slug) | |
141 | + def get(self, request, *args, **kwargs): | |
142 | + self.object = None | |
151 | 143 | |
152 | - pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) | |
144 | + form_class = self.get_form_class() | |
145 | + form = self.get_form(form_class) | |
153 | 146 | |
154 | - return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) | |
147 | + slug = self.kwargs.get('slug', '') | |
148 | + topic = get_object_or_404(Topic, slug = slug) | |
149 | + pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) | |
150 | + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) | |
155 | 151 | |
156 | - def post(self, request, *args, **kwargs): | |
157 | - self.object = None | |
152 | + def post(self, request, *args, **kwargs): | |
153 | + self.object = None | |
158 | 154 | |
159 | - form_class = self.get_form_class() | |
160 | - form = self.get_form(form_class) | |
161 | - | |
162 | - slug = self.kwargs.get('slug', '') | |
163 | - topic = get_object_or_404(Topic, slug = slug) | |
155 | + form_class = self.get_form_class() | |
156 | + form = self.get_form(form_class) | |
164 | 157 | |
165 | - pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) | |
158 | + slug = self.kwargs.get('slug', '') | |
159 | + topic = get_object_or_404(Topic, slug = slug) | |
166 | 160 | |
167 | - if (form.is_valid() and pendencies_form.is_valid()): | |
168 | - return self.form_valid(form, pendencies_form) | |
169 | - else: | |
170 | - return self.form_invalid(form, pendencies_form) | |
161 | + pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]}) | |
171 | 162 | |
172 | - def get_initial(self): | |
173 | - initial = super(CreateView, self).get_initial() | |
163 | + if (form.is_valid() and pendencies_form.is_valid()): | |
164 | + return self.form_valid(form, pendencies_form) | |
165 | + else: | |
166 | + return self.form_invalid(form, pendencies_form) | |
174 | 167 | |
175 | - slug = self.kwargs.get('slug', '') | |
168 | + def get_initial(self): | |
169 | + initial = super(CreateView, self).get_initial() | |
176 | 170 | |
177 | - topic = get_object_or_404(Topic, slug = slug) | |
178 | - initial['subject'] = topic.subject | |
171 | + slug = self.kwargs.get('slug', '') | |
179 | 172 | |
180 | - return initial | |
173 | + topic = get_object_or_404(Topic, slug = slug) | |
174 | + initial['subject'] = topic.subject | |
181 | 175 | |
182 | - def form_invalid(self, form, pendencies_form): | |
183 | - return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) | |
176 | + return initial | |
184 | 177 | |
185 | - def form_valid(self, form, pendencies_form): | |
186 | - self.object = form.save(commit = False) | |
178 | + def form_invalid(self, form, pendencies_form): | |
179 | + return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form)) | |
187 | 180 | |
188 | - slug = self.kwargs.get('slug', '') | |
189 | - topic = get_object_or_404(Topic, slug = slug) | |
181 | + def form_valid(self, form, pendencies_form): | |
190 | 182 | |
191 | - self.object.topic = topic | |
192 | - self.object.order = topic.resource_topic.count() + 1 | |
183 | + self.object = form.save(commit = False) | |
184 | + slug = self.kwargs.get('slug', '') | |
185 | + topic = get_object_or_404(Topic, slug = slug) | |
193 | 186 | |
194 | - if not self.object.topic.visible and not self.object.topic.repository: | |
195 | - self.object.visible = False | |
187 | + self.object.topic = topic | |
188 | + self.object.order = topic.resource_topic.count() + 1 | |
196 | 189 | |
197 | - self.object.save() | |
190 | + if not self.object.topic.visible and not self.object.topic.repository: | |
191 | + self.object.visible = False | |
198 | 192 | |
199 | - pend_form = pendencies_form.save(commit = False) | |
200 | - pend_form.resource = self.object | |
193 | + self.object.save() | |
194 | + pend_form = pendencies_form.save(commit = False) | |
195 | + pend_form.resource = self.object | |
201 | 196 | |
202 | - if not pend_form.action == "": | |
203 | - pend_form.save() | |
197 | + if not pend_form.action == "": | |
198 | + pend_form.save() | |
204 | 199 | |
205 | 200 | # self.log_context['category_id'] = self.object.topic.subject.category.id |
206 | 201 | # self.log_context['category_name'] = self.object.topic.subject.category.name |
... | ... | @@ -217,34 +212,34 @@ class CreateView(LoginRequiredMixin, |
217 | 212 | # |
218 | 213 | # super(CreateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) |
219 | 214 | |
220 | - return redirect(self.get_success_url()) | |
215 | + return redirect(self.get_success_url()) | |
221 | 216 | |
222 | - def get_context_data(self, **kwargs): | |
223 | - context = super(CreateView, self).get_context_data(**kwargs) | |
217 | + def get_context_data(self, **kwargs): | |
218 | + context = super(CreateView, self).get_context_data(**kwargs) | |
224 | 219 | |
225 | - context['title'] = _('Create Web Conference') | |
220 | + context['title'] = _('Create Web Conference') | |
226 | 221 | |
227 | - slug = self.kwargs.get('slug', '') | |
228 | - topic = get_object_or_404(Topic, slug = slug) | |
222 | + slug = self.kwargs.get('slug', '') | |
223 | + topic = get_object_or_404(Topic, slug = slug) | |
229 | 224 | |
230 | - context['topic'] = topic | |
231 | - context['subject'] = topic.subject | |
225 | + context['topic'] = topic | |
226 | + context['subject'] = topic.subject | |
232 | 227 | |
233 | - return context | |
228 | + return context | |
234 | 229 | |
235 | - def get_success_url(self): | |
236 | - messages.success(self.request, _('The Web conference "%s" was added to the Topic "%s" of the virtual environment "%s" successfully!')%(self.object.name, self.object.topic.name, self.object.topic.subject.name)) | |
230 | + def get_success_url(self): | |
231 | + messages.success(self.request, _('The Web conference "%s" was added to the Topic "%s" of the virtual environment "%s" successfully!')%(self.object.name, self.object.topic.name, self.object.topic.subject.name)) | |
237 | 232 | |
238 | - success_url = reverse_lazy('webconference:view', kwargs = {'slug': self.object.slug}) | |
233 | + success_url = reverse_lazy('webconferences:view', kwargs = {'slug': self.object.slug}) | |
239 | 234 | |
240 | - if self.object.show_window: | |
241 | - self.request.session['resources'] = {} | |
242 | - self.request.session['resources']['new_page'] = True | |
243 | - self.request.session['resources']['new_page_url'] = reverse('webconference:window_view', kwargs = {'slug': self.object.slug}) | |
235 | + if self.object.show_window: | |
236 | + self.request.session['resources'] = {} | |
237 | + self.request.session['resources']['new_page'] = True | |
238 | + self.request.session['resources']['new_page_url'] = reverse('webconferences:window_view', kwargs = {'slug': self.object.slug}) | |
244 | 239 | |
245 | - success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) | |
240 | + success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) | |
246 | 241 | |
247 | - return success_url | |
242 | + return success_url | |
248 | 243 | |
249 | 244 | class UpdateView(LoginRequiredMixin, |
250 | 245 | # ''' LogMixin,''' |
... | ... | @@ -359,12 +354,12 @@ generic.UpdateView): |
359 | 354 | def get_success_url(self): |
360 | 355 | messages.success(self.request, _('The Web conference "%s" was updated successfully!')%(self.object.name)) |
361 | 356 | |
362 | - success_url = reverse_lazy('webconference:view', kwargs = {'slug': self.object.slug}) | |
357 | + success_url = reverse_lazy('webconferences:view', kwargs = {'slug': self.object.slug}) | |
363 | 358 | |
364 | 359 | if self.object.show_window: |
365 | 360 | self.request.session['resources'] = {} |
366 | 361 | self.request.session['resources']['new_page'] = True |
367 | - self.request.session['resources']['new_page_url'] = reverse('webconference:window_view', kwargs = {'slug': self.object.slug}) | |
362 | + self.request.session['resources']['new_page_url'] = reverse('webconferences:window_view', kwargs = {'slug': self.object.slug}) | |
368 | 363 | |
369 | 364 | success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) |
370 | 365 | ... | ... |