Modo biblioteca#

Usando Construbot como una aplicación Django dentro de tu propio proyecto.

Descripción general#

Construbot puede ejecutarse en dos modos:

  1. Modo independiente (predeterminado): aplicación completa con administrador, cuentas y autenticación

  2. Modo Biblioteca - Aplicación Django integrada en tu proyecto

Habilitar modo biblioteca:

CONSTRUBOT_AS_LIBRARY=True

¿Qué cambia?#

Cuando CONSTRUBOT_AS_LIBRARY=Verdadero:

Desactivado:

  • Interfaz de administración de Django

  • URL de allauth (administración de cuentas)

  • Vistas de autenticación independientes

  • Aplicación de configuración de cuenta

Aún disponible:

  • Modelos de negocio principales (Contrato, Estimate, etc.)

  • Puntos finales API

  • Lógica empresarial y vistas (si incluye URL)

  • Etiquetas de plantilla y utilidades

Casos de uso#

Cuándo usar el modo biblioteca:

  • Integrando Construbot en el proyecto Django existente

  • Usando su propio sistema de autenticación

  • Personalización de la interfaz de administración

  • Construyendo una interfaz personalizada

Cuándo NO usarlo:

  • Necesita una solución independiente completa

  • Quiere autenticación integrada

  • Uso listo para usar

Configuración#

1. Instalar paquete:

pip install construbot  # When available on PyPI

# Or from source:
pip install git+https://github.com/javier-llamas/construbot.git

2. Añadir a INSTALLED_APPS:

INSTALLED_APPS = [
    # Your apps
    'myapp',

    # Add Construbot apps
    'construbot.users',
    'construbot.proyectos',
    'construbot.core',
    'construbot.api',

    # Django apps
    'django.contrib.admin',
    ...
]

3. Establecer modo de biblioteca:

# In .env
CONSTRUBOT_AS_LIBRARY=True

4. Incluir URL (opcional):

# urls.py
urlpatterns = [
    path('construbot/', include('construbot.proyectos.urls')),
    path('api/v1/', include('construbot.api.urls')),
]

5. Ejecutar migraciones:

python manage.py migrate

Configuración#

Ajustes:

# settings.py

# Use Construbot's custom user model (recommended)
AUTH_USER_MODEL = 'users.User'

# Or map to your own user model
# (requires custom integration)

# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        ...
    }
}

# Library mode
CONSTRUBOT_AS_LIBRARY = True

Patrones de integración#

Usando modelos Construbot#

from construbot.proyectos.models import Contrato, Contraparte
from construbot.users.models import Company

# Create company
company = Company.objects.create(
    customer=my_customer,
    nombre="My Company"
)

# Create contract
contract = Contrato.objects.create(
    company=company,
    folio="C-001",
    ...
)

Autenticación personalizada#

# If not using Construbot's User model:
# Map your users to Construbot companies

from construbot.users.models import Company, UserCompany

# Associate your user with Construbot company
UserCompany.objects.create(
    user=my_user,  # Your user model
    company=construbot_company
)

Solo API#

# Use only Construbot's API, not web interface

INSTALLED_APPS = [
    'construbot.users',
    'construbot.proyectos',
    'construbot.api',
    'rest_framework',
    'rest_framework_simplejwt',
]

urlpatterns = [
    path('api/v1/', include('construbot.api.urls')),
]

Limitaciones#

En modo biblioteca:

  • Sin interfaz de administración incorporada (use el administrador de Django o cree el suyo propio)

  • Sin vistas de registro/inicio de sesión de usuario (implemente las suyas propias)

  • Se requiere configuración manual para los permisos

  • Necesita gestionar el cambio de empresa usted mismo

Solución de problemas#

«Ningún módulo llamado constructbot»:

Asegúrese de que Construbot esté instalado:

pip show construbot

«La tabla no existe»:

Ejecutar migraciones:

python manage.py migrate

«Conflictos AUTH_USER_MODEL»:

Elige uno:

  1. Utilice el modelo de usuario de Construbot: AUTH_USER_MODEL = 'users.User'

  2. Cree una integración personalizada entre sus modelos User y Construbot

Proyecto de ejemplo#

# settings.py
INSTALLED_APPS = [
    'myapp',
    'construbot.users',
    'construbot.proyectos',
    'construbot.core',
    'django.contrib.admin',
    ...
]

AUTH_USER_MODEL = 'users.User'
CONSTRUBOT_AS_LIBRARY = True
# urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    path('construbot/', include('construbot.proyectos.urls')),
    path('api/', include('construbot.api.urls')),
]
# views.py
from construbot.proyectos.models import Contrato

def my_view(request):
    contracts = Contrato.objects.filter(
        company=request.user.active_company
    )
    return render(request, 'my_template.html', {'contracts': contracts})

Ver también#