Exemple #1
0
def trash_listing(request):
    listing_ref = {
        'journal': models.Journal,
        'section': models.Section,
        'sponsor': models.Sponsor,
    }

    if request.GET.get('show', None) in listing_ref:
        doc_entity = listing_ref[request.GET['show']]
    else:
        doc_entity = models.Journal

    try:
        trashed_docs = doc_entity.objects.all_by_user(request.user,
                                                      is_available=False)
    except AttributeError:
        trashed_docs = models.Journal.objects.all_by_user(request.user,
                                                          is_available=False)

    trashed_docs_paginated = get_paginated(trashed_docs,
                                           request.GET.get('page', 1))

    return render_to_response('journalmanager/trash_listing.html',
                              {'trashed_docs': trashed_docs_paginated},
                              context_instance=RequestContext(request))
Exemple #2
0
def generic_index_search(request, model, journal_id = None):
    """
    Generic list and search
    """
    user_collections = get_user_collections(request.user.id)
    default_collections = user_collections.filter(is_default=True)

    if journal_id:
        journal = models.Journal.objects.get(pk=journal_id)
        objects_all = model.objects.available(request.GET.get('is_available')).filter(journal=journal_id)
    else:
        journal = None
        objects_all = model.objects.available(request.GET.get('is_available'))

    if request.GET.get('q'):
        if model is models.Publisher:
            objects_all = model.objects.available(request.GET.get('is_available')).filter(name__icontains = request.REQUEST['q']).order_by('name')

        if model is models.Journal:
            objects_all = model.objects.available(request.GET.get('is_available')).filter(title__icontains = request.REQUEST['q']).order_by('title')

    if objects_all.count() == 0:
        messages.error(request, _('Your search did not match any documents.'))

    objects = get_paginated(objects_all, request.GET.get('page', 1))

    template = loader.get_template('journalmanager/%s_dashboard.html' % model.__name__.lower())

    context = RequestContext(request, {
                       'objects_%s' %  model.__name__.lower(): objects,
                       'journal': journal,
                       'user_collections': user_collections,
                       })
    return HttpResponse(template.render(context))
def publisher_index(request):
    user_collection = request.user.userprofile_set.get().collection
    all_publishers = models.Publisher.objects

    if all_publishers:
        all_publishers = all_publishers.available(
            request.GET.get('is_available', 1))
        if all_publishers:
            all_publishers = all_publishers.filter(collection=user_collection)
            if all_publishers:
                try:
                    #Get publishers where title contains the "q" value and collection equal with the user
                    all_publishers = all_publishers.filter(
                        name__icontains=request.REQUEST['q']).order_by('name')
                except KeyError:
                    pass

    publishers = get_paginated(all_publishers, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/publisher_dashboard.html')
    c = RequestContext(request, {
        'publishers': publishers,
        'collection': user_collection,
    })
    return HttpResponse(t.render(c))
Exemple #4
0
    def test_paginator_factory(self):
        """
        Function: scielomanager.tools.get_paginated
        """
        from scielomanager.tools import get_paginated

        items_list = [chr(i) for i in range(97, 123)]
        page_num = 1
        items_per_page = 5

        paginated = get_paginated(items_list,
                                  page_num,
                                  items_per_page=items_per_page)

        self.assertEqual(paginated.paginator.count, 26)
        self.assertEqual(paginated.paginator.num_pages, 6)
        self.assertTrue(hasattr(paginated, 'object_list'))
        self.assertEqual(len(paginated.object_list), 5)

        del (paginated)

        # When requiring a non-existing page, the last one is retrieved
        paginated = get_paginated(items_list,
                                  10,
                                  items_per_page=items_per_page)
        self.assertEqual(paginated.number, paginated.paginator.num_pages)

        del (paginated)

        # Testing if page parameter is integer
        paginated = get_paginated(items_list,
                                  str(1),
                                  items_per_page=items_per_page)

        self.assertEqual(paginated.paginator.count, 26)
        self.assertEqual(paginated.paginator.num_pages, 6)
        self.assertTrue(hasattr(paginated, 'object_list'))
        self.assertEqual(len(paginated.object_list), 5)

        del (paginated)

        # Testing if page parameter is a "string"
        self.assertRaises(TypeError,
                          get_paginated,
                          items_list,
                          'foo',
                          items_per_page=items_per_page)
def index(request):
    journals = _get_journals_by_user_access(request.user)

    objects = get_paginated(journals, request.GET.get('page', 1))
    context = {
        'objects_journal': objects,
    }
    return render_to_response('journal/journal_list.html', context, context_instance=RequestContext(request))
Exemple #6
0
def ticket_list(request):

    tickets = models.Ticket.userobjects.active()
    objects = get_paginated(tickets, request.GET.get('page', 1))

    return render_to_response('articletrack/ticket_list.html', {
        'tickets': objects,
    },
                              context_instance=RequestContext(request))
Exemple #7
0
def checkin_index(request):

    checkins = models.Checkin.userobjects.active()

    objects = get_paginated(checkins, request.GET.get('page', 1))

    return render_to_response('articletrack/checkin_list.html', {
        'checkins': objects,
    },
                              context_instance=RequestContext(request))
def user_index(request):
    user_collection = request.user.userprofile_set.get().collection
    all_users = User.objects.filter(userprofile__collection=user_collection)
    users = get_paginated(all_users, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/user_dashboard.html')

    c = RequestContext(request, {
        'users': users,
        'collection': user_collection,
    })
    return HttpResponse(t.render(c))
def user_index(request):
    user_collection = request.user.userprofile_set.get().collection
    all_users = User.objects.filter(userprofile__collection=user_collection)
    users = get_paginated(all_users, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/user_dashboard.html')

    c = RequestContext(request, {
                       'users': users,
                       'collection': user_collection,
                       })
    return HttpResponse(t.render(c))
def journal_index(request):
    user_collection = request.user.userprofile_set.get().collection
    all_journals = models.Journal.objects.available(request.GET.get('is_available', 1)).filter(collections = user_collection)

    journals = get_paginated(all_journals, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/journal_dashboard.html')
    c = RequestContext(request, {
                       'journals': journals,
                       'collection': user_collection,
                       })
    return HttpResponse(t.render(c))
Exemple #11
0
def ticket_list(request):

    tickets = models.Ticket.userobjects.active()
    objects = get_paginated(tickets, request.GET.get('page', 1))

    return render_to_response(
        'articletrack/ticket_list.html',
        {
            'tickets': objects,
        },
        context_instance=RequestContext(request)
    )
def journal_index(request):
    user_collection = request.user.userprofile_set.get().collection
    all_journals = models.Journal.objects.available(
        request.GET.get('is_available', 1)).filter(collections=user_collection)

    journals = get_paginated(all_journals, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/journal_dashboard.html')
    c = RequestContext(request, {
        'journals': journals,
        'collection': user_collection,
    })
    return HttpResponse(t.render(c))
Exemple #13
0
def checkin_history(request, article_id):

    article = get_object_or_404(
        models.Article.userobjects.active().select_related('checkins'),
        pk=article_id)

    objects = get_paginated(article.checkins.all(), request.GET.get('page', 1))

    return render_to_response('articletrack/history.html', {
        'checkins': objects,
        'first_article': article,
    },
                              context_instance=RequestContext(request))
Exemple #14
0
def checkin_index(request):

    checkins = models.Checkin.userobjects.active()

    objects = get_paginated(checkins, request.GET.get('page', 1))

    return render_to_response(
        'articletrack/checkin_list.html',
        {
            'checkins': objects,
        },
        context_instance=RequestContext(request)
    )
Exemple #15
0
def publisher_index(request):
    user_collections = get_user_collections(request.user.id)
    default_collections = user_collections.filter(is_default = True)

    all_publishers = models.Publisher.objects.available(request.GET.get('is_available', 1))
    publishers = get_paginated(all_publishers, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/publisher_dashboard.html')
    c = RequestContext(request, {
                       'objects_publisher': publishers,
                       'user_collections': user_collections,
                       })
    return HttpResponse(t.render(c))
Exemple #16
0
def pressrelease_index(request, journal_id):
    journal = get_object_or_404(models.Journal, pk=journal_id)

    param_tab = request.GET.get('tab')
    pr_model = models.AheadPressRelease if param_tab == 'ahead' else models.RegularPressRelease

    preleases = pr_model.userobjects.active().journal(journal).select_related()
    objects = get_paginated(preleases, request.GET.get('page', 1))

    return render_to_response('journalmanager/pressrelease_list.html', {
        'objects_pr': objects,
        'journal': journal,
    },
                              context_instance=RequestContext(request))
Exemple #17
0
    def test_paginator_factory(self):
        """
        Function: scielomanager.tools.get_paginated
        """
        from scielomanager.tools import get_paginated

        items_list = [chr(i) for i in range(97, 123)]
        page_num = 1
        items_per_page = 5

        paginated = get_paginated(items_list, page_num, items_per_page=items_per_page)

        self.assertEqual(paginated.paginator.count, 26)
        self.assertEqual(paginated.paginator.num_pages, 6)
        self.assertTrue(hasattr(paginated, 'object_list'))
        self.assertEqual(len(paginated.object_list), 5)

        del(paginated)

        # When requiring a non-existing page, the last one is retrieved
        paginated = get_paginated(items_list, 10, items_per_page=items_per_page)
        self.assertEqual(paginated.number, paginated.paginator.num_pages)

        del(paginated)

        # Testing if page parameter is integer
        paginated = get_paginated(items_list, str(1), items_per_page=items_per_page)

        self.assertEqual(paginated.paginator.count, 26)
        self.assertEqual(paginated.paginator.num_pages, 6)
        self.assertTrue(hasattr(paginated, 'object_list'))
        self.assertEqual(len(paginated.object_list), 5)

        del(paginated)

        # Testing if page parameter is a "string"
        self.assertRaises(TypeError, get_paginated, items_list, 'foo', items_per_page=items_per_page)
Exemple #18
0
def list_search(request, model, journal_id):
    """
    Generic list and search
    """
    if journal_id:
        journal = models.Journal.objects.get(pk=journal_id)
        objects_all = model.objects.filter(journal=journal_id)

        if model is models.Section:
            # order by a non persistent property
            objects_all = model.objects.filter(journal=journal_id,
                                               is_trashed=False)
            objects_all = sorted(objects_all, key=lambda x: unicode(x))
    else:
        journal = None
        objects_all = model.objects.all_by_user(request.user)

        #filtering by pub_status is only available to Journal instances.
        if model is models.Journal and request.GET.get('jstatus'):
            objects_all = objects_all.filter(
                membership__status=request.GET['jstatus'])

        if request.GET.get('letter'):
            if issubclass(model, models.Institution):
                objects_all = objects_all.filter(
                    name__startswith=request.GET.get('letter'))
            else:
                objects_all = objects_all.filter(
                    title__startswith=request.GET.get('letter'))

    if request.GET.get('q'):
        objects_all = model.objects.all_by_user(request.user)

        if issubclass(model, models.Institution):
            objects_all = objects_all.filter(
                name__icontains=request.REQUEST['q']).order_by('name')
        else:
            objects_all = objects_all.filter(
                title__icontains=request.REQUEST['q']).order_by('title')

    objects = get_paginated(objects_all, request.GET.get('page', 1))
    template_name = 'journalmanager/%s_list.html' % model.__name__.lower()

    return render_to_response(template_name, {
        'objects_%s' % model.__name__.lower(): objects,
        'journal': journal,
        'letters': get_first_letter(objects_all),
    },
                              context_instance=RequestContext(request))
Exemple #19
0
def checkin_history(request, article_id):

    article = get_object_or_404(models.Article.userobjects.active().select_related('checkins'),
        pk=article_id)

    objects = get_paginated(article.checkins.all(), request.GET.get('page', 1))

    return render_to_response(
        'articletrack/history.html',
        {
            'checkins': objects,
            'first_article': article,
        },
        context_instance=RequestContext(request)
    )
Exemple #20
0
def user_index(request):

    user_collections = get_user_collections(request.user.id)
    user_collections_managed = user_collections.filter(is_manager=True)

    # Filtering users manager by the administrator
    all_users = models.User.objects.filter(usercollections__collection__in = ( collection.collection.pk for collection in user_collections_managed )).distinct('username')
    users = get_paginated(all_users, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/user_dashboard.html')

    c = RequestContext(request, {
                       'users': users,
                       'user_collections': user_collections,
                       })
    return HttpResponse(t.render(c))
Exemple #21
0
def pressrelease_index(request, journal_id):
    journal = get_object_or_404(models.Journal, pk=journal_id)

    param_tab = request.GET.get('tab')
    pr_model = models.AheadPressRelease if param_tab == 'ahead' else models.RegularPressRelease

    preleases = pr_model.userobjects.active().journal(journal).select_related()
    objects = get_paginated(preleases, request.GET.get('page', 1))

    return render_to_response(
        'journalmanager/pressrelease_list.html',
        {
           'objects_pr': objects,
           'journal': journal,
        },
        context_instance=RequestContext(request))
def search_journal(request):
    user_collection = request.user.userprofile_set.get().collection

    #Get journals where title contains the "q" value and collection equal with the user
    journals_filter = models.Journal.objects.filter(title__icontains = request.REQUEST['q'],
                                                    collections = user_collection).order_by('title')

    #Paginated the result
    journals = get_paginated(journals_filter, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/journal_search_result.html')
    c = RequestContext(request, {
                       'journals': journals,
                       'collection': user_collection,
                       'search_query_string': request.REQUEST['q'],
                       })
    return HttpResponse(t.render(c))
def section_index(request, journal_id):
    #FIXME: models.Journal e models.Issue ja se relacionam, avaliar
    #estas queries.
    journal = models.Journal.objects.get(pk = journal_id)
    user_collection = request.user.userprofile_set.get().collection

    all_sections = models.Section.objects.available(request.GET.get('is_available', 1)).filter(journal=journal_id)

    sections = get_paginated(all_sections, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/section_dashboard.html')
    c = RequestContext(request, {
                       'items': sections,
                       'journal': journal,
                       'collection': user_collection,
                       })
    return HttpResponse(t.render(c))
Exemple #24
0
def list_search(request, model, journal_id):
    """
    Generic list and search
    """
    if journal_id:
        journal = models.Journal.objects.get(pk=journal_id)
        objects_all = model.objects.filter(journal=journal_id)

        if model is models.Section:
            # order by a non persistent property
            objects_all = model.objects.filter(journal=journal_id, is_trashed=False)
            objects_all = sorted(objects_all, key=lambda x: unicode(x))
    else:
        journal = None
        objects_all = model.objects.all_by_user(request.user)

        #filtering by pub_status is only available to Journal instances.
        if model is models.Journal and request.GET.get('jstatus'):
            objects_all = objects_all.filter(pub_status=request.GET['jstatus'])

        if request.GET.get('letter'):
            if issubclass(model, models.Institution):
                objects_all = objects_all.filter(name__startswith=request.GET.get('letter'))
            else:
                objects_all = objects_all.filter(title__startswith=request.GET.get('letter'))

    if request.GET.get('q'):
        objects_all = model.objects.all_by_user(request.user)

        if issubclass(model, models.Institution):
            objects_all = objects_all.filter(
                name__icontains=request.REQUEST['q']).order_by('name')
        else:
            objects_all = objects_all.filter(
                title__icontains=request.REQUEST['q']).order_by('title')

    objects = get_paginated(objects_all, request.GET.get('page', 1))
    template_name = 'journalmanager/%s_list.html' % model.__name__.lower()

    return render_to_response(
        template_name, {
           'objects_%s' % model.__name__.lower(): objects,
           'journal': journal,
           'letters': get_first_letter(objects_all),
        },
        context_instance=RequestContext(request))
Exemple #25
0
def user_index(request):

    collection = models.Collection.objects.get_default_by_user(request.user)

    if not collection.is_managed_by_user(request.user):
        return HttpResponseRedirect(AUTHZ_REDIRECT_URL)

    col_users = models.User.objects.filter(
        usercollections__collection__in=[collection]).distinct('username').order_by('username')

    users = get_paginated(col_users, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/user_list.html')
    c = RequestContext(request, {
                       'users': users,
                       })
    return HttpResponse(t.render(c))
Exemple #26
0
def notice_detail(request, checkin_id):

    checkin = get_object_or_404(models.Checkin.userobjects.active(),
                                pk=checkin_id)
    notices = checkin.notices.all()

    objects = get_paginated(notices, request.GET.get('page', 1))

    tickets = checkin.article.tickets.all()
    opened_tickets = tickets.filter(finished_at__isnull=True)
    closed_tickets = tickets.filter(finished_at__isnull=False)

    zip_filename = "%s_%s" % (datetime.date.today().isoformat(),
                              slugify(checkin.article.article_title))

    context = {
        'notices': objects,
        'checkin': checkin,
        'opened_tickets': opened_tickets,
        'closed_tickets': closed_tickets,
        'zip_filename': zip_filename,
    }

    balaio = BalaioAPI()
    files_list = []

    try:

        files = balaio.list_files_members_by_attempt(checkin.attempt_ref)
        if files and not files['error']:
            del files['error']
            for file_extension in files.keys():
                files_list += [{
                    'ext': file_extension,
                    'name': f
                } for f in files[file_extension]]

    except ValueError:
        pass  # Service Unavailable

    context['files'] = files_list

    return render_to_response('articletrack/notice_detail.html',
                              context,
                              context_instance=RequestContext(request))
def section_index(request, journal_id):
    #FIXME: models.Journal e models.Issue ja se relacionam, avaliar
    #estas queries.
    journal = models.Journal.objects.get(pk=journal_id)
    user_collection = request.user.userprofile_set.get().collection

    all_sections = models.Section.objects.available(
        request.GET.get('is_available', 1)).filter(journal=journal_id)

    sections = get_paginated(all_sections, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/section_dashboard.html')
    c = RequestContext(request, {
        'items': sections,
        'journal': journal,
        'collection': user_collection,
    })
    return HttpResponse(t.render(c))
Exemple #28
0
def user_index(request):

    collection = models.Collection.objects.get_default_by_user(request.user)

    if not collection.is_managed_by_user(request.user):
        return HttpResponseRedirect(AUTHZ_REDIRECT_URL)

    col_users = models.User.objects.filter(
        usercollections__collection__in=[collection]).distinct(
            'username').order_by('username')

    users = get_paginated(col_users, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/user_list.html')
    c = RequestContext(request, {
        'users': users,
    })
    return HttpResponse(t.render(c))
def search_journal(request):
    user_collection = request.user.userprofile_set.get().collection

    #Get journals where title contains the "q" value and collection equal with the user
    journals_filter = models.Journal.objects.filter(
        title__icontains=request.REQUEST['q'],
        collections=user_collection).order_by('title')

    #Paginated the result
    journals = get_paginated(journals_filter, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/journal_search_result.html')
    c = RequestContext(
        request, {
            'journals': journals,
            'collection': user_collection,
            'search_query_string': request.REQUEST['q'],
        })
    return HttpResponse(t.render(c))
def search_issue(request, journal_id):

    journal = models.Journal.objects.get(pk = journal_id)
    user_collection = request.user.userprofile_set.get().collection
    #Get issues where journal.id = journal_id and volume contains "q"
    selected_issues = models.Issue.objects.filter(journal = journal_id,
                                                  volume__icontains = request.REQUEST['q']).order_by('publication_date')

    #Paginated the result
    issues = get_paginated(selected_issues, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/issue_dashboard.html')
    c = RequestContext(request, {
                       'issues': issues,
                       'journal': journal,
                       'collection': user_collection,
                       'search_query_string': request.REQUEST['q'],
                       })
    return HttpResponse(t.render(c))
Exemple #31
0
def notice_detail(request, checkin_id):

    checkin = get_object_or_404(models.Checkin.userobjects.active(), pk=checkin_id)
    notices = checkin.notices.all()

    objects = get_paginated(notices, request.GET.get('page', 1))

    tickets = checkin.article.tickets.all()
    opened_tickets = tickets.filter(finished_at__isnull=True)
    closed_tickets = tickets.filter(finished_at__isnull=False)

    zip_filename =  "%s_%s"% (datetime.date.today().isoformat(), slugify(checkin.article.article_title))

    context = {
        'notices': objects,
        'checkin': checkin,
        'opened_tickets': opened_tickets,
        'closed_tickets': closed_tickets,
        'zip_filename': zip_filename,
    }

    balaio = BalaioAPI()
    files_list = []

    try:

        files = balaio.list_files_members_by_attempt(checkin.attempt_ref)
        if files and not files['error']:
            del files['error']
            for file_extension in files.keys():
                files_list += [{'ext': file_extension, 'name': f} for f in files[file_extension]]

    except ValueError:
        pass # Service Unavailable

    context['files'] = files_list

    return render_to_response(
        'articletrack/notice_detail.html',
        context,
        context_instance=RequestContext(request)
    )
def search_issue(request, journal_id):

    journal = models.Journal.objects.get(pk=journal_id)
    user_collection = request.user.userprofile_set.get().collection
    #Get issues where journal.id = journal_id and volume contains "q"
    selected_issues = models.Issue.objects.filter(
        journal=journal_id,
        volume__icontains=request.REQUEST['q']).order_by('publication_date')

    #Paginated the result
    issues = get_paginated(selected_issues, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/issue_dashboard.html')
    c = RequestContext(
        request, {
            'issues': issues,
            'journal': journal,
            'collection': user_collection,
            'search_query_string': request.REQUEST['q'],
        })
    return HttpResponse(t.render(c))
def center_index(request):
    user_collection = request.user.userprofile_set.get().collection
    all_centers = models.Center.objects

    if all_centers:
        all_centers = all_centers.available(request.GET.get('is_available', 1))
        if all_centers:
            all_centers = all_centers.filter(collection = user_collection)
            if all_centers:
                try:
                    #Get centers where title contains the "q" value and collection equal with the user
                    all_centers = all_centers.filter(name__icontains = request.REQUEST['q']).order_by('name')
                except KeyError:
                    pass
    centers = get_paginated(all_centers, request.GET.get('page', 1))

    t = loader.get_template('journalmanager/center_dashboard.html')
    c = RequestContext(request, {
                       'centers': centers,
                       'collection': user_collection,
                       })
    return HttpResponse(t.render(c))
Exemple #34
0
def trash_listing(request):
    listing_ref = {
        'journal': models.Journal,
        'section': models.Section,
        'sponsor': models.Sponsor,
    }

    if request.GET.get('show', None) in listing_ref:
        doc_entity = listing_ref[request.GET['show']]
    else:
        doc_entity = models.Journal

    try:
        trashed_docs = doc_entity.objects.all_by_user(request.user, is_available=False)
    except AttributeError:
        trashed_docs = models.Journal.objects.all_by_user(request.user, is_available=False)

    trashed_docs_paginated = get_paginated(trashed_docs, request.GET.get('page', 1))

    return render_to_response(
        'journalmanager/trash_listing.html',
        {'trashed_docs': trashed_docs_paginated},
        context_instance=RequestContext(request))
Exemple #35
0
 def _makeOne(self, *args, **kwargs):
     from scielomanager.tools import get_paginated
     return get_paginated(*args, **kwargs)
 def _makeOne(self, *args, **kwargs):
     from scielomanager.tools import get_paginated
     return get_paginated(*args, **kwargs)