Skip to content

Commit da61e41

Browse files
Update README
1 parent 0126c0e commit da61e41

File tree

1 file changed

+91
-24
lines changed

1 file changed

+91
-24
lines changed

README.md

Lines changed: 91 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,54 @@
11
# Django PostgreSQL Anonymizer
22

3+
[![Tests](https://github.com/CuriousLearner/django-postgres-anonymizer/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/CuriousLearner/django-postgres-anonymizer/actions/workflows/test.yml)
4+
[![Coverage](https://codecov.io/gh/CuriousLearner/django-postgres-anonymizer/branch/main/graph/badge.svg)](https://codecov.io/gh/CuriousLearner/django-postgres-anonymizer)
5+
[![License](https://img.shields.io/pypi/l/django-postgres-anonymizer)](https://pypi.python.org/pypi/django-postgres-anonymizer/)
6+
[![Downloads](https://static.pepy.tech/badge/django-postgres-anonymizer?period=total&units=international_system&left_color=black&right_color=darkgreen&left_text=Downloads)](https://pepy.tech/project/django-postgres-anonymizer)
7+
[![Python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/)
8+
[![Maintained](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/CuriousLearner/django-postgres-anonymizer/graphs/commit-activity)
9+
[![PyPI version](https://badge.fury.io/py/django-postgres-anonymizer.svg)](https://pypi.python.org/pypi/django-postgres-anonymizer/)
10+
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
11+
[![Python versions](https://img.shields.io/pypi/pyversions/django-postgres-anonymizer.svg)](https://pypi.org/project/django-postgres-anonymizer/)
12+
[![Django versions](https://img.shields.io/pypi/djversions/django-postgres-anonymizer.svg)](https://pypi.org/project/django-postgres-anonymizer/)
13+
[![GitHub stars](https://img.shields.io/github/stars/CuriousLearner/django-postgres-anonymizer?style=social)](https://github.com/CuriousLearner/django-postgres-anonymizer)
14+
[![Security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
15+
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
16+
[![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
17+
18+
> [!CAUTION]
19+
> This package is under heavy development and is currently in alpha stage. APIs may change without notice. Not recommended for production use until stable release.
20+
321
Database anonymization for Django using [PostgreSQL Anonymizer](https://postgresql-anonymizer.readthedocs.io/).
422

23+
**🔒 Secure • 🚀 Fast • 🎯 Precise • 📊 Production-Ready (coming-soon)**
24+
25+
A comprehensive Django integration for PostgreSQL Anonymizer that provides database anonymization with advanced role management, context-aware data masking, and production-ready security features.
26+
27+
## 📋 Table of Contents
28+
29+
- [🚀 Quick Reference](#-quick-reference)
30+
- [✨ Features](#-features)
31+
- [🎯 Use Cases](#-use-cases)
32+
- [⚡ Quick Start](#-quick-start)
33+
- [📖 Usage Examples](#-usage-examples)
34+
- [🔧 Configuration](#-configuration)
35+
- [📚 API Reference](#-api-reference)
36+
- [🎭 Advanced Features](#-advanced-features)
37+
- [🛠️ Development](#️-development)
38+
- [🧪 Testing](#-testing)
39+
- [🤝 Contributing](#-contributing)
40+
- [📄 License](#-license)
41+
- [🙏 Acknowledgments](#-acknowledgments)
42+
43+
## 🎯 Use Cases
44+
45+
-**GDPR Compliance** - Anonymize personal data for non-production environments
46+
-**Development & Testing** - Safe realistic data for development teams
47+
-**Data Analytics** - Enable analytics on anonymized datasets
48+
-**Third-party Integrations** - Share anonymized data with external services
49+
-**Regulatory Compliance** - Meet HIPAA, SOX, PCI-DSS requirements
50+
-**Staging Environments** - Production-like data without privacy risks
51+
552
## 🚀 Quick Reference
653

754
```python
@@ -33,31 +80,41 @@ POSTGRES_ANON = {'MASKED_GROUP': 'analysts'}
3380

3481
**Installation**: `pip install django-postgres-anonymizer` → Add to `INSTALLED_APPS``python manage.py migrate`
3582

36-
## Features
83+
## ✨ Features
84+
85+
### 🎯 **Core Capabilities**
86+
87+
- 🚀 **Zero-Downtime Anonymization** - Apply anonymization rules without service interruption
88+
- 🔄 **Dynamic Role Switching** - Context-aware data access with automatic role management
89+
- 🛡️ **Enterprise Security** - SQL injection prevention, audit logging, permission controls
90+
- 📊 **Smart Function Suggestions** - AI-powered anonymization function recommendations
91+
- 🎭 **Preset Collections** - Pre-built rules for Django Auth, Healthcare, Finance, E-commerce
92+
-**Performance Optimized** - Efficient bulk operations and minimal overhead
3793

38-
### 🔧 Core Functionality
94+
### 🎭 **Dynamic Data Access**
3995

40-
- **PostgreSQL Anonymizer Integration**: Full integration with PostgreSQL Anonymizer extension
41-
- **Rule Management**: Django models and admin interface for managing anonymization rules
42-
- **Pre-built Presets**: Ready-to-use configurations for Django Auth, E-commerce, Healthcare, Finance
43-
- **Smart Function Suggestions**: AI-powered suggestions based on column names and data types
96+
- 🎯 **Context Managers** - `anonymized_data()` and `database_role()` for temporary role switching
97+
- 🎨 **Decorators** - `@use_anonymized_data` and `@database_role_required` for view-level control
98+
- 🧩 **Class-Based Mixins** - `AnonymizedDataMixin` for automatic anonymization in CBVs
99+
- 🔀 **Smart Middleware** - Group-based automatic role switching for seamless user experience
44100

45-
### 🎭 Dynamic Role Switching
101+
### 🛠️ **Developer Experience**
46102

47-
- **Context Managers**: `anonymized_data()` and `database_role()` for temporary role switching
48-
- **Decorators**: `@use_anonymized_data` and `@database_role_required` for function/view-level control
49-
- **Class-Based View Mixins**: `AnonymizedDataMixin` for automatic anonymization in CBVs
50-
- **Middleware**: `AnonRoleMiddleware` for user group-based automatic role switching
103+
- ⚙️ **7 Management Commands** - Complete CLI toolkit for all anonymization operations
104+
- 🖥️ **Rich Admin Interface** - Full Django admin with batch operations and real-time validation
105+
- 🔍 **Schema Introspection** - Automatic table/column discovery and constraint detection
106+
- 📋 **Function Validation** - Real-time SQL syntax checking and security validation
107+
- 📊 **Audit Logging** - Comprehensive operation tracking and compliance reporting
51108

52-
### 🛠️ Developer Tools
109+
### 🎯 **Rule Management**
53110

54-
- **Management Commands**: 7 commands for initialization, validation, applying rules, and more
55-
- **Django Admin Integration**: Full admin interface with batch operations and validation
56-
- **Function Validation**: SQL injection prevention and syntax validation
57-
- **Comprehensive Logging**: Audit trail for all anonymization operations
58-
- **Smart Utilities**: Column introspection, foreign key detection, and validation helpers
111+
- 📚 **YAML Presets** - Industry-standard configurations (Healthcare, Finance, E-commerce)
112+
- 🤖 **AI Suggestions** - Smart function recommendations based on data types and column names
113+
- 🔧 **Bulk Operations** - Efficient mass rule application and management
114+
- **Constraint Awareness** - Intelligent handling of unique constraints and foreign keys
115+
- 🎨 **Custom Functions** - Support for domain-specific anonymization requirements
59116

60-
## Quick Start
117+
## Quick Start
61118

62119
### Prerequisites
63120

@@ -125,7 +182,7 @@ python manage.py anon_apply
125182
python manage.py anon_status
126183
```
127184

128-
## Usage Examples
185+
## 📖 Usage Examples
129186

130187
### Creating Anonymization Rules
131188

@@ -480,7 +537,17 @@ The package provides a rich Django admin interface with:
480537

481538
Navigate to `/admin/django_postgres_anon/` to access all features.
482539

483-
## Development
540+
## 📊 Project Stats
541+
542+
- **🏷️ Version**: 0.1.0-alpha.1
543+
- **🐍 Python**: 3.8+ (tested on 3.8, 3.9, 3.10, 3.11, 3.12)
544+
- **🎸 Django**: 3.2+ (tested on 3.2, 4.0, 4.1, 4.2, 5.0)
545+
- **🐘 PostgreSQL**: 12+ with anonymizer extension
546+
- **📈 Test Coverage**: 90%+
547+
- **🔧 Code Quality**: Black, isort, flake8, mypy, bandit
548+
- **🛡️ Security**: SQL injection prevention, parameterized queries, audit logging
549+
550+
## 🛠️ Development
484551

485552
### Setup Development Environment
486553

@@ -499,7 +566,7 @@ pip install -e .
499566
pip install -r requirements.txt
500567
```
501568

502-
### Running Tests
569+
### 🧪 Running Tests
503570

504571
```bash
505572
# Run all tests
@@ -521,7 +588,7 @@ make docker-example # Run example project on localhost:8000
521588
make docker-clean # Clean up Docker resources
522589
```
523590

524-
### Code Quality
591+
### 🔍 Code Quality
525592

526593
```bash
527594
# Install pre-commit hooks (one-time setup)
@@ -549,7 +616,7 @@ make security
549616
make check
550617
```
551618

552-
### Example Project
619+
### 🚀 Example Project
553620

554621
```bash
555622
# Set up example project
@@ -785,7 +852,7 @@ POSTGRES_ANON = {
785852

786853
Performance tuning options are not yet implemented. Future versions may include batch processing and transaction control options.
787854

788-
## Security Considerations
855+
## 🔒 Security Considerations
789856

790857
1. **Function Validation**: All anonymization functions are validated to prevent SQL injection
791858
2. **Role-Based Access**: Separate database roles ensure proper data isolation

0 commit comments

Comments
 (0)