Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

Micro Users - Arabic Django User Management App

PyPI version

Micro Users Login Logo

Arabic lightweight, reusable Django app providing user management with abstract user, permissions, localization, and activity logging.

Requirements

  • Must be installed on a fresh database.
  • Python 3.11+
  • Django 5.1+
  • django-crispy-forms 2.4+
  • django-tables2 2.7+
  • django-filter 24.3+
  • pillow 11.0+
  • babel 2.1+

Features

  • Custom AbstractUser model
  • Scope Management System (Optional)
  • Custom Grouped User permissions system
  • Automatic Activity logging (login/logout, CRUD for all models)
  • Specific User detail and log view
  • Localization support
  • Admin interface integration
  • CRUD views and templates
  • Filtering and tabulation

Future updates are planned to support dynamic language switching between RTL and LTR.

Installation

pip install git+https://github.com/debeski/micro-users.git
# OR
pip install micro-users

Configuration

  1. Add to INSTALLED_APPS:
INSTALLED_APPS = [
    'users',  # Preferably on top
    'django.contrib.admin',
    'django.contrib.auth',
    ...
]
  1. Add Middleware in settings.py (Required for logging):
MIDDLEWARE = [
    # ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    # ...
    'users.middleware.ActivityLogMiddleware',  # Add this line
]
  1. Add Context Processor in settings.py (Optional, for scope_enabled variable in templates):
TEMPLATES = [
    {
        # ...
        'OPTIONS': {
            'context_processors': [
                # ...
                'users.context_processors.scope_settings', # Add this line
            ],
        },
    },
]
  1. Set custom user model in settings.py:
AUTH_USER_MODEL = 'users.CustomUser'
  1. Include URLs in your main project folder urls.py:
urlpatterns = [
    ...
    path('manage/', include('users.urls')),
]
  1. Run migrations:
python manage.py migrate users

How to Use

Once configured, the app automatically handles user management and activity logging. Ensure your project has a base.html template in the root templates directory, as all user management templates extend it.

Activity Logging

The app provides a fully automated activity logging system. No manual configuration is required in your views.

  • Login/Logout: Automatically tracked.
  • Create/Update/Delete: Any change to any model in your app (including Scope and User) is automatically logged via Django Signals.
  • Log content: Tracks the user, action type, model name, object ID, and timestamp.
    • Note: last_login field updates are automatically filtered out to prevent redundant "Update" logs on login.

To view logs, navigate to manage/logs/ or use the Django Admin interface ("حركات السجل").

Available URLs

All user management URLs are prefixed with manage/ as configured above. Below is the complete list:

URL Pattern View/Function Description
manage/login/ auth_views.LoginView.as_view() User login
manage/logout/ auth_views.LogoutView.as_view() User logout
manage/users/ views.UserListView.as_view() List all users
manage/users/create/ views.create_user Create new user
manage/users/edit/<int:pk>/ views.edit_user Edit existing user
manage/users/delete/<int:pk>/ views.delete_user Delete user
manage/users/<int:pk>/ views.UserDetailView.as_view() View user details
manage/profile views.user_profile View current user profile
manage/profile/edit/ views.edit_profile Edit current profile
manage/logs/ views.UserActivityLogView.as_view() View activity logs
manage/reset_password/<int:pk>/ views.reset_password Reset user password
manage/scopes/manage/ views.manage_scopes Scope Manager (Modal)

Structure

users/
├── views.py        # CRUD operations
├── urls.py         # URL routing
├── tables.py       # User and Activity Log tables
├── signals.py      # Logging signals
├── middleware.py   # Request capture for signals
├── models.py       # User model, permissions, activity logs
├── forms.py        # Creation, edit,. etc.
├── filter.py       # Search filters
├── apps.py         # Permissions Localization
├── admin.py        # Admin UI integration
├── __init__.py     # Python init
├── templates/      # HTML templates (includes partials)
├── static/         # CSS classes
└── migrations/     # Database migrations

Customization

To replace the default login logo, simply place your own login_logo.webp image in your project's static directory at static/img/login_logo.webp.

Version History

Version Changes
v1.0.0 • Initial release as pip package
v1.0.1 • Fixed a couple of new issues as a pip package
v1.0.2 • Fixed the readme and building files
v1.0.3 • Still getting the hang of this pip publish thing
v1.0.4 • Honestly still messing with and trying settings and stuff out
v1.1.0 • OK, finally a working seamless micro-users app
v1.1.1 • Fixed an expolit where a staff member could disable the ADMIN user
v1.2.0 • Added User Details view with specific user activity log
v1.2.1 • Fixed a minor import bug
v1.2.2 • Separated user detail view from table for consistency
• Optimized the new detail + log view for optimal compatibiliyy with users
v1.2.3 • Fixed a couple of visual inconsistencies
v1.3.0 • Patched a critical security permission issue
• Disabled ADMIN from being viewed/edited from all other members
• Fixed a crash when sorting with full_name
• Enabled Logging for all actions
v1.3.1 • Corrected a misplaced code that caused a crash when editing profile
v1.3.2 • Minor table modifications
v1.4.0 • Redesigned Permissions UI (Grouped by App/Action)
• Added Global Bulk Permission Selectors
• Improved Arabic Localization for Permissions
• Optimized printing (hidden forms/buttons)
• Fixed various bugs and crashes
v1.4.1 • Changed "Administrative User" translation to "Responsible User" (مستخدم مسؤول)
• Enforced custom sorting order for Permissions (View -> Add -> Change -> Other)
v1.5.0 • Department Management (Modal-based CRUD)
• Department field implementation
• Template refactoring (partials/, profile/, users/ for logs)
• Verbose names for models
v1.6.0 • Automated Activity Logging: dynamic logging for all CREATE/UPDATE/DELETE actions via Middleware & Signals
• Refactor: Renamed Department model to Scope (Scope Management)
• Removed manual logging requirement
• Architecture: Decoupled models, forms, and tables using dynamic imports and apps.get_model
• Soft Delete: Users are now marked as inactive with a timestamp instead of being permanently deleted
• Activity Log: Deleted users appear with a strikethrough
• CSS Refactor: Extracted and cleaned up styling with CSS variables
• Login: Refactored login page with separated JS/CSS and a new modern default logo
v1.6.1 • Theme Configuration: Added MICRO_USERS_THEME setting for easy color customization
• Bug Fixes: Explicitly excluded unwanted columns (id, ip_address, user_agent) from Activity Log table
• UI: Improved Scope Manager button visibility
v1.6.2 • UI: Improved some tooltips for buttons and descriptions
v1.6.3 • Bug Fixes: Fixed a crash with table tooltips "disabled"
v1.7.0 • New Theme: Complete visual overhaul with modern, consistent styling
• Refactor: Updated Login, Profile, and Detail templates for better UX
• Feature: Added Scope filter to Activity Logs (superuser only)
• UX: Clear button in filters now preserves current sort order
v1.7.1 • Bug Fixes: Fixed login/next url was not being passed correctly
v1.8.0 • Permissions UI: Complete redesign with App/Model-based grouping and hierarchical checkboxes
• Aesthetics: Applied modern glassmorphism theme to permission cards with interactive toggles
• Security: Implemented 3-level security logic (GM, SM, User) and "invisible" Superuser protection
• Foolproofing: Added self-editing protection for staff and scope enforcement for managers
• Localization: Fully translated system auth labels and metadata to Arabic
v1.8.1 • UI Refinement: Swapped Email and Phone positions across all forms, tables, and detail views
• Field Logic: Set Email and Phone as optional (not required) for all users
• Security: Added manage_staff custom permission to restrict is_staff management to authorized managers only
• Bug Fix: Reserved manage_staff assignment power strictly for Superusers and fixed UI grouping for custom permissions
v1.8.2 • Login UX: Enhanced login flow with auto-focus on username and improved "Enter to Submit" handling
v1.8.3 • CSP Compliance: Added nonce attribute support to all inline and external script tags (Login, Permissions, Manage Users) for Content Security Policy compliance
v1.8.4 • Strict CSP: Refactored inline JS event handlers to use Event Listeners, fully resolving CSP violation errors
v1.8.5 • Optional Scopes: Added ability for Superusers to toggle Scope system ON/OFF via User Management interface
v1.8.6 • Strict CSP Repair: Fixed remaining inline event handlers in User Management pages (manage_users, scope_form) that were violating CSP directives, moving all logic to external manage_users.js
v1.8.7 • Fixed a couple of template tab title mismatches
v1.8.8 • Fixed a couple of template content title mismatches and classes
v1.8.9 • Fixed migrations
v1.9.0 • UI Overhaul: Unified all buttons, and clssses to conform to themes, rounded corners, and improved spacing

Metadata

Release files for micro-users 1.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for micro-users 1.9.0
File Size Uploaded Provenance
micro_users-1.9.0.tar.gz 70.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for micro-users 1.9.0
File Interpreter ABI Platform
micro_users-1.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 150.8 kB

Release files / micro_users-1.9.0.tar.gz

Download URL micro_users-1.9.0.tar.gz
Size 70.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5091bfcfe0c4556c22b13b8babdeef6414c4ede0aedf223eb53da8b3d63eb4aa
BLAKE2b-256 checksum
How to use checksums
36f0d082084dae64bd414bc1fc7cade936948020da8cb016c38a5c1749c0f6d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.3

Release files / micro_users-1.9.0-py3-none-any.whl

Download URL micro_users-1.9.0-py3-none-any.whl
Size 80.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
40adaebc1e67aecf2bfef0615a1aa76c904511391bdf4105199b600a7391c2ba
BLAKE2b-256 checksum
How to use checksums
c09d7777e11d5d1af02b0c5cbf71823554be2bc10a06587cfd31774120f75f56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.3

Security for micro-users 1.9.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page