Skip to content

added nft badges#295

Closed
Inshamhaque wants to merge 1 commit into
alphaonelabs:mainfrom
Inshamhaque:feat/nft-badges
Closed

added nft badges#295
Inshamhaque wants to merge 1 commit into
alphaonelabs:mainfrom
Inshamhaque:feat/nft-badges

Conversation

@Inshamhaque
Copy link
Copy Markdown
Contributor

@Inshamhaque Inshamhaque commented Mar 25, 2025

This PR introduces the Feature of minting and sending NFT from teacher to student -

  1. Using Polygon testnet with POL as the token.
  2. Using Blockfrost API for uploading metatdata to IPFS
  3. Polygon AMOY testnet network.
  4. Development of minting smart contract ERC721 using remix IDE
  5. Achievement Model now supoorts both type of badges - default and nft based
  6. While development, The scope of expanding to ethereum mainnet has been considered.
  7. Comprehensive Documented code for easy debugging
    closes add the ability to send NFT badges to students #186

Summary by CodeRabbit

  • New Features
    • Introduced NFT badge functionality for achievements. Teachers can now mint and send NFT badges via a dedicated flow that displays blockchain transaction details and provides social sharing options.
    • Enhanced achievement views with detailed information and integrated wallet address submission for NFT minting.
    • Improved user profiles with customizable avatars for a more personalized experience.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 25, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This pull request makes several changes across dependency management, database migrations, models, templates, URL routing, and view functions. In the dependencies file, three new packages are conditionally added. A new migration script consolidates multiple model additions and field modifications, while several obsolete migration files are removed. A new model for NFT badges is introduced, and new templates, URL routes, and view functions are added to handle achievement details and the NFT badge minting process with appropriate permission checks and error handling.

Changes

File(s) Change Summary
requirements.txt Added dependencies: web3==6.5.0, eth-account==0.8.0, eth-utils==2.1.0 (for Python ≥3.10 and <4.0).
web/migrations/..._avatar_badge_nftbadge_...py New migration introducing multiple new models and fields (e.g., Avatar, Badge, NFTBadge, NoteHistory, NotificationPreference, PeerChallenge, Points, StudyGroupInvite, UserBadge, WaitingRoom) and adding relationships and constraints.
web/migrations/0034_profile_is_profile_public.py, 0035_badge_userbadge.py, 0036_peerchallenge_peerchallengeinvitation.py, 0037_profile_how_did_you_hear_about_us.py, 0038_coursematerial_due_date_and_more.py, 0039_notehistory.py, 0040_challengesubmission_points_awarded_and_more.py, 0041_challenge_challenge_type_alter_challenge_week_number_and_more.py, 0042_profile_avatar_accessories_and_more.py, 0043_alter_studygroup_members_studygroupinvite.py, 0044_waitingroom_fulfilled_course.py Deleted obsolete migration files that previously modified or added fields and models; these removals streamline the schema changes now consolidated in the new migration.
web/models.py Added new model NFTBadge with blockchain-related fields and a one-to-one relationship with the Achievement model.
web/templates/achievement/{achievement_detail.html, send_nft_badge.html} Created new templates: one for displaying detailed achievement and NFT badge information, and another for minting/sending NFT badges via wallet address input.
web/urls.py Added new URL patterns for viewing achievement details (achievements/<int:achievement_id>/) and for sending an NFT badge (achievements/<int:achievement_id>/send-nft-badge/).
web/views.py Added two new view functions: achievement_detail to display achievement information and send_nft_badge to handle the NFT badge minting process with permission and validation checks.

Sequence Diagram(s)

sequenceDiagram
    participant Teacher as Teacher User
    participant Browser as Web Browser
    participant View as Django View
    participant NFTSvc as NFT Service

    Teacher->>Browser: Request achievement detail page
    Browser->>View: GET /achievements/<id>/
    View-->>Browser: Render achievement_detail template

    Teacher->>Browser: Fills form with wallet address & submits
    Browser->>View: POST /achievements/<id>/send-nft-badge/
    View->>View: Verify teacher permission and NFT minting status
    alt Wallet address missing or invalid
        View-->>Browser: Redirect with error message
    else Valid wallet address and permission granted
        View->>NFTSvc: send_nft_badge(achievement, wallet_address)
        NFTSvc-->>View: Return success/failure result
        View-->>Browser: Redirect with confirmation message
    end
Loading

📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 65dd7fc and 7a100e1.

📒 Files selected for processing (18)
  • requirements.txt (1 hunks)
  • web/migrations/0034_avatar_badge_nftbadge_notehistory_and_more.py (1 hunks)
  • web/migrations/0034_profile_is_profile_public.py (0 hunks)
  • web/migrations/0035_badge_userbadge.py (0 hunks)
  • web/migrations/0036_peerchallenge_peerchallengeinvitation.py (0 hunks)
  • web/migrations/0037_profile_how_did_you_hear_about_us.py (0 hunks)
  • web/migrations/0038_coursematerial_due_date_and_more.py (0 hunks)
  • web/migrations/0039_notehistory.py (0 hunks)
  • web/migrations/0040_challengesubmission_points_awarded_and_more.py (0 hunks)
  • web/migrations/0041_challenge_challenge_type_alter_challenge_week_number_and_more.py (0 hunks)
  • web/migrations/0042_profile_avatar_accessories_and_more.py (0 hunks)
  • web/migrations/0043_alter_studygroup_members_studygroupinvite.py (0 hunks)
  • web/migrations/0044_waitingroom_fulfilled_course.py (0 hunks)
  • web/models.py (1 hunks)
  • web/templates/achievement/achievement_detail.html (1 hunks)
  • web/templates/achievement/send_nft_badge.html (1 hunks)
  • web/urls.py (1 hunks)
  • web/views.py (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai plan to trigger planning for file edits and PR creation.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions
Copy link
Copy Markdown
Contributor

🚨 Missing Issue Link

This pull request appears to not reference any GitHub issue.

As per our workflow requirements, all PRs should address an existing issue. This ensures:

  • Changes are properly tracked
  • Work is discussed before implementation
  • Code reviews are more focused

How to Fix This

Please link this PR to an existing issue using one of these methods:

  1. Reference the issue in your PR description: "Fixes darkmode/about #123" or "Addresses darkmode/about #123"
  2. Use GitHub's interface to link the PR to an issue in the Development section
    • Look for the section that says "Development" on the right side of your PR
    • Click "Link an issue" or "Link issues"
    • Select the relevant issue(s)
  3. If no issue exists yet, please create one first

This PR will be automatically closed. Feel free to reopen it once you've linked it to an issue or added appropriate labels.

Thank you for your contribution!

@github-actions github-actions Bot closed this Mar 25, 2025
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 the ability to send NFT badges to students

1 participant