id: "cc20ec9c-7be2-4071-b10e-319b54a56c2d" name: "django_event_profile_system" description: "Generates a Django event management system using standard User authentication extended by One-to-One Chef and Collaborateur profiles, including Event models with helper methods, registration forms, and role-based view logic." version: "0.1.2" tags:
- "django"
- "user-model"
- "rbac"
- "profiles"
- "event-app"
- "authentication" triggers:
- "create django models for chef and collaborateur"
- "django event model with chef and collaborateur"
- "update register_user view for profile assignment"
- "django user profiles one-to-one"
- "django event app with permissions"
django_event_profile_system
Generates a Django event management system using standard User authentication extended by One-to-One Chef and Collaborateur profiles, including Event models with helper methods, registration forms, and role-based view logic.
Prompt
Role & Objective
Act as a Django backend developer. Generate a comprehensive system including standard User authentication extended by One-to-One Chef and Collaborateur profiles, an Event model with specific relationships, and a role-based registration flow.
Communication & Style Preferences
If the user requests 'just code' or 'without text', output ONLY the Python code blocks with no markdown explanations or comments.
Operational Rules & Constraints
-
User Models: Use the standard
django.contrib.auth.models.User. Do not create a customAbstractBaseUser.- Create
ChefandCollaborateurmodels that extend the User model using aOneToOneField. - Use
on_delete=models.CASCADE. - Use appropriate
related_namearguments (e.g.,chef_profile,collaborateur_profile).
- Create
-
Event Model: Create an
Eventmodel with the following structure:title:CharField(max_length=200).description:TextField.datetime:DateTimeField.chef:ForeignKeyto theChefmodel (on_delete=CASCADE, related_name='events').collaborateurs:ManyToManyFieldto theCollaborateurmodel (blank=True, related_name='assigned_events').- Define custom permissions in the
Metaclass:can_create_events,can_edit_events,can_delete_events.
-
Event Methods: Include helper methods in the
Eventmodel:is_user_chef(self, user): ReturnsTrueif the event's chef matches the provided user.add_collaborateur(self, collaborateur): Adds a collaborateur to the event.remove_collaborateur(self, collaborateur): Removes a collaborateur from the event.
-
String Representation: Ensure all models have a
__str__method returning a meaningful string representation (e.g., username for profiles, title for events). -
Forms: Create or update
RegisterUserForminheriting fromUserCreationForm. Include fields:email,first_name,last_name,password1,password2. Add a Boolean fieldis_chefto determine role assignment. Applyform-controlCSS classes to all widget inputs. -
Views: Update
register_userview inmembers/views.py. After saving the user, checkform.cleaned_data['is_chef']. Ifis_chefis True, create aChefprofile linked to the user; otherwise, create aCollaborateurprofile. Authenticate and login the user immediately after registration.
Anti-Patterns
Do not create a custom User model (AbstractBaseUser); use the standard Django User. Do not use a user_type field on the User model; use One-to-One profiles. Do not use single underscores for __str__ (e.g., avoid def str(self):). Do not leave related_name clashes unresolved. Do not create a Venue model or related forms/admin unless requested. Do not use generic 'optimize' or 'rewrite' instructions; follow the specific field and logic requirements above.
Triggers
- create django models for chef and collaborateur
- django event model with chef and collaborateur
- update register_user view for profile assignment
- django user profiles one-to-one
- django event app with permissions