def dispatch(self, request, *args, **kwargs): subject = get_object_or_404(Subject, slug=kwargs.get('slug', '')) if not has_subject_permissions(request.user, subject): return redirect(reverse_lazy('subjects:home')) return super(Restore, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') topic = get_object_or_404(Topic, slug = slug) existe_meta = Goals.objects.filter(topic=topic).exists() existe_boletim = Bulletin.objects.filter(topic=topic).exists() if not existe_meta: messages.error(request,_("The topic %s has no goals, so you can't create a Bulletin.") %(topic) ) caminho1 = request.META['HTTP_REFERER'] return redirect(caminho1) if existe_meta: meta_geral = Goals.objects.get(topic=topic) if meta_geral.limit_submission_date.date() > datetime.datetime.today().date(): messages.error(request,_("The deadline to submit the goals of the topic %s has not yet closed, so you can't create a Bulletin.") %(topic) ) caminho2 = request.META['HTTP_REFERER'] return redirect(caminho2) if existe_boletim: messages.error(request,_("The topic %s already has a Bulletin, so you can't create another.") %(topic) ) caminho3 = request.META['HTTP_REFERER'] return redirect(caminho3) if not has_subject_permissions(request.user, topic.subject): return redirect(reverse_lazy('subjects:home')) return super(CreateView, self).dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs): subject = get_object_or_404(Subject, slug = self.kwargs.get('slug', '')) if has_subject_permissions(self.request.user, subject): return self.render_to_response(self.get_context_data()) else: return HttpResponseForbidden()
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')) return super(CreateView, self).dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') questionary = get_object_or_404(Questionary, slug = slug) user = request.POST.get('selected_student', None) self.object_list = questionary if has_subject_permissions(request.user, questionary.topic.subject): if questionary.all_students: self.students = User.objects.filter(subject_student = questionary.topic.subject).order_by('social_name', 'username') else: self.students = User.objects.filter(resource_students = questionary).order_by('social_name', 'username') if not user is None: self.userquest = UserQuest.objects.filter(student__email = user, questionary = questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter(user_quest = self.userquest).order_by('order') else: self.userquest = UserQuest.objects.filter(student = self.students.first(), questionary = questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter(user_quest = self.userquest).order_by('order') return self.render_to_response(self.get_context_data())
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') link = get_object_or_404(Link, slug = slug) if not has_subject_permissions(request.user, link.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(DeleteLinkView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') goals = get_object_or_404(Goals, slug = slug) if not has_subject_permissions(request.user, goals): return redirect(reverse_lazy('subjects:home')) return super(Reports, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): id = self.kwargs.get('pk', '') question = get_object_or_404(Question, pk = id) if not has_subject_permissions(request.user, question.subject): return redirect(reverse_lazy('subjects:home')) return super(QuestionDeleteView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') webpage = get_object_or_404(Webpage, slug = slug) if not has_subject_permissions(request.user, webpage.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(StatisticsView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): params = self.request.GET subject = Subject.objects.get(id=params['subject_id']) if not has_subject_permissions(request.user, subject): return redirect(reverse('subjects:home')) return super(ReportView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') group = get_object_or_404(StudentsGroup, slug = slug) if not has_subject_permissions(request.user, group.subject): return redirect(reverse_lazy('subjects:home')) return super(DeleteView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') webconference = get_object_or_404(Webconference, slug = slug) self.webconference = webconference if not has_subject_permissions(request.user, webconference.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') resource = get_object_or_404(Resource, slug = slug) topic = resource.topic if not has_subject_permissions(request.user, topic.subject) and not has_resource_permissions(request.user, resource): return redirect(reverse_lazy('subjects:home')) return super(ViewPDFFile, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') filelink = get_object_or_404(FileLink, slug = slug) self.filelink = filelink if not has_subject_permissions(request.user, filelink.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): id = self.kwargs.get('pk', '') question = get_object_or_404(Question, pk=id) if not has_subject_permissions(request.user, question.subject): return redirect(reverse_lazy('subjects:home')) return super(QuestionDeleteView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') ytvideo = get_object_or_404(YTVideo, slug = slug) self.ytvideo = ytvideo if not has_subject_permissions(request.user, ytvideo.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') bulletin = get_object_or_404(Bulletin, slug = slug) self.bulletin = bulletin if not has_subject_permissions(request.user, bulletin.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') questionary = get_object_or_404(Questionary, slug=slug) if not has_subject_permissions(request.user, questionary.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(DeleteView, self).dispatch(request, *args, **kwargs)
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")) return super(PDFFileCreateView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') pdf_file = get_object_or_404(PDFFile, slug = slug) self.pdf_file = pdf_file if not has_subject_permissions(request.user, pdf_file.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def get_queryset(self): slug = self.kwargs.get('slug', '') questionary = get_object_or_404(Questionary, slug = slug) if has_subject_permissions(self.request.user, questionary.topic.subject): if questionary.all_students: self.students = User.objects.filter(subject_student = questionary.topic.subject).order_by('social_name', 'username') else: self.students = User.objects.filter(resource_students = questionary).order_by('social_name', 'username') self.userquest = UserQuest.objects.filter(student = self.students.first(), questionary = questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter(user_quest = self.userquest).order_by('order') else: self.userquest = UserQuest.objects.filter(student = self.request.user, questionary = questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter(user_quest = self.userquest).order_by('order') else: self.userquest = UserQuest.objects.create(student = self.request.user, questionary = questionary) q_ids = [0] entries = [] for specs in questionary.spec_questionary.all(): cats = list(specs.categories.values_list('id', flat = True)) n_questions = specs.n_questions with connection.cursor() as cursor: cursor.execute('SELECT DISTINCT question_id FROM banco_questoes_question_categories AS a WHERE %s <@ (SELECT array_agg(tag_id) FROM public.banco_questoes_question_categories AS c WHERE c.question_id = a.question_id) AND NOT a.question_id = any(%s)', [cats, q_ids]) rows = cursor.fetchall() list_q = [] for row in rows: list_q.append(row[0]) random.shuffle(list_q) q_ids = q_ids + (list_q[0:n_questions]) questions = Question.objects.filter(pk__in = q_ids) orders = list(range(1, questions.count()+1)) random.shuffle(orders) for question in questions.all(): entries.append(UserAnswer(user_quest = self.userquest, question = question, order = orders[0])) orders.pop(0) UserAnswer.objects.bulk_create(entries) self.userquestions = UserAnswer.objects.filter(user_quest = self.userquest).order_by('order') return questionary
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') questionary = get_object_or_404(Questionary, slug = slug) self.questionary = questionary if not has_subject_permissions(request.user, questionary.topic.subject): return redirect(reverse_lazy('subjects:home')) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') subject = get_object_or_404(Subject, slug=slug) if not has_subject_permissions(request.user, subject): return redirect(reverse_lazy('subjects:home')) return super(QuestionCreateView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get("slug", "") pdf_file = get_object_or_404(PDFFile, slug=slug) self.pdf_file = pdf_file if not has_subject_permissions(request.user, pdf_file.topic.subject): return redirect(reverse_lazy("subjects:home")) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get("slug", "") webconference = get_object_or_404(Webconference, slug=slug) self.webconference = webconference if not has_subject_permissions(request.user, webconference.topic.subject): return redirect(reverse_lazy("subjects:home")) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get("slug", "") material_delivery = get_object_or_404(MaterialDelivery, slug=slug) self.material_delivery = material_delivery if not has_subject_permissions(request.user, material_delivery.topic.subject): return redirect(reverse_lazy("subjects:home")) return super(SendMessage, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get("slug", "") resource = get_object_or_404(Resource, slug=slug) topic = resource.topic if not has_subject_permissions( request.user, topic.subject) and not has_resource_permissions( request.user, resource): return redirect(reverse_lazy("subjects:home")) return super(ViewPDFFile, self).dispatch(request, *args, **kwargs)
def get_queryset(self): slug = self.kwargs.get('slug', '') goal = get_object_or_404(Goals, slug = slug) if has_subject_permissions(self.request.user, goal.topic.subject): self.students = User.objects.filter(subject_student = goal.topic.subject).order_by('social_name', 'username') goals = MyGoals.objects.filter(user = self.students.first(), item__goal = goal) else: goals = MyGoals.objects.filter(user = self.request.user, item__goal = goal) return goals
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') questionary = get_object_or_404(Questionary, slug = slug) if not has_resource_permissions(request.user, questionary): return redirect(reverse_lazy('subjects:home')) if not has_subject_permissions(self.request.user, questionary.topic.subject): if timezone.now() < questionary.data_ini: messages.error(self.request, _('The questionary "%s" from topic "%s" can only be answered after %s'%(str(questionary), str(questionary.topic), (formats.date_format(questionary.data_ini, "SHORT_DATETIME_FORMAT"))))) return redirect(reverse_lazy('subjects:view', kwargs={"slug": questionary.topic.subject.slug})) return super(InsideView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') goals = get_object_or_404(Goals, slug = slug) if not has_resource_permissions(request.user, goals): return redirect(reverse_lazy('subjects:home')) if has_subject_permissions(request.user, goals.topic.subject): return redirect(reverse_lazy('goals:view', kwargs = {'slug': goals.slug})) if MyGoals.objects.filter(item__goal = goals, user = request.user).exists(): return redirect(reverse_lazy('goals:view', args = (), kwargs = {'slug': slug})) return super(SubmitView, self).dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs): difficulties = self.request.POST.get('difficulties', None) user_selected = request.POST.get('selected_student', None) slug = self.kwargs.get('slug', '') bulletin = get_object_or_404(Bulletin, slug=slug) self.object = bulletin if has_subject_permissions(request.user, bulletin.topic.subject): if not user_selected is None: user = User.objects.get(email = user_selected) self.student = user else: if not difficulties is None and not difficulties == "": print(difficulties) message = _("#Difficulty(ies) found in %s")%(str(bulletin)) + ":<p>" + difficulties + "</p>" brodcast_dificulties(self.request, message, bulletin.topic.subject) self.log_context = {} self.log_context['category_id'] = bulletin.topic.subject.category.id self.log_context['category_name'] = bulletin.topic.subject.category.name self.log_context['category_slug'] = bulletin.topic.subject.category.slug self.log_context['subject_id'] = bulletin.topic.subject.id self.log_context['subject_name'] = bulletin.topic.subject.name self.log_context['subject_slug'] = bulletin.topic.subject.slug self.log_context['topic_id'] = bulletin.topic.id self.log_context['topic_name'] = bulletin.topic.name self.log_context['topic_slug'] = bulletin.topic.slug self.log_context['bulletin_id'] = bulletin.id self.log_context['bulletin_name'] = bulletin.name self.log_context['bulletin_slug'] = bulletin.slug self.log_action = "send_difficulties" super(NewWindowView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) self.log_action = "view" self.log_context = {} messages.success(self.request, message = _("Difficulties sent to the subject professor(s)")) return self.render_to_response(context = self.get_context_data()) else: messages.error(self.request, message = _("You should inform some difficulty")) return self.render_to_response(context = self.get_context_data()) return self.render_to_response(context = self.get_context_data())
def get_queryset(self): slug = self.kwargs.get('slug', '') subject = get_object_or_404(Subject, slug = slug) if has_subject_permissions(self.request.user, subject): self.students = User.objects.filter(subject_student = subject).order_by('social_name', 'username') notifications = Notification.objects.filter(user = self.students.first(), task__resource__topic__subject = subject, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date") else: notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date") notifications.update(viewed = True) self.total = notifications.count() return notifications
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')) questions = Question.objects.filter(subject = topic.subject) if not questions.exists(): messages.error(self.request, _('The questions database is empty. Before creating a new questionary you must provide questions to the questions database')) return redirect(reverse_lazy('subjects:view', kwargs = {'slug': topic.subject.slug})) return super(QuestionaryCreateView, self).dispatch(request, *args, **kwargs)
def get_queryset(self): slug = self.kwargs.get('slug', '') subject = get_object_or_404(Subject, slug=slug) order = get_order_by(self.request.GET.get("order_by", None)) search = self.request.GET.get("search", None) if has_subject_permissions(self.request.user, subject): user = self.request.GET.get("selected_student", None) self.students = User.objects.filter( subject_student=subject).order_by('social_name', 'username') if not user is None: notifications = Notification.objects.filter( user__email=user, task__resource__topic__subject=subject).order_by(*order) else: notifications = Notification.objects.filter( user=self.students.first(), task__resource__topic__subject=subject).order_by(*order) else: notifications = Notification.objects.filter( user=self.request.user, task__resource__topic__subject=subject).order_by(*order) self.total = notifications.filter(creation_date=datetime.now()).count() if search: queries = Q(task__resource__name__icontains=search) queries |= Q(task__action__icontains=search) if search.isdigit(): queries |= Q(level=search) if is_date(search): search_date = strToDate(search) queries |= Q(creation_date=search_date) queries |= Q(task__limit_date=search_date) queries |= Q(task__end_date=search_date) queries |= Q(meta__date=search_date) notifications = notifications.filter(queries).order_by(*order) self.num_rows = notifications.count() return notifications
def get_success_url(self): messages.success(self.request, _('The Goals specification for the topic %s was updated successfully!')%(self.object.topic.name)) if has_subject_permissions(self.request.user, self.object.topic.subject): success_url = reverse_lazy('goals:view', kwargs = {'slug': self.object.slug}) else: success_url = reverse_lazy('goals:submit', 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('goals:window_submit', kwargs = {'slug': self.object.slug}) success_url = reverse_lazy('subjects:view', kwargs = {'slug': self.object.topic.subject.slug}) return success_url
def post(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') goal = get_object_or_404(Goals, slug = slug) user = request.POST.get('selected_student', None) if has_subject_permissions(request.user, goal.topic.subject): self.students = User.objects.filter(subject_student = goal.topic.subject).order_by('social_name', 'username') if not user is None: self.object_list = MyGoals.objects.filter(user__email = user, item__goal = goal) else: self.object_list = MyGoals.objects.filter(user = self.request.user, item__goal = goal) else: self.object_list = MyGoals.objects.filter(user = self.request.user, item__goal = goal) return self.render_to_response(self.get_context_data())
def get_context_data(self, **kwargs): subject = get_object_or_404(Subject, slug = self.kwargs.get('slug', '')) context = {} context["title"] = _("Analytics") self.log_context['category_id'] = subject.category.id self.log_context['category_name'] = subject.category.name self.log_context['category_slug'] = subject.category.slug self.log_context['subject_id'] = subject.id self.log_context['subject_name'] = subject.name self.log_context['subject_slug'] = subject.slug if has_subject_permissions(self.request.user, subject): student = self.request.POST.get('selected_student', None) context['sub_students'] = subject.students.all() context['student'] = self.request.POST.get('selected_student', subject.students.first().email) self.log_context['student'] = context['student'] if not student is None: student = User.objects.get(email = student) context["graph_data"] = json.dumps(get_pend_graph(student, subject)) context["tags_cloud"] = getAccessedTags(subject, student) context["metrics_url"] = reverse('dashboards:other_metrics', args = (subject.slug, student.email,), kwargs = {}) else: student = User.objects.get(email = context['student']) context["graph_data"] = json.dumps(get_pend_graph(student, subject)) context["tags_cloud"] = getAccessedTags(subject, student) context["metrics_url"] = reverse('dashboards:other_metrics', args = (subject.slug, student.email,), kwargs = {}) else: context["tags_cloud"] = getAccessedTags(subject, self.request.user) context["graph_data"] = json.dumps(get_pend_graph(self.request.user, subject)) context["metrics_url"] = reverse('dashboards:other_metrics', args = (subject.slug, self.request.user.email,), kwargs = {}) context["subject"] = subject context["qtd_students"] = subject.students.count() context['javascript_files'] = [] context['style_files'] = ['dashboards/css/general.css', 'dashboards/css/dashboards_category.css'] super(SubjectView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) return context
def post(self, request, *args, **kwargs): slug = self.kwargs.get('slug', '') subject = get_object_or_404(Subject, slug = slug) user = request.POST.get('selected_student', None) if has_subject_permissions(request.user, subject): self.students = User.objects.filter(subject_student = subject).order_by('social_name', 'username') if not user is None: self.object_list = Notification.objects.filter(user__email = user, task__resource__topic__subject = subject, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date") else: self.object_list = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date") else: self.object_list = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject, creation_date = datetime.now()).order_by("task__limit_date", "task__end_date") self.total = self.object_list.count() return self.render_to_response(self.get_context_data())
def get_object(self): slug = self.kwargs.get("slug", "") material_delivery = get_object_or_404(MaterialDelivery, slug=slug) if has_subject_permissions(self.request.user, material_delivery.topic.subject): viewAsStudent = self.request.session.get( material_delivery.topic.subject.slug, False) if material_delivery.all_students: self.students = User.objects.filter( subject_student=material_delivery.topic.subject ) \ .annotate(has_delivered=Exists(StudentMaterial.objects.filter(deliver__delivery=material_delivery, deliver__student=OuterRef("id")))) \ .order_by("-has_delivered", "username", "last_name") else: self.students = User.objects.filter( resource_students=material_delivery ) \ .annotate(has_delivered=Exists(StudentMaterial.objects.filter(deliver__delivery=material_delivery, deliver__student=OuterRef("id")))) \ .order_by("-has_delivered","username", "last_name") if not viewAsStudent: deliver = StudentDeliver.objects.filter( student=self.students.first(), delivery=material_delivery) if deliver.exists(): self.studentDeliver = deliver.first() else: self.studentDeliver = StudentDeliver.objects.create( delivery=material_delivery, student=self.students.first()) else: deliver = StudentDeliver.objects.filter(student=self.request.user, delivery=material_delivery) if deliver.exists(): self.studentDeliver = deliver.first() else: self.studentDeliver = StudentDeliver.objects.create( delivery=material_delivery, student=self.request.user) return material_delivery
def get_queryset(self): slug = self.kwargs.get('slug', '') subject = get_object_or_404(Subject, slug = slug) order = get_order_by(self.request.GET.get("order_by", None)) search = self.request.GET.get("search", None) if has_subject_permissions(self.request.user, subject): user = self.request.GET.get("selected_student", None) self.students = User.objects.filter(subject_student = subject).order_by('social_name', 'username') if not user is None: notifications = Notification.objects.filter(user__email = user, task__resource__topic__subject = subject).order_by(*order) else: notifications = Notification.objects.filter(user = self.students.first(), task__resource__topic__subject = subject).order_by(*order) else: notifications = Notification.objects.filter(user = self.request.user, task__resource__topic__subject = subject).order_by(*order) self.total = notifications.filter(creation_date = datetime.now()).count() if search: queries = Q(task__resource__name__icontains = search) queries |= Q(task__action__icontains = search) if search.isdigit(): queries |= Q(level = search) if is_date(search): search_date = strToDate(search) queries |= Q(creation_date = search_date) queries |= Q(task__limit_date = search_date) queries |= Q(task__end_date = search_date) queries |= Q(meta__date = search_date) notifications = notifications.filter(queries).order_by(*order) self.num_rows = notifications.count() return notifications
def dispatch(self, request, *args, **kwargs): slug = self.kwargs.get("slug", "") topic = get_object_or_404(Topic, slug=slug) existe_meta = Goals.objects.filter(topic=topic).exists() existe_boletim = Bulletin.objects.filter(topic=topic).exists() if not existe_meta: messages.error( request, _("The topic %s has no goals, so you can't create a Bulletin.") % (topic), ) caminho1 = request.META["HTTP_REFERER"] return redirect(caminho1) if existe_meta: meta_geral = Goals.objects.get(topic=topic) if (meta_geral.limit_submission_date.date() > datetime.datetime.today().date()): messages.error( request, _("The deadline to submit the goals of the topic %s has not yet closed, so you can't create a Bulletin." ) % (topic), ) caminho2 = request.META["HTTP_REFERER"] return redirect(caminho2) if existe_boletim: messages.error( request, _("The topic %s already has a Bulletin, so you can't create another." ) % (topic), ) caminho3 = request.META["HTTP_REFERER"] return redirect(caminho3) if not has_subject_permissions(request.user, topic.subject): return redirect(reverse_lazy("subjects:home")) return super(CreateView, self).dispatch(request, *args, **kwargs)
def post(self, request, *args, **kwargs): slug = self.kwargs.get("slug", "") questionary = get_object_or_404(Questionary, slug=slug) user = request.POST.get("selected_student", None) self.object_list = questionary if has_subject_permissions(request.user, questionary.topic.subject): if questionary.all_students: self.students = User.objects.filter( subject_student=questionary.topic.subject).order_by( "social_name", "username") else: self.students = User.objects.filter( resource_students=questionary).order_by( "social_name", "username") if not user is None: self.userquest = UserQuest.objects.filter( student__email=user, questionary=questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter( user_quest=self.userquest).order_by("order") else: self.userquest = UserQuest.objects.filter( student=self.students.first(), questionary=questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter( user_quest=self.userquest).order_by("order") return self.render_to_response(self.get_context_data())
def get_queryset(self): slug = self.kwargs.get('slug', '') subject = get_object_or_404(Subject, slug=slug) if has_subject_permissions(self.request.user, subject): self.students = User.objects.filter( subject_student=subject).order_by('social_name', 'username') notifications = Notification.objects.filter( user=self.students.first(), task__resource__topic__subject=subject, creation_date=datetime.now()).order_by("task__limit_date", "task__end_date") else: notifications = Notification.objects.filter( user=self.request.user, task__resource__topic__subject=subject, creation_date=datetime.now()).order_by("task__limit_date", "task__end_date") notifications.update(viewed=True) self.total = notifications.count() return notifications
def get_context_data(self, **kwargs): subject = get_object_or_404(Subject, slug=self.kwargs.get('slug', '')) context = {} context["title"] = _("Analytics") self.log_context['category_id'] = subject.category.id self.log_context['category_name'] = subject.category.name self.log_context['category_slug'] = subject.category.slug self.log_context['subject_id'] = subject.id self.log_context['subject_name'] = subject.name self.log_context['subject_slug'] = subject.slug if has_subject_permissions(self.request.user, subject): student = self.request.POST.get('selected_student', None) students = subject.students.all() students = sorted( students, key=lambda student: student.username) # Ordem Alfabética context['sub_students'] = students context['student'] = self.request.POST.get( 'selected_student', subject.students.first().email) self.log_context['student'] = context['student'] if not student is None: student = User.objects.get(email=student) context["graph_data"] = json.dumps( get_pend_graph(student, subject)) context["tags_cloud"] = reverse('dashboards:cloudy_data', args=( subject.slug, student.email, ), kwargs={}) context["metrics_url"] = reverse('dashboards:other_metrics', args=( subject.slug, student.email, ), kwargs={}) else: student = User.objects.get(email=context['student']) context["graph_data"] = json.dumps( get_pend_graph(student, subject)) context["tags_cloud"] = reverse('dashboards:cloudy_data', args=( subject.slug, student.email, ), kwargs={}) context["metrics_url"] = reverse('dashboards:other_metrics', args=( subject.slug, student.email, ), kwargs={}) else: context["tags_cloud"] = reverse('dashboards:cloudy_data', args=( subject.slug, self.request.user.email, ), kwargs={}) context["graph_data"] = json.dumps( get_pend_graph(self.request.user, subject)) context["metrics_url"] = reverse('dashboards:other_metrics', args=( subject.slug, self.request.user.email, ), kwargs={}) context["subject"] = subject context["qtd_students"] = subject.students.count() context['javascript_files'] = [] context['style_files'] = [ 'dashboards/css/style.css', 'dashboards/css/general.css', 'dashboards/css/dashboards_category.css' ] super(SubjectView, self).createLog(self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context) return context
def get_queryset(self): slug = self.kwargs.get("slug", "") questionary = get_object_or_404(Questionary, slug=slug) if has_subject_permissions(self.request.user, questionary.topic.subject): if questionary.all_students: self.students = User.objects.filter( subject_student=questionary.topic.subject).order_by( "username", "last_name") else: self.students = User.objects.filter( resource_students=questionary).order_by( "username", "last_name") self.userquest = UserQuest.objects.filter( student=self.students.first(), questionary=questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter( user_quest=self.userquest).order_by("order") else: self.userquest = UserQuest.objects.filter( student=self.request.user, questionary=questionary) if self.userquest: self.userquest = self.userquest.get() self.userquestions = UserAnswer.objects.filter( user_quest=self.userquest).order_by("order") else: self.userquest = UserQuest.objects.create( student=self.request.user, questionary=questionary) q_ids = [0] entries = [] for specs in questionary.spec_questionary.all(): cats = list(specs.categories.values_list("id", flat=True)) n_questions = specs.n_questions with connection.cursor() as cursor: cursor.execute( "SELECT DISTINCT question_id FROM banco_questoes_question_categories AS a JOIN banco_questoes_question AS b ON a.question_id = b.id WHERE %s <@ (SELECT array_agg(tag_id) FROM public.banco_questoes_question_categories AS c WHERE c.question_id = a.question_id) AND NOT a.question_id = any(%s) AND b.subject_id = %s", [cats, q_ids, questionary.topic.subject.id], ) rows = cursor.fetchall() list_q = [] for row in rows: list_q.append(row[0]) random.shuffle(list_q) q_ids = q_ids + (list_q[0:n_questions]) questions = Question.objects.filter(pk__in=q_ids) orders = list(range(1, questions.count() + 1)) random.shuffle(orders) for question in questions.all(): entries.append( UserAnswer( user_quest=self.userquest, question=question, order=orders[0], )) orders.pop(0) UserAnswer.objects.bulk_create(entries) self.userquestions = UserAnswer.objects.filter( user_quest=self.userquest).order_by("order") return questionary
def subject_permissions(user, subject): return permissions.has_subject_permissions(user, subject)
def get_context_data(self, **kwargs): subject = get_object_or_404(Subject, slug=self.kwargs.get("slug", "")) context = {} context["title"] = _("Analytics") self.log_context["category_id"] = subject.category.id self.log_context["category_name"] = subject.category.name self.log_context["category_slug"] = subject.category.slug self.log_context["subject_id"] = subject.id self.log_context["subject_name"] = subject.name self.log_context["subject_slug"] = subject.slug context["avatar_audios"] = [] context["avatar_ganntInfo"] = [] context["avatar_ganntTips"] = [] if has_subject_permissions(self.request.user, subject): student = self.request.POST.get("selected_student", None) if student is None: student = self.kwargs.get("email", None) students = subject.students.all() students = sorted( students, key=lambda student: student.username ) # Ordem Alfabética context["sub_students"] = students context["student"] = ( student if not student is None else subject.students.first().email ) self.log_context["student"] = context["student"] if not student is None: student = User.objects.get(email=student) context["graph_data"] = get_pend_graph(student, subject) context["tags_cloud"] = reverse( "dashboards:cloudy_data", args=(subject.slug, student.email,), kwargs={}, ) context["metrics_url"] = reverse( "dashboards:other_metrics", args=(subject.slug, student.email,), kwargs={}, ) else: student = User.objects.get(email=context["student"]) context["graph_data"] = get_pend_graph(student, subject) context["tags_cloud"] = reverse( "dashboards:cloudy_data", args=(subject.slug, student.email,), kwargs={}, ) context["metrics_url"] = reverse( "dashboards:other_metrics", args=(subject.slug, student.email,), kwargs={}, ) if subject.display_avatar: context["avatar_audios"] = generalInfo(subject, student) context["avatar_ganntInfo"] = ganntInfo() context["avatar_ganntTips"] = ganntTips(context["graph_data"]) else: context["tags_cloud"] = reverse( "dashboards:cloudy_data", args=(subject.slug, self.request.user.email,), kwargs={}, ) context["graph_data"] = get_pend_graph(self.request.user, subject) context["metrics_url"] = reverse( "dashboards:other_metrics", args=(subject.slug, self.request.user.email,), kwargs={}, ) if subject.display_avatar: context["avatar_audios"] = generalInfo(subject, self.request.user) context["avatar_ganntInfo"] = ganntInfo() context["avatar_ganntTips"] = ganntTips(context["graph_data"]) context["graph_data"] = json.dumps(context["graph_data"], default=str) context["subject"] = subject context["qtd_students"] = subject.students.count() context["javascript_files"] = [] context["style_files"] = [ "dashboards/css/style.css", "dashboards/css/general.css", "dashboards/css/dashboards_category.css", ] super(SubjectView, self).createLog( self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context, ) return context
def post(self, request, *args, **kwargs): difficulties = self.request.POST.get("difficulties", None) user_selected = request.POST.get("selected_student", None) slug = self.kwargs.get("slug", "") bulletin = get_object_or_404(Bulletin, slug=slug) self.object = bulletin if has_subject_permissions(request.user, bulletin.topic.subject): if not user_selected is None: user = User.objects.get(email=user_selected) self.student = user else: if not difficulties is None and not difficulties == "": print(difficulties) message = (_("#Difficulty(ies) found in %s") % (str(bulletin)) + ":<p>" + difficulties + "</p>") brodcast_dificulties(self.request, message, bulletin.topic.subject) self.log_context = {} self.log_context[ "category_id"] = bulletin.topic.subject.category.id self.log_context[ "category_name"] = bulletin.topic.subject.category.name self.log_context[ "category_slug"] = bulletin.topic.subject.category.slug self.log_context["subject_id"] = bulletin.topic.subject.id self.log_context["subject_name"] = bulletin.topic.subject.name self.log_context["subject_slug"] = bulletin.topic.subject.slug self.log_context["topic_id"] = bulletin.topic.id self.log_context["topic_name"] = bulletin.topic.name self.log_context["topic_slug"] = bulletin.topic.slug self.log_context["bulletin_id"] = bulletin.id self.log_context["bulletin_name"] = bulletin.name self.log_context["bulletin_slug"] = bulletin.slug self.log_action = "send_difficulties" super(NewWindowView, self).createLog( self.request.user, self.log_component, self.log_action, self.log_resource, self.log_context, ) self.log_action = "view" self.log_context = {} messages.success( self.request, message=_("Difficulties sent to the subject professor(s)"), ) return self.render_to_response(context=self.get_context_data()) else: messages.error(self.request, message=_("You should inform some difficulty")) return self.render_to_response(context=self.get_context_data()) return self.render_to_response(context=self.get_context_data())
def get_context_data(self, **kwargs): context = super(InsideView, self).get_context_data(**kwargs) context["title"] = self.object.name 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["bulletin_id"] = self.object.id self.log_context["bulletin_name"] = self.object.name self.log_context["bulletin_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, ) self.request.session["log_id"] = Log.objects.latest("id").id topic = self.object.topic slug = self.kwargs.get("slug", "") bulletin = get_object_or_404(Bulletin, slug=slug) students = User.objects.filter( subject_student=bulletin.topic.subject).order_by( "social_name", "username") if has_subject_permissions(self.request.user, bulletin.topic.subject): if not self.student is None: estudante = self.student else: estudante = students.first() else: estudante = self.request.user meta_geral = Goals.objects.get(topic=topic) metas = GoalItem.objects.filter(goal=meta_geral) metas_pessoais = [] n_submeteu = False for m in metas: if MyGoals.objects.filter(item=m, user=estudante).exists(): metas_pessoais.append( MyGoals.objects.get(item=m, user=estudante)) n_submeteu = False else: n_submeteu = True itens_da_meta = sorted(list(metas), key=lambda met: met.id) metas_pessoais = sorted(list(metas_pessoais), key=lambda me: me.id) lista_metas = [{ "description": geral.description, "desejada": geral.ref_value } for geral in itens_da_meta] for x in range(len(lista_metas)): if n_submeteu: lista_metas[x]["estabelecida"] = lista_metas[x]["desejada"] else: lista_metas[x]["estabelecida"] = metas_pessoais[x].value alcancadas, medias = read_excel_file(estudante, meta_geral, len(itens_da_meta), bulletin) maximos, medianas, resultados, titulos = read_excel_file_indicators( estudante, bulletin) for x in range(len(lista_metas)): lista_metas[x]["alcancada"] = alcancadas[x] lista_metas[x]["media"] = medias[x] qtd_atendida = 0 qtd_metas = len(itens_da_meta) for x in range(len(lista_metas)): # Caso 1: Meta alcançada foi maior que a meta desejada caso1 = lista_metas[x]["alcancada"] >= lista_metas[x]["desejada"] # Caso 2: Meta alcançada foi maior que a meta estabelecida caso2 = lista_metas[x]["alcancada"] >= lista_metas[x][ "estabelecida"] if caso1 or caso2: qtd_atendida += 1 porcentagem = calcula_porcentagem(qtd_atendida, qtd_metas) # Adicionando ao contexto context["metas"] = lista_metas context["percent"] = porcentagem context["maximos"] = maximos context["medianas"] = medianas context["resultados"] = resultados context["titulos"] = titulos context["student"] = self.request.POST.get("selected_student", students.first().email) context["students"] = students return context