Commit c29d4f3ae571759f2fa21091b97432942c281a58

Authored by Matheus Lins
2 parents 4f7868a5 2666c250

Merge branch 'dev' of https://github.com/amadeusproject/amadeuslms into dev

amadeus/urls.py
... ... @@ -23,7 +23,6 @@ urlpatterns = [
23 23 url(r'^home/', include('app.urls', namespace = 'app')),
24 24 url(r'^course/', include('courses.urls', namespace = 'course')),
25 25 url(r'^users/', include('users.urls', namespace = 'users')),
26   - url(r'^forum/', include('forum.urls', namespace = 'forum')),
27 26 url(r'^admin/', admin.site.urls),
28 27 url(r'^', include('core.urls', namespace = 'core')),
29 28  
... ...
core/templates/base.html
... ... @@ -45,6 +45,8 @@
45 45 <script src="{% static 'js/base/amadeus.js' %}"></script>
46 46 {% block style %}
47 47 {% endblock %}
  48 + {% block javascript %}
  49 + {% endblock %}
48 50 </head>
49 51 <body>
50 52 <div class="container-fluid">
... ...
courses/templates/subject/form_view_teacher.html
... ... @@ -19,7 +19,7 @@
19 19 </a>
20 20 <div class="panel-body">
21 21 <p>{{ topic.description|linebreaks }}</p>
22   - <button class="btn btn-primary btn-raised" onclick="createForum('{% url 'forum:create' %}', '{{ topic.id }}')">{% trans '+ Create Forum' %}</button>
  22 + <button class="btn btn-primary btn-raised" onclick="createForum('{% url 'course:forum:create' %}', '{{ topic.id }}')">{% trans '+ Create Forum' %}</button>
23 23 <div class="foruns_list">
24 24 {% list_topic_foruns request topic %}
25 25 </div>
... ...
courses/templates/topic/list_topic_foruns.html
1 1 {% for forum in foruns %}
2   - <a id="forum_{{ forum.id }}" href="javascript:showForum('{% url 'forum:index' %}', '{{forum.id}}')">{{ forum }}<br /></a>
  2 + <a id="forum_{{ forum.id }}" href="{% url 'course:forum:view' forum.slug %}">{{ forum }}<br /></a>
3 3 {% endfor %}
4 4 \ No newline at end of file
... ...
courses/urls.py
... ... @@ -24,6 +24,7 @@ urlpatterns = [
24 24 url(r'^subjects/categories$',views.IndexSubjectCategoryView.as_view(), name='subject_category_index'),
25 25  
26 26  
  27 + url(r'^forum/', include('forum.urls', namespace = 'forum')),
27 28 url(r'^poll/', include('poll.urls', namespace = 'poll'))
28 29  
29 30 ]
... ...
forum/templates/forum/forum_list.html
... ... @@ -29,7 +29,7 @@
29 29 {% list_posts request forum %}
30 30 </div>
31 31  
32   -<form id="form_post" method="post" action="{% url 'forum:create_post' %}" enctype="multipart/form-data">
  32 +<form id="form_post" method="post" action="{% url 'course:forum:create_post' %}" enctype="multipart/form-data">
33 33 {% csrf_token %}
34 34 {% for field in form %}
35 35 {% if field.field.widget.input_type == 'hidden' %}
... ... @@ -63,26 +63,4 @@
63 63 </div>
64 64 {% endif %}
65 65 {% endfor %}
66   -</form>
67   -
68   -<!--{% if foruns|length > 0 %}
69   - {% for forum in foruns %}
70   - <a class="forum_collapse" role="button" href="javascript: showPosts('{% url 'forum:posts' %}', '{{ forum.slug }}')" aria-expanded="true">
71   - <div class="page-header">
72   - <h1 id="timeline">
73   - {{ forum }}
74   - </h1>
75   - <b>{% trans 'Description' %}: </b>{{ forum.description }}<p>
76   - <b>{% trans 'Created in' %}: </b>{{ forum.create_date }}
77   - </div>
78   - </a>
79   - <div class="collapse" id="collapse{{ forum.slug }}">
80   - <div class="well">
81   - </div>
82   - </div>
83   - {% endfor %}
84   -{% else %}
85   - <div class="page-header">
86   - <p>{% trans 'No forum created yet.' %}</p>
87   - </div>
88   -{% endif %}-->
  66 +</form>
89 67 \ No newline at end of file
... ...
forum/templates/forum/forum_view.html 0 → 100644
... ... @@ -0,0 +1,79 @@
  1 +{% extends 'base.html' %}
  2 +
  3 +{% load static i18n permission_tags list_post %}
  4 +{% load widget_tweaks %}
  5 +
  6 +{% block javascript %}
  7 + <script type="text/javascript" src="{% static 'js/forum.js' %}"></script>
  8 +{% endblock %}
  9 +
  10 +{% block breadcrumbs %}
  11 +
  12 + <ol class="breadcrumb">
  13 + <li><a href="{% url 'app:index' %}">{% trans 'Home' %}</a></li>
  14 + <li><a href="{% url 'course:view' forum.topic.subject.course.slug %}">{{ forum.topic.subject.course }}</a></li>
  15 + {% if user|has_role:'professor' or user|has_role:'system_admin' %}
  16 + <li class="active">{% trans 'Forum' %}</li>
  17 + {% else %}
  18 + <li class="active">{{ forum.name }}</li>
  19 + {% endif %}
  20 +
  21 + </ol>
  22 +{% endblock %}
  23 +
  24 +{% block sidebar %}
  25 + <div class="panel panel-primary navigation">
  26 + <div class="panel-heading">
  27 + <h5>{% trans 'Menu' %}</h5>
  28 + </div>
  29 + <div class="panel-body">
  30 + <ul class="nav nav-pills nav-stacked">
  31 + <li><a href="{% url 'users:profile' %}">{% trans 'Profile' %}</a></li>
  32 + <li><a href="{% url 'course:manage' %}">{% trans 'My Courses' %}</a></li>
  33 + </ul>
  34 + </div>
  35 + </div>
  36 +
  37 + {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user == post.user %}
  38 + <div class="panel panel-primary navigation">
  39 + <div class="panel-heading">
  40 + <h3 class="panel-title">{% trans 'Actions' %}</h3>
  41 + </div>
  42 + <div class="panel-body">
  43 + <ul class="nav nav-pills nav-stacked">
  44 + <li><a href="javascript:edit_forum('{% url 'course:forum:index' %}', '{{ forum.id }}')">{% trans 'Edit' %}</a></li>
  45 + <li><a href="javascript:delete_forum('{% url 'course:forum:delete' forum.id %}', '{{ forum.id }}', '{% trans "Are you sure you want to delete this forum?" %}')">{% trans 'Delete' %}</a></li>
  46 + </ul>
  47 + </div>
  48 + </div>
  49 + {% endif %}
  50 +{% endblock %}
  51 +
  52 +{% block content %}
  53 + <div class="row panel panel-default">
  54 + <div class="panel-body">
  55 + <div class="comments-list">
  56 + <div class="section-heading">
  57 + <h1>{{ forum }}</h1>
  58 + <h4><b>{% trans 'Description' %}:</b> {{ forum.description }}</h4>
  59 + <h4><b>{% trans 'Opened in' %}:</b> {{ forum.create_date }}</h4>
  60 + </div>
  61 + </div>
  62 +
  63 + <div id="posts_list">
  64 + {% list_posts request forum %}
  65 + </div>
  66 + </div>
  67 + </div>
  68 +{% endblock %}
  69 +
  70 +{% block rightbar %}
  71 + <div class="panel panel-warning">
  72 + <div class="panel-heading">
  73 + <h3 class="panel-title">{% trans "Pending Stuffs" %}</h3>
  74 + </div>
  75 + <div class="panel-body">
  76 +
  77 + </div>
  78 + </div>
  79 +{% endblock rightbar %}
0 80 \ No newline at end of file
... ...
forum/templates/post/post_list.html
... ... @@ -7,7 +7,7 @@
7 7 <h3 class="user-name">
8 8 {{ post.user }}
9 9 <div class="pull-right">
10   - <a href="javascript:answer('{{ post.id }}', '{% url 'forum:reply_post' %}');">
  10 + <a href="javascript:answer('{{ post.id }}', '{% url 'course:forum:reply_post' %}');">
11 11 <i class="material-icons">reply</i>
12 12 </a>
13 13 {% if request.user|has_role:'system_admin' or request.user == post.user %}
... ... @@ -17,8 +17,8 @@
17 17 <i class="material-icons">more_horiz</i>
18 18 </a>
19 19 <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
20   - <li><a href="javascript:edit_post('{% url 'forum:update_post' post.id %}', '{{ post.id }}')"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li>
21   - <li><a href="javascript:javascript:delete_post('{% url 'forum:delete_post' post.id %}', '{{ post.id }}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>
  20 + <li><a href="javascript:edit_post('{% url 'course:forum:update_post' post.id %}', '{{ post.id }}')"><i class="material-icons">create</i> {% trans 'Edit' %}</a></li>
  21 + <li><a href="javascript:javascript:delete_post('{% url 'course:forum:delete_post' post.id %}', '{{ post.id }}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>
22 22 </ul>
23 23 </div>
24 24 {% endif %}
... ... @@ -40,34 +40,4 @@
40 40 </div>
41 41 {% list_post_answer request post %}
42 42 {% endfor %}
43   -{% endif %}
44   - <!--<li>
45   - <a class="post_collapse" role="button" href="javascript: showPostsAnswers('{% url 'forum:post_answers' %}', '{{ post.id }}')" aria-expanded="false">
46   - <div class="timeline-panel">
47   - <div class="row">
48   - <div class="col-xs-2 col-sm-2 col-md-2">
49   - <img class="img-responsive img-rounded" src="{{ post.user.image_url }}" />
50   - </div>
51   - <div class="col-xs-10 col-sm-10 col-md-10">
52   - <div class="timeline-heading">
53   - <h3> {{ post.user }}</h3>
54   - </div>
55   - <div class="timeline-body">
56   - <p><em>{{ post.message|linebreaks }}</em></p>
57   - </div>
58   - <hr>
59   - <small class="text-muted">
60   - <span class="pull-right">
61   - <i class="glyphicon glyphicon-time"></i> {{ post.post_date|timesince }}
62   - {% trans ' ago' %}
63   - </span>
64   - </small>
65   - </div>
66   - </div>
67   - </div>
68   - </a>
69   - <div class="collapse" id="collapse{{ post.id }}" style="margin-top:10px;">
70   - <div class="well">
71   - </div>
72   - </div>
73   - </li>-->
74 43 \ No newline at end of file
  44 +{% endif %}
75 45 \ No newline at end of file
... ...
forum/templates/post/post_render.html
... ... @@ -5,7 +5,7 @@
5 5 <h3 class="user-name">
6 6 {{ post.user }}
7 7 <div class="pull-right">
8   - <a href="javascript:answer('{{ post.id }}', '{% url 'forum:reply_post' %}');">
  8 + <a href="javascript:answer('{{ post.id }}', '{% url 'course:forum:reply_post' %}');">
9 9 <i class="material-icons">reply</i>
10 10 </a>
11 11 {% if request.user|has_role:'system_admin' or request.user|has_role:'professor' and request.user == post.user %}
... ... @@ -15,8 +15,8 @@
15 15 <i class="material-icons">more_horiz</i>
16 16 </a>
17 17 <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
18   - <li><a href="javascript:edit_post('{% url 'forum:update_post' post.id %}', '{{ post.id }}')"></li>
19   - <li><a href="javascript:delete_post('{% url 'forum:delete_post' post.id %}', '{{ post.id }}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>
  18 + <li><a href="javascript:edit_post('{% url 'course:forum:update_post' post.id %}', '{{ post.id }}')"></li>
  19 + <li><a href="javascript:delete_post('{% url 'course:forum:delete_post' post.id %}', '{{ post.id }}')"><i class="material-icons">delete_sweep</i> {% trans 'Remove' %}</a></li>
20 20 </ul>
21 21 </div>
22 22 {% endif %}
... ...
forum/urls.py
1   -from django.conf.urls import url, include
  1 +from django.conf.urls import url
2 2  
3 3 from . import views
4 4  
5 5  
6 6 urlpatterns = [
7 7 url(r'^$', views.ForumIndex.as_view(), name='index'),
  8 + url(r'^(?P<slug>[\w_-]+)/$', views.ForumDetailView.as_view(), name='view'),
8 9 url(r'^create/$', views.CreateForumView.as_view(), name='create'),
9 10 url(r'^delete/(?P<pk>[\w_-]+)/$', views.ForumDeleteView.as_view(), name='delete'),
10 11 url(r'^render_forum/([\w_-]+)/$', views.render_forum, name='render_forum'),
... ...
forum/views.py
... ... @@ -42,14 +42,14 @@ class CreateForumView(LoginRequiredMixin, generic.edit.CreateView):
42 42  
43 43 def get_success_url(self):
44 44 print("Pass")
45   - self.success_url = reverse('forum:render_forum', args = (self.object.id, ))
  45 + self.success_url = reverse('course:forum:render_forum', args = (self.object.id, ))
46 46  
47 47 return self.success_url
48 48  
49 49 def render_forum(request, forum):
50 50 last_forum = get_object_or_404(Forum, id = forum)
51 51  
52   - return HttpResponse(str(reverse_lazy('forum:index')) + '-' + str(forum) + '-' + str(last_forum.name))
  52 + return HttpResponse(str(reverse_lazy('course:forum:index')) + '-' + str(forum) + '-' + str(last_forum.name))
53 53  
54 54 class ForumDeleteView(LoginRequiredMixin, generic.DeleteView):
55 55 login_url = reverse_lazy("core:home")
... ... @@ -57,11 +57,28 @@ class ForumDeleteView(LoginRequiredMixin, generic.DeleteView):
57 57  
58 58 model = Forum
59 59 pk_url_kwarg = 'pk'
60   - success_url = reverse_lazy('forum:deleted_forum')
  60 + success_url = reverse_lazy('course:forum:deleted_forum')
61 61  
62 62 def forum_deleted(request):
63 63 return HttpResponse(_("Forum deleted successfully."))
64 64  
  65 +class ForumDetailView(LoginRequiredMixin, generic.DetailView):
  66 + login_url = reverse_lazy("core:home")
  67 + redirect_field_name = 'next'
  68 +
  69 + model = Forum
  70 + template_name = 'forum/forum_view.html'
  71 + context_object_name = 'forum'
  72 +
  73 + def get_context_data(self, **kwargs):
  74 + context = super(ForumDetailView, self).get_context_data(**kwargs)
  75 + forum = get_object_or_404(Forum, slug = self.kwargs.get('slug'))
  76 +
  77 + context['forum'] = forum
  78 + context['title'] = forum.name
  79 +
  80 + return context
  81 +
65 82 class CreatePostView(LoginRequiredMixin, generic.edit.CreateView):
66 83 login_url = reverse_lazy("core:home")
67 84 redirect_field_name = 'next'
... ... @@ -77,7 +94,7 @@ class CreatePostView(LoginRequiredMixin, generic.edit.CreateView):
77 94 return super(CreatePostView, self).form_valid(form)
78 95  
79 96 def get_success_url(self):
80   - self.success_url = reverse('forum:render_post', args = (self.object.id, ))
  97 + self.success_url = reverse('course:forum:render_post', args = (self.object.id, ))
81 98  
82 99 return self.success_url
83 100  
... ... @@ -98,7 +115,7 @@ class PostUpdateView(LoginRequiredMixin, generic.UpdateView):
98 115 template_name = "post/post_update_form.html"
99 116  
100 117 def get_success_url(self):
101   - self.success_url = reverse('forum:render_post', args = (self.object.id, ))
  118 + self.success_url = reverse('course:forum:render_post', args = (self.object.id, ))
102 119  
103 120 return self.success_url
104 121  
... ... @@ -108,7 +125,7 @@ class PostDeleteView(LoginRequiredMixin, generic.DeleteView):
108 125  
109 126 model = Post
110 127 pk_url_kwarg = 'pk'
111   - success_url = reverse_lazy('forum:deleted_post')
  128 + success_url = reverse_lazy('course:forum:deleted_post')
112 129  
113 130 def post_deleted(request):
114 131 return HttpResponse(_("Post deleted successfully."))
... ... @@ -131,4 +148,4 @@ class CreatePostAnswerView(LoginRequiredMixin, generic.edit.CreateView):
131 148  
132 149 template_name = 'post_answers/post_answer_form.html'
133 150 form_class = PostAnswerForm
134   - success_url = reverse_lazy('forum:index')
135 151 \ No newline at end of file
  152 + success_url = reverse_lazy('course:forum:index')
136 153 \ No newline at end of file
... ...
requirements.txt
... ... @@ -14,7 +14,6 @@ itsdangerous==0.24
14 14 Jinja2==2.8
15 15 MarkupSafe==0.23
16 16 Pillow==3.3.1
17   -pkg-resources==0.0.0
18 17 psycopg2==2.6.2
19 18 pycpfcnpj==1.0.2
20 19 six==1.10.0
... ...