The BMR Platform is a membership management system built with Django. It handles the full lifecycle of a membership application — from initial registration through to an active member status.
Key capabilities:
BMR Platform သည် Django ဖြင့် တည်ဆောက်ထားသော membership management system တစ်ခုဖြစ်သည်။ Membership application ၏ registration မှ active member အဖြစ် ရောက်ရှိသည်အထိ lifecycle တစ်ခုလုံးကို ကိုင်တွယ်သည်။
အဓိက လုပ်ဆောင်ချက်များ:
/management/ — accessible only to non-member roles.
Management Portal URL: /management/ — member မဟုတ်သော role များသာ ဝင်ရောက်နိုင်သည်။
Five system roles ship with the platform. They cannot be deleted but can have their permissions adjusted.
Platform တွင် system role ၅ ခု ပါဝင်သည်။ ဤ role များကို ဖျက်၍မရသော်လည်း permission များကို ပြင်ဆင်နိုင်သည်။
| Role | Typical Use | အသုံးပြုမှု | Portal Access | Portal ဝင်ရောက်မှု |
|---|---|---|---|---|
admin |
Full system access, configure everything | System အပြည့်အဝ ထိန်းချုပ်မှု | Management + Admin Panel | |
management |
Review applications, manage members | Application စစ်ဆေးခြင်း၊ member စီမံခြင်း | Management Portal | |
finance |
Review and approve payments | Payment စစ်ဆေးခြင်းနှင့် အတည်ပြုခြင်း | Management Portal | |
staff |
View-only access to members and payments | Member/Payment ကြည့်ရှုခွင့်သာ | Management Portal | |
member |
Apply for membership, track own application | Membership လျှောက်ထားခြင်း | Member Dashboard only |
Go to Administration → Permissions → Roles tab. Click New role, enter a label — a code (capital letters, numbers and underscores) is suggested for you.
Administration → Permissions → Roles tab သို့ သွားပါ။ New role ကို နှိပ်ပြီး code (capital letters၊ numbers၊ underscore) နှင့် display label ထည့်ပါ။
Navigate to Members → Applications. Applications in Pending Review status require attention.
member.review_application — ensure your role has this in the Permission Matrix.
Members → Applications သို့ သွားပါ။ Pending Review status ရှိသော application များကို စစ်ဆေးရန် လိုသည်။
member.review_application — Permission Matrix တွင် သင်၏ role မှာ ဤ permission ရှိမရှိ စစ်ဆေးပါ။
Navigate to Membership → Payments. Applications showing Pending Payment Approval have submitted a payment receipt.
payment.approve — typically assigned to finance and admin roles.
Membership → Payments သို့ သွားပါ။ Pending Payment Approval ပြနေသော application များသည် payment receipt တင်ထားပြီးဖြစ်သည်။
payment.approve — ပုံမှန်အားဖြင့် finance နှင့် admin role တွင် ရှိသည်။
Navigate to Administration → Workflow setup. This page has four tabs:
Lists all statuses for the selected scope. Each status has an internal label (staff see this) and an external label (member sees this). You can add new statuses, change colors, and toggle visibility to members.
Defines which status moves are legal and who can trigger them:
Attach email/in-app notification rules to a transition. Multiple rules per transition are supported.
Template variables available in subject/body: {applicant_name}, {reference_number}, {status_label}, {note}
Configures which staff roles are responsible for each review step. Used for dashboard routing and task queues. Changes take effect within 5 minutes.
Administration → Workflow setup သို့ သွားပါ။ ဤ page တွင် tab လေးခု ရှိသည်:
ရွေးချယ်ထားသော scope ၏ status များအားလုံးကို ပြသည်။ Status တစ်ခုစီတွင် internal label (staff မြင်သည်) နှင့် external label (member မြင်သည်) ရှိသည်။ Status အသစ်ထည့်ခြင်း၊ color ပြောင်းခြင်း၊ member မြင်ရမရ toggle လုပ်ခြင်း ပြုနိုင်သည်။
ဘယ် status ပြောင်းလဲမှု legal ဖြစ်သည်နှင့် ဘယ်သူ trigger လုပ်နိုင်သည်ကို သတ်မှတ်သည်:
Transition တစ်ခုတွင် email/in-app notification rule များ ချိတ်ဆက်နိုင်သည်။ Transition တစ်ခုတွင် rule များစွာ ထည့်နိုင်သည်။
Subject/body တွင် သုံးနိုင်သော variable များ: {applicant_name}, {reference_number}, {status_label}, {note}
Review step တစ်ခုစီကို ဘယ် staff role တွေ တာဝန်ယူသည်ကို သတ်မှတ်သည်။ Dashboard routing နှင့် task queue များအတွက် အသုံးပြုသည်။ ပြောင်းလဲမှု ၅ မိနစ်အတွင်း အကျိုးသက်ရောက်သည်။
Navigate to Administration → Permissions. The matrix shows every permission grouped by category, with an on/off switch per role.
The Roles tab lets you create, rename, reorder, and delete custom roles. System roles cannot be deleted.
Administration → Permissions သို့ သွားပါ။ Matrix တွင် permission အားလုံးကို category အလိုက် ပြုစုပြီး role တစ်ခုစီအတွက် on/off switch ရှိသည်။
Roles tab တွင် custom role များ ဖန်တီးခြင်း၊ အမည်ပြောင်းခြင်း၊ အစဉ်ပြောင်းခြင်းနှင့် ဖျက်ခြင်း ပြုနိုင်သည်။ System role များကို ဖျက်၍မရ။
| Status | Status | What it means | အဓိပ္ပာယ် | Action needed? | လုပ်ဆောင်ရမည်? |
|---|---|---|---|---|---|
| Draft | Your application is saved but not yet submitted. | Application သိမ်းဆည်းထားသော်လည်း မတင်ပြသေး။ | Complete and submit the form. | Form ပြည့်စုံစေပြီး Submit လုပ်ပါ။ | |
| Pending Review | Staff are reviewing your application. | Staff မှ application စစ်ဆေးနေသည်။ | Wait for staff response. | Staff ၏ ပြန်ကြားချက် စောင့်ပါ။ | |
| Revise Application | Staff need corrections. Check the note from staff. | Staff မှ ပြင်ဆင်ရန် လိုအပ်သည်ဟု ဆုံးဖြတ်သည်။ Staff ၏ note ကြည့်ပါ။ | Make corrections and resubmit. | ပြင်ဆင်ပြီး ပြန်တင်ပါ။ | |
| Pending Payment | Application approved. Please submit your payment. | Application အတည်ပြုပြီ။ ငွေပေးချေမှု တင်သွင်းပါ။ | Submit payment. | Payment တင်ပါ။ | |
| Pending Payment Approval | Payment receipt received. Finance team is reviewing. | Payment receipt လက်ခံပြီ။ Finance team စစ်ဆေးနေသည်။ | Wait for approval. | အတည်ပြုချက် စောင့်ပါ။ | |
| Active | You are a registered member. | သင်သည် registered member ဖြစ်ပြီ။ | No action needed. | လုပ်ဆောင်ရန် မလိုအပ်ပါ။ | |
| Rejected | Application was declined. Contact the office for details. | Application ငြင်းဆိုခံရသည်။ အသေးစိတ်အတွက် ရုံးနှင့် ဆက်သွယ်ပါ။ | Contact office. | ရုံးနှင့် ဆက်သွယ်ပါ။ |
Every gated action. Convention: resource.action (e.g. member.approve, payment.view_reports). Seeded via seed_permissions management command.
Dynamic roles stored in DB. RolePermission is the M2M join. User.has_role_permission(codename) checks this table with a per-request frozenset cache.
Universal status store. Scoped by scope field (membership, payment, …). Each status has dual labels: internal_label (staff) and external_label (member).
State machine engine. WorkflowTransition defines valid A→B moves. TransitionNotification attaches email/in-app rules to each transition.
status = ForeignKey(Status, limit_choices_to={'scope':'membership'}). Every status change must go through a valid WorkflowTransition. The save() method auto-sets draft status if none provided.
Base URL: /api/v1/ — all endpoints require Authorization: Bearer <access_token>
| POST | /auth/login/ | Email/password login. Returns access, refresh, user object with permissions list. |
| POST | /auth/token/refresh/ | Refresh access token. |
| POST | /auth/logout/ | Blacklist refresh token. |
| GET | /statuses/?scope=membership | List statuses for a scope. |
| POST | /statuses/ | Create a status. |
| PATCH | /statuses/<id>/ | Update a status. |
| DELETE | /statuses/<id>/ | Delete non-system status. |
| GET | /transitions/?scope=membership | List transitions. |
| POST | /transitions/ | Create a transition. |
| GET | /notifications/?transition=<id> | List notification rules. |
| POST | /notifications/ | Create a notification rule. |
| GET | /permissions/matrix/ | Full permission matrix (all roles × permissions). |
| POST | /permissions/toggle/ | Toggle single permission for a role. |
| POST | /permissions/batch-toggle/ | Grant/revoke all permissions in a category for a role. |
| GET | /roles/ | List all roles. |
| POST | /roles/ | Create a custom role. |
| PATCH | /roles/<name>/ | Update role label/order. |
| DELETE | /roles/<name>/ | Delete non-system role (if no users assigned). |
python manage.py migrate && python manage.py seed_permissions — this sets up all tables, system roles, and default permissions.
Your role (Staff) doesn't include the permission this page needs. If you should have it, ask an Admin to grant it on the Permissions page.
Back to dashboard