Estructura del proyecto

Esta sección está pensada para desarrolladoras y personas que desean entender como está estructurado el proyecto para contribuir con nuevo código o agregando características.

General

El proyecto esta desarrollado en django y por tanto sigue una estructura específica. A continuación se explicará la estructura del proyecto haciendo énfasis en la descripción general de los módulos que lo componen.

Esquite                    # Carpeta raíz
│   ├── corpus_admin/      # Modulo de administración de archivos
│   ├── env/               # Entorno virtual para python
│   ├── media/             # Archivos PDFs
│   ├── searcher/          # Modulo de búsqueda
│   ├── static/            # Archivos estáticos (css, js, img, ...)
│   ├── templates/         # Vistas en .html
│   ├── esquite/           # Modulo principal del proyecto
│   ├── docs/              # Carpeta que contiene la documentación
│   ├── api/               # Modulo de la api
│   ├── db.sqlite3         # Archivo para bases de datos
│   ├── manage.py          # Command-line utility de django
│   ├── __pycache__
│   ├── README.md          # Archivo que describe el proyecto
│   ├── requeriments.txt   # Descripción de las dependencias del proyecto
│   └── wizard.py          # Asistente de instalación del proyecto

esquite

esquite
├── __init__.py
├── __pycache__/
├── settings.py             # Configuraciones globales
├── urls.py                 # URLs generales
├── views.py                # Comportamiento de las vistas
├── context_processors.py   # Funciones para variables globales
└── wsgi.py                 # Configuraciones para servidor web

El modulo esquite contiene la base del proyecto. En este modulo se puede gestionar la configuración global del proyecto. También, las urls generales, el comportamiento de la página de inicio y la forma en que se despliegan los pdfs.

searcher

searcher
├── admin.py
├── apps.py
├── forms.py           # Formulario de búsqueda construido por django
├── helpers.py         # Funciones utilitarias para tratamiento de los datos
├── __init__.py
├── migrations/
├── models.py
├── __pycache__/
├── tests.py
├── urls.py            # Configuración de URLs para el modulo de búsqueda
└── views.py           # Comportamiendo de las vistas y manejo de consultas

En el modulo searcher se encuentra el funcionamiento de las vistas de búsqueda y manejo de las queries enviadas a elasticsearch. También, se pueden modificar las URLs del módulo searcher que comprenden todas las disponibles en el navbar (ayuda, links, about, participantes). De forma programática se genera el formulario de búsqueda. Este puede modificarse en forms.py.

corpus_admin

corpus_admin
├── admin.py
├── apps.py
├── forms.py     # Formularios para agregar, editar o modificar el PDF de un documento
├── helpers.py   # Funciones utilitarias
├── __init__.py
├── migrations/
├── models.py
├── __pycache__/
├── tests.py
├── urls.py      # Configuración de URLs del manejo de documentos
└── views.py     # Comportamiento de las vistas, carga de documentos, edición y validaciones

El modulo corpus_admin se encarga de recibir, validar, cargar, editar y eliminar los documentos. Todo cambio se verá reflejado en el API de elasticsearch. Similar a searcher los formularios son creados dinámicamente y se pueden editar en forms.py. El archivo views.py es el que se encarga de la validación y subida de cualquier cambio en los documentos. Algunas funciones toman los parámetros de las URLs. La definición de los parámetros validos se puede configurar en urls.py así como las rutas del modulo.

templates

templates
├── about.html
├── base.html
├── corpus-admin/
│   ├── add-rows.html
│   ├── doc-edit.html
│   ├── doc-preview.html
│   ├── docs-list.html
│   └── new-doc.html
├── help.html
├── index.html
├── links.html
├── participants.html
├── searcher/
│   └── searcher.html
└── user/
     ├── about-user.html
     ├── help-user.html
     ├── links-user.html
     └── participants-user.html

En esta carpeta se encuentran las vistas .html que son llamadas por los archivos views.py de los diferentes módulos. Por convención la carpeta es llamada templates. Se hace uso del motor de templates de django. Más información del motor en la documentación. Además, se hace uso del template inheritance por lo que los elementos comunes (navbar, banner, footer, etc) se encuentran en el archivo base.html y de ahí se extienden a las diferentes vistas. Igualmente, el funcionamiento detallado de esta herramienta se puede encontrar en la documentación. Por último la carpeta user contiene fragmentos .html que brindan la posibilidad a las usuarias incrustar partes personalizadas en las vistas creadas.

static

static
├── css           # Estilos
├── data-tables   # Biblioteca para tablas y exportación de datos
├── img           # Imágenes del proyecto
├── js            # Scripts de bibliotecas
├── localisation  # Archivos de idiomas paralas tablas
└── fork-awesome  # Iconos decorativos del proyecto como los botones

Carpeta que contiene los archivos estáticos del proyecto como estilos, scripts, imágenes, iconos y bibliotecas utilizadas. Muchos de los estilos se encuentran en css/main.css. Para las tablas se utiliza la biblioteca DataTables y para las alertas select2.