diff --git a/amadeus/permissions.py b/amadeus/permissions.py index c36108e..3d69f4f 100644 --- a/amadeus/permissions.py +++ b/amadeus/permissions.py @@ -20,6 +20,15 @@ def has_subject_permissions(user, subject): return False +def has_subject_view_permissions(user, subject): + if has_subject_permissions(user, subject): + return True + + if subject.students.filter(id = user.id).exists(): + return True + + return False + """ Function to know if user has permission to: - Access Resource diff --git a/amadeus/static/js/category.js b/amadeus/static/js/category.js index ba8ba19..e76efbc 100755 --- a/amadeus/static/js/category.js +++ b/amadeus/static/js/category.js @@ -1,9 +1,3 @@ -var locale = navigator.language || navigator.userLanguage; - -$('.date-picker').datepicker({ - language: locale, -}); - /* * * Function to get a cookie stored on browser @@ -106,49 +100,107 @@ function replicate_course(url, course) { * Functions to control category marker * */ -$('.collapse').on('show.bs.collapse', function (e) { - if($(this).is(e.target)){ - var btn = $(this).parent().find('.fa-angle-right'); - - btn = btn[0]; - - $(btn).switchClass("fa-angle-right", "fa-angle-down", 250, "easeInOutQuad"); +$(function () { + bindCollapse(); +}); - var url = $(this).parent().find('.log_url').val(); - var log_input = $(this).parent().find('.log_id'); +function bindCollapse() { + $('.collapse').on('show.bs.collapse', function (e) { + if($(this).is(e.target)){ + var btn = $(this).parent().find('.fa-angle-right'); + + btn = btn[0]; + + $(btn).switchClass("fa-angle-right", "fa-angle-down", 250, "easeInOutQuad"); + + var url = $(this).parent().find('.log_url').val(); + var log_input = $(this).parent().find('.log_id'); + + if (typeof(url) != 'undefined') { + $.ajax({ + url: url, + data: {'action': 'open'}, + dataType: 'json', + success: function (data) { + log_input.val(data.log_id); + }, + error: function (data) { + console.log(data); + } + }); + } - if (typeof(url) != 'undefined') { - $.ajax({ - url: url, - data: {'action': 'open'}, - dataType: 'json', - success: function (data) { - log_input.val(data.log_id); - }, - error: function (data) { - console.log(data); - } - }); } + }); - } -}); + $('.collapse').on('hide.bs.collapse', function (e) { + if($(this).is(e.target)){ + var btn = $(this).parent().find('.fa-angle-down'); + + btn = btn[0]; + + $(btn).switchClass("fa-angle-down", "fa-angle-right", 250, "easeInOutQuad"); + + var url = $(this).parent().find('.log_url').val(); + var log_id = $(this).parent().find('.log_id').val(); + + if (typeof(url) != 'undefined') { + $.ajax({ + url: url, + data: {'action': 'close', 'log_id': log_id}, + dataType: 'json', + success: function (data) { + console.log(data.message); + }, + error: function (data) { + console.log(data); + } + }); + } + } + }); +} $('.category-panel-content').on('shown.bs.collapse', function(e) { if($(this).is(e.target)){ var panel_id = $(this).attr('id'); var holder = $(this).find('.holder'); - var items = $('#' + panel_id + '-accordion').children(":visible").length; + if ($('#' + panel_id + '-accordion').children().length == 0) { + var load_sub_url = $(this).find('.load_sub_url').val(); - if (items > 10) { - holder.jPages({ - containerID : panel_id + "-accordion", - perPage: 10, - previous: "«", - next: "»", - midRange: 5 + $.ajax({ + url: load_sub_url, + success: function (data) { + $('#' + panel_id + '-accordion').html(data); + + var items = $('#' + panel_id + '-accordion').children(":visible").length; + + if (items > 10) { + holder.jPages({ + containerID : panel_id + "-accordion", + perPage: 10, + previous: "«", + next: "»", + midRange: 5 + }); + } + + bindCollapse(); + } }); + } else { + var items = $('#' + panel_id + '-accordion').children(":visible").length; + + if (items > 10) { + holder.jPages({ + containerID : panel_id + "-accordion", + perPage: 10, + previous: "«", + next: "»", + midRange: 5 + }); + } } } }); @@ -168,32 +220,6 @@ $('.category-panel-content').on('hidden.bs.collapse', function(e) { } }); -$('.collapse').on('hide.bs.collapse', function (e) { - if($(this).is(e.target)){ - var btn = $(this).parent().find('.fa-angle-down'); - - btn = btn[0]; - - $(btn).switchClass("fa-angle-down", "fa-angle-right", 250, "easeInOutQuad"); - - var url = $(this).parent().find('.log_url').val(); - var log_id = $(this).parent().find('.log_id').val(); - - if (typeof(url) != 'undefined') { - $.ajax({ - url: url, - data: {'action': 'close', 'log_id': log_id}, - dataType: 'json', - success: function (data) { - console.log(data.message); - }, - error: function (data) { - console.log(data); - } - }); - } - } -}); function delete_group(url) { $('.modal').remove(); diff --git a/amadeus/templatetags/permissions_tags.py b/amadeus/templatetags/permissions_tags.py index 8aeb669..af29962 100644 --- a/amadeus/templatetags/permissions_tags.py +++ b/amadeus/templatetags/permissions_tags.py @@ -6,4 +6,8 @@ register = template.Library() @register.assignment_tag def subject_permissions(user, subject): - return permissions.has_subject_permissions(user, subject) \ No newline at end of file + return permissions.has_subject_permissions(user, subject) + +@register.assignment_tag +def subject_view_permissions(user, subject): + return permissions.has_subject_view_permissions(user, subject) \ No newline at end of file diff --git a/subjects/templates/subjects/_list.html b/subjects/templates/subjects/_list.html new file mode 100644 index 0000000..c8a9379 --- /dev/null +++ b/subjects/templates/subjects/_list.html @@ -0,0 +1,9 @@ +{% load permissions_tags %} + +{% for subject in subjects %} + {% subject_view_permissions request.user subject as has_subject_view_permissions %} + + {% if all or has_subject_view_permissions %} + {% include "subjects/subject_card.html" with subject=subject %} + {% endif %} +{% endfor %} \ No newline at end of file diff --git a/subjects/templates/subjects/list.html b/subjects/templates/subjects/list.html index 0c01661..32a428e 100644 --- a/subjects/templates/subjects/list.html +++ b/subjects/templates/subjects/list.html @@ -90,6 +90,8 @@
+ + {% if category.coordinators.all|length > 0 %}

{% trans "Coordinator(s) " %}: @@ -106,11 +108,7 @@ {% endif %}
- {% for subject in category.subject_category.all %} - {% if request.user in subject.students.all or request.user.is_staff or request.user in subject.professor.all or all or request.user in subject.category.coordinators.all %} - {% include "subjects/subject_card.html" %} - {% endif %} - {% endfor %} +

@@ -171,9 +169,7 @@ {% endif %}
- {% for subject in category.subject_category.all %} - {% include "subjects/subject_card.html" %} - {% endfor %} +
diff --git a/subjects/templates/subjects/subject_card.html b/subjects/templates/subjects/subject_card.html index dabd1f1..d82229b 100644 --- a/subjects/templates/subjects/subject_card.html +++ b/subjects/templates/subjects/subject_card.html @@ -1,17 +1,26 @@ -{% load static i18n permission_tags %} -{% if subject.visible %} -
-
+{% load static i18n permissions_tags %} + +{% subject_permissions request.user subject as has_subject_permissions %} +{% subject_view_permissions request.user subject as has_subject_view_permissions %} + +{% if subject.visible or has_subject_permissions %} + {% if subject.visible %} +
+
+ {% elif has_subject_permissions %} +
+
+ {% endif %}

- {{subject.name}} + {{ subject }}

- {% if request.user in subject.professor.all or request.user in subject.category.coordinators.all or request.user.is_staff %} + {% if has_subject_permissions %} @@ -56,7 +65,7 @@ {% if show_buttons %} - {% if request.user in subject.students.all or request.user in subject.professor.all or request.user.is_staff or request.user in subject.category.coordinators.all %} + {% if has_subject_view_permissions %} {% trans "Access Subject" %} {% else %} @@ -65,65 +74,4 @@ {% endif %}
-{% elif request.user in subject.professor.all or request.user in subject.category.coordinators.all or request.user.is_staff %} -
-
-
-
-

- - {{subject.name}} - -

- -
- {% if request.user in subject.professor.all or request.user in subject.category.coordinators.all or request.user.is_staff %} - - - {% endif %} - - - - -
-
-
-
-
-
-
- {% if subject.professor.all|length > 0 %} -

{% trans "Professor(s) " %}: - {{ subject.professor.all|join:', ' }} -

- {% else %} -

{% trans "It doesn't possess professors" %}

- {% endif %} -
-
-

{% trans "Beginning" %}: {{subject.init_date}}

-
-
-

{% trans "End" %}: {{subject.end_date}}

-
-
- -

{{subject.description_brief|safe}}

- {% if show_buttons %} - - {% if request.user in subject.students.all or request.user in subject.professor.all or request.user.is_staff or request.user in subject.category.coordinators.all %} - {% trans "ACESS SUBJECT" %} - {% else %} - - {% endif %} - - {% endif %} -
-
{% endif %} diff --git a/subjects/urls.py b/subjects/urls.py index 6c2b593..13830e5 100644 --- a/subjects/urls.py +++ b/subjects/urls.py @@ -13,5 +13,6 @@ urlpatterns = [ url(r'^subscribe/(?P[\w_-]+)/$', views.SubjectSubscribeView.as_view(), name='subscribe'), url(r'^search/$', views.SubjectSearchView.as_view(), name='search'), url(r'^search/(?P