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 @@ @@ -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 {% extends 'subjects/view.html' %} 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 {% load django_bootstrap_breadcrumbs %} 4 {% load django_bootstrap_breadcrumbs %}
5 5
6 {% block javascript%} 6 {% block javascript%}
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 {% block breadcrumbs %} 10 {% block breadcrumbs %}
11 {{ block.super }} 11 {{ block.super }}
12 {% breadcrumb topic 'subjects:topic_view' subject.slug topic.slug %} 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 {% endblock %} 14 {% endblock %}
15 15
16 {% block content %} 16 {% block content %}
@@ -51,8 +51,25 @@ @@ -51,8 +51,25 @@
51 </div> 51 </div>
52 <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content"> 52 <div id="{{subject.slug}}" class="panel-collapse in collapse category-panel-content">
53 {% autoescape off %} 53 {% autoescape off %}
54 - {{ webconference.content }} 54 + {{ webconference.presentation }}
55 {% endautoescape %} 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 </div> 73 </div>
57 </div> 74 </div>
58 {% endblock %} 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 @@ @@ -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,44 +26,44 @@ class NewWindowView(LoginRequiredMixin,
26 # log_resource = 'webpage' 26 # log_resource = 'webpage'
27 # log_context = {} 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 class InsideView(LoginRequiredMixin, 68 class InsideView(LoginRequiredMixin,
69 # '''LogMixin,''' 69 # '''LogMixin,'''
@@ -124,83 +124,78 @@ class CreateView(LoginRequiredMixin, @@ -124,83 +124,78 @@ class CreateView(LoginRequiredMixin,
124 # log_action = 'create' 124 # log_action = 'create'
125 # log_resource = 'webpage' 125 # log_resource = 'webpage'
126 # log_context = {} 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 # self.log_context['category_id'] = self.object.topic.subject.category.id 200 # self.log_context['category_id'] = self.object.topic.subject.category.id
206 # self.log_context['category_name'] = self.object.topic.subject.category.name 201 # self.log_context['category_name'] = self.object.topic.subject.category.name
@@ -217,34 +212,34 @@ class CreateView(LoginRequiredMixin, @@ -217,34 +212,34 @@ class CreateView(LoginRequiredMixin,
217 # 212 #
218 # super(CreateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) 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 class UpdateView(LoginRequiredMixin, 244 class UpdateView(LoginRequiredMixin,
250 # ''' LogMixin,''' 245 # ''' LogMixin,'''
@@ -359,12 +354,12 @@ generic.UpdateView): @@ -359,12 +354,12 @@ generic.UpdateView):
359 def get_success_url(self): 354 def get_success_url(self):
360 messages.success(self.request, _('The Web conference "%s" was updated successfully!')%(self.object.name)) 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 if self.object.show_window: 359 if self.object.show_window:
365 self.request.session['resources'] = {} 360 self.request.session['resources'] = {}
366 self.request.session['resources']['new_page'] = True 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 success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) 364 success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
370 365