コード例 #1
0
def dashboard(request):
    """Dashboard page"""

    highest_score_threads = Thread.highest_score.all()

    all_threads = Thread.objects.all()
    latest_threads = []
    lists_for_user = []

    user = None
    if request.user.is_authenticated():
        user = User.objects.get(username=request.user)
        lists_for_user = mailman.get_user_mailinglists(user)

    latest_threads = get_user_threads(all_threads, lists_for_user, lambda t: t)
    hottest_threads = get_user_threads(highest_score_threads, lists_for_user,
                                       lambda t: t.latest_message)

    latest_results, count_types = get_collaboration_data(user)
    latest_results.sort(key=lambda elem: elem.modified, reverse=True)

    context = {
        'hottest_threads': hottest_threads[:6],
        'latest_threads': latest_threads[:6],
        'type_count': count_types,
        'latest_results': latest_results[:6],
    }
    return render(request, 'home.html', context)
コード例 #2
0
ファイル: views.py プロジェクト: italopaiva/colab
def dashboard(request):
    """Dashboard page"""

    highest_score_threads = Thread.highest_score.all()

    all_threads = Thread.objects.all()
    latest_threads = []
    lists_for_user = []

    user = None
    if request.user.is_authenticated():
        user = User.objects.get(username=request.user)
        lists_for_user = mailman.get_user_mailinglists(user)

    latest_threads = get_user_threads(
        all_threads, lists_for_user, lambda t: t)
    hottest_threads = get_user_threads(
        highest_score_threads, lists_for_user, lambda t: t.latest_message)

    latest_results, count_types = get_collaboration_data(user)
    latest_results.sort(key=lambda elem: elem.modified, reverse=True)

    context = {
        'hottest_threads': hottest_threads[:6],
        'latest_threads': latest_threads[:6],
        'type_count': count_types,
        'latest_results': latest_results[:6],
    }
    return render(request, 'home.html', context)
コード例 #3
0
ファイル: views.py プロジェクト: rafamanzo/colab
    def get(self, request):
        MAX = 6
        context = {}

        all_privates = {}
        private_mailinglist = MailingList.objects.filter(is_private=True)
        for mailinglist in private_mailinglist:
            all_privates[mailinglist.name] = True

        context['lists'] = []

        lists_for_user = []
        if request.user.is_authenticated():
            user = User.objects.get(username=request.user)
            lists_for_user = mailman.get_user_mailinglists(user)

        for list_ in MailingList.objects.order_by('name'):
            if list_.name not in all_privates or list_.name in lists_for_user:
                context['lists'].append((
                    list_.name,
                    mailman.get_list_description(list_.name),
                    list_.thread_set.filter(spam=False).order_by(
                        '-latest_message__received_time'
                    )[:MAX],
                    [t.latest_message for t in Thread.highest_score.filter(
                        mailinglist__name=list_.name)[:MAX]],
                    len(mailman.list_users(list_.name)),
                ))

        return render(request, 'superarchives/thread-dashboard.html', context)
コード例 #4
0
ファイル: views.py プロジェクト: maellson/colab
    def get(self, request, mailinglist, thread_token):

        thread = get_object_or_404(Thread, subject_token=thread_token,
                                   mailinglist__name=mailinglist)

        all_privates = []
        all_privates.extend(
            [mlist.get('listname')
                for mlist in mailman.all_lists()
                if mlist.get('archive_private')]
        )

        if all_privates.count(thread.mailinglist.name):
            if not request.user.is_authenticated():
                raise PermissionDenied
            else:
                user = User.objects.get(username=request.user)
                emails = user.emails.values_list('address', flat=True)
                lists_for_user = mailman.get_user_mailinglists(user)
                listnames_for_user = mailman.extract_listname_from_list(
                    lists_for_user)
                if thread.mailinglist.name not in listnames_for_user:
                    raise PermissionDenied

        thread.hit(request)

        try:
            first_message = thread.message_set.first()
        except ObjectDoesNotExist:
            raise http.Http404

        order_by = request.GET.get('order')
        if order_by == 'voted':
            msgs_query = Message.most_voted
        else:
            msgs_query = Message.objects

        msgs_query = msgs_query.filter(thread__subject_token=thread_token)
        msgs_query = msgs_query.filter(thread__mailinglist__name=mailinglist)
        emails = msgs_query.exclude(id=first_message.id)

        total_votes = first_message.votes_count()
        for email in emails:
            total_votes += email.votes_count()

        # Update relevance score
        thread.update_score()

        context = {
            'first_msg': first_message,
            'emails': [first_message] + list(emails),
            'pagehits': thread.hits,
            'total_votes': total_votes,
            'thread': thread,
        }

        return render(request, 'message-thread.html', context)
コード例 #5
0
ファイル: views.py プロジェクト: mes-2016-1/colab
    def get(self, request, mailinglist, thread_token):

        thread = get_object_or_404(Thread,
                                   subject_token=thread_token,
                                   mailinglist__name=mailinglist)

        all_privates = []
        all_privates.extend([
            mlist.get('listname') for mlist in mailman.all_lists()
            if mlist.get('archive_private')
        ])

        if all_privates.count(thread.mailinglist.name):
            if not request.user.is_authenticated():
                raise PermissionDenied
            else:
                user = User.objects.get(username=request.user)
                emails = user.emails.values_list('address', flat=True)
                lists_for_user = mailman.get_user_mailinglists(user)
                listnames_for_user = mailman.extract_listname_from_list(
                    lists_for_user)
                if thread.mailinglist.name not in listnames_for_user:
                    raise PermissionDenied

        thread.hit(request)

        try:
            first_message = thread.message_set.first()
        except ObjectDoesNotExist:
            raise http.Http404

        order_by = request.GET.get('order')
        if order_by == 'voted':
            msgs_query = Message.most_voted
        else:
            msgs_query = Message.objects

        msgs_query = msgs_query.filter(thread__subject_token=thread_token)
        msgs_query = msgs_query.filter(thread__mailinglist__name=mailinglist)
        emails = msgs_query.exclude(id=first_message.id)

        total_votes = first_message.votes_count()
        for email in emails:
            total_votes += email.votes_count()

        # Update relevance score
        thread.update_score()

        context = {
            'first_msg': first_message,
            'emails': [first_message] + list(emails),
            'pagehits': thread.hits,
            'total_votes': total_votes,
            'thread': thread,
        }

        return render(request, 'message-thread.html', context)
コード例 #6
0
ファイル: utils.py プロジェクト: rafamanzo/colab
def get_visible_threads_queryset(logged_user):
    queryset = Thread.objects
    lists_for_user = []
    if logged_user:
        lists_for_user = mailman.get_user_mailinglists(logged_user)

    user_lists = Condition(mailinglist__name__in=lists_for_user)
    public_lists = Condition(mailinglist__is_private=False)
    queryset = Thread.objects.filter(user_lists | public_lists)

    return queryset
コード例 #7
0
ファイル: views.py プロジェクト: maellson/colab
    def get_queryset(self):
        listnames_for_user = []
        if self.request.user.is_authenticated():
            user = User.objects.get(username=self.request.user)
            lists_for_user = mailman.get_user_mailinglists(user)
            listnames_for_user = mailman.extract_listname_from_list(
                lists_for_user)

        query = Q(is_private=False) | Q(name__in=listnames_for_user)

        return MailingList.objects.filter(query).order_by('name')
コード例 #8
0
ファイル: views.py プロジェクト: mes-2016-1/colab
    def get_queryset(self):
        listnames_for_user = []
        if self.request.user.is_authenticated():
            user = User.objects.get(username=self.request.user)
            lists_for_user = mailman.get_user_mailinglists(user)
            listnames_for_user = mailman.extract_listname_from_list(
                lists_for_user)

        query = Q(is_private=False) | Q(name__in=listnames_for_user)

        return MailingList.objects.filter(query).order_by('name')
コード例 #9
0
ファイル: collaborations.py プロジェクト: mes-2016-1/colab
def get_visible_threads_queryset(logged_user):
    queryset = Thread.objects
    listnames_for_user = []
    if logged_user:
        lists_for_user = mailman.get_user_mailinglists(logged_user)
        listnames_for_user = mailman.extract_listname_from_list(lists_for_user)

    user_lists = Q(mailinglist__name__in=listnames_for_user)
    public_lists = Q(mailinglist__is_private=False)
    queryset = Thread.objects.filter(user_lists | public_lists)

    return queryset
コード例 #10
0
ファイル: views.py プロジェクト: mes-2016-1/colab
    def check_list_membership(self, user, mailinglist_name):
        user = User.objects.get(username=user)
        lists_for_user = mailman.get_user_mailinglists(user)
        listnames_for_user = mailman.extract_listname_from_list(lists_for_user)

        if mailinglist_name not in listnames_for_user:
            error_message = _("You don't have permission to access this list")
            messages.add_message(self.request, messages.ERROR, error_message)

            return False

        return True
コード例 #11
0
ファイル: views.py プロジェクト: italopaiva/colab
    def check_list_membership(self, user, mailinglist_name):
        user = User.objects.get(username=user)
        lists_for_user = mailman.get_user_mailinglists(user)
        listnames_for_user = mailman.extract_listname_from_list(
            lists_for_user)

        if mailinglist_name not in listnames_for_user:
            error_message = _("You don't have permission to access this list")
            messages.add_message(self.request, messages.ERROR, error_message)

            return False

        return True
コード例 #12
0
def mail_list(request):
    community = request.GET.get('community', "")
    list_name = get_community_association(community).get("mailman_list", "")

    MAX = request.GET.get('MAX', 7)
    if not MAX or MAX < 0:
        MAX = 7

    context = {}

    all_privates = {}
    private_mailinglist = MailingList.objects.filter(is_private=True)
    for mailinglist in private_mailinglist:
        all_privates[mailinglist.name] = True

    context['lists'] = []

    lists_for_user = []
    if request.user.is_authenticated():
        user = User.objects.get(username=request.user)
        lists_for_user = mailman.get_user_mailinglists(user)

    for list_ in MailingList.objects.filter(name__iexact=list_name):
        if list_.name not in all_privates or list_.name in lists_for_user:
            context['lists'].append((
                list_.name,
                mailman.get_list_description(list_.name),
                list_.thread_set.filter(spam=False).order_by(
                    '-latest_message__received_time'
                )[:MAX],
                [t.latest_message for t in Thread.highest_score.filter(
                    mailinglist__name=list_.name)[:MAX]],
                len(mailman.list_users(list_.name)),
            ))

    if len(context['lists']) == 0:
        message = ("Não foi possível encontrada lista de discussão"
                   " associada a está comunidade, para mais"
                   " detalhes contate o administrador.")
        return HttpResponse(message, status=200)

    return render(request, 'discussion.html', context)