Esempio n. 1
0
File: views.py Progetto: cmfcmf/1327
def index(request):
	running_polls = []
	finished_polls = []
	upcoming_polls = []
	# do not show polls that a user is not allowed to see
	for poll in Poll.objects.all().order_by('-end_date'):
		if request.user.has_perm(Poll.get_view_permission(), obj=poll) and poll.start_date <= datetime.date.today():
			if datetime.date.today() <= poll.end_date \
						and not poll.participants.filter(id=request.user.pk).exists() \
						and request.user.has_perm(Poll.get_vote_permission(), poll):
				running_polls.append(poll)
			else:
				finished_polls.append(poll)
		elif request.user.has_perm("polls.change_poll", obj=poll) and poll.start_date > datetime.date.today():
			upcoming_polls.append(poll)

	return render(
		request,
		'polls_index.html',
		{
			"running_polls": running_polls,
			"finished_polls": finished_polls,
			"upcoming_polls": upcoming_polls,
		}
	)
Esempio n. 2
0
def index(request):
    running_polls = []
    finished_polls = []
    upcoming_polls = []
    # do not show polls that a user is not allowed to see
    for poll in Poll.objects.all().order_by('-end_date'):
        if request.user.has_perm(
                Poll.get_view_permission(),
                obj=poll) and poll.start_date <= datetime.date.today():
            if datetime.date.today() <= poll.end_date \
               and not poll.participants.filter(id=request.user.pk).exists() \
               and request.user.has_perm(Poll.get_vote_permission(), poll):
                running_polls.append(poll)
            else:
                finished_polls.append(poll)
        elif request.user.has_perm(
                "polls.change_poll",
                obj=poll) and poll.start_date > datetime.date.today():
            upcoming_polls.append(poll)

    return render(
        request, 'polls_index.html', {
            "running_polls": running_polls,
            "finished_polls": finished_polls,
            "upcoming_polls": upcoming_polls,
        })
Esempio n. 3
0
def results(request, poll, url_title):
	if poll.start_date > datetime.date.today():
		# poll is not open
		raise Http404

	if request.user.has_perm(Poll.get_vote_permission(), poll) \
				and not poll.participants.filter(id=request.user.pk).exists() \
				and poll.end_date >= datetime.date.today():
		return vote(request, poll, url_title)

	if not poll.show_results_immediately and poll.end_date >= datetime.date.today():
		messages.info(
			request,
			_("You can not see the results of this poll right now. You have to wait until {} to see the results of this poll.".format(poll.end_date.strftime("%d. %B %Y")))
		)
		return HttpResponseRedirect(reverse('polls:index'))

	md = markdown.Markdown(safe_mode='escape', extensions=[TocExtension(baselevel=2), InternalLinksMarkdownExtension(), 'markdown.extensions.abbr'])
	description = md.convert(poll.text + abbreviation_explanation_markdown())

	return render(
		request,
		'polls_results.html',
		{
			"document": poll,
			"description": description,
			'toc': md.toc,
			'active_page': 'view',
			'view_page': True,
			'attachments': poll.attachments.filter(no_direct_download=False).order_by('index'),
			'permission_warning': permission_warning(request.user, poll),
		}
	)
Esempio n. 4
0
File: views.py Progetto: cmfcmf/1327
def results(request, poll, url_title):
	if poll.start_date > datetime.date.today():
		# poll is not open
		raise Http404

	if request.user.has_perm(Poll.get_vote_permission(), poll) \
				and not poll.participants.filter(id=request.user.pk).exists() \
				and poll.end_date >= datetime.date.today():
		return vote(request, poll, url_title)

	if not poll.show_results_immediately and poll.end_date >= datetime.date.today():
		messages.info(
			request,
			_("You can not see the results of this poll right now. You have to wait until {} to see the results of this poll.").format(
				(poll.end_date + datetime.timedelta(days=1)).strftime("%d. %B %Y")
			)
		)
		return HttpResponseRedirect(reverse('polls:index'))

	description, toc = convert_markdown(poll.text)

	return render(
		request,
		'polls_results.html',
		{
			"document": poll,
			"description": description,
			'toc': toc,
			'active_page': 'view',
			'view_page': True,
			'attachments': poll.attachments.filter(no_direct_download=False).order_by('index'),
			'permission_overview': document_permission_overview(request.user, poll),
			"has_choice_descriptions": poll.has_choice_descriptions,
		}
	)
Esempio n. 5
0
 def extendMarkdown(self, md, md_globals):
     md.inlinePatterns.add(
         'InternalLinkDocumentsPattern',
         Document.LinkPattern(Document.DOCUMENT_LINK_REGEX, md), "_begin")
     md.inlinePatterns.add('InternalLinkPollsPattern',
                           Poll.LinkPattern(Poll.POLLS_LINK_REGEX, md),
                           "_begin")
Esempio n. 6
0
    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)
        instance = forms.ModelForm.save(self)
        instance.user_set.clear()
        instance.user_set.add(*self.cleaned_data["users"])
        if self.cleaned_data["add_information_document"]:
            assign_perm(InformationDocument().add_permission_name, instance)
        else:
            remove_perm(InformationDocument().add_permission_name, instance)
        if self.cleaned_data["add_minutesdocument"]:
            assign_perm(MinutesDocument().add_permission_name, instance)
        else:
            remove_perm(MinutesDocument().add_permission_name, instance)
        if self.cleaned_data["add_poll"]:
            assign_perm(Poll().add_permission_name, instance)
        else:
            remove_perm(Poll().add_permission_name, instance)

        return instance
Esempio n. 7
0
def view(request, title):
	poll = get_object_or_404(Document, url_title=title)
	check_permissions(poll, request.user, [Poll.get_view_permission()])
	if poll.end_date < datetime.date.today() or poll.participants.filter(id=request.user.pk).exists():
		return results(request, poll, title)
	elif poll.start_date > datetime.date.today():
		messages.warning(request, _("This poll has not yet started."))
		return index(request)
	else:
		if not request.user.has_perm('polls.vote_poll', poll):
			return results(request, poll, title)
		return vote(request, poll, title)
Esempio n. 8
0
def view(request, title):
    poll = get_object_or_404(Document, url_title=title)
    check_permissions(poll, request.user, [Poll.get_view_permission()])
    if poll.end_date < datetime.date.today() or poll.participants.filter(
            id=request.user.pk).exists():
        return results(request, poll, title)
    elif poll.start_date > datetime.date.today():
        messages.warning(request, _("This poll has not yet started."))
        return index(request)
    else:
        if not request.user.has_perm('polls.vote_poll', poll):
            return results(request, poll, title)
        return vote(request, poll, title)
Esempio n. 9
0
def results(request, poll, url_title):
    if poll.start_date > datetime.date.today():
        # poll is not open
        raise Http404

    if request.user.has_perm(Poll.get_vote_permission(), poll) \
       and not poll.participants.filter(id=request.user.pk).exists() \
       and poll.end_date >= datetime.date.today():
        return vote(request, poll, url_title)

    if not poll.show_results_immediately and poll.end_date >= datetime.date.today(
    ):
        messages.info(
            request,
            _("You can not see the results of this poll right now. You have to wait until {} to see the results of this poll."
              ).format((poll.end_date +
                        datetime.timedelta(days=1)).strftime("%d. %B %Y")))
        return HttpResponseRedirect(reverse('polls:index'))

    description, toc = convert_markdown(poll.text)

    return render(
        request, 'polls_results.html', {
            "document":
            poll,
            "description":
            description,
            'toc':
            toc,
            'active_page':
            'view',
            'view_page':
            True,
            'attachments':
            poll.attachments.filter(
                no_direct_download=False).order_by('index'),
            'permission_overview':
            document_permission_overview(request.user, poll),
            "has_choice_descriptions":
            poll.has_choice_descriptions,
        })
Esempio n. 10
0
 def extendMarkdown(self, md):
     md.inlinePatterns.register(
         Document.LinkPattern(Document.DOCUMENT_LINK_REGEX, md),
         'InternalLinkDocumentsPattern', 200)
     md.inlinePatterns.register(Poll.LinkPattern(Poll.POLLS_LINK_REGEX, md),
                                'InternalLinkPollsPattern', 200)