Modo biblioteca#
Usando Construbot como una aplicación Django dentro de tu propio proyecto.
Descripción general#
Construbot puede ejecutarse en dos modos:
Modo independiente (predeterminado): aplicación completa con administrador, cuentas y autenticación
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:
Utilice el modelo de usuario de Construbot:
AUTH_USER_MODEL = 'users.User'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#
Instalación - Development setup
Descripción general - Architecture details
API - API documentation