Commit b2b8a9339c7055adc791d58cbf4b1f8ee60e6688

Authored by Jailson Dias
1 parent d60e01e7

criado as telas de visualização da web conferencia

webconference/migrations/0001_initial.py 0 → 100644
... ... @@ -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>
... ...
webconference/templatetags/__init__.py 0 → 100644
webconference/templatetags/access_conference.py 0 → 100644
... ... @@ -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  
... ...