Skip to content

Feat: add campaign creation automation - #583

Open
ItsAbhinavM wants to merge 8 commits into
hatnote:masterfrom
ItsAbhinavM:582-campaign-creation-automation
Open

ItsAbhinavM wants to merge 8 commits into
hatnote:masterfrom
ItsAbhinavM:582-campaign-creation-automation

Conversation

@ItsAbhinavM

@ItsAbhinavM ItsAbhinavM commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Description

Fixes #582 and Fixes #13

This PR adds support for "Campaign Creation Request" on Montage. Creates new pages like /requests, /requests/new and requests/MNTG-6772.

Changes made:

Frontend

  • CampaignRequestform: A forms like page where the user adds the detail of campaign and submits it.
  • Campaignrequestdetail: Displays campaign details after submission
  • Campaignrequests: Page which displays all campaign requests details
  • adminService.js: Updated endpoints of campaign requests.

Backend

A new DAO CampaignRequestDAO has been made along with its helper functions on admin_endpoints.py. Each request will receive an ID like MNTG-xxxx ( MNTG - Monitoring ) so that it can be tracked. New endpoints also has been made supporting the feature.

/admin/campaign_requests
/admin/campaign_requests/validate_user
/admin/campaign_requests/<request_id>
/admin/campaign_requests/submit
/admin/campaign_requests/<request_id>/approve
/admin/campaign_requests/<request_id>/advise
/admin/campaign_requests/<request_id>/resubmit

UI Changes

image image image image image

status: In progress, UI is and some UX additions are yet to be added Completed

@ItsAbhinavM

Copy link
Copy Markdown
Collaborator Author

@lgelauff The PR is complete now, could you please review this and suggest changes if required

@ItsAbhinavM

Copy link
Copy Markdown
Collaborator Author

Please don't mind the changes in RoundEdit page as it came to satisfy the linting issues which appeared on the PR pipeline.

@ItsAbhinavM

Copy link
Copy Markdown
Collaborator Author

@lgelauff if you require the screen recording of this feature, please do tell. Since this is a relatively big PR screen recording of larger duration will not be supported in Github comment ( 10MB max ). I might have to upload the recording to my cloud which might take time.

@lgelauff

Copy link
Copy Markdown
Collaborator

@lgelauff if you require the screen recording of this feature, please do tell. Since this is a relatively big PR screen recording of larger duration will not be supported in Github comment ( 10MB max ). I might have to upload the recording to my cloud which might take time.

A recording would be super helpful. A few shorter ones would also help. Feel free to push the PR to montage-beta!

@lgelauff lgelauff left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if I fully understand the design. I should have asked earlier, but it would be helpful if you can explain in the issue your big picture design. Especially try to make explicit the assumptions you're making, who's filling what out, and what happens before/after the request.

It seems some of your functions resemble some functionality elsewhere in the code, and make me wonder if we can reuse some.

My coding assistant was suggesting some more functional problems, but maybe it's more helpful to deal with this first.

Comment thread frontend/src/router/index.js
Comment thread montage/rdb.py
Comment thread montage/rdb.py
Comment thread frontend/src/views/CampaignRequests.vue Outdated
Comment thread frontend/src/views/CampaignRequests.vue
Comment thread montage/rdb.py Outdated
Comment thread frontend/src/views/CampaignRequestForm.vue
Comment thread montage/admin_endpoints.py
Comment thread montage/admin_endpoints.py
@ItsAbhinavM

Copy link
Copy Markdown
Collaborator Author

@lgelauff I've made the changes as per your review, here is the video snippet of the feature.

2026-06-28.10-39-16.1.mp4

@ItsAbhinavM
ItsAbhinavM requested a review from lgelauff June 30, 2026 14:51
@lgelauff

Copy link
Copy Markdown
Collaborator

Have you tested this on the dev server? Claude suggests that this should break request_id: CampaignRequest.request_id is declared String(16), but create() writes a 25-character placeholder before replacing it.

Please verify.

Suggested fix by claude:

request_id = "PEND-%s" % uuid.uuid4().hex[:11]   # exactly 16

Also important: the migration file seems to be missing. The new campaign_requests table still needs to be added to tools/migrate_prod_db.sql, with the matching statement in tools/revert_prod_db.sql.

Claude also found this minor comment:
Leftover console.log(error) in frontend/src/views/CampaignRequestForm.vue:321.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Montage support for campaign creation requests Request to become coordinator

2 participants