def count_elements_by_type_and_visibility(type, public_only=False): """ Retorna a quantidade de registros indicado pelo @type. @params: - ``type``: O tipo de elemento que queremos contabilizar. Deve ser "journal" ou "issue" ou "article"; - ``public_only``: Se for True, filtra na contagem somente os registros públicos, caso contrario contabliza todos (públicos e não publicos); """ if type == 'journal': if public_only: return Journal.objects(is_public=True).count() else: return Journal.objects.count() elif type == 'issue': if public_only: return Issue.objects(is_public=True).count() else: return Issue.objects.count() elif type == 'article': if public_only: return Article.objects(is_public=True).count() else: return Article.objects.count() else: raise ValueError(u"Parâmetro 'type' errado, tente: 'journal' ou 'issue' ou 'article'.")
def count_elements_by_type_and_visibility(type, public_only=False): """ Retorna a quantidade de registros indicado pelo @type. @params: - ``type``: O tipo de elemento que queremos contabilizar. Deve ser "journal" ou "issue" ou "article"; - ``public_only``: Se for True, filtra na contagem somente os registros públicos, caso contrario contabliza todos (públicos e não publicos); """ if type == 'journal': if public_only: return Journal.objects(is_public=True).count() else: return Journal.objects.count() elif type == 'issue': if public_only: return Issue.objects(is_public=True).count() else: return Issue.objects.count() elif type == 'article': if public_only: return Article.objects(is_public=True).count() else: return Article.objects.count() elif type == 'news': return News.objects.count() elif type == 'sponsor': return Sponsor.objects.count() elif type == 'pressrelease': return PressRelease.objects.count() else: raise ValueError("Parâmetro 'type' errado, tente: 'journal' ou 'issue' ou 'article'.")
def get_journal_by_jid(jid, is_public=True): """ Retorna um periódico considerando os parâmetros ``jid`` e ``is_public`` - ``jid``: string, chave primaria do periódico (ex.: ``f8c87833e0594d41a89fe60455eaa5a5``); - ``is_public``: boolean, filtra por público e não público. """ return Journal.objects(jid=jid, is_public=is_public).first()
def get_journals(is_public=True, order_by="title"): """ Retorna uma lista de periódicos considerando os parâmetros: - ``is_public``: filtra por público e não público de cada periódico; - ``order_by``: que corresponde ao nome de um atributo pelo qual deve estar ordenada a lista resultante. """ return Journal.objects(is_public=is_public).order_by(order_by)
def get_journal_by_jid(jid, **kwargs): """ Retorna um periódico considerando os parâmetros ``jid`` e ``kwargs`` - ``jid``: string, chave primaria do periódico (ex.: ``f8c87833e0594d41a89fe60455eaa5a5``); - ``kwargs``: parâmetros de filtragem. """ return Journal.objects(jid=jid, **kwargs).first()
def test_create_only_required_fields_success(self): # given _id = self.generate_uuid_32_string() jid = self.generate_uuid_32_string() journal_data = { '_id': _id, 'jid': jid, 'title': 'The Dummy Journal', 'acronym': 'dj', 'is_public': True } # when journal_doc = Journal(**journal_data) journal_doc.save() # then self.assertEqual(_id, journal_doc._id) self.assertEqual(jid, journal_doc.jid) self.assertEqual(1, Journal.objects.all().count())
def get_journal_by_title(title): """ Retorna um periódico considerando os parâmetros ``title`` - ``title``: string, title do periódico Em caso de não existir itens retorna {}. """ if not title: raise ValueError(__('Obrigatório um title.')) return Journal.objects(Q(title=title)).first()
def get_journals(title_query='', is_public=True, query_filter="", order_by="title_slug"): """ Retorna uma lista de periódicos considerando os parâmetros: - ``title_query`` texto para filtrar (usando i_contains) pelo titulo do periódicos; - ``is_public``: filtra por público e não público de cada periódico; - ``query_filter``: string com possíveis valores: - "" (vazio == sem filtro) - "current" (somente periódicos ativos) - "no-current" (somente periódicos não ativos) - ``order_by``: que corresponde ao nome de um atributo pelo qual deve estar ordenada a lista resultante. """ filters = {} if query_filter not in ["", "current", "no-current"]: raise ValueError("Parámetro: 'query_filter' é inválido!") elif query_filter == "current": filters = { "current_status": "current", } elif query_filter == "no-current": filters = { "current_status__ne": "current", } if not title_query or title_query.strip() == "": journals = Journal.objects(is_public=is_public, **filters).order_by(order_by) else: title_query_slug = slugify(title_query) journals = Journal.objects(is_public=is_public, title_slug__icontains=title_query_slug, **filters).order_by(order_by) return journals
def get_journal_by_acron(acron, **kwargs): """ Retorna um periódico considerando os parâmetros ``acron`` e ``kwargs`` - ``acron``: string, acrônimo do periódico - ``kwargs``: parâmetros de filtragem. Em caso de não existir itens retorna {}. """ if not acron: raise ValueError(__(u'Obrigatório um acronym.')) return Journal.objects(acronym=acron, **kwargs).first()
def get_journal_by_jid(jid, **kwargs): """ Retorna um periódico considerando os parâmetros ``jid`` e ``kwargs`` - ``jid``: string, chave primaria do periódico (ex.: ``f8c87833e0594d41a89fe60455eaa5a5``); - ``kwargs``: parâmetros de filtragem. Em caso de não existir itens retorna {}. """ if not jid: raise ValueError(__(u'Obrigatório um jid.')) return Journal.objects(jid=jid, **kwargs).first()
def get_journal_by_url_seg(url_seg, **kwargs): """ Retorna um periódico considerando os parâmetros ``url_seg`` e ``kwargs`` - ``url_seg``: string, acrônimo do periódico - ``kwargs``: parâmetros de filtragem. Em caso de não existir itens retorna {}. """ if not url_seg: raise ValueError(__('Obrigatório um url_seg.')) return Journal.objects(url_segment=url_seg, **kwargs).first()
def get_journal_by_acron(acron, **kwargs): """ Retorna um periódico considerando os parâmetros ``acron`` e ``kwargs`` - ``acron``: string, acrônimo do periódico - ``kwargs``: parâmetros de filtragem. Em caso de não existir itens retorna {}. """ if not acron: raise ValueError(__('Obrigatório um acronym.')) return Journal.objects(acronym=acron, **kwargs).first()
def get_journal_by_jid(jid, **kwargs): """ Retorna um periódico considerando os parâmetros ``jid`` e ``kwargs`` - ``jid``: string, chave primaria do periódico (ex.: ``f8c87833e0594d41a89fe60455eaa5a5``); - ``kwargs``: parâmetros de filtragem. Em caso de não existir itens retorna {}. """ if not jid: raise ValueError(__('Obrigatório um jid.')) return Journal.objects(jid=jid, **kwargs).first()
def _create_dummy_journal(self): journal_id = self.generate_uuid_32_string() journal_jid = self.generate_uuid_32_string() journal_data = { '_id': journal_id, 'jid': journal_jid, 'title': 'The Dummy Journal', 'short_title': 'DummyJrnl', 'acronym': 'dj', 'is_public': True } journal_doc = Journal(**journal_data) return journal_doc
def get_journal_by_issn(issn, **kwargs): """ Retorna um periódico considerando os parâmetros ``issn`` e ``kwargs`` - ``issn``: string, issn do periódico - ``kwargs``: parâmetros de filtragem. Em caso de não existir itens retorna {}. """ if not issn: raise ValueError(__('Obrigatório um issn.')) return Journal.objects(Q(print_issn=issn) | Q(eletronic_issn=issn), **kwargs).first()
def get_journal_by_url_seg(url_seg, **kwargs): """ Retorna um periódico considerando os parâmetros ``url_seg`` e ``kwargs`` - ``url_seg``: string, acrônimo do periódico - ``kwargs``: parâmetros de filtragem. Em caso de não existir itens retorna {}. """ if not url_seg: raise ValueError(__(u'Obrigatório um url_seg.')) return Journal.objects(url_segment=url_seg, **kwargs).first()
def get_journals(title_query='', is_public=True, query_filter="", order_by="title_slug"): """ Retorna uma lista de periódicos considerando os parâmetros: - ``title_query`` texto para filtrar (usando i_contains) pelo titulo do periódicos; - ``is_public``: filtra por público e não público de cada periódico; - ``query_filter``: string com possíveis valores: - "" (vazio == sem filtro) - "current" (somente periódicos ativos) - "no-current" (somente periódicos não ativos) - ``order_by``: que corresponde ao nome de um atributo pelo qual deve estar ordenada a lista resultante. """ filters = {} if query_filter not in ["", "current", "no-current"]: raise ValueError(u"Parámetro: 'query_filter' é inválido!") elif query_filter == "current": filters = { "current_status": "current", } elif query_filter == "no-current": filters = { "current_status__ne": "current", } if not title_query or title_query.strip() == "": journals = Journal.objects( is_public=is_public, **filters).order_by(order_by) else: title_query_slug = slugify(title_query) journals = Journal.objects( is_public=is_public, title_slug__icontains=title_query_slug, **filters).order_by(order_by) return journals