diff --git a/webpage/forms.py b/webpage/forms.py
index 99c8fad..199d379 100644
--- a/webpage/forms.py
+++ b/webpage/forms.py
@@ -7,91 +7,122 @@ from subjects.models import Tag
from .models import Webpage
+from resubmit.widgets import ResubmitFileWidget
+
class WebpageForm(forms.ModelForm):
- subject = None
-
- def __init__(self, *args, **kwargs):
- super(WebpageForm, self).__init__(*args, **kwargs)
-
- self.subject = kwargs['initial'].get('subject', None)
-
- if self.instance.id:
- self.subject = self.instance.topic.subject
- self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True))
-
- self.fields['students'].queryset = self.subject.students.all()
- self.fields['groups'].queryset = self.subject.group_subject.all()
-
- tags = forms.CharField(label = _('Tags'), required = False)
-
- class Meta:
- model = Webpage
- fields = ['name', 'content', 'brief_description', 'all_students', 'students', 'groups', 'show_window', 'visible']
- labels = {
- 'name': _('Webpage name'),
- 'content': _('Webpage content'),
- }
- widgets = {
- 'content': forms.Textarea,
- 'brief_description': forms.Textarea,
- 'students': forms.SelectMultiple,
- 'groups': forms.SelectMultiple,
- }
-
- def clean_name(self):
- name = self.cleaned_data.get('name', '')
-
- topics = self.subject.topic_subject.all()
-
- for topic in topics:
- if self.instance.id:
- same_name = topic.resource_topic.filter(name__unaccent__iexact = name).exclude(id = self.instance.id).count()
- else:
- same_name = topic.resource_topic.filter(name__unaccent__iexact = name).count()
-
- if same_name > 0:
- self._errors['name'] = [_('This subject already has a webpage with this name')]
-
- return ValueError
-
- return name
-
- def clean_content(self):
- content = self.cleaned_data.get('content', '')
- cleaned_content = strip_tags(content)
-
- if cleaned_content == '':
- self._errors['content'] = [_('This field is required.')]
-
- return ValueError
-
- return content
-
- def save(self, commit = True):
- super(WebpageForm, self).save(commit = True)
-
- self.instance.save()
-
- previous_tags = self.instance.tags.all()
-
- tags = self.cleaned_data['tags'].split(",")
+ subject = None
+
+ def __init__(self, *args, **kwargs):
+ super(WebpageForm, self).__init__(*args, **kwargs)
+
+ self.subject = kwargs['initial'].get('subject', None)
+
+ if self.instance.id:
+ self.subject = self.instance.topic.subject
+ self.initial['tags'] = ", ".join(self.instance.tags.all().values_list("name", flat = True))
+
+ self.fields['students'].queryset = self.subject.students.all()
+ self.fields['groups'].queryset = self.subject.group_subject.all()
+
+ tags = forms.CharField(label = _('Tags'), required = False)
+
+ class Meta:
+ model = Webpage
+ fields = ['name', 'content', 'brief_description', 'all_students', 'students', 'groups', 'show_window', 'visible']
+ labels = {
+ 'name': _('Webpage name'),
+ 'content': _('Webpage content'),
+ }
+ widgets = {
+ 'content': forms.Textarea,
+ 'brief_description': forms.Textarea,
+ 'students': forms.SelectMultiple,
+ 'groups': forms.SelectMultiple,
+ }
+
+ def clean_name(self):
+ name = self.cleaned_data.get('name', '')
+
+ topics = self.subject.topic_subject.all()
+
+ for topic in topics:
+ if self.instance.id:
+ same_name = topic.resource_topic.filter(name__unaccent__iexact = name).exclude(id = self.instance.id).count()
+ else:
+ same_name = topic.resource_topic.filter(name__unaccent__iexact = name).count()
+
+ if same_name > 0:
+ self._errors['name'] = [_('This subject already has a webpage with this name')]
+
+ return ValueError
+
+ return name
+
+ def clean_content(self):
+ content = self.cleaned_data.get('content', '')
+ cleaned_content = strip_tags(content)
+
+ if cleaned_content == '':
+ self._errors['content'] = [_('This field is required.')]
+
+ return ValueError
+
+ return content
+
+ def save(self, commit = True):
+ super(WebpageForm, self).save(commit = True)
+
+ self.instance.save()
+
+ previous_tags = self.instance.tags.all()
+
+ tags = self.cleaned_data['tags'].split(",")
#Excluding unwanted tags
- for prev in previous_tags:
- if not prev.name in tags:
- self.instance.tags.remove(prev)
+ for prev in previous_tags:
+ if not prev.name in tags:
+ self.instance.tags.remove(prev)
- for tag in tags:
- tag = tag.strip()
+ for tag in tags:
+ tag = tag.strip()
+
+ exist = Tag.objects.filter(name = tag).exists()
+
+ if exist:
+ new_tag = Tag.objects.get(name = tag)
+ else:
+ new_tag = Tag.objects.create(name = tag)
+
+ if not new_tag in self.instance.tags.all():
+ self.instance.tags.add(new_tag)
+
+ return self.instance
+
+class FormModalMessage(forms.Form):
+ MAX_UPLOAD_SIZE = 5*1024*1024
+
+ comment = forms.CharField(widget=forms.Textarea)
+ image = forms.FileField(widget=ResubmitFileWidget(attrs={'accept':'image/*'}))
+
+ def clean_comment(self):
+ comment = self.cleaned_data.get('comment', '')
+ cleaned_comment = strip_tags(comment)
+
+ if cleaned_comment == '':
+ self._errors['comment'] = [_('This field is required.')]
+
+ return ValueError
+
+ return comment
- exist = Tag.objects.filter(name = tag).exists()
+ def clean_image(self):
+ image = self.cleaned_data.get('image', False)
- if exist:
- new_tag = Tag.objects.get(name = tag)
- else:
- new_tag = Tag.objects.create(name = tag)
+ if image:
+ if hasattr(image, '_size'):
+ if image._size > self.MAX_UPLOAD_SIZE:
+ self._errors['image'] = [_("The image is too large. It should have less than 5MB.")]
- if not new_tag in self.instance.tags.all():
- self.instance.tags.add(new_tag)
+ return ValueError
- return self.instance
\ No newline at end of file
+ return image
\ No newline at end of file
diff --git a/webpage/templates/webpages/relatorios.html b/webpage/templates/webpages/relatorios.html
index a344479..dcfa856 100644
--- a/webpage/templates/webpages/relatorios.html
+++ b/webpage/templates/webpages/relatorios.html
@@ -9,9 +9,8 @@
{% endblock %}
diff --git a/webpage/templates/webpages/send_message.html b/webpage/templates/webpages/send_message.html
new file mode 100644
index 0000000..8c48540
--- /dev/null
+++ b/webpage/templates/webpages/send_message.html
@@ -0,0 +1,112 @@
+
+ {% load widget_tweaks i18n %}
+
+
+
+
\ No newline at end of file
diff --git a/webpage/urls.py b/webpage/urls.py
index 57aa88a..4b84991 100644
--- a/webpage/urls.py
+++ b/webpage/urls.py
@@ -10,5 +10,5 @@ urlpatterns = [
url(r'^window_view/(?P[\w_-]+)/$', views.NewWindowView.as_view(), name = 'window_view'),
url(r'^view/(?P[\w_-]+)/$', views.InsideView.as_view(), name = 'view'),
url(r'^chart/(?P[\w_-]+)/$', views.StatisticsView.as_view(), name = 'get_chart'),
- url(r'^send-message/(?P[\w_-]+)/$', views.sendMessage, name = 'send_message'),
+ url(r'^send-message/(?P[\w_-]+)/$', views.SendMessage.as_view(), name = 'send_message'),
]
diff --git a/webpage/views.py b/webpage/views.py
index 33aa1ed..1501bc2 100644
--- a/webpage/views.py
+++ b/webpage/views.py
@@ -20,100 +20,107 @@ from pendencies.forms import PendenciesForm
from .forms import WebpageForm
from .models import Webpage
+from chat.models import Conversation, TalkMessages
+from users.models import User
+from subjects.models import Subject
+
+from .forms import FormModalMessage
+
class NewWindowView(LoginRequiredMixin, LogMixin, generic.DetailView):
- log_component = 'resources'
- log_action = 'view'
- log_resource = 'webpage'
- log_context = {}
+ log_component = 'resources'
+ log_action = 'view'
+ log_resource = 'webpage'
+ log_context = {}
- login_url = reverse_lazy("users:login")
- redirect_field_name = 'next'
+ login_url = reverse_lazy("users:login")
+ redirect_field_name = 'next'
- template_name = 'webpages/window_view.html'
- model = Webpage
- context_object_name = 'webpage'
+ template_name = 'webpages/window_view.html'
+ model = Webpage
+ context_object_name = 'webpage'
- def dispatch(self, request, *args, **kwargs):
- slug = self.kwargs.get('slug', '')
- webpage = get_object_or_404(Webpage, slug = slug)
+ def dispatch(self, request, *args, **kwargs):
+ slug = self.kwargs.get('slug', '')
+ webpage = get_object_or_404(Webpage, slug=slug)
- if not has_resource_permissions(request.user, webpage):
- return redirect(reverse_lazy('subjects:home'))
+ if not has_resource_permissions(request.user, webpage):
+ return redirect(reverse_lazy('subjects:home'))
- return super(NewWindowView, self).dispatch(request, *args, **kwargs)
+ return super(NewWindowView, self).dispatch(request, *args, **kwargs)
- def get_context_data(self, **kwargs):
- context = super(NewWindowView, self).get_context_data(**kwargs)
+ def get_context_data(self, **kwargs):
+ context = super(NewWindowView, self).get_context_data(**kwargs)
- self.log_context['category_id'] = self.object.topic.subject.category.id
- self.log_context['category_name'] = self.object.topic.subject.category.name
- self.log_context['category_slug'] = self.object.topic.subject.category.slug
- self.log_context['subject_id'] = self.object.topic.subject.id
- self.log_context['subject_name'] = self.object.topic.subject.name
- self.log_context['subject_slug'] = self.object.topic.subject.slug
- self.log_context['topic_id'] = self.object.topic.id
- self.log_context['topic_name'] = self.object.topic.name
- self.log_context['topic_slug'] = self.object.topic.slug
- self.log_context['webpage_id'] = self.object.id
- self.log_context['webpage_name'] = self.object.name
- self.log_context['webpage_slug'] = self.object.slug
- self.log_context['timestamp_start'] = str(int(time.time()))
+ self.log_context['category_id'] = self.object.topic.subject.category.id
+ self.log_context['category_name'] = self.object.topic.subject.category.name
+ self.log_context['category_slug'] = self.object.topic.subject.category.slug
+ self.log_context['subject_id'] = self.object.topic.subject.id
+ self.log_context['subject_name'] = self.object.topic.subject.name
+ self.log_context['subject_slug'] = self.object.topic.subject.slug
+ self.log_context['topic_id'] = self.object.topic.id
+ self.log_context['topic_name'] = self.object.topic.name
+ self.log_context['topic_slug'] = self.object.topic.slug
+ self.log_context['webpage_id'] = self.object.id
+ self.log_context['webpage_name'] = self.object.name
+ self.log_context['webpage_slug'] = self.object.slug
+ self.log_context['timestamp_start'] = str(int(time.time()))
- super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
+ super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action,
+ self.log_resource, self.log_context)
- self.request.session['log_id'] = Log.objects.latest('id').id
+ self.request.session['log_id'] = Log.objects.latest('id').id
- return context
+ return context
class InsideView(LoginRequiredMixin, LogMixin, generic.DetailView):
- log_component = 'resources'
- log_action = 'view'
- log_resource = 'webpage'
- log_context = {}
+ log_component = 'resources'
+ log_action = 'view'
+ log_resource = 'webpage'
+ log_context = {}
- login_url = reverse_lazy("users:login")
- redirect_field_name = 'next'
+ login_url = reverse_lazy("users:login")
+ redirect_field_name = 'next'
- template_name = 'webpages/view.html'
- model = Webpage
- context_object_name = 'webpage'
+ template_name = 'webpages/view.html'
+ model = Webpage
+ context_object_name = 'webpage'
- def dispatch(self, request, *args, **kwargs):
- slug = self.kwargs.get('slug', '')
- webpage = get_object_or_404(Webpage, slug = slug)
+ def dispatch(self, request, *args, **kwargs):
+ slug = self.kwargs.get('slug', '')
+ webpage = get_object_or_404(Webpage, slug=slug)
- if not has_resource_permissions(request.user, webpage):
- return redirect(reverse_lazy('subjects:home'))
+ if not has_resource_permissions(request.user, webpage):
+ return redirect(reverse_lazy('subjects:home'))
- return super(InsideView, self).dispatch(request, *args, **kwargs)
+ return super(InsideView, self).dispatch(request, *args, **kwargs)
- def get_context_data(self, **kwargs):
- context = super(InsideView, self).get_context_data(**kwargs)
+ def get_context_data(self, **kwargs):
+ context = super(InsideView, self).get_context_data(**kwargs)
- context['title'] = self.object.name
+ context['title'] = self.object.name
- context['topic'] = self.object.topic
- context['subject'] = self.object.topic.subject
+ context['topic'] = self.object.topic
+ context['subject'] = self.object.topic.subject
- self.log_context['category_id'] = self.object.topic.subject.category.id
- self.log_context['category_name'] = self.object.topic.subject.category.name
- self.log_context['category_slug'] = self.object.topic.subject.category.slug
- self.log_context['subject_id'] = self.object.topic.subject.id
- self.log_context['subject_name'] = self.object.topic.subject.name
- self.log_context['subject_slug'] = self.object.topic.subject.slug
- self.log_context['topic_id'] = self.object.topic.id
- self.log_context['topic_name'] = self.object.topic.name
- self.log_context['topic_slug'] = self.object.topic.slug
- self.log_context['webpage_id'] = self.object.id
- self.log_context['webpage_name'] = self.object.name
- self.log_context['webpage_slug'] = self.object.slug
- self.log_context['timestamp_start'] = str(int(time.time()))
+ self.log_context['category_id'] = self.object.topic.subject.category.id
+ self.log_context['category_name'] = self.object.topic.subject.category.name
+ self.log_context['category_slug'] = self.object.topic.subject.category.slug
+ self.log_context['subject_id'] = self.object.topic.subject.id
+ self.log_context['subject_name'] = self.object.topic.subject.name
+ self.log_context['subject_slug'] = self.object.topic.subject.slug
+ self.log_context['topic_id'] = self.object.topic.id
+ self.log_context['topic_name'] = self.object.topic.name
+ self.log_context['topic_slug'] = self.object.topic.slug
+ self.log_context['webpage_id'] = self.object.id
+ self.log_context['webpage_name'] = self.object.name
+ self.log_context['webpage_slug'] = self.object.slug
+ self.log_context['timestamp_start'] = str(int(time.time()))
- super(InsideView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
+ super(InsideView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
- self.request.session['log_id'] = Log.objects.latest('id').id
+ self.request.session['log_id'] = Log.objects.latest('id').id
- return context
+ return context
class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
log_component = 'resources'
@@ -128,55 +135,55 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
form_class = WebpageForm
def dispatch(self, request, *args, **kwargs):
- slug = self.kwargs.get('slug', '')
- topic = get_object_or_404(Topic, slug = slug)
-
- if not has_subject_permissions(request.user, topic.subject):
- return redirect(reverse_lazy('subjects:home'))
+ slug = self.kwargs.get('slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
+
+ if not has_subject_permissions(request.user, topic.subject):
+ return redirect(reverse_lazy('subjects:home'))
- return super(CreateView, self).dispatch(request, *args, **kwargs)
+ return super(CreateView, self).dispatch(request, *args, **kwargs)
def get(self, request, *args, **kwargs):
- self.object = None
+ self.object = None
- form_class = self.get_form_class()
- form = self.get_form(form_class)
+ form_class = self.get_form_class()
+ form = self.get_form(form_class)
- slug = self.kwargs.get('slug', '')
- topic = get_object_or_404(Topic, slug = slug)
+ slug = self.kwargs.get('slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
- pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
+ pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
- return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
+ return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
def post(self, request, *args, **kwargs):
- self.object = None
+ self.object = None
- form_class = self.get_form_class()
- form = self.get_form(form_class)
+ form_class = self.get_form_class()
+ form = self.get_form(form_class)
- slug = self.kwargs.get('slug', '')
- topic = get_object_or_404(Topic, slug = slug)
+ slug = self.kwargs.get('slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
- pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
+ pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
- if (form.is_valid() and pendencies_form.is_valid()):
- return self.form_valid(form, pendencies_form)
- else:
- return self.form_invalid(form, pendencies_form)
+ if (form.is_valid() and pendencies_form.is_valid()):
+ return self.form_valid(form, pendencies_form)
+ else:
+ return self.form_invalid(form, pendencies_form)
def get_initial(self):
- initial = super(CreateView, self).get_initial()
+ initial = super(CreateView, self).get_initial()
- slug = self.kwargs.get('slug', '')
+ slug = self.kwargs.get('slug', '')
- topic = get_object_or_404(Topic, slug = slug)
- initial['subject'] = topic.subject
+ topic = get_object_or_404(Topic, slug = slug)
+ initial['subject'] = topic.subject
- return initial
+ return initial
def form_invalid(self, form, pendencies_form):
- return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
+ return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
def form_valid(self, form, pendencies_form):
self.object = form.save(commit = False)
@@ -187,18 +194,18 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
self.object.order = topic.resource_topic.count() + 1
if not self.object.topic.visible and not self.object.topic.repository:
- self.object.visible = False
+ self.object.visible = False
- if form.cleaned_data["all_students"]:
- self.object.students.add(*self.object.topic.subject.students.all())
+ # if form.cleaned_data["all_students"]:
+ # self.object.students.add(*self.object.topic.subject.students.all())
self.object.save()
pend_form = pendencies_form.save(commit = False)
pend_form.resource = self.object
if not pend_form.action == "":
- pend_form.save()
+ pend_form.save()
self.log_context['category_id'] = self.object.topic.subject.category.id
self.log_context['category_name'] = self.object.topic.subject.category.name
@@ -218,153 +225,153 @@ class CreateView(LoginRequiredMixin, LogMixin, generic.edit.CreateView):
return redirect(self.get_success_url())
def get_context_data(self, **kwargs):
- context = super(CreateView, self).get_context_data(**kwargs)
+ context = super(CreateView, self).get_context_data(**kwargs)
- context['title'] = _('Create Webpage')
+ context['title'] = _('Create Webpage')
- slug = self.kwargs.get('slug', '')
- topic = get_object_or_404(Topic, slug = slug)
+ slug = self.kwargs.get('slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
- context['topic'] = topic
- context['subject'] = topic.subject
+ context['topic'] = topic
+ context['subject'] = topic.subject
- return context
+ return context
def get_success_url(self):
- messages.success(self.request, _('The Webpage "%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))
+ messages.success(self.request, _('The Webpage "%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))
- success_url = reverse_lazy('webpages:view', kwargs = {'slug': self.object.slug})
+ success_url = reverse_lazy('webpages:view', kwargs = {'slug': self.object.slug})
- if self.object.show_window:
- self.request.session['resources'] = {}
- self.request.session['resources']['new_page'] = True
- self.request.session['resources']['new_page_url'] = reverse('webpages:window_view', kwargs = {'slug': self.object.slug})
+ if self.object.show_window:
+ self.request.session['resources'] = {}
+ self.request.session['resources']['new_page'] = True
+ self.request.session['resources']['new_page_url'] = reverse('webpages:window_view', kwargs = {'slug': self.object.slug})
- success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
+ success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
- return success_url
+ return success_url
class UpdateView(LoginRequiredMixin, LogMixin, generic.UpdateView):
- log_component = 'resources'
- log_action = 'update'
- log_resource = 'webpage'
- log_context = {}
+ log_component = 'resources'
+ log_action = 'update'
+ log_resource = 'webpage'
+ log_context = {}
- login_url = reverse_lazy("users:login")
- redirect_field_name = 'next'
+ login_url = reverse_lazy("users:login")
+ redirect_field_name = 'next'
- template_name = 'webpages/update.html'
- model = Webpage
- form_class = WebpageForm
+ template_name = 'webpages/update.html'
+ model = Webpage
+ form_class = WebpageForm
- def dispatch(self, request, *args, **kwargs):
- slug = self.kwargs.get('topic_slug', '')
- topic = get_object_or_404(Topic, slug = slug)
+ def dispatch(self, request, *args, **kwargs):
+ slug = self.kwargs.get('topic_slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
- if not has_subject_permissions(request.user, topic.subject):
- return redirect(reverse_lazy('subjects:home'))
+ if not has_subject_permissions(request.user, topic.subject):
+ return redirect(reverse_lazy('subjects:home'))
- return super(UpdateView, self).dispatch(request, *args, **kwargs)
+ return super(UpdateView, self).dispatch(request, *args, **kwargs)
- def get(self, request, *args, **kwargs):
- self.object = self.get_object()
+ def get(self, request, *args, **kwargs):
+ self.object = self.get_object()
- form_class = self.get_form_class()
- form = self.get_form(form_class)
+ form_class = self.get_form_class()
+ form = self.get_form(form_class)
- slug = self.kwargs.get('topic_slug', '')
- topic = get_object_or_404(Topic, slug = slug)
+ slug = self.kwargs.get('topic_slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
- pend_form = self.object.pendencies_resource.all()
+ pend_form = self.object.pendencies_resource.all()
- if len(pend_form) > 0:
- pendencies_form = PendenciesForm(instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
- else:
- pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
+ if len(pend_form) > 0:
+ pendencies_form = PendenciesForm(instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
+ else:
+ pendencies_form = PendenciesForm(initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
- return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
+ return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
- def post(self, request, *args, **kwargs):
- self.object = self.get_object()
+ def post(self, request, *args, **kwargs):
+ self.object = self.get_object()
- form_class = self.get_form_class()
- form = self.get_form(form_class)
+ form_class = self.get_form_class()
+ form = self.get_form(form_class)
- slug = self.kwargs.get('topic_slug', '')
- topic = get_object_or_404(Topic, slug = slug)
+ slug = self.kwargs.get('topic_slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
- pend_form = self.object.pendencies_resource.all()
+ pend_form = self.object.pendencies_resource.all()
- if len(pend_form) > 0:
- pendencies_form = PendenciesForm(self.request.POST, instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
- else:
- pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
+ if len(pend_form) > 0:
+ pendencies_form = PendenciesForm(self.request.POST, instance = pend_form[0], initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
+ else:
+ pendencies_form = PendenciesForm(self.request.POST, initial = {'subject': topic.subject.id, 'actions': [("", "-------"),("view", _("Visualize"))]})
- if (form.is_valid() and pendencies_form.is_valid()):
- return self.form_valid(form, pendencies_form)
- else:
- return self.form_invalid(form, pendencies_form)
+ if (form.is_valid() and pendencies_form.is_valid()):
+ return self.form_valid(form, pendencies_form)
+ else:
+ return self.form_invalid(form, pendencies_form)
- def form_invalid(self, form, pendencies_form):
- return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
+ def form_invalid(self, form, pendencies_form):
+ return self.render_to_response(self.get_context_data(form = form, pendencies_form = pendencies_form))
- def form_valid(self, form, pendencies_form):
- self.object = form.save(commit = False)
+ def form_valid(self, form, pendencies_form):
+ self.object = form.save(commit = False)
- if not self.object.topic.visible and not self.object.topic.repository:
- self.object.visible = False
+ if not self.object.topic.visible and not self.object.topic.repository:
+ self.object.visible = False
- self.object.save()
+ self.object.save()
- pend_form = pendencies_form.save(commit = False)
- pend_form.resource = self.object
+ pend_form = pendencies_form.save(commit = False)
+ pend_form.resource = self.object
- if not pend_form.action == "":
- pend_form.save()
+ if not pend_form.action == "":
+ pend_form.save()
- self.log_context['category_id'] = self.object.topic.subject.category.id
- self.log_context['category_name'] = self.object.topic.subject.category.name
- self.log_context['category_slug'] = self.object.topic.subject.category.slug
- self.log_context['subject_id'] = self.object.topic.subject.id
- self.log_context['subject_name'] = self.object.topic.subject.name
- self.log_context['subject_slug'] = self.object.topic.subject.slug
- self.log_context['topic_id'] = self.object.topic.id
- self.log_context['topic_name'] = self.object.topic.name
- self.log_context['topic_slug'] = self.object.topic.slug
- self.log_context['webpage_id'] = self.object.id
- self.log_context['webpage_name'] = self.object.name
- self.log_context['webpage_slug'] = self.object.slug
+ self.log_context['category_id'] = self.object.topic.subject.category.id
+ self.log_context['category_name'] = self.object.topic.subject.category.name
+ self.log_context['category_slug'] = self.object.topic.subject.category.slug
+ self.log_context['subject_id'] = self.object.topic.subject.id
+ self.log_context['subject_name'] = self.object.topic.subject.name
+ self.log_context['subject_slug'] = self.object.topic.subject.slug
+ self.log_context['topic_id'] = self.object.topic.id
+ self.log_context['topic_name'] = self.object.topic.name
+ self.log_context['topic_slug'] = self.object.topic.slug
+ self.log_context['webpage_id'] = self.object.id
+ self.log_context['webpage_name'] = self.object.name
+ self.log_context['webpage_slug'] = self.object.slug
- super(UpdateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
+ super(UpdateView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context)
- return redirect(self.get_success_url())
+ return redirect(self.get_success_url())
- def get_context_data(self, **kwargs):
- context = super(UpdateView, self).get_context_data(**kwargs)
+ def get_context_data(self, **kwargs):
+ context = super(UpdateView, self).get_context_data(**kwargs)
- context['title'] = _('Update Webpage')
+ context['title'] = _('Update Webpage')
- slug = self.kwargs.get('topic_slug', '')
- topic = get_object_or_404(Topic, slug = slug)
+ slug = self.kwargs.get('topic_slug', '')
+ topic = get_object_or_404(Topic, slug = slug)
- context['topic'] = topic
- context['subject'] = topic.subject
+ context['topic'] = topic
+ context['subject'] = topic.subject
- return context
+ return context
- def get_success_url(self):
- messages.success(self.request, _('The Webpage "%s" was updated successfully!')%(self.object.name))
+ def get_success_url(self):
+ messages.success(self.request, _('The Webpage "%s" was updated successfully!')%(self.object.name))
- success_url = reverse_lazy('webpages:view', kwargs = {'slug': self.object.slug})
+ success_url = reverse_lazy('webpages:view', kwargs = {'slug': self.object.slug})
- if self.object.show_window:
- self.request.session['resources'] = {}
- self.request.session['resources']['new_page'] = True
- self.request.session['resources']['new_page_url'] = reverse('webpages:window_view', kwargs = {'slug': self.object.slug})
+ if self.object.show_window:
+ self.request.session['resources'] = {}
+ self.request.session['resources']['new_page'] = True
+ self.request.session['resources']['new_page_url'] = reverse('webpages:window_view', kwargs = {'slug': self.object.slug})
- success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
+ success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug})
- return success_url
+ return success_url
class DeleteView(LoginRequiredMixin, LogMixin, generic.DeleteView):
log_component = 'resources'
@@ -474,6 +481,8 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView):
context["init_date"] = start_date
context["end_date"] = end_date
alunos = webpage.students.all()
+ if webpage.all_students :
+ alunos = webpage.topic.subject.students.all()
vis_ou = Log.objects.filter(context__contains={'webpage_id':webpage.id},resource="webpage",action="view",user_email__in=(aluno.email for aluno in alunos), datetime__range=(start_date,end_date + datetime.timedelta(minutes = 1)))
did,n_did,history = str(_("Realized")),str(_("Unrealized")),str(_("Historic"))
@@ -516,9 +525,47 @@ class StatisticsView(LoginRequiredMixin, LogMixin, generic.DetailView):
return context
-from chat.models import Conversation, TalkMessages
-from users.models import User
-from subjects.models import Subject
+
+class SendMessage(LoginRequiredMixin, LogMixin, generic.edit.FormView):
+ log_component = 'resources'
+ log_action = 'send'
+ log_resource = 'webpage'
+ log_context = {}
+
+ login_url = reverse_lazy("users:login")
+ redirect_field_name = 'next'
+
+ template_name = 'webpages/send_message.html'
+ form_class = FormModalMessage
+
+ def dispatch(self, request, *args, **kwargs):
+ slug = self.kwargs.get('slug', '')
+ webpage = get_object_or_404(Webpage, slug = slug)
+ self.webpage = webpage
+
+ if not has_subject_permissions(request.user, webpage.topic.subject):
+ return redirect(reverse_lazy('subjects:home'))
+
+ return super(SendMessage, self).dispatch(request, *args, **kwargs)
+
+ def form_valid(self, form):
+ message = form.cleaned_data.get('comment')
+ image = form.cleaned_data.get("image")
+ users = (self.request.POST.get('users[]','')).split(",")
+ user = self.request.user
+ subject = self.webpage.topic.subject
+ for u in users:
+ to_user = User.objects.get(email=u)
+ talk, create = Conversation.objects.get_or_create(user_one=user,user_two=to_user)
+ created = TalkMessages.objects.create(text=message,talk=talk,user=user,subject=subject,image=image)
+ return JsonResponse({"message":"ok"})
+
+ def get_context_data(self, **kwargs):
+ context = super(SendMessage,self).get_context_data()
+ context["webpage"] = get_object_or_404(Webpage, slug=self.kwargs.get('slug', ''))
+ return context
+
+
def sendMessage(request, slug):
message = request.GET.get('message','')
users = request.GET.getlist('users[]','')
--
libgit2 0.21.2