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))
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))
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))
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 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 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))
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))
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))
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 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))
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 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 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))
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) )
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))
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))
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))
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 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))
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))
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))
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))
def _makeOne(self, *args, **kwargs): from scielomanager.tools import get_paginated return get_paginated(*args, **kwargs)