django-forms-workflows


Namedjango-forms-workflows JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryEnterprise-grade, database-driven form builder with approval workflows and external data integration
upload_time2025-10-31 04:27:18
maintainerNone
docs_urlNone
authorDjango Forms Workflows Contributors
requires_python<4.0,>=3.10
licenseLGPL-3.0-only
keywords django forms workflows approval form-builder dynamic-forms ldap enterprise audit database-driven
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Django Forms Workflows

**Enterprise-grade, database-driven form builder with approval workflows and external data integration**

[![License: LGPL v3](https://img.shields.io/badge/License-LGPL_v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/downloads/)
[![Django Version](https://img.shields.io/badge/django-5.1%2B-green)](https://www.djangoproject.com/)

## Overview

Django Forms Workflows bridges the gap between simple form libraries (like Crispy Forms) and expensive SaaS solutions (like JotForm, Formstack). It provides:

- 📝 **Database-Driven Forms** - Forms stored in database, not code
- 🔄 **Approval Workflows** - Multi-step approval engine with notifications
- 🔌 **External Data Integration** - Pull data from LDAP, databases, APIs
- 🔒 **Enterprise Security** - LDAP/AD authentication, complete audit trails
- 🏠 **Self-Hosted** - No SaaS fees, full data control
- 🎨 **Beautiful UI** - Built on Crispy Forms and Bootstrap

## Key Features

### 🎯 No-Code Form Creation
Business users can create and modify forms through Django Admin without touching code:
- Drag-and-drop field ordering
- 15+ field types (text, select, date, file upload, etc.)
- Validation rules (required, regex, min/max, etc.)
- Conditional field visibility
- Custom help text and placeholders

### 🔄 Powerful Approval Workflows
Built-in multi-step approval engine:
- Sequential or parallel approvals
- Configurable approval logic (any/all approvers)
- Email notifications and reminders
- Complete audit trail
- Approval delegation

### 🔌 Configurable Prefill Sources
Automatically populate form fields from external systems with flexible, reusable configurations:
- **User Model** - Current user's profile data (email, name, username)
- **LDAP/Active Directory** - Enterprise directory attributes (department, title, manager)
- **External Databases** - Pull from any SQL database with custom field mappings
- **REST APIs** - Integrate with external services
- **System Values** - Current date/time, previous submissions

**New in v1.1:** Prefill sources are now configurable database records with:
- ✅ **Dropdown Selection** - Form builders select from pre-configured sources
- ✅ **Custom Field Mappings** - Configure database lookup fields for different environments
- ✅ **Reusable Configurations** - Define once, use across multiple forms
- ✅ **Centralized Management** - All sources managed in Django Admin

Example database prefill configuration:
```python
# Admin → Prefill Sources → Add Prefill Source
Name: Student - First Name
Source Type: Database
DB Schema: dbo
DB Table: STBIOS
DB Column: FIRST_NAME
DB Lookup Field: ID_NUMBER  # Column to match against
DB User Field: employee_id   # UserProfile field to use for lookup
```

See [Prefill Sources Guide](docs/PREFILL_SOURCES.md) for detailed configuration.

### 🔄 Post-Submission Actions (NEW)
Automatically update external systems with form data after submission or approval:
- **Database Updates** - Write data back to external databases with custom field mappings
- **LDAP Updates** - Update Active Directory attributes
- **API Calls** - Send data to external services via HTTP APIs
- **Custom Handlers** - Execute custom Python code for complex integrations

**Trigger Types:**
- ✅ **On Submit** - Execute immediately when form is submitted
- ✅ **On Approve** - Execute when form is approved
- ✅ **On Reject** - Execute when form is rejected
- ✅ **On Complete** - Execute when workflow is complete

**Features:**
- Conditional execution based on form field values
- Automatic retries with configurable max attempts
- Error handling (fail silently or block submission)
- Execution ordering for dependent actions
- Complete audit logging

Example database update configuration:
```python
# Admin → Post-Submission Actions → Add
Name: Update HR Database
Action Type: Database Update
Trigger: On Approval
DB Field Mappings:
  [
    {"form_field": "email", "db_column": "EMAIL_ADDRESS"},
    {"form_field": "phone", "db_column": "PHONE_NUMBER"}
  ]
```

See [Post-Submission Actions Guide](docs/POST_SUBMISSION_ACTIONS.md) for detailed configuration.

### 🔒 Enterprise-Ready Security
- LDAP/Active Directory authentication
- Role-based permissions
- Complete audit logging (who, what, when, where)
- CSRF protection
- SQL injection prevention
- File upload validation

### 📊 Comprehensive Audit Trail
Track everything for compliance:
- Form creation/modification
- Form submissions
- Approval decisions
- Status changes
- Field value changes
- User actions with IP addresses

## Quick Start

### Installation

```bash
pip install django-forms-workflows
```

### Basic Setup

1. Add to `INSTALLED_APPS`:

```python
INSTALLED_APPS = [
    # ...
    'crispy_forms',
    'crispy_bootstrap5',
    'django_forms_workflows',
    # ...
]
```

2. Configure settings:

```python
# Crispy Forms
CRISPY_ALLOWED_TEMPLATE_PACKS = "bootstrap5"
CRISPY_TEMPLATE_PACK = "bootstrap5"

# Forms Workflows
FORMS_WORKFLOWS = {
    'ENABLE_APPROVALS': True,
    'ENABLE_AUDIT_LOG': True,
    'ENABLE_FILE_UPLOADS': True,
    'MAX_FILE_SIZE': 10 * 1024 * 1024,  # 10MB
}
```

3. Run migrations:

```bash
python manage.py migrate django_forms_workflows
```

4. Include URLs:

```python
urlpatterns = [
    path('forms/', include('django_forms_workflows.urls')),
]
```

5. Create your first form in Django Admin!

## Architecture

```
┌─────────────────────────────────────────────────────────────────┐
│                         User Interface                          │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐          │
│  │ Form Builder │  │ Form Viewer  │  │ Approval UI  │          │
│  │  (Admin)     │  │  (End User)  │  │  (Approvers) │          │
│  └──────────────┘  └──────────────┘  └──────────────┘          │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                      Django Application                         │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │              Data Source Abstraction Layer               │  │
│  │  ┌────────────┐  ┌────────────┐  ┌────────────┐          │  │
│  │  │    LDAP    │  │  Database  │  │    API     │          │  │
│  │  │   Source   │  │   Source   │  │   Source   │          │  │
│  │  └────────────┘  └────────────┘  └────────────┘          │  │
│  └──────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                      External Systems                           │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐          │
│  │ Active       │  │ Legacy       │  │ External     │          │
│  │ Directory    │  │ Databases    │  │ APIs         │          │
│  └──────────────┘  └──────────────┘  └──────────────┘          │
└─────────────────────────────────────────────────────────────────┘
```

## Use Cases

Perfect for:
- **HR Departments** - Employee onboarding, time-off requests, expense reports
- **IT Departments** - Access requests, equipment requests, change management
- **Finance** - Purchase orders, invoice approvals, budget requests
- **Education** - Student applications, course registrations, facility requests
- **Healthcare** - Patient intake, referrals, insurance claims
- **Government** - Permit applications, FOIA requests, citizen services

## Documentation

- [Installation Guide](docs/installation.md)
- [Configuration Guide](docs/configuration.md)
- [Data Sources Guide](docs/data-sources.md)
- [Workflow Guide](docs/workflows.md)
- [API Reference](docs/api.md)
- [Architecture Overview](docs/ARCHITECTURE.md)

## Comparison

| Feature | Django Forms Workflows | Crispy Forms | FormStack | Django-Formtools |
|---------|----------------------|--------------|-----------|------------------|
| Database-driven forms | ✅ | ❌ | ✅ | ❌ |
| No-code form creation | ✅ | ❌ | ✅ | ❌ |
| Self-hosted | ✅ | ✅ | ❌ | ✅ |
| Approval workflows | ✅ | ❌ | ⚠️ | ❌ |
| External data prefill | ✅ | ❌ | ⚠️ | ❌ |
| LDAP/AD integration | ✅ | ❌ | ❌ | ❌ |
| Audit trail | ✅ | ❌ | ✅ | ❌ |
| Open source | ✅ | ✅ | ❌ | ✅ |

## Requirements

- Python 3.10+
- Django 5.1+
- PostgreSQL 12+ (recommended) or MySQL 8.0+
- Celery 5.0+ (for background tasks)
- Redis/Valkey (for Celery broker)

## Contributing

We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.

## License

GNU Lesser General Public License v3.0 (LGPLv3) - see [LICENSE](LICENSE) for details.

## Support

- 📖 [Documentation](https://django-forms-workflows.readthedocs.io/)
- 💬 [Discussions](https://github.com/opensensor/django-forms-workflows/discussions)
- 🐛 [Issue Tracker](https://github.com/opensensor/django-forms-workflows/issues)

## Roadmap

### Phase 1: Core (Current)
- [x] Database-driven form definitions
- [x] Dynamic form rendering
- [x] Approval workflows
- [x] LDAP integration
- [x] Database prefill
- [x] Audit logging

### Phase 2: Enhanced UX
- [ ] Form builder UI (drag-and-drop)
- [ ] Conditional field visibility (client-side)
- [ ] File upload validation
- [ ] Form templates/cloning
- [ ] Dashboard analytics

### Phase 3: Advanced Features
- [ ] REST API for form submission
- [ ] Webhook support
- [ ] Custom field types (signature, location, etc.)
- [ ] Advanced reporting
- [ ] Form versioning

### Phase 4: Enterprise
- [ ] Multi-tenancy support
- [ ] SSO integration (SAML, OAuth)
- [ ] Advanced RBAC
- [ ] White-label support
- [ ] Plugin marketplace

## Credits

Built with ❤️ by the Django community.

Special thanks to:
- [Django Crispy Forms](https://github.com/django-crispy-forms/django-crispy-forms)
- [Celery](https://github.com/celery/celery)
- [django-auth-ldap](https://github.com/django-auth-ldap/django-auth-ldap)



            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "django-forms-workflows",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "django, forms, workflows, approval, form-builder, dynamic-forms, ldap, enterprise, audit, database-driven",
    "author": "Django Forms Workflows Contributors",
    "author_email": "opensource@opensensor.ai",
    "download_url": "https://files.pythonhosted.org/packages/81/a5/71de8c23f114f5737d6bdeca6cdb8fd4be8eafe2e42c45385343e20f9164/django_forms_workflows-0.2.0.tar.gz",
    "platform": null,
    "description": "# Django Forms Workflows\n\n**Enterprise-grade, database-driven form builder with approval workflows and external data integration**\n\n[![License: LGPL v3](https://img.shields.io/badge/License-LGPL_v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)\n[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/downloads/)\n[![Django Version](https://img.shields.io/badge/django-5.1%2B-green)](https://www.djangoproject.com/)\n\n## Overview\n\nDjango Forms Workflows bridges the gap between simple form libraries (like Crispy Forms) and expensive SaaS solutions (like JotForm, Formstack). It provides:\n\n- \ud83d\udcdd **Database-Driven Forms** - Forms stored in database, not code\n- \ud83d\udd04 **Approval Workflows** - Multi-step approval engine with notifications\n- \ud83d\udd0c **External Data Integration** - Pull data from LDAP, databases, APIs\n- \ud83d\udd12 **Enterprise Security** - LDAP/AD authentication, complete audit trails\n- \ud83c\udfe0 **Self-Hosted** - No SaaS fees, full data control\n- \ud83c\udfa8 **Beautiful UI** - Built on Crispy Forms and Bootstrap\n\n## Key Features\n\n### \ud83c\udfaf No-Code Form Creation\nBusiness users can create and modify forms through Django Admin without touching code:\n- Drag-and-drop field ordering\n- 15+ field types (text, select, date, file upload, etc.)\n- Validation rules (required, regex, min/max, etc.)\n- Conditional field visibility\n- Custom help text and placeholders\n\n### \ud83d\udd04 Powerful Approval Workflows\nBuilt-in multi-step approval engine:\n- Sequential or parallel approvals\n- Configurable approval logic (any/all approvers)\n- Email notifications and reminders\n- Complete audit trail\n- Approval delegation\n\n### \ud83d\udd0c Configurable Prefill Sources\nAutomatically populate form fields from external systems with flexible, reusable configurations:\n- **User Model** - Current user's profile data (email, name, username)\n- **LDAP/Active Directory** - Enterprise directory attributes (department, title, manager)\n- **External Databases** - Pull from any SQL database with custom field mappings\n- **REST APIs** - Integrate with external services\n- **System Values** - Current date/time, previous submissions\n\n**New in v1.1:** Prefill sources are now configurable database records with:\n- \u2705 **Dropdown Selection** - Form builders select from pre-configured sources\n- \u2705 **Custom Field Mappings** - Configure database lookup fields for different environments\n- \u2705 **Reusable Configurations** - Define once, use across multiple forms\n- \u2705 **Centralized Management** - All sources managed in Django Admin\n\nExample database prefill configuration:\n```python\n# Admin \u2192 Prefill Sources \u2192 Add Prefill Source\nName: Student - First Name\nSource Type: Database\nDB Schema: dbo\nDB Table: STBIOS\nDB Column: FIRST_NAME\nDB Lookup Field: ID_NUMBER  # Column to match against\nDB User Field: employee_id   # UserProfile field to use for lookup\n```\n\nSee [Prefill Sources Guide](docs/PREFILL_SOURCES.md) for detailed configuration.\n\n### \ud83d\udd04 Post-Submission Actions (NEW)\nAutomatically update external systems with form data after submission or approval:\n- **Database Updates** - Write data back to external databases with custom field mappings\n- **LDAP Updates** - Update Active Directory attributes\n- **API Calls** - Send data to external services via HTTP APIs\n- **Custom Handlers** - Execute custom Python code for complex integrations\n\n**Trigger Types:**\n- \u2705 **On Submit** - Execute immediately when form is submitted\n- \u2705 **On Approve** - Execute when form is approved\n- \u2705 **On Reject** - Execute when form is rejected\n- \u2705 **On Complete** - Execute when workflow is complete\n\n**Features:**\n- Conditional execution based on form field values\n- Automatic retries with configurable max attempts\n- Error handling (fail silently or block submission)\n- Execution ordering for dependent actions\n- Complete audit logging\n\nExample database update configuration:\n```python\n# Admin \u2192 Post-Submission Actions \u2192 Add\nName: Update HR Database\nAction Type: Database Update\nTrigger: On Approval\nDB Field Mappings:\n  [\n    {\"form_field\": \"email\", \"db_column\": \"EMAIL_ADDRESS\"},\n    {\"form_field\": \"phone\", \"db_column\": \"PHONE_NUMBER\"}\n  ]\n```\n\nSee [Post-Submission Actions Guide](docs/POST_SUBMISSION_ACTIONS.md) for detailed configuration.\n\n### \ud83d\udd12 Enterprise-Ready Security\n- LDAP/Active Directory authentication\n- Role-based permissions\n- Complete audit logging (who, what, when, where)\n- CSRF protection\n- SQL injection prevention\n- File upload validation\n\n### \ud83d\udcca Comprehensive Audit Trail\nTrack everything for compliance:\n- Form creation/modification\n- Form submissions\n- Approval decisions\n- Status changes\n- Field value changes\n- User actions with IP addresses\n\n## Quick Start\n\n### Installation\n\n```bash\npip install django-forms-workflows\n```\n\n### Basic Setup\n\n1. Add to `INSTALLED_APPS`:\n\n```python\nINSTALLED_APPS = [\n    # ...\n    'crispy_forms',\n    'crispy_bootstrap5',\n    'django_forms_workflows',\n    # ...\n]\n```\n\n2. Configure settings:\n\n```python\n# Crispy Forms\nCRISPY_ALLOWED_TEMPLATE_PACKS = \"bootstrap5\"\nCRISPY_TEMPLATE_PACK = \"bootstrap5\"\n\n# Forms Workflows\nFORMS_WORKFLOWS = {\n    'ENABLE_APPROVALS': True,\n    'ENABLE_AUDIT_LOG': True,\n    'ENABLE_FILE_UPLOADS': True,\n    'MAX_FILE_SIZE': 10 * 1024 * 1024,  # 10MB\n}\n```\n\n3. Run migrations:\n\n```bash\npython manage.py migrate django_forms_workflows\n```\n\n4. Include URLs:\n\n```python\nurlpatterns = [\n    path('forms/', include('django_forms_workflows.urls')),\n]\n```\n\n5. Create your first form in Django Admin!\n\n## Architecture\n\n```\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502                         User Interface                          \u2502\n\u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510          \u2502\n\u2502  \u2502 Form Builder \u2502  \u2502 Form Viewer  \u2502  \u2502 Approval UI  \u2502          \u2502\n\u2502  \u2502  (Admin)     \u2502  \u2502  (End User)  \u2502  \u2502  (Approvers) \u2502          \u2502\n\u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518          \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                              \u2502\n                              \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502                      Django Application                         \u2502\n\u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u2502\n\u2502  \u2502              Data Source Abstraction Layer               \u2502  \u2502\n\u2502  \u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510          \u2502  \u2502\n\u2502  \u2502  \u2502    LDAP    \u2502  \u2502  Database  \u2502  \u2502    API     \u2502          \u2502  \u2502\n\u2502  \u2502  \u2502   Source   \u2502  \u2502   Source   \u2502  \u2502   Source   \u2502          \u2502  \u2502\n\u2502  \u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518          \u2502  \u2502\n\u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n                              \u2502\n                              \u25bc\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502                      External Systems                           \u2502\n\u2502  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510  \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510          \u2502\n\u2502  \u2502 Active       \u2502  \u2502 Legacy       \u2502  \u2502 External     \u2502          \u2502\n\u2502  \u2502 Directory    \u2502  \u2502 Databases    \u2502  \u2502 APIs         \u2502          \u2502\n\u2502  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518  \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518          \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## Use Cases\n\nPerfect for:\n- **HR Departments** - Employee onboarding, time-off requests, expense reports\n- **IT Departments** - Access requests, equipment requests, change management\n- **Finance** - Purchase orders, invoice approvals, budget requests\n- **Education** - Student applications, course registrations, facility requests\n- **Healthcare** - Patient intake, referrals, insurance claims\n- **Government** - Permit applications, FOIA requests, citizen services\n\n## Documentation\n\n- [Installation Guide](docs/installation.md)\n- [Configuration Guide](docs/configuration.md)\n- [Data Sources Guide](docs/data-sources.md)\n- [Workflow Guide](docs/workflows.md)\n- [API Reference](docs/api.md)\n- [Architecture Overview](docs/ARCHITECTURE.md)\n\n## Comparison\n\n| Feature | Django Forms Workflows | Crispy Forms | FormStack | Django-Formtools |\n|---------|----------------------|--------------|-----------|------------------|\n| Database-driven forms | \u2705 | \u274c | \u2705 | \u274c |\n| No-code form creation | \u2705 | \u274c | \u2705 | \u274c |\n| Self-hosted | \u2705 | \u2705 | \u274c | \u2705 |\n| Approval workflows | \u2705 | \u274c | \u26a0\ufe0f | \u274c |\n| External data prefill | \u2705 | \u274c | \u26a0\ufe0f | \u274c |\n| LDAP/AD integration | \u2705 | \u274c | \u274c | \u274c |\n| Audit trail | \u2705 | \u274c | \u2705 | \u274c |\n| Open source | \u2705 | \u2705 | \u274c | \u2705 |\n\n## Requirements\n\n- Python 3.10+\n- Django 5.1+\n- PostgreSQL 12+ (recommended) or MySQL 8.0+\n- Celery 5.0+ (for background tasks)\n- Redis/Valkey (for Celery broker)\n\n## Contributing\n\nWe welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.\n\n## License\n\nGNU Lesser General Public License v3.0 (LGPLv3) - see [LICENSE](LICENSE) for details.\n\n## Support\n\n- \ud83d\udcd6 [Documentation](https://django-forms-workflows.readthedocs.io/)\n- \ud83d\udcac [Discussions](https://github.com/opensensor/django-forms-workflows/discussions)\n- \ud83d\udc1b [Issue Tracker](https://github.com/opensensor/django-forms-workflows/issues)\n\n## Roadmap\n\n### Phase 1: Core (Current)\n- [x] Database-driven form definitions\n- [x] Dynamic form rendering\n- [x] Approval workflows\n- [x] LDAP integration\n- [x] Database prefill\n- [x] Audit logging\n\n### Phase 2: Enhanced UX\n- [ ] Form builder UI (drag-and-drop)\n- [ ] Conditional field visibility (client-side)\n- [ ] File upload validation\n- [ ] Form templates/cloning\n- [ ] Dashboard analytics\n\n### Phase 3: Advanced Features\n- [ ] REST API for form submission\n- [ ] Webhook support\n- [ ] Custom field types (signature, location, etc.)\n- [ ] Advanced reporting\n- [ ] Form versioning\n\n### Phase 4: Enterprise\n- [ ] Multi-tenancy support\n- [ ] SSO integration (SAML, OAuth)\n- [ ] Advanced RBAC\n- [ ] White-label support\n- [ ] Plugin marketplace\n\n## Credits\n\nBuilt with \u2764\ufe0f by the Django community.\n\nSpecial thanks to:\n- [Django Crispy Forms](https://github.com/django-crispy-forms/django-crispy-forms)\n- [Celery](https://github.com/celery/celery)\n- [django-auth-ldap](https://github.com/django-auth-ldap/django-auth-ldap)\n\n\n",
    "bugtrack_url": null,
    "license": "LGPL-3.0-only",
    "summary": "Enterprise-grade, database-driven form builder with approval workflows and external data integration",
    "version": "0.2.0",
    "project_urls": {
        "Documentation": "https://django-forms-workflows.readthedocs.io/",
        "Homepage": "https://github.com/opensensor/django-forms-workflows",
        "Repository": "https://github.com/opensensor/django-forms-workflows"
    },
    "split_keywords": [
        "django",
        " forms",
        " workflows",
        " approval",
        " form-builder",
        " dynamic-forms",
        " ldap",
        " enterprise",
        " audit",
        " database-driven"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "05c01f818f6d6ca3bf96e9f66f5dfaf7b9f74c30e93750a806fb71fdae443cd9",
                "md5": "548cf17f3320acf489b1fe05572dba3a",
                "sha256": "859732ee1593e20855e47679d1d1dbd1176039ba40bf33b98635b38261ef8f4e"
            },
            "downloads": -1,
            "filename": "django_forms_workflows-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "548cf17f3320acf489b1fe05572dba3a",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 80815,
            "upload_time": "2025-10-31T04:27:16",
            "upload_time_iso_8601": "2025-10-31T04:27:16.382449Z",
            "url": "https://files.pythonhosted.org/packages/05/c0/1f818f6d6ca3bf96e9f66f5dfaf7b9f74c30e93750a806fb71fdae443cd9/django_forms_workflows-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "81a571de8c23f114f5737d6bdeca6cdb8fd4be8eafe2e42c45385343e20f9164",
                "md5": "5f8ff623d8fddbd57fd849bd8d1a2f34",
                "sha256": "be650b070204798e8d0ce1c8f62811b317b9df40e6287b620f8247c1cafa80c9"
            },
            "downloads": -1,
            "filename": "django_forms_workflows-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "5f8ff623d8fddbd57fd849bd8d1a2f34",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 60635,
            "upload_time": "2025-10-31T04:27:18",
            "upload_time_iso_8601": "2025-10-31T04:27:18.132853Z",
            "url": "https://files.pythonhosted.org/packages/81/a5/71de8c23f114f5737d6bdeca6cdb8fd4be8eafe2e42c45385343e20f9164/django_forms_workflows-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-31 04:27:18",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "opensensor",
    "github_project": "django-forms-workflows",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "django-forms-workflows"
}
        
Elapsed time: 2.60281s