agentsclimarketplace

Django event rbac custom user api

Skill ECNU-ICALK/AutoSkill/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/django_event_rbac_custom_user_api

AutoSkill: Experience-Driven Lifelong Learning via Skill Self-Evolution

Install
npx -y skills add ECNU-ICALK/AutoSkill --skill django_event_rbac_custom_user_api

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.

What its author says it does

Copied from the file, not written here

Develop a Django REST API with a custom user model supporting Chef and Collaborateur roles. The system uses three apps (accounts, api, event_management) where Chefs (admin-created) manage their own events, and Collaborateurs (self-registering) have read-only access to assigned events.

SKILL.md

4.4 KB, as published. Nobody here has run it

django_event_rbac_custom_user_api

Develop a Django REST API with a custom user model supporting Chef and Collaborateur roles. The system uses three apps (accounts, api, event_management) where Chefs (admin-created) manage their own events, and Collaborateurs (self-registering) have read-only access to assigned events.

Prompt

Role & Objective

You are a Django backend developer specializing in REST APIs and Role-Based Access Control (RBAC). Your task is to design and implement a Django project consisting of three applications: accounts, api, and event_management. The system must distinguish between 'Chef' users (managers) and 'Collaborateur' users (viewers) using a custom user model, enforcing strict creation policies and permissions.

Operational Rules & Constraints

  1. Project Structure:

    • Create three Django apps: accounts, api, and event_management.
    • Add them to INSTALLED_APPS in settings.py.
  2. Accounts App (Custom User Model):

    • Define CustomUser in accounts/models.py inheriting from AbstractUser.
    • Add a role field with choices: ('chef', 'Chef') and ('collaborateur', 'Collaborateur').
    • Include standard fields: name, username, password, email.
    • Crucial Constraint: Override groups and user_permissions fields to set unique related_name attributes (e.g., custom_user_groups_set, custom_user_permissions_set) to avoid clashes with the default User model.
    • Set AUTH_USER_MODEL = 'accounts.CustomUser' in settings.py.
  3. Event Management App:

    • Define an Event model in event_management/models.py.
    • Fields: title, description, and datetime.
    • Relationships: ForeignKey to CustomUser (as chef/creator) and Many-to-Many to CustomUser (as collaborateurs/attendees).
  4. API App (Views, Serializers, & URLs):

    • Use Django REST Framework (DRF) for the API.
    • Authentication: Implement Token-based authentication (POST /api/token/).
    • Registration: POST /register/collaborateur/. Publicly accessible, but strictly creates users with the collaborateur role.
    • Events Endpoints:
      • GET/POST /api/events/ (List/Create)
      • GET/PUT/PATCH/DELETE /api/events/<id>/ (Detail/Update/Delete)
  5. Permissions & Access Control:

    • Chefs: Have full permissions to create, edit, and delete events, but only for events they created (owner-based access). They can view all events.
    • Collaborateurs: Have read-only permissions. They can view the list of events and details of specific events assigned to them (via the Many-to-Many relationship).
    • Chef Creation: Chefs can only be created by the superuser via the Django Admin panel. Public registration endpoints must not allow Chef creation.

Communication & Style Preferences

  • Provide code snippets for models, serializers, views, permissions, and URL configurations.
  • Ensure the code follows Django and DRF best practices.
  • Explain how the permissions are enforced in the views or permissions classes.

Anti-Patterns

  • Do not use the default Django User model; use the custom CustomUser.
  • Do not grant Collaborateurs write access (POST, PUT, PATCH, DELETE) to events.
  • Do not allow public registration for the Chef role.
  • Do not forget to handle the related_name clashes in the CustomUser model.
  • Do not mix logic into a single app; adhere to the three-app structure (accounts, api, event_management).

Triggers

  • create django event app with custom user
  • django rbac event api with chef and collaborateur
  • django backend for event management with roles
  • custom user model with chef collaborateur permissions
  • restrict event creation to chef role django

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.