Commit 73bbb4447ec08e31834c2b461112420d03840b8b

Authored by Jailson Dias
1 parent a9afab64

Colocando os logs para visualizar, iniciar, online e terminado uma webconferencia

webconference/templates/webconference/jitsi.html
@@ -40,13 +40,11 @@ @@ -40,13 +40,11 @@
40 api.executeCommand('email', '{{user.email}}'); 40 api.executeCommand('email', '{{user.email}}');
41 api.executeCommand('avatarUrl', '{{user_image}}'); 41 api.executeCommand('avatarUrl', '{{user_image}}');
42 api.addEventListener('videoConferenceLeft', function(res){ 42 api.addEventListener('videoConferenceLeft', function(res){
43 - console.log(res);  
44 - console.log("saiu");  
45 $.ajax({ 43 $.ajax({
46 method: "GET", 44 method: "GET",
47 - url: "{% url 'webconferences:saiu'%}", 45 + url: "{% url 'webconferences:exit'%}",
48 dataType: 'json', 46 dataType: 'json',
49 - data: $.extend(res,{'email':'{{user_email}}'}), 47 + data: res,
50 success: function(response) { 48 success: function(response) {
51 window.location.replace(response['url']); 49 window.location.replace(response['url']);
52 console.log(response); 50 console.log(response);
@@ -56,31 +54,21 @@ @@ -56,31 +54,21 @@
56 } 54 }
57 }); 55 });
58 }); 56 });
  57 + var repeater = setInterval(function () {
  58 + $.ajax({
  59 + method: "GET",
  60 + url: "{% url 'webconferences:online'%}",
  61 + dataType: 'json',
  62 + data: {'slug':'{{name_room}}'},
  63 + success: function(response) {
  64 + console.log(response);
  65 + },
  66 + error: function(response) {
  67 + console.log(response);
  68 + }
  69 + });
  70 + }, 60*1000);
59 } 71 }
60 - // callfunction();  
61 - var callCount = 1;  
62 - var repeater = setInterval(function () {  
63 - console.log(callCount);  
64 - if (callCount < 10) {  
65 -  
66 - var doc = document.getElementById('jitsiConferenceFrame0').document;  
67 - // var iframe = document.getElementById('jitsiConferenceFrame0');  
68 - // var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;  
69 -  
70 - // var ls = doc.getElementById('toolbar_button_link');  
71 - console.log(doc);  
72 - // $("#jitsiConferenceFrame0").contents().find("#toolbar_button_link").remove();  
73 - // $("a#toolbar_button_link.button.icon-link").remove();  
74 - // console.log($("#toolbar_contact_list").remove());  
75 - // $("#toolbar_button_link").remove(); //utilizandos para retirar o botão de compartilhar do jitsi  
76 - callCount += 1;  
77 - console.log("aqui");  
78 - } else {  
79 - clearInterval(repeater);  
80 - }  
81 - }, 1000);  
82 -  
83 - // api.executeCommands({displayName: ['Jailson']});  
84 </script> 72 </script>
85 73
86 </body> 74 </body>
webconference/urls.py
@@ -11,6 +11,7 @@ urlpatterns = [ @@ -11,6 +11,7 @@ urlpatterns = [
11 url(r'^window_view/(?P<slug>[\w_-]+)/$', views.NewWindowView.as_view(), name = 'window_view'), 11 url(r'^window_view/(?P<slug>[\w_-]+)/$', views.NewWindowView.as_view(), name = 'window_view'),
12 url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'), 12 url(r'^view/(?P<slug>[\w_-]+)/$', views.InsideView.as_view(), name = 'view'),
13 url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'), 13 url(r'^conference/(?P<slug>[\w_-]+)/$',views.Conference.as_view(), name = 'conference'),
14 - url(r'^saiu/$',views.saiu, name = 'saiu'), 14 + url(r'^finish/$',views.finish, name = 'exit'),
  15 + url(r'^online/$',views.online, name = 'online'),
15 url(r'^settings/$', views.ConferenceSettings.as_view(), name = 'settings'), 16 url(r'^settings/$', views.ConferenceSettings.as_view(), name = 'settings'),
16 ] 17 ]
webconference/views.py
@@ -11,6 +11,7 @@ from amadeus.permissions import has_subject_permissions, has_resource_permission @@ -11,6 +11,7 @@ from amadeus.permissions import has_subject_permissions, has_resource_permission
11 import time 11 import time
12 from log.models import Log 12 from log.models import Log
13 from log.mixins import LogMixin 13 from log.mixins import LogMixin
  14 +from log.decorators import log_decorator
14 15
15 from topics.models import Topic 16 from topics.models import Topic
16 17
@@ -20,13 +21,11 @@ from braces import views as braces_mixins @@ -20,13 +21,11 @@ from braces import views as braces_mixins
20 from .forms import WebconferenceForm, SettingsForm 21 from .forms import WebconferenceForm, SettingsForm
21 from .models import Webconference, ConferenceSettings as Settings 22 from .models import Webconference, ConferenceSettings as Settings
22 23
23 -class NewWindowView(LoginRequiredMixin,  
24 - # '''LogMixin,'''  
25 - generic.DetailView):  
26 - # log_component = 'resources'  
27 - # log_action = 'view'  
28 - # log_resource = 'webpage'  
29 - # log_context = {} 24 +class NewWindowView(LoginRequiredMixin,LogMixin, generic.DetailView):
  25 + log_component = 'resources'
  26 + log_action = 'view'
  27 + log_resource = 'webconference'
  28 + log_context = {}
30 29
31 login_url = reverse_lazy("users:login") 30 login_url = reverse_lazy("users:login")
32 redirect_field_name = 'next' 31 redirect_field_name = 'next'
@@ -47,33 +46,46 @@ class NewWindowView(LoginRequiredMixin, @@ -47,33 +46,46 @@ class NewWindowView(LoginRequiredMixin,
47 def get_context_data(self, **kwargs): 46 def get_context_data(self, **kwargs):
48 context = super(NewWindowView, self).get_context_data(**kwargs) 47 context = super(NewWindowView, self).get_context_data(**kwargs)
49 context['title'] = _("%s - Web Conference")%(self.object.name) 48 context['title'] = _("%s - Web Conference")%(self.object.name)
50 - # self.log_context['category_id'] = self.object.topic.subject.category.id  
51 - # self.log_context['category_name'] = self.object.topic.subject.category.name  
52 - # self.log_context['category_slug'] = self.object.topic.subject.category.slug  
53 - # self.log_context['subject_id'] = self.object.topic.subject.id  
54 - # self.log_context['subject_name'] = self.object.topic.subject.name  
55 - # self.log_context['subject_slug'] = self.object.topic.subject.slug  
56 - # self.log_context['topic_id'] = self.object.topic.id  
57 - # self.log_context['topic_name'] = self.object.topic.name  
58 - # self.log_context['topic_slug'] = self.object.topic.slug  
59 - # self.log_context['webpage_id'] = self.object.id  
60 - # self.log_context['webpage_name'] = self.object.name  
61 - # self.log_context['webpage_slug'] = self.object.slug  
62 - # self.log_context['timestamp_start'] = str(int(time.time()))  
63 -  
64 - # super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)  
65 - #  
66 - # self.request.session['log_id'] = Log.objects.latest('id').id 49 + self.log_context['category_id'] = self.object.topic.subject.category.id
  50 + self.log_context['category_name'] = self.object.topic.subject.category.name
  51 + self.log_context['category_slug'] = self.object.topic.subject.category.slug
  52 + self.log_context['subject_id'] = self.object.topic.subject.id
  53 + self.log_context['subject_name'] = self.object.topic.subject.name
  54 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  55 + self.log_context['topic_id'] = self.object.topic.id
  56 + self.log_context['topic_name'] = self.object.topic.name
  57 + self.log_context['topic_slug'] = self.object.topic.slug
  58 + self.log_context['webconference_id'] = self.object.id
  59 + self.log_context['webconference_name'] = self.object.name
  60 + self.log_context['webconference_slug'] = self.object.slug
  61 + self.log_context['webconference_view'] = str(int(time.time()))
  62 +
  63 + super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  64 +
  65 + self.request.session['log_id'] = Log.objects.latest('id').id
67 66
68 return context 67 return context
69 68
70 -class Conference(LoginRequiredMixin,generic.TemplateView): 69 +class Conference(LoginRequiredMixin,LogMixin,generic.TemplateView):
  70 +
  71 + log_component = 'resources'
  72 + log_action = 'initwebconference'
  73 + log_resource = 'webconference'
  74 + log_context = {}
71 75
72 login_url = reverse_lazy("users:login") 76 login_url = reverse_lazy("users:login")
73 redirect_field_name = 'next' 77 redirect_field_name = 'next'
74 78
75 template_name = 'webconference/jitsi.html' 79 template_name = 'webconference/jitsi.html'
76 80
  81 + def dispatch(self, request, *args, **kwargs):
  82 + slug = self.kwargs.get('slug', '')
  83 + conference = get_object_or_404(Webconference, slug = slug)
  84 +
  85 + if not has_resource_permissions(request.user, conference):
  86 + return redirect(reverse_lazy('subjects:home'))
  87 +
  88 + return super(Conference, self).dispatch(request, *args, **kwargs)
77 89
78 def get_context_data(self, **kwargs): 90 def get_context_data(self, **kwargs):
79 context = super(Conference, self).get_context_data(**kwargs) 91 context = super(Conference, self).get_context_data(**kwargs)
@@ -84,20 +96,77 @@ class Conference(LoginRequiredMixin,generic.TemplateView): @@ -84,20 +96,77 @@ class Conference(LoginRequiredMixin,generic.TemplateView):
84 except AttributeError: 96 except AttributeError:
85 context['domain'] = 'meet.jit.si' 97 context['domain'] = 'meet.jit.si'
86 98
  99 + conference = get_object_or_404(Webconference, slug = kwargs.get('slug'))
  100 + self.log_context['category_id'] = conference.topic.subject.category.id
  101 + self.log_context['category_name'] = conference.topic.subject.category.name
  102 + self.log_context['category_slug'] = conference.topic.subject.category.slug
  103 + self.log_context['subject_id'] = conference.topic.subject.id
  104 + self.log_context['subject_name'] = conference.topic.subject.name
  105 + self.log_context['subject_slug'] = conference.topic.subject.slug
  106 + self.log_context['topic_id'] = conference.topic.id
  107 + self.log_context['topic_name'] = conference.topic.name
  108 + self.log_context['topic_slug'] = conference.topic.slug
  109 + self.log_context['webconference_id'] = conference.id
  110 + self.log_context['webconference_name'] = conference.name
  111 + self.log_context['webconference_slug'] = conference.slug
  112 + self.log_context['webconference_init'] = str(int(time.time()))
  113 +
  114 + super(Conference, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  115 +
87 return context 116 return context
88 117
89 -def saiu(request): 118 +@log_decorator('resources', 'online', 'webconference')
  119 +def online(request):
  120 + webconference = get_object_or_404(Webconference, slug = request.GET['slug'])
  121 + log_context = {}
  122 + log_context['category_id'] = webconference.topic.subject.category.id
  123 + log_context['category_name'] = webconference.topic.subject.category.name
  124 + log_context['category_slug'] = webconference.topic.subject.category.slug
  125 + log_context['subject_id'] = webconference.topic.subject.id
  126 + log_context['subject_name'] = webconference.topic.subject.name
  127 + log_context['subject_slug'] = webconference.topic.subject.slug
  128 + log_context['topic_id'] = webconference.topic.id
  129 + log_context['topic_name'] = webconference.topic.name
  130 + log_context['topic_slug'] = webconference.topic.slug
  131 + log_context['webconference_id'] = webconference.id
  132 + log_context['webconference_name'] = webconference.name
  133 + log_context['webconference_slug'] = webconference.slug
  134 + log_context['webconference_online'] = str(int(time.time()))
  135 +
  136 + request.log_context = log_context
  137 +
  138 + return JsonResponse({'message':'ok'})
  139 +
  140 +@log_decorator('resources', 'finish', 'webconference')
  141 +def finish(request):
  142 +
  143 + webconference = get_object_or_404(Webconference, slug = request.GET['roomName'])
  144 + log_context = {}
  145 + log_context['category_id'] = webconference.topic.subject.category.id
  146 + log_context['category_name'] = webconference.topic.subject.category.name
  147 + log_context['category_slug'] = webconference.topic.subject.category.slug
  148 + log_context['subject_id'] = webconference.topic.subject.id
  149 + log_context['subject_name'] = webconference.topic.subject.name
  150 + log_context['subject_slug'] = webconference.topic.subject.slug
  151 + log_context['topic_id'] = webconference.topic.id
  152 + log_context['topic_name'] = webconference.topic.name
  153 + log_context['topic_slug'] = webconference.topic.slug
  154 + log_context['webconference_id'] = webconference.id
  155 + log_context['webconference_name'] = webconference.name
  156 + log_context['webconference_slug'] = webconference.slug
  157 + log_context['webconference_finish'] = str(int(time.time()))
  158 +
  159 + request.log_context = log_context
  160 +
90 url = {'url': 'http://localhost:8000' + str(reverse_lazy('webconferences:view', kwargs = {'slug': request.GET['roomName']}))} 161 url = {'url': 'http://localhost:8000' + str(reverse_lazy('webconferences:view', kwargs = {'slug': request.GET['roomName']}))}
91 return JsonResponse(url, safe=False) 162 return JsonResponse(url, safe=False)
92 163
93 164
94 -class InsideView(LoginRequiredMixin,  
95 -# '''LogMixin,'''  
96 -generic.DetailView):  
97 - # log_component = 'resources'  
98 - # log_action = 'view'  
99 - # log_resource = 'webpage'  
100 - # log_context = {} 165 +class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
  166 + log_component = 'resources'
  167 + log_action = 'view'
  168 + log_resource = 'webconference'
  169 + log_context = {}
101 170
102 login_url = reverse_lazy("users:login") 171 login_url = reverse_lazy("users:login")
103 redirect_field_name = 'next' 172 redirect_field_name = 'next'
@@ -123,23 +192,23 @@ generic.DetailView): @@ -123,23 +192,23 @@ generic.DetailView):
123 context['topic'] = self.object.topic 192 context['topic'] = self.object.topic
124 context['subject'] = self.object.topic.subject 193 context['subject'] = self.object.topic.subject
125 194
126 - # self.log_context['category_id'] = self.object.topic.subject.category.id  
127 - # self.log_context['category_name'] = self.object.topic.subject.category.name  
128 - # self.log_context['category_slug'] = self.object.topic.subject.category.slug  
129 - # self.log_context['subject_id'] = self.object.topic.subject.id  
130 - # self.log_context['subject_name'] = self.object.topic.subject.name  
131 - # self.log_context['subject_slug'] = self.object.topic.subject.slug  
132 - # self.log_context['topic_id'] = self.object.topic.id  
133 - # self.log_context['topic_name'] = self.object.topic.name  
134 - # self.log_context['topic_slug'] = self.object.topic.slug  
135 - # self.log_context['webpage_id'] = self.object.id  
136 - # self.log_context['webpage_name'] = self.object.name  
137 - # self.log_context['webpage_slug'] = self.object.slug  
138 - # self.log_context['timestamp_start'] = str(int(time.time()))  
139 - #  
140 - # super(InsideView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)  
141 - #  
142 - # self.request.session['log_id'] = Log.objects.latest('id').id 195 + self.log_context['category_id'] = self.object.topic.subject.category.id
  196 + self.log_context['category_name'] = self.object.topic.subject.category.name
  197 + self.log_context['category_slug'] = self.object.topic.subject.category.slug
  198 + self.log_context['subject_id'] = self.object.topic.subject.id
  199 + self.log_context['subject_name'] = self.object.topic.subject.name
  200 + self.log_context['subject_slug'] = self.object.topic.subject.slug
  201 + self.log_context['topic_id'] = self.object.topic.id
  202 + self.log_context['topic_name'] = self.object.topic.name
  203 + self.log_context['topic_slug'] = self.object.topic.slug
  204 + self.log_context['webconference_id'] = self.object.id
  205 + self.log_context['webconference_name'] = self.object.name
  206 + self.log_context['webconference_slug'] = self.object.slug
  207 + self.log_context['webconference_view'] = str(int(time.time()))
  208 +
  209 + super(InsideView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
  210 +
  211 + self.request.session['log_id'] = Log.objects.latest('id').id
143 212
144 return context 213 return context
145 214
@@ -453,6 +522,5 @@ class ConferenceSettings(braces_mixins.LoginRequiredMixin, braces_mixins.Staffus @@ -453,6 +522,5 @@ class ConferenceSettings(braces_mixins.LoginRequiredMixin, braces_mixins.Staffus
453 context = super(ConferenceSettings, self).get_context_data(**kwargs) 522 context = super(ConferenceSettings, self).get_context_data(**kwargs)
454 523
455 context['title'] = _('Web Conference Settings') 524 context['title'] = _('Web Conference Settings')
456 - # context['settings_menu_active'] = "settings_menu_active"  
457 525
458 return context 526 return context