Commit 4974b066d06179a26012ead9b7b9e7f4c049dccd

Authored by Jailson Dias
1 parent d67d8ccc

refatoração nas permições nos templates

amadeus/roles.py
@@ -24,4 +24,4 @@ class Professor(AbstractUserRole): @@ -24,4 +24,4 @@ class Professor(AbstractUserRole):
24 } 24 }
25 25
26 class SystemAdmin(AbstractUserRole): 26 class SystemAdmin(AbstractUserRole):
27 - pass  
28 \ No newline at end of file 27 \ No newline at end of file
  28 + pass
amadeus/staticfiles/js/modal_poll.js 0 → 100644
@@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
  1 +//controles do modal
  2 +$(window).ready(function() { // utilizado para abrir o modal quando tiver tido algum erro no preenchimento do formulario
  3 + if($('.not_submited').length){
  4 + $('#poll').modal('show');
  5 + }
  6 +});
  7 +var Answer = {
  8 + init: function(url) { // utilizado para adicionar um novo campo de resposta
  9 + $.get(url, function(data){
  10 + $("#form").append(data);
  11 + var cont = 1;
  12 + $("#form div div div input").each(function(){
  13 + $(this).attr('name',cont++);
  14 + });
  15 + });
  16 + }
  17 +};
  18 +
  19 +var Submite = {
  20 + post: function(url,dados){
  21 + $('#poll').modal('hide');
  22 + $.post(url,dados, function(data){
  23 + }).fail(function(data){
  24 + $("div.modal-backdrop.fade.in").remove();
  25 + $("#modal_poll").empty();
  26 + $("#modal_poll").append(data.responseText);
  27 + });
  28 + },
  29 + remove: function(url,dados, id_li_link){
  30 + $('#poll').modal('hide');
  31 + $.post(url,dados, function(data){
  32 + $(id_li_link).remove();
  33 + $("#modal_poll").empty();
  34 + $("div.modal-backdrop.fade.in").remove();
  35 + }).fail(function(){
  36 + $("#modal_poll").empty();
  37 + $("#modal_poll").append(data);
  38 + $('#poll').modal('show');
  39 + });
  40 + }
  41 +}
  42 +
  43 +alert("essfd");
amadeus/staticfiles/js/modals_requisitions.js 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +var Modal = {
  2 + get: function (url, id_modal, id_div_modal){
  3 + $.get(url, function(data){
  4 + if($(id_modal).length){
  5 + $(id_div_modal).empty();
  6 + $(id_div_modal).append(data);
  7 + } else {
  8 + $(id_div_modal).append(data);
  9 + }
  10 + $(id_modal).modal('show');
  11 + });
  12 + }
  13 +};
  14 +alert("req");
amadeus/staticfiles/js/sortable_poll.js 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +//deve ser importado apenas depois do html
  2 +$( "#form" ).sortable({ // utilizado para fazer a re-organização das respostas
  3 + delay: 100,
  4 + distance: 5,
  5 + update: function( event, ui ) {
  6 + var cont = 1;
  7 + $("#form div div div input").each(function(){
  8 + $(this).attr('name',cont++);
  9 + });
  10 + },
  11 +});
  12 +alert("sort");
app/templates/app/base.html
@@ -1,22 +0,0 @@ @@ -1,22 +0,0 @@
1 -{% extends 'base.html' %}  
2 -  
3 -{% load static i18n %}  
4 -  
5 -{% block menu_top %}  
6 - <ul class="nav navbar-nav">  
7 - <li class="active">  
8 - <a href="{% url 'home' %}">Home</a>  
9 - </li>  
10 - <li><a href="#contact">{% trans 'The Project' %}</a></li>  
11 - <li><a href="#contact">{% trans 'CCTE Group' %}</a></li>  
12 - <li class="divider-vertical"></li>  
13 - <li class="dropdown">  
14 - <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">{% trans 'Hi' %}, {{ user }} <span class="caret"></span></a>  
15 - <ul class="dropdown-menu">  
16 - <li><a href="{% url 'app:users:profile' %}">{% trans 'See Profile' %}</a></li>  
17 - <li><a href="#">{% trans 'Settings' %}</a></li>  
18 - <li><a href="{% url 'logout' %}">{% trans 'Logout' %}</a></li>  
19 - </ul>  
20 - </li>  
21 - </ul>  
22 -{% endblock %}  
23 \ No newline at end of file 0 \ No newline at end of file
app/templates/app/index.html
@@ -1,181 +0,0 @@ @@ -1,181 +0,0 @@
1 -{% extends 'app/base.html' %}  
2 -  
3 -{% load static i18n permission_tags %}  
4 -  
5 -{% block sidebar %}  
6 - <h4>{% trans 'You have:' %} </h4>  
7 - <div class="list-group">  
8 - <a href="#" class="list-group-item">  
9 - <span class="badge">4</span>  
10 - {% trans 'Pending Tasks' %}  
11 - </a>  
12 - <a href="#" class="list-group-item">  
13 - <span class="badge">0</span>  
14 - {% trans 'Users Online' %}  
15 - </a>  
16 - </div>  
17 -  
18 - <hr />  
19 -  
20 - <h4>{% trans 'You can:' %} </h4>  
21 - <div class="list-group">  
22 - {% if user|has_role:'professor' %}  
23 - <a href="{% url 'course:create' %}" class="list-group-item">  
24 - {% trans 'Create Course' %}  
25 - </a>  
26 - {% endif %}  
27 - {% if user|has_role:'professor' %}  
28 - <a href="{% url 'users:manage' %}" class="list-group-item">  
29 - {% trans 'Manage Users' %}  
30 - </a>  
31 - {% endif %}  
32 - <a href="{% url 'course:manage' %}" class="list-group-item">  
33 - {% trans 'Manage Courses' %}  
34 - </a>  
35 - {% if user|has_role:'professor' %}  
36 - <a href="{% url 'course:manage_cat' %}" class="list-group-item">  
37 - {% trans 'Gerenciar Categorias' %}  
38 - </a>  
39 - {% endif %}  
40 - </div>  
41 -  
42 - <hr />  
43 -  
44 - {% if user|has_role:'student' %}  
45 - <h4>{% trans 'Your course(s):' %}</h4>  
46 - <p>{% trans 'No courses subscribed yet' %}</p>  
47 - {% endif %}  
48 -{% endblock %}  
49 -  
50 -{% block content %}  
51 - <div class="row">  
52 - <div class="col-sm-12">  
53 - <form class="form-horizontal" method="post">  
54 - <div class="col-sm-10">  
55 - <div class="form-group">  
56 - <label for="search_keyword" class="control-label col-sm-3">{% trans 'Search course:' %} </label>  
57 - <div class="col-sm-9">  
58 - <input type="text" class="form-control input-sm" id="search_keyword" />  
59 - </div>  
60 - </div>  
61 - </div>  
62 - <button type="submit" class="btn btn-sm btn-success">{% trans 'Search' %}</button>  
63 - </form>  
64 -  
65 - <hr />  
66 -  
67 - <h5>{% trans 'Most popular keywords:' %}</h5>  
68 - <div class="well">  
69 - <center>  
70 - <ul class="cloud">  
71 - <li>  
72 - <a href="">  
73 - teste amadeus prospb  
74 - </a>  
75 - </li>  
76 - <li>  
77 - <a href="">  
78 - programação fácil  
79 - </a>  
80 - </li>  
81 - <li>  
82 - <a href="">  
83 - intermediário  
84 - </a>  
85 - </li>  
86 - <li>  
87 - <a href="">  
88 - amadeus  
89 - </a>  
90 - </li>  
91 - <li>  
92 - <a href="">  
93 - palavra02  
94 - </a>  
95 - </li>  
96 - <li>  
97 - <a href="">  
98 - programação para iniciantes  
99 - </a>  
100 - </li>  
101 - <li>  
102 - <a href="">  
103 - django  
104 - </a>  
105 - </li>  
106 - <li>  
107 - <a href="">  
108 - aluno teste  
109 - </a>  
110 - </li>  
111 - <li>  
112 - <a href="">  
113 - curso0101  
114 - </a>  
115 - </li>  
116 - <li>  
117 - <a href="">  
118 - kjsdnksa  
119 - </a>  
120 - </li>  
121 - <li>  
122 - <a href="">  
123 - palavra01  
124 - </a>  
125 - </li>  
126 - <li>  
127 - <a href="">  
128 - programming  
129 - </a>  
130 - </li>  
131 - <li>  
132 - <a href="">  
133 - python  
134 - </a>  
135 - </li>  
136 - <li>  
137 - <a href="">  
138 - curso  
139 - </a>  
140 - </li>  
141 - <li>  
142 - <a href="">  
143 - mvc  
144 - </a>  
145 - </li>  
146 - <li>  
147 - <a href="">  
148 - programação web  
149 - </a>  
150 - </li>  
151 - <li>  
152 - <a href="">  
153 - ionic  
154 - </a>  
155 - </li>  
156 - <li>  
157 - <a href="">  
158 - framework  
159 - </a>  
160 - </li>  
161 - <li>  
162 - <a href="">  
163 - web  
164 - </a>  
165 - </li>  
166 - <li>  
167 - <a href="">  
168 - android  
169 - </a>  
170 - </li>  
171 - <li>  
172 - <a href="">  
173 - programação  
174 - </a>  
175 - </li>  
176 - </ul>  
177 - </center>  
178 - </div>  
179 - </div>  
180 - </div>  
181 -{% endblock %}  
courses/templates/category/create.html
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 </div> 23 </div>
24 </div> 24 </div>
25 25
26 -{% if user|has_role:'professor, system_admin' %} 26 +{% if user|has_role:'professor' or user|has_role:'system_admin' %}
27 27
28 <div class="panel panel-primary navigation"> 28 <div class="panel panel-primary navigation">
29 <div class="panel-heading"> 29 <div class="panel-heading">
courses/templates/category/delete.html
@@ -23,7 +23,7 @@ @@ -23,7 +23,7 @@
23 </div> 23 </div>
24 </div> 24 </div>
25 25
26 -{% if user|has_role:'professor, system_admin' %} 26 +{% if user|has_role:'professor' or user|has_role:'system_admin' %}
27 27
28 <div class="panel panel-primary navigation"> 28 <div class="panel panel-primary navigation">
29 <div class="panel-heading"> 29 <div class="panel-heading">
courses/templates/category/index.html
@@ -23,8 +23,8 @@ @@ -23,8 +23,8 @@
23 </ul> 23 </ul>
24 </div> 24 </div>
25 </div> 25 </div>
26 -  
27 - {% if user|has_role:'professor, system_admin' %} 26 +
  27 + {% if user|has_role:'professor' or user|has_role:'system_admin' %}
28 28
29 <div class="panel panel-primary navigation"> 29 <div class="panel panel-primary navigation">
30 <div class="panel-heading"> 30 <div class="panel-heading">
courses/templates/category/update.html
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 </div> 24 </div>
25 </div> 25 </div>
26 26
27 -{% if user|has_role:'professor, system_admin' %} 27 +{% if user|has_role:'professor' or user|has_role:'system_admin' %}
28 28
29 <div class="panel panel-primary navigation"> 29 <div class="panel panel-primary navigation">
30 <div class="panel-heading"> 30 <div class="panel-heading">
@@ -87,7 +87,7 @@ @@ -87,7 +87,7 @@
87 {% endif %} 87 {% endif %}
88 {% endfor %} 88 {% endfor %}
89 <div class="row text-center"> 89 <div class="row text-center">
90 - <input type="submit" value="{% trans 'Save' %}" class="btn btn-sm btn-success" /> 90 + <input type="submit" value="{% trans 'Save' %}" class="btn btn-sm btn-success" />
91 </div> 91 </div>
92 </form> 92 </form>
93 </div> 93 </div>
courses/templates/category/view.html
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 </ul> 24 </ul>
25 </div> 25 </div>
26 </div> 26 </div>
27 - {% if user|has_role:'professor, system_admin' %} 27 + {% if user|has_role:'professor' or user|has_role:'system_admin' %}
28 28
29 <div class="panel panel-primary navigation"> 29 <div class="panel panel-primary navigation">
30 <div class="panel-heading"> 30 <div class="panel-heading">
courses/templates/course/index.html
@@ -24,7 +24,7 @@ @@ -24,7 +24,7 @@
24 </div> 24 </div>
25 </div> 25 </div>
26 26
27 -{% if user|has_role:'professor, system_admin' %} 27 +{% if user|has_role:'professor' or user|has_role:'system_admin' %}
28 28
29 <div class="panel panel-primary navigation"> 29 <div class="panel panel-primary navigation">
30 <div class="panel-heading"> 30 <div class="panel-heading">
@@ -76,7 +76,7 @@ @@ -76,7 +76,7 @@
76 <i class="material-icons">search</i> 76 <i class="material-icons">search</i>
77 </button> 77 </button>
78 </span> 78 </span>
79 - </div> 79 + </div>
80 </form> 80 </form>
81 </div> 81 </div>
82 <div class="col-md-12"> 82 <div class="col-md-12">
@@ -103,7 +103,7 @@ @@ -103,7 +103,7 @@
103 <h4 style="color:white">{{course.name}}</h4> 103 <h4 style="color:white">{{course.name}}</h4>
104 </a> 104 </a>
105 </div> 105 </div>
106 - {% if user|has_role:'professor, system_admin' %} 106 + {% if user|has_role:'professor' or user|has_role:'system_admin' %}
107 <div class="col-xs-4 col-md-3" id="divMoreActions"> 107 <div class="col-xs-4 col-md-3" id="divMoreActions">
108 <div class="btn-group"> 108 <div class="btn-group">
109 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 109 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@@ -150,7 +150,7 @@ @@ -150,7 +150,7 @@
150 <h4 style="color:white">{{course.name}}</h4> 150 <h4 style="color:white">{{course.name}}</h4>
151 </a> 151 </a>
152 </div> 152 </div>
153 - {% if user|has_role:'professor, system_admin' %} 153 + {% if user|has_role:'professor' or user|has_role:'system_admin' %}
154 <div class="col-xs-4 col-md-3" id="divMoreActions"> 154 <div class="col-xs-4 col-md-3" id="divMoreActions">
155 <div class="btn-group"> 155 <div class="btn-group">
156 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 156 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
courses/templates/course/view.html
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 </div> 28 </div>
29 </div> 29 </div>
30 30
31 -{% if user|has_role:'professor, system_admin' %} 31 +{% if user|has_role:'professor' or user|has_role:'system_admin' %}
32 32
33 <div class="panel panel-primary navigation"> 33 <div class="panel panel-primary navigation">
34 <div class="panel-heading"> 34 <div class="panel-heading">
@@ -284,7 +284,7 @@ @@ -284,7 +284,7 @@
284 {% endif %} 284 {% endif %}
285 285
286 {% if user|has_role:'professor' or user|has_role:'system_admin' %} 286 {% if user|has_role:'professor' or user|has_role:'system_admin' %}
287 - 287 +
288 <div class="form-group"> 288 <div class="form-group">
289 <a href="#" data-toggle="modal" data-target="" class="btn btn-primary btn-lg btn-block btn-raised">{% trans 'Create Subject' %}<div class="ripple-container"></div></a> 289 <a href="#" data-toggle="modal" data-target="" class="btn btn-primary btn-lg btn-block btn-raised">{% trans 'Create Subject' %}<div class="ripple-container"></div></a>
290 </div> 290 </div>
@@ -316,4 +316,3 @@ @@ -316,4 +316,3 @@
316 </div> 316 </div>
317 317
318 {% endblock %} 318 {% endblock %}
319 -  
courses/templates/subject/form_view_teacher.html
1 - {% load static i18n list_topic_foruns permission_tags widget_tweaks %} 1 + {% load static i18n list_topic_foruns permission_tags widget_tweaks professor_access%}
2 2
3 {% block javascript %} 3 {% block javascript %}
4 <script type="text/javascript" src="{% static 'js/forum.js' %}"></script> 4 <script type="text/javascript" src="{% static 'js/forum.js' %}"></script>
@@ -24,7 +24,8 @@ @@ -24,7 +24,8 @@
24 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 24 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
25 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i> 25 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
26 </button> 26 </button>
27 - {% if user|has_role:'system_admin' or topic.owner == user %} 27 + {% professor_subject topic.subject user as dropdown_topic %}
  28 + {% if dropdown_topic %}
28 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions"> 29 <ul class="dropdown-menu pull-right" aria-labelledby="moreActions">
29 <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal4"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li> 30 <li><a href="javascript:void(0)" data-toggle="modal" data-target="#myModal4"><i class="fa fa-files-o fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Replicate" %}</a></li>
30 <li><a href="javascript:void(0)" class="edit_card"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li> 31 <li><a href="javascript:void(0)" class="edit_card"><i class="fa fa-pencil fa-fw" aria-hidden="true"></i>&nbsp; {% trans "Edit" %}</a></li>
@@ -61,7 +62,7 @@ @@ -61,7 +62,7 @@
61 {% for file in files %} 62 {% for file in files %}
62 <li><i class="fa fa-book" aria-hidden="true"></i> <a href="{{file.file_url}}">{{file}}</a></li> 63 <li><i class="fa fa-book" aria-hidden="true"></i> <a href="{{file.file_url}}">{{file}}</a></li>
63 {% endfor %} 64 {% endfor %}
64 - 65 +
65 <!-- <li><i class="fa fa-link" aria-hidden="true"></i> <a href="#" data-toggle="modal" data-target="#linksModal">Link 1</a></li> 66 <!-- <li><i class="fa fa-link" aria-hidden="true"></i> <a href="#" data-toggle="modal" data-target="#linksModal">Link 1</a></li>
66 <li><i class="fa fa-file-code-o" aria-hidden="true"></i> <a href="#" data-toggle="modal" data-target="#embedModal">EMBED Material</a></li>--> 67 <li><i class="fa fa-file-code-o" aria-hidden="true"></i> <a href="#" data-toggle="modal" data-target="#embedModal">EMBED Material</a></li>-->
67 </ul> 68 </ul>
@@ -129,6 +130,7 @@ @@ -129,6 +130,7 @@
129 <a href="#" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-plus-circle fa-lg" aria-hidden="true"></i></a> 130 <a href="#" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="fa fa-plus-circle fa-lg" aria-hidden="true"></i></a>
130 <ul class="dropdown-menu" aria-labelledby="dLabel"> 131 <ul class="dropdown-menu" aria-labelledby="dLabel">
131 <li>Qualquer coisa</li> 132 <li>Qualquer coisa</li>
  133 + <li><i class="material-icons">poll</i> <a href="javascript:modal.get('{% url 'course:poll:create_poll' topic.slug%}','#poll','#modal_poll');">{% trans 'Create Poll' %}</a></li>
132 </ul> 134 </ul>
133 </div> 135 </div>
134 </div> 136 </div>
@@ -190,8 +192,8 @@ @@ -190,8 +192,8 @@
190 </div> 192 </div>
191 </div> 193 </div>
192 </div> 194 </div>
193 -  
194 -{% if user|has_role:'system_admin' or topic.owner == user%} 195 +{% professor_subject topic.subject user as professor_topic %}
  196 +{% if professor_topic %}
195 {% include "files/create_file.html" %} 197 {% include "files/create_file.html" %}
196 {% endif %} 198 {% endif %}
197 <!-- MODAL REMOVE FILE --> 199 <!-- MODAL REMOVE FILE -->
@@ -240,12 +242,9 @@ @@ -240,12 +242,9 @@
240 </div> 242 </div>
241 </div> 243 </div>
242 <!-- EndModal --> 244 <!-- EndModal -->
243 -  
244 - {% if user|has_role:'system_admin' or topic.owner == user%} 245 + {% professor_subject topic.subject user as professor_links %}
  246 + {% if professor_links%}
245 {% include "links/create_link.html" %} 247 {% include "links/create_link.html" %}
246 - {% endif %}  
247 -  
248 - {% if user|has_role:'system_admin' or topic.owner == user%}  
249 {% include "links/delete_link.html" %} 248 {% include "links/delete_link.html" %}
250 {% endif %} 249 {% endif %}
251 250
@@ -365,7 +364,8 @@ @@ -365,7 +364,8 @@
365 364
366 365
367 <!-- MODAL LINK EDIT--> 366 <!-- MODAL LINK EDIT-->
368 - {% if user|has_role:'system_admin' or topic.owner == user%} 367 + {% professor_subject topic.subject user as links_update %}
  368 + {% if links_update%}
369 {% include "links/update_link.html" %} 369 {% include "links/update_link.html" %}
370 {% endif %} 370 {% endif %}
371 371
courses/templates/subject/index.html
1 {% extends 'base.html' %} 1 {% extends 'base.html' %}
2 2
3 -{% load static i18n permission_tags %} 3 +{% load static i18n permission_tags professor_access%}
4 4
5 {% block breadcrumbs %} 5 {% block breadcrumbs %}
6 6
@@ -12,7 +12,7 @@ @@ -12,7 +12,7 @@
12 {% else %} 12 {% else %}
13 <li class="active">{{ subject.name }}</li> 13 <li class="active">{{ subject.name }}</li>
14 {% endif %} 14 {% endif %}
15 - 15 +
16 </ol> 16 </ol>
17 {% endblock %} 17 {% endblock %}
18 18
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 </ul> 28 </ul>
29 </div> 29 </div>
30 </div> 30 </div>
31 - 31 +
32 32
33 {% endblock %} 33 {% endblock %}
34 34
@@ -39,7 +39,8 @@ @@ -39,7 +39,8 @@
39 <div class="col-md-9 col-sm-9"> 39 <div class="col-md-9 col-sm-9">
40 <h3>{{subject}}</h3> 40 <h3>{{subject}}</h3>
41 </div> 41 </div>
42 - {% if user|has_role:'system_admin' or user in subject.professors %} 42 + {% professor_subject subject user as subject_professor%}
  43 + {% if subject_professor %}
43 <div class="col-xs-4 col-md-3 divMoreActions"> 44 <div class="col-xs-4 col-md-3 divMoreActions">
44 <div class="btn-group"> 45 <div class="btn-group">
45 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 46 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@@ -71,19 +72,20 @@ @@ -71,19 +72,20 @@
71 </div> 72 </div>
72 </div> 73 </div>
73 </div> 74 </div>
74 - 75 +
75 {% for topic in topics %} 76 {% for topic in topics %}
76 - {% if user|has_role:'system_admin' or topic.owner == user%} 77 + {% professor_subject topic.subject user as topic_professor%}
  78 + {% if topic_professor %}
77 {% include "subject/form_view_teacher.html" %} 79 {% include "subject/form_view_teacher.html" %}
78 {% else %} 80 {% else %}
79 {% include "subject/form_view_student.html" %} 81 {% include "subject/form_view_student.html" %}
80 {% endif %} 82 {% endif %}
81 {% endfor %} 83 {% endfor %}
82 -  
83 - {% if user|has_role:'system_admin' or topic.owner == user%} 84 + {% professor_subject subject user as professor_sub %}
  85 + {% if professor_sub %}
84 <div class="form-group"> 86 <div class="form-group">
85 <a href="{% url 'course:create_topic' subject.slug %}" data-toggle="modal" data-target="" class="btn btn-primary btn-lg btn-block btn-raised" name="create_topic">{% trans "Create Topic" %}<div class="ripple-container"></div></a> 87 <a href="{% url 'course:create_topic' subject.slug %}" data-toggle="modal" data-target="" class="btn btn-primary btn-lg btn-block btn-raised" name="create_topic">{% trans "Create Topic" %}<div class="ripple-container"></div></a>
86 </div> 88 </div>
87 - {% endif %} 89 + {% endif %}
88 90
89 {% endblock %} 91 {% endblock %}
courses/templates/subject/poll_item_actions.html
1 -{% load static i18n permission_tags%} 1 +{% load static i18n permission_tags professor_access %}
2 2
3 <script src="{% static 'js/modals_requisitions.js'%}"></script> 3 <script src="{% static 'js/modals_requisitions.js'%}"></script>
4 <script src="{% static 'js/modal_poll.js'%}"></script> 4 <script src="{% static 'js/modal_poll.js'%}"></script>
5 5
6 -{% if request.user|has_role:'professor, system_admin'%}  
7 {% for poll in polls %} 6 {% for poll in polls %}
8 - <li id="poll_{{poll.slug}}"><i class="material-icons">poll</i> <a href="javascript:get('{% url 'course:poll:update_poll' poll.slug %}','#poll','#modal_poll');">{{ poll.name }}</a><a href="javascript:get('{% url 'course:poll:delete_poll' poll.slug %}','#poll','#modal_poll');"><span class="glyphicon glyphicon-remove"></span></a></li>  
9 -{% endfor %}  
10 -<button class="btn btn-primary btn-raised" onclick="javascript:get('{% url 'course:poll:create_poll' topic.slug%}','#poll','#modal_poll');">{% trans '+ Create Poll' %}</button>  
11 -{% else %}  
12 -{% for poll in polls %}  
13 - <li id="poll_{{poll.slug}}"><i class="material-icons">poll</i> <a href="javascript:get('{% url 'course:poll:view_poll' poll.slug %}','#poll','#modal_poll');">{{ poll.name }}</a></li>  
14 -{% endfor %}  
15 -{% endif %} 7 + {% professor_subject poll.topic.subject request.user as permission%}
  8 + {% if permission %}
  9 + <li id="poll_{{poll.slug}}"><i class="material-icons">poll</i> <a href="javascript:modal.get('{% url 'course:poll:update_poll' poll.slug %}','#poll','#modal_poll');">{{ poll.name }}</a><a href="javascript:modal.get('{% url 'course:poll:delete_poll' poll.slug %}','#poll','#modal_poll');"><span class="glyphicon glyphicon-remove"></span></a></li>
  10 + {% else %}
  11 + <li id="poll_{{poll.slug}}"><i class="material-icons">poll</i> <a href="javascript:modal.get('{% url 'course:poll:view_poll' poll.slug %}','#poll','#modal_poll');">{{ poll.name }}</a></li>
  12 + {% endif %}
  13 + {% endfor %}
  14 +{# <button class="btn btn-primary btn-raised" onclick="javascript:modal.get('{% url 'course:poll:create_poll' topic.slug%}','#poll','#modal_poll');">{% trans '+ Create Poll' %}</button> #}
16 <div class="row" id="modal_poll"> 15 <div class="row" id="modal_poll">
17 16
18 </div> 17 </div>
courses/templates/subject_category/index.html
1 {% extends 'base.html' %} 1 {% extends 'base.html' %}
2 2
3 -{% load static i18n permission_tags %} 3 +{% load static i18n permission_tags professor_access%}
4 4
5 {% block breadcrumbs %} 5 {% block breadcrumbs %}
6 6
7 <ol class="breadcrumb"> 7 <ol class="breadcrumb">
8 <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li> 8 <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>
9 -  
10 - 9 +
  10 +
11 </ol> 11 </ol>
12 {% endblock %} 12 {% endblock %}
13 13
@@ -43,12 +43,14 @@ @@ -43,12 +43,14 @@
43 <h3>{{subject}}</h3> 43 <h3>{{subject}}</h3>
44 </div> 44 </div>
45 <div class="col-md-2 col-sm-2"> 45 <div class="col-md-2 col-sm-2">
46 - {% if user|has_role:'system_admin' or user in subject.professors %} 46 + {% professor_subject subject user as professor_sub%}
  47 + {% if professor_sub %}
47 <a href="" class="btn">{% trans "edit" %}</a> 48 <a href="" class="btn">{% trans "edit" %}</a>
48 {% endif %} 49 {% endif %}
49 </div> 50 </div>
50 <div class="col-md-3 col-sm-3"> 51 <div class="col-md-3 col-sm-3">
51 - {% if user|has_role:'system_admin' or user in subject.professors %} 52 + {% professor_subject subject user as delete_sub%}
  53 + {% if delete_sub %}
52 <a href="" class="btn">{% trans "delete" %}</a> 54 <a href="" class="btn">{% trans "delete" %}</a>
53 {% endif %} 55 {% endif %}
54 </div> 56 </div>
@@ -60,6 +62,6 @@ @@ -60,6 +62,6 @@
60 </p> 62 </p>
61 </div> 63 </div>
62 </div> 64 </div>
63 - 65 +
64 66
65 {% endblock %} 67 {% endblock %}
courses/templates/topic/index.html
1 {% extends 'base.html' %} 1 {% extends 'base.html' %}
2 2
3 -{% load static i18n permission_tags %} 3 +{% load static i18n permission_tags professor_access %}
4 4
5 {% block breadcrumbs %} 5 {% block breadcrumbs %}
6 6
7 <ol class="breadcrumb"> 7 <ol class="breadcrumb">
8 <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li> 8 <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>
9 <li><a href="{% url 'course:view_subject' subject.slug %}">{{ subject }}</a></li> 9 <li><a href="{% url 'course:view_subject' subject.slug %}">{{ subject }}</a></li>
10 - {% if user|has_role:'professor' or user|has_role:'system_admin' %} 10 + {% professor_subject subject user as maneger_topic%}
  11 + {% if maneger_topic %}
11 <li class="active">{% trans 'Manage Topic' %}</li> 12 <li class="active">{% trans 'Manage Topic' %}</li>
12 {% else %} 13 {% else %}
13 <li class="active">{{ topic.name }}</li> 14 <li class="active">{{ topic.name }}</li>
@@ -54,7 +55,8 @@ @@ -54,7 +55,8 @@
54 <h3>{{subject}}</h3> 55 <h3>{{subject}}</h3>
55 </div> 56 </div>
56 <div class="col-xs-4 col-md-2 divMoreActions"> 57 <div class="col-xs-4 col-md-2 divMoreActions">
57 - {% if user|has_role:'system_admin' or user in subject.professors %} 58 + {% professor_subject subject user as permissions%}
  59 + {% if permissions %}
58 <div class="btn-group"> 60 <div class="btn-group">
59 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 61 <button class="btn btn-default btn-sm dropdown-toggle" type="button" id="moreActions" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
60 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i> 62 <i class="fa fa-ellipsis-v fa-2x" aria-hidden="true"></i>
@@ -105,7 +107,8 @@ @@ -105,7 +107,8 @@
105 <div class="col-md-4"> 107 <div class="col-md-4">
106 <i class="fa fa-file-archive-o fa-lg" aria-hidden="true">Atividade.doc</i> 108 <i class="fa fa-file-archive-o fa-lg" aria-hidden="true">Atividade.doc</i>
107 </div> 109 </div>
108 - {% if user|has_role:'professor, system_admin' %} 110 + {% professor_subject subject user as permi_test%}
  111 + {% if permi_test %}
109 <div class="col-md-4"> 112 <div class="col-md-4">
110 <label> Nota:</label> 113 <label> Nota:</label>
111 <input type="number" step="0.01"> 114 <input type="number" step="0.01">
poll/static/js/modal_poll.js
@@ -25,8 +25,7 @@ var Submite = { @@ -25,8 +25,7 @@ var Submite = {
25 $("#modal_poll").empty(); 25 $("#modal_poll").empty();
26 $("#modal_poll").append(data.responseText); 26 $("#modal_poll").append(data.responseText);
27 }); 27 });
28 - }  
29 - , 28 + },
30 remove: function(url,dados, id_li_link){ 29 remove: function(url,dados, id_li_link){
31 $('#poll').modal('hide'); 30 $('#poll').modal('hide');
32 $.post(url,dados, function(data){ 31 $.post(url,dados, function(data){
poll/static/js/modals_requisitions.js
1 -function get(url, id_modal, id_div_modal){  
2 - $.get(url, function(data){  
3 - if($(id_modal).length){  
4 - $(id_div_modal).empty();  
5 - $(id_div_modal).append(data);  
6 - } else {  
7 - $(id_div_modal).append(data);  
8 - }  
9 - $(id_modal).modal('show');  
10 - });  
11 -}  
12 -  
13 -// function remove(url, id_li_link){  
14 -// $.post(url, function(data){  
15 -// $(id_li_link).remove();  
16 -// }).fail(function(data){  
17 -// alert("Error ao excluir a enquete");  
18 -// alert(data);  
19 -// });  
20 -// } 1 +var modal = {
  2 + get: function (url, id_modal, id_div_modal){
  3 + $.get(url, function(data){
  4 + if($(id_modal).length){
  5 + $(id_div_modal).empty();
  6 + $(id_div_modal).append(data);
  7 + } else {
  8 + $(id_div_modal).append(data);
  9 + }
  10 + $(id_modal).modal('show');
  11 + });
  12 + }
  13 +};
poll/static/sample.txt
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -THIS FILE WAS CREATED TO TEST PURPOSES ON HEROKU.  
2 \ No newline at end of file 0 \ No newline at end of file
poll/templates/poll/view.html
@@ -30,6 +30,6 @@ @@ -30,6 +30,6 @@
30 {% block button_save %} 30 {% block button_save %}
31 <!-- Put curtom buttons here!!! --> 31 <!-- Put curtom buttons here!!! -->
32 {% if not status %} 32 {% if not status %}
33 -<button type="button" onclick="javascript:get('{% url 'course:poll:answer_student_poll' poll.slug%}','#poll','#modal_poll');$('div.modal-backdrop.fade.in').remove();" class="btn btn-primary btn-raised">{% trans "Answer" %}</button> 33 +<button type="button" onclick="javascript:modal.get('{% url 'course:poll:answer_student_poll' poll.slug%}','#poll','#modal_poll');$('div.modal-backdrop.fade.in').remove();" class="btn btn-primary btn-raised">{% trans "Answer" %}</button>
34 {% endif %} 34 {% endif %}
35 {% endblock button_save %} 35 {% endblock button_save %}
poll/templatetags/professor_access.py 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +from django import template
  2 +from rolepermissions.verifications import has_role
  3 +
  4 +register = template.Library()
  5 +
  6 +@register.simple_tag
  7 +def professor_subject(subject, user):
  8 + if (has_role(user,'system_admin')):
  9 + return True
  10 +
  11 + if (user in subject.professors.all()):
  12 + return True
  13 +
  14 + return False
poll/tests/poll.py
@@ -80,21 +80,23 @@ class PollTestCase(TestCase): @@ -80,21 +80,23 @@ class PollTestCase(TestCase):
80 self.poll.save() 80 self.poll.save()
81 81
82 def test_poll_create(self): 82 def test_poll_create(self):
83 - self.client.login(username='professor', password='testing')  
84 - poll = self.topic.activities.all().count()  
85 url = reverse('course:poll:create_poll',kwargs={'slug':self.topic.slug}) 83 url = reverse('course:poll:create_poll',kwargs={'slug':self.topic.slug})
86 data = { 84 data = {
87 "name": 'create poll test', 85 "name": 'create poll test',
88 "limit_date":'2016-10-06', 86 "limit_date":'2016-10-06',
89 "all_students":True, 87 "all_students":True,
90 } 88 }
91 - response = self.client.post(url, data)  
92 - self.assertEqual(poll + 1, self.topic.activities.all().count()) # create a new poll 89 +
93 self.client.login(username='student', password='testing') 90 self.client.login(username='student', password='testing')
94 poll = self.topic.activities.all().count() 91 poll = self.topic.activities.all().count()
95 response = self.client.post(url, data) 92 response = self.client.post(url, data)
96 self.assertEqual(poll, self.topic.activities.all().count()) # don't create a new poll 93 self.assertEqual(poll, self.topic.activities.all().count()) # don't create a new poll
97 94
  95 + self.client.login(username='professor', password='testing')
  96 + poll = self.topic.activities.all().count()
  97 + response = self.client.post(url, data)
  98 + self.assertEqual(poll + 1, self.topic.activities.all().count()) # create a new poll
  99 +
98 def test_poll_update(self): 100 def test_poll_update(self):
99 self.client.login(username='professor', password='testing') 101 self.client.login(username='professor', password='testing')
100 url = reverse('course:poll:update_poll',kwargs={'slug':self.poll.slug}) 102 url = reverse('course:poll:update_poll',kwargs={'slug':self.poll.slug})
@@ -145,6 +145,8 @@ class UpdatePoll(LoginRequiredMixin,HasRoleMixin,generic.UpdateView): @@ -145,6 +145,8 @@ class UpdatePoll(LoginRequiredMixin,HasRoleMixin,generic.UpdateView):
145 context['subject'] = poll.topic.subject 145 context['subject'] = poll.topic.subject
146 context['subjects'] = poll.topic.subject.course.subjects.all() 146 context['subjects'] = poll.topic.subject.course.subjects.all()
147 147
  148 + print (self.request.user)
  149 +
148 answers = {} 150 answers = {}
149 for answer in poll.answers.all(): 151 for answer in poll.answers.all():
150 # print (key.answer) 152 # print (key.answer)
users/admin.py
@@ -5,6 +5,5 @@ from .forms import AdminUserForm @@ -5,6 +5,5 @@ from .forms import AdminUserForm
5 class UserAdmin(admin.ModelAdmin): 5 class UserAdmin(admin.ModelAdmin):
6 list_display = ['username', 'name', 'email', 'is_staff', 'is_active'] 6 list_display = ['username', 'name', 'email', 'is_staff', 'is_active']
7 search_fields = ['username', 'name', 'email'] 7 search_fields = ['username', 'name', 'email']
8 - form = AdminUserForm  
9 8
10 -admin.site.register(User, UserAdmin)  
11 \ No newline at end of file 9 \ No newline at end of file
  10 +admin.site.register(User, UserAdmin)