Przeglądaj źródła

Generación del campo código

Tino 3 miesięcy temu
rodzic
commit
afc9d6059f
2 zmienionych plików z 13 dodań i 1 usunięć
  1. 7 0
      src/accounts/admin.py
  2. 6 1
      src/accounts/models.py

+ 7 - 0
src/accounts/admin.py

@@ -9,6 +9,13 @@ class InvitationCodeAdmin(admin.ModelAdmin):
     list_filter = ['is_used', 'created_at']
     search_fields = ['code']
     readonly_fields = ['code', 'created_at']
+    actions = ['create_invitations']
+
+    def create_invitations(self, request, queryset):
+        for _ in range(5):
+            InvitationCode.create_invitation(created_by=request.user)
+        self.message_user(request, 'Se crearon 5 códigos de invitación.')
+    create_invitations.short_description = 'Crear 5 códigos de invitación'
 
     def get_queryset(self, request):
         qs = super().get_queryset(request)

+ 6 - 1
src/accounts/models.py

@@ -4,7 +4,7 @@ import secrets
 
 
 class InvitationCode(models.Model):
-    code = models.CharField(max_length=32, unique=True, editable=False)
+    code = models.CharField(max_length=32, unique=True, default='')
     created_at = models.DateTimeField(auto_now_add=True)
     expires_at = models.DateTimeField()
     is_used = models.BooleanField(default=False)
@@ -26,6 +26,11 @@ class InvitationCode(models.Model):
         verbose_name = "Código de Invitación"
         verbose_name_plural = "Códigos de Invitación"
 
+    def save(self, *args, **kwargs):
+        if not self.code:
+            self.code = self.generate_code()
+        super().save(*args, **kwargs)
+
     def __str__(self):
         return f"{self.code} (expira: {self.expires_at:%d/%m/%Y %H:%M})"