|
| 1 | +from django.db import models |
| 2 | + |
| 3 | +from invites.managers import InviteManager |
| 4 | +from projects.models import Project |
| 5 | +from users.models import CustomUser |
| 6 | + |
| 7 | + |
| 8 | +class Invite(models.Model): |
| 9 | + """Invite model |
| 10 | +
|
| 11 | + This model is used to store the information about the invitation to the project. |
| 12 | +
|
| 13 | + Attributes: |
| 14 | + project: A ForeignKey referring to the Project model, who sent out the invite |
| 15 | + user: A ForeignKey referring to the user, who got the invite |
| 16 | + motivational_letter: A TextField where the project can tell the user why they need him |
| 17 | + is_accepted: A BooleanField indicating whether the receiver accepted the invite or declined it |
| 18 | + datetime_created: A DateTimeField indicating date of creation |
| 19 | + datetime_updated: A DateTimeField indicating date of update |
| 20 | + """ |
| 21 | + |
| 22 | + project = models.ForeignKey(Project, on_delete=models.CASCADE) |
| 23 | + user = models.ForeignKey(CustomUser, on_delete=models.CASCADE) |
| 24 | + |
| 25 | + motivational_letter = models.TextField( |
| 26 | + max_length=4096, blank=True, null=True, default=None |
| 27 | + ) |
| 28 | + role = models.CharField(max_length=128, blank=True, null=True) |
| 29 | + is_accepted = models.BooleanField(blank=False, null=True, default=None) |
| 30 | + |
| 31 | + datetime_created = models.DateTimeField( |
| 32 | + verbose_name="Дата создания", null=False, auto_now_add=True |
| 33 | + ) |
| 34 | + datetime_updated = models.DateTimeField( |
| 35 | + verbose_name="Дата обновления", null=False, auto_now=True |
| 36 | + ) |
| 37 | + |
| 38 | + objects = InviteManager() |
| 39 | + |
| 40 | + def __str__(self): |
| 41 | + return f'Invite from "{self.project.name}" to {self.user.get_full_name()}' |
| 42 | + |
| 43 | + class Meta: |
| 44 | + verbose_name = "Приглашение" |
| 45 | + verbose_name_plural = "Приглашения" |
| 46 | + ordering = ["-datetime_created"] |
0 commit comments