Example #1
0
 def test_get_not_public_journal(self):
     """
     Teste da função controllers.get_journals() para retorna um objeto:
     ``Journal`` explicitanto o artibuto is_public=False.
     """
     journal = self._makeOne({'is_public': False})
     self.assertEqual(controllers.get_journals(is_public=False)[0], journal)
Example #2
0
 def test_get_not_public_journal(self):
     """
     Teste da função controllers.get_journals() para retorna um objeto:
     ``Journal`` explicitanto o artibuto is_public=False.
     """
     journal = self._make_one({'is_public': False})
     self.assertEqual(controllers.get_journals(is_public=False)[0], journal)
Example #3
0
 def test_get_journal(self):
     """
     Teste da função controllers.get_journals() para retornar um objeto:
     ``Journal``.
     """
     journal = self._makeOne()
     self.assertEqual(controllers.get_journals()[0], journal)
Example #4
0
 def test_get_journal(self):
     """
     Teste da função controllers.get_journals() para retornar um objeto:
     ``Journal``.
     """
     journal = self._make_one()
     self.assertEqual(controllers.get_journals()[0], journal)
Example #5
0
def index():
    language = session.get('lang', get_locale())
    news = controllers.get_latest_news_by_lang(language)

    tweets = controllers.get_collection_tweets()
    press_releases = controllers.get_press_releases({'language': language})

    urls = {
        'downloads': '{0}/w/accesses?collection={1}'.format(
            current_app.config['METRICS_URL'],
            current_app.config['OPAC_COLLECTION']),
        'references': '{0}/w/publication/size?collection={1}'.format(
            current_app.config['METRICS_URL'],
            current_app.config['OPAC_COLLECTION']),
        'other': '{0}/?collection={1}'.format(
            current_app.config['METRICS_URL'],
            current_app.config['OPAC_COLLECTION'])
    }

    context = {
        'news': news,
        'urls': urls,
        'tweets': tweets,
        'press_releases': press_releases,
        'journals': controllers.get_journals(query_filter="current", order_by="-last_issue.year")
    }

    return render_template("collection/index.html", **context)
Example #6
0
def index():
    default_lang = current_app.config.get('BABEL_DEFAULT_LOCALE')
    language = session.get('lang', default_lang)

    news = controllers.get_latest_news_by_lang(language)

    tweets = controllers.get_collection_tweets()
    press_releases = controllers.get_press_releases({'language': language})

    urls = {
        'downloads': '{0}/w/accesses?collection={1}'.format(
                                current_app.config['OPAC_METRICS_URL'],
                                current_app.config['OPAC_COLLECTION']),
        'references': '{0}/w/publication/size?collection={1}'.format(
                                current_app.config['OPAC_METRICS_URL'],
                                current_app.config['OPAC_COLLECTION']),
        'other': '{0}/?collection={1}'.format(
                                current_app.config['OPAC_METRICS_URL'],
                                current_app.config['OPAC_COLLECTION'])
    }

    context = {
        'news': news,
        'urls': urls,
        'tweets': tweets,
        'press_releases': press_releases,
        'journals': controllers.get_journals()
    }

    return render_template("collection/index.html", **context)
Example #7
0
    def test_get_journal_order_by_acronym(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` considerando a ordenação por acrônimo.
        """
        journalC = self._makeOne({'acronym': 'revistaC'})
        journalA = self._makeOne({'acronym': 'revistaA'})
        journalB = self._makeOne({'acronym': 'revistaB'})

        self.assertListEqual(
            [journal for journal in controllers.get_journals(order_by='acronym')],
            [journalA, journalB, journalC])
Example #8
0
    def test_get_journal_order_by_acronym(self):
        """
        Teste da função controllers.get_journals() para retorna um objeto:
        ``Journal`` considerando a ordenação por acrônimo.
        """
        journal3 = self._make_one({'acronym': 'revistaC'})
        journal1 = self._make_one({'acronym': 'revistaA'})
        journal2 = self._make_one({'acronym': 'revistaB'})

        self.assertListEqual(
            [journal for journal in controllers.get_journals(order_by='acronym')],
            [journal1, journal2, journal3])
Example #9
0
def collection_list():
    allowed_filters = ["current", "no-current", ""]
    query_filter = request.args.get("status", "")

    if not query_filter in allowed_filters:
        query_filter = ""

    journals_list = [
        controllers.get_journal_json_data(journal)
        for journal in controllers.get_journals(query_filter=query_filter)
    ]

    return render_template(
        "collection/list_journal.html", **{
            'journals_list': journals_list,
            'query_filter': query_filter
        })
Example #10
0
class PagesAdminView(OpacBaseAdminView):
    can_create = True
    can_edit = True
    edit_modal = False
    can_delete = True
    create_modal = False
    edit_modal = False
    can_view_details = True
    column_exclude_list = ('_id', )
    column_searchable_list = ('name', 'description')

    column_exclude_list = [
        '_id',
        'content',
    ]

    column_labels = dict(
        name=__('Nome'),
        language=__('Idioma'),
        content=__('Conteúdo'),
        journal=__('Periódico'),
        description=__('Descrição'),
        created_at=__('Data de Criação'),
        updated_at=__('Data de Atualização'),
    )

    column_filters = [
        'name',
        'language',
        'journal',
        'created_at',
        'updated_at',
    ]

    column_searchable_list = [
        'name',
        'description',
        'content',
    ]

    create_template = 'admin/pages/edit.html'
    edit_template = 'admin/pages/edit.html'

    form_overrides = dict(language=Select2Field,
                          journal=SelectField,
                          content=CKEditorField)

    form_args = dict(
        language=dict(choices=choices.LANGUAGES_CHOICES),
        journal=dict(choices=[('', '------')] +
                     [(journal.acronym, journal.title)
                      for journal in controllers.get_journals()]),
    )

    form_excluded_columns = ('created_at', 'updated_at')

    def _content_formatter(self, context, model, name):
        return Markup(model.content)

    def _created_at_formatter(self, context, model, name):
        if model.created_at:
            return model.created_at.strftime('%Y-%m-%d %H:%M:%S')
        else:
            return ''

    def _updated_at_formatter(self, context, model, name):
        if model.updated_at:
            return model.updated_at.strftime('%Y-%m-%d %H:%M:%S')
        else:
            return ''

    column_formatters = dict(
        content=_content_formatter,
        created_at=_created_at_formatter,
        updated_at=_updated_at_formatter,
    )

    def on_model_delete(self, model):
        # AUDITORIA: daqui para baixo tem que modularizar para que fique generico:
        audit_payload = {
            '_id':
            str(uuid4().hex),
            'object_class_name':
            'Page',
            'object_pk':
            model._id,
            'action':
            'DEL',
            'description':
            u"Foi apagado o registro do modelo: Page: (id: %s)" % model._id,
        }

        if login.current_user.is_authenticated:
            audit_payload['user'] = login.current_user.email

        audit_doc = AuditLogEntry(**audit_payload)
        audit_doc.save()

    def on_model_change(self, form, model, is_created):
        # é necessario definir um valor para o campo ``_id`` na criação.
        if is_created:
            model._id = str(uuid4().hex)

        # AUDITORIA: daqui para baixo tem que modularizar para que fique generico:
        audit_payload = {
            '_id': str(uuid4().hex),
            'object_class_name': 'Page',
            'object_pk': model._id,
        }

        new_content = migrate_page_content(model.content,
                                           model.language,
                                           page_name=model.name)
        model.content = new_content
        form._fields['content'].data = new_content
        if login.current_user.is_authenticated:
            audit_payload['user'] = login.current_user.email

        if is_created:
            audit_payload['action'] = 'ADD'
            audit_payload[
                'description'] = u'Foi criado um novo registro de Page: (id: %s)' % model._id
        else:
            audit_payload['action'] = 'UPD'
            audit_payload[
                'description'] = u'Foi atualizado o registro de Page: (id: %s)' % model._id

        # get fields data:
        fields_to_audit = [
            'name', 'language', 'content', 'journal', 'description'
        ]
        fields_data = {
            field: {
                'new_value': None,
                'old_value': None
            }
            for field in fields_to_audit
        }

        # percorremos os campos do MODELO (no banco) e do FORMULARIO e coletamos seus valores
        for field_name in fields_to_audit:
            if field_name in fields_to_audit:
                form_field_value = form._fields.get(field_name, None)
                # pegamos o novo valor do campo que vem no FORMULARIO
                form_field_value_data = form_field_value.data if form_field_value else '[NO DATA]'
                fields_data[field_name]['new_value'] = form_field_value_data

                # pegamos o antigo valor do campo que vem do MODELO no banco
                if is_created:
                    fields_data[field_name]['old_value'] = '[NO DATA]'
                else:
                    old_model = Pages.objects.get(pk=model._id)
                    model_field_value_data = getattr(old_model, field_name,
                                                     '[no data]')
                    fields_data[field_name][
                        'old_value'] = model_field_value_data

        audit_payload['fields_data'] = fields_data
        audit_doc = AuditLogEntry(**audit_payload)
        audit_doc.save()
Example #11
0
 def test_get_journal_without_itens(self):
     """
     Testando a função controllers.get_journals() com uma coleção de Journal
     vazia, deve retornar uma lista vazia.
     """
     self.assertEqual(len(controllers.get_journals()), 0)
Example #12
0
 def test_get_journal_without_itens(self):
     """
     Testando a função controllers.get_journals() com uma coleção de Journal
     vazia, deve retornar uma lista vazia.
     """
     self.assertEqual(len(controllers.get_journals()), 0)