Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Django project
/media/
/static/
*.sqlite3

# Python and others
__pycache__
*.pyc
.DS_Store
*.swp
/venv/
/tmp/
/.vagrant/
/Vagrantfile.local
node_modules/
/npm-debug.log
/.idea/
.vscode
coverage
.python-version

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
22 changes: 22 additions & 0 deletions .envs.example/.local/.django
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# General
# ------------------------------------------------------------------------------
USE_DOCKER=yes
IPYTHONDIR=/app/.ipython
# Redis
# ------------------------------------------------------------------------------
REDIS_URL=redis://redis:6379/0

# Celery
# ------------------------------------------------------------------------------

# Flower
CELERY_FLOWER_USER=changeme
CELERY_FLOWER_PASSWORD=changeme


# Timeout fetch_data
# ------------------------------------------------------------------------------
FETCH_DATA_TIMEOUT=2


HF_TOKEN=
7 changes: 7 additions & 0 deletions .envs.example/.local/.postgres
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# PostgreSQL
# ------------------------------------------------------------------------------
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=scielo_core
POSTGRES_USER=changeme
POSTGRES_PASSWORD=changeme
25 changes: 25 additions & 0 deletions .envs.example/.production/.django
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# General
# ------------------------------------------------------------------------------
USE_DOCKER=True
IPYTHONDIR=/app/.ipython
# Redis
# ------------------------------------------------------------------------------
REDIS_URL=redis://redis:6379/0

# Celery
# ------------------------------------------------------------------------------

# Flower
CELERY_FLOWER_USER=changeme
CELERY_FLOWER_PASSWORD=changeme

# Django
# ------------------------------------------------------------------------------
DJANGO_SETTINGS_MODULE=config.settings.production
DJANGO_SECRET_KEY=changeme
DJANGO_ADMIN_URL=django-admin/
DJANGO_ALLOWED_HOSTS=*

# Sentry
# ------------------------------------------------------------------------------
SENTRY_DSN=
7 changes: 7 additions & 0 deletions .envs.example/.production/.postgres
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# PostgreSQL
# ------------------------------------------------------------------------------
POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_DB=core
POSTGRES_USER=changeme
POSTGRES_PASSWORD=changeme
126 changes: 126 additions & 0 deletions .git-hook-commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
#!/usr/bin/env python3
"""Git commit-msg hook.

Reads the activity (MarkAPI-NNNN) from the branch name -- anywhere in the
name -- and:

1. validates the message format: <type>(<optional scope>): <message>
allowed types: feature, fix, chore, unittest
2. injects the activity prefix into the first line: [MarkAPI-NNNN] ...

Automatic Git commits (merge/revert/squash) are skipped.
Uses the standard library only for portability across Linux and macOS.
"""

import re
import subprocess
import sys

ALLOWED_TYPES = ("feature", "fix", "chore", "unittest")

BRANCH_ACTIVITY_RE = re.compile(r"MarkupAPI-(\d+)", re.IGNORECASE)
EXISTING_PREFIX_RE = re.compile(r"^\s*\[MarkupAPI-\d+\]\s*", re.IGNORECASE)
MESSAGE_FORMAT_RE = re.compile(
r"^(?:%s)(?:\([a-z0-9-]+\))?: .+" % "|".join(ALLOWED_TYPES)
)

# Automatic commits generated by Git that should pass without validation.
MarkAPI_COMMIT_PREFIXES = (
"Merge branch ",
"Merge pull request ",
"Merge remote-tracking ",
'Revert "',
)
SQUASH_MERGE_RE = re.compile(r"^Merge .+ into ")


def fail(message):
print(message, file=sys.stderr)
sys.exit(1)


def is_auto_commit(first_line):
if first_line.startswith(MarkAPI_COMMIT_PREFIXES):
return True
return bool(SQUASH_MERGE_RE.match(first_line))


def current_branch():
# symbolic-ref works even on the first commit (branch with no commits),
# where rev-parse --abbrev-ref HEAD fails. On a detached HEAD,
# symbolic-ref returns a non-zero code and we fall back to rev-parse
# (which returns "HEAD").
for cmd in (
["git", "symbolic-ref", "--short", "HEAD"],
["git", "rev-parse", "--abbrev-ref", "HEAD"],
):
try:
result = subprocess.run(cmd, capture_output=True, text=True)
except OSError:
return None
if result.returncode == 0:
branch = result.stdout.strip()
if branch:
return branch
return None


def main():
if len(sys.argv) < 2:
fail("❌ commit-msg hook: message file path not provided.")

msg_path = sys.argv[1]
with open(msg_path, "r", encoding="utf-8") as handle:
lines = handle.read().splitlines()

if not lines:
fail("❌ Empty commit message.")

first_line = lines[0].rstrip("\r")

# Let automatic Git commits pass through.
if is_auto_commit(first_line):
sys.exit(0)

branch = current_branch()
if not branch or branch == "HEAD":
fail(
"❌ Could not determine the current branch (detached HEAD?).\n"
"The branch must contain the activity MarkAPI-NNNN."
)

match = BRANCH_ACTIVITY_RE.search(branch)
if not match:
fail(
"❌ Branch without an activity.\n"
"The branch name must contain MarkAPI-NNNN "
"(e.g. feature/MarkAPI-1234/my-feature).\n"
"Current branch: %s" % branch
)

activity = "MarkAPI-%s" % match.group(1)

# Strip an existing prefix to avoid duplication (amend/rebase/reword).
body = EXISTING_PREFIX_RE.sub("", first_line).strip()

if not MESSAGE_FORMAT_RE.match(body):
fail(
"❌ Invalid commit message.\n"
"Expected format: <type>(<optional scope>): <message>\n"
"Allowed types: %s\n"
"Examples:\n"
" chore: format readme\n"
" fix(auth): fix authentication when token is invalid"
% ", ".join(ALLOWED_TYPES)
)

lines[0] = "[%s] %s" % (activity, body)

with open(msg_path, "w", encoding="utf-8") as handle:
handle.write("\n".join(lines) + "\n")

sys.exit(0)


if __name__ == "__main__":
main()
85 changes: 85 additions & 0 deletions .github/ISSUE_TEMPLATE/nova-funcionalidade.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
---
name: Nova funcionalidade
about: Contribua com novas idéias e necessidades
title: ''
labels: enhancement
assignees: ''

---

### Descrição da nova funcionalidade
Eu, como **[tipo de cargo/ usuário / papel em sistema]**, gostaria que **[descrição breve da funcionalidade]**, então **[consequência ou o porque da requisição da atividade]**.

### Critérios de aceitação

Lista de critérios a serem observados pela equipe de engenharia durante a elaboração e construção da tarefa. Seja claro(a), descreva os pontos que são importantes para você:
- Ex 1: Fale sobre qual deve ser o comportamento da funcionalidade;
- Ex 2: Fale sobre quais validações um formulário deve conter;
- Ex 3: Fale sobre os tipos de impressão uma página deve suportar;
- Ex 4: Fale sobre os tipos de usuários podem realizar a ação requisitada;
- Critério 5;
- Critério 6

### Anexos
Este tópico é opcional mas pode ser utilizado para incluir objetos a serem analisados ou demonstrações que podem ser utilizados de exemplo.

### Referências
Este tópico é opcional mas pode ser utilizado para enumerar items de referências como links ou bibliografia.


----

# Exemplos

### 1) Descrição do requisito

Como Usuário Administrador do OPAC, gostaria que o botão de publicação de periódicos possuisse **DESTAQUE**, assim poderia ter um indicativo visual de cuidado antes de clicar.

### Critérios de aceitação

Para que esta tarefa seja considerada concluída deve conter os seguintes pontos:
- O botão de publicação deve possuir um tom vermelho que se destaque dos outros elementos de tela;
- O botão deve conter o modo daltônico para que os membros daltônicos do time de publicação possam identifica-lo com facilidade;
- O botão deve ter conter um indicativo de "descrição de ação" ao posicionar o mouse e aguardar alguns segundos.

### Anexos
N/A

### Referências
N/A

---
### 2) Descrição do requisito
Como Usuário visitante do OPAC, gostaria que a página de artigos fosse adaptativa para celulares, assim poderia utilizar meu dispositivo móvel para navegar com mais facilidade.

### Critérios de aceitação

Os seguintes pontos devem ser contemplados:
- Os botões de navegação nesta tela devem ser de fácil acesso e possuir fácil toque;
- Os textos nesta tela devem possuir tamanho adequado para leitura seguindo os padrões da W3C;
- Deve-se agrupar em blocos as seções de página para facilitar a navegabilidade;

### Anexos
N/A

### Referências
N/A

---
### 3) Descrição do requisito
Como administrador do processo de qualidade, gostaria de ter um pré visualizador de HTML, assim poderia validar a marcação dos XMLs antes de envia-lo para publicação.


### Critérios de aceitação

Os seguintes pontos devem ser contemplados:
- O visualizador de HTML deve ser auto contido e não depender de internet;
- O visualizador de HTML deve funcionar a partir do SPS 1.8;
- O visualizador de HTML deve exibir o conteúdo da mesma forma que o site oficial;
- O visualizador de HTML deve projetar as tabelas de forma correta;

### Anexos
N/A

### Referências
N/A
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/reportar-problema.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Reportar problema
about: Reporte um erro ou problema e nos ajude a melhorar nossos produtos
title: ''
labels: bug
assignees: ''

---

### Descrição do problema
Descreva de forma clara e objetiva o problema relatado.

### Passos para reproduzir o problema
1. Acesse a página ...
2. Clique no link ...
3. Role a página até ...
4. Observe o erro apresentado

### Comportamento esperado
Descreva com clareza qual seria o comportamento **esperado** (correto) ao reproduzir os passos acima.

### Screenshots ou vídeos
Para dar mais detalhes e contexto sobre o erro, considere anexar fotos ou vídeos do problema.

### Anexos
Está seção é opcional, utilize para referenciar arquivos que servem de insumo para reproduzir o erro, ex:
- XML utilizado
- HTML produzido
- PDF criado

### Ambiente utilizado

Quando aplicável, forneça detalhes sobre o ambiente utilizado, ex:

- Navegador Mozilla Firefox versão 30
- Windows XP
- PC programs versão 1.0
- Aparelho celular iPhone 7, iOS 7
21 changes: 21 additions & 0 deletions .github/ISSUE_TEMPLATE/tarefa-de-desenvolvimento.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Tarefa de desenvolvimento
about: Tarefas definidas pelo próprio time de desenvolvimento
title: ''
labels: task
assignees: ''

---

### Descrição da tarefa
Descreva de forma clara e objetiva a tarefa em questão

### Subtarefas

- [ ] Descrição da primeira subtarefa
- [ ] Descrição da segunda subtarefa


## Considerações e notas

* A implementação destas mudanças implica em aumentar o consumo de disco..
Loading