From 99f376506d5cedf235b85077161d306328115282 Mon Sep 17 00:00:00 2001 From: Sicherhaven Date: Thu, 2 Apr 2026 11:03:18 +0530 Subject: [PATCH] docs: add CHANGELOG.md and update README version to 1.6.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CHANGELOG.md: full history from 1.0.0 → 1.6.0 (Keep a Changelog format) - README.md: bump version badge 1.5.0 → 1.6.0, add changelog summary table --- CHANGELOG.md | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 16 ++++++++++- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..299a9d5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,77 @@ +# Changelog + +All notable changes to the Eventify Backend are documented here. +Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), versioning follows [Semantic Versioning](https://semver.org/). + +--- + +## [1.6.0] — 2026-04-02 + +### Added +- **Unique Eventify ID system** (`EVT-XXXXXXXX` format) + - New `eventify_id` field on `User` model — `CharField(max_length=12, unique=True, editable=False, db_index=True)` + - Charset `ABCDEFGHJKLMNPQRSTUVWXYZ23456789` (no ambiguous characters I/O/0/1) giving ~1.78T combinations + - Auto-generated on first `save()` via a 10-attempt retry loop using `secrets.choice()` + - Migration `0012_user_eventify_id`: add nullable → backfill all existing users → make non-null +- `eventify_id` exposed in `accounts/api.py` → `_partner_user_to_dict()` fields list +- `eventify_id` exposed in `partner/api.py` → `_user_to_dict()` fields list +- `eventify_id` exposed in `mobile_api/views/user.py` → `LoginView` response (populates `localStorage.event_user.eventify_id`) +- `eventifyId` exposed in `admin_api/views.py` → `_serialize_user()` (camelCase for direct TypeScript compatibility) +- Server-side search in `UserListView` now also filters on `eventify_id__icontains` +- Synced migration `0011_user_allowed_modules_alter_user_id` (pulled from server, was missing from local repo) + +### Changed +- `accounts/models.py`: merged `allowed_modules` field + `get_allowed_modules()` + `ALL_MODULES` constant from server (previously only existed on server) + +--- + +## [1.5.0] — 2026-03-31 + +### Added +- `allowed_modules` TextField on `User` model — comma-separated module slug access control +- `get_allowed_modules()` method on `User` — returns list of accessible modules based on role or explicit list +- `ALL_MODULES` class constant listing all platform module slugs +- Migration `0011_user_allowed_modules_alter_user_id` + +--- + +## [1.4.0] — 2026-03-24 + +### Added +- Partner portal login/logout APIs (`accounts/api.py`) — `PartnerLoginAPI`, `PartnerLogoutAPI`, `PartnerMeAPI` +- `_partner_user_to_dict()` serializer for partner-scoped user data +- Partner CRUD, KYC review, and user management endpoints in `partner/api.py` + +--- + +## [1.3.0] — 2026-03-14 + +### Changed +- User `id` field changed from `AutoField` to `BigAutoField` (migration `0010_alter_user_id`) + +--- + +## [1.2.0] — 2026-03-10 + +### Added +- `partner` ForeignKey on `User` model linking users to partners (migration `0009_user_partner`) +- Profile picture upload support (`ImageField`) with `default.png` fallback (migration `0006–0007`) + +--- + +## [1.1.0] — 2026-02-28 + +### Added +- Location fields on `User`: `pincode`, `district`, `state`, `country`, `place`, `latitude`, `longitude` +- Custom `UserManager` for programmatic user creation + +--- + +## [1.0.0] — 2026-03-01 + +### Added +- Initial Django project with custom `User` model extending `AbstractUser` +- Role choices: `admin`, `manager`, `staff`, `customer`, `partner`, `partner_manager`, `partner_staff`, `partner_customer` +- JWT authentication via `djangorestframework-simplejwt` +- Admin API foundation: auth, dashboard metrics, partners, users, events +- Docker + Gunicorn + PostgreSQL 16 production setup diff --git a/README.md b/README.md index 27bf27a..ad834c8 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ A D M I N B A C K E N D ``` -![Version](https://img.shields.io/badge/version-1.5.0-blue?style=for-the-badge) +![Version](https://img.shields.io/badge/version-1.6.0-blue?style=for-the-badge) ![Django](https://img.shields.io/badge/Django-4.2-092E20?style=for-the-badge&logo=django&logoColor=white) ![DRF](https://img.shields.io/badge/DRF-3.15-red?style=for-the-badge) ![Python](https://img.shields.io/badge/Python-3.11-3776AB?style=for-the-badge&logo=python&logoColor=white) @@ -145,6 +145,20 @@ eventify-django/ --- +## ✦ Changelog + +> Full history in [CHANGELOG.md](./CHANGELOG.md) + +| Version | Date | Summary | +|---------|------|---------| +| **1.6.0** | 2026-04-02 | Unique Eventify ID (`EVT-XXXXXXXX`) on User model, exposed across all APIs | +| **1.5.0** | 2026-03-31 | `allowed_modules` field + `get_allowed_modules()` for RBAC | +| **1.4.0** | 2026-03-24 | Partner portal login/logout/me APIs | +| **1.3.0** | 2026-03-14 | User `id` → `BigAutoField` | +| **1.0.0** | 2026-03-01 | Initial release — Django + JWT + Admin API | + +--- + ## ✦ Build Phases | Phase | Module | Endpoints | Status |