Documents StatusView eventify_id addition and the security fix that stops internal Python exceptions from reaching API callers.
4.3 KiB
4.3 KiB
Changelog
All notable changes to the Eventify Backend are documented here. Format follows Keep a Changelog, versioning follows Semantic Versioning.
[1.6.2] — 2026-04-03
Security
- Internal exceptions no longer exposed to API callers — all 15
except Exception as eblocks acrossmobile_api/views/user.pyandmobile_api/views/events.pynow log the real error viaeventify_loggerand return a generic"An unexpected server error occurred."to the caller- Affected views:
RegisterView,WebRegisterView,LoginView,StatusView,LogoutView,UpdateProfileView,EventTypeAPI,EventListAPI,EventDetailAPI,EventImagesListAPI,EventsByDateAPI,DateSheetAPI,PincodeEventsAPI,FeaturedEventsAPI,TopEventsAPI StatusViewandUpdateProfileViewwere also missinglog(...)calls entirely — addedfrom eventify_logger.services import logimport added toevents.py(was absent)
- Affected views:
[1.6.1] — 2026-04-03
Added
eventify_idinStatusViewresponse (/api/user/status/) — consumer app uses this to refresh the Eventify ID badge (EVT-XXXXXXXX) for sessions that pre-date theeventify_idlogin fieldaccountsmigration0012_user_eventify_iddeployed to production containers — backfilled all existing users with unique Eventify IDs; previously the migration existed locally but had not been applied in production
[1.6.0] — 2026-04-02
Added
- Unique Eventify ID system (
EVT-XXXXXXXXformat)- New
eventify_idfield onUsermodel —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 usingsecrets.choice() - Migration
0012_user_eventify_id: add nullable → backfill all existing users → make non-null
- New
eventify_idexposed inaccounts/api.py→_partner_user_to_dict()fields listeventify_idexposed inpartner/api.py→_user_to_dict()fields listeventify_idexposed inmobile_api/views/user.py→LoginViewresponse (populateslocalStorage.event_user.eventify_id)eventifyIdexposed inadmin_api/views.py→_serialize_user()(camelCase for direct TypeScript compatibility)- Server-side search in
UserListViewnow also filters oneventify_id__icontains - Synced migration
0011_user_allowed_modules_alter_user_id(pulled from server, was missing from local repo)
Changed
accounts/models.py: mergedallowed_modulesfield +get_allowed_modules()+ALL_MODULESconstant from server (previously only existed on server)
[1.5.0] — 2026-03-31
Added
allowed_modulesTextField onUsermodel — comma-separated module slug access controlget_allowed_modules()method onUser— returns list of accessible modules based on role or explicit listALL_MODULESclass 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
idfield changed fromAutoFieldtoBigAutoField(migration0010_alter_user_id)
[1.2.0] — 2026-03-10
Added
partnerForeignKey onUsermodel linking users to partners (migration0009_user_partner)- Profile picture upload support (
ImageField) withdefault.pngfallback (migration0006–0007)
[1.1.0] — 2026-02-28
Added
- Location fields on
User:pincode,district,state,country,place,latitude,longitude - Custom
UserManagerfor programmatic user creation
[1.0.0] — 2026-03-01
Added
- Initial Django project with custom
Usermodel extendingAbstractUser - 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