from django.db import models from misago.conf import settings class ThreadParticipantManager(models.Manager): def set_owner(self, thread, user): ThreadParticipant.objects.filter(thread=thread, is_owner=True).update(is_owner=False) self.remove_participant(thread, user) ThreadParticipant.objects.create(thread=thread, user=user, is_owner=True) def add_participants(self, thread, users): bulk = [] for user in users: bulk.append(ThreadParticipant(thread=thread, user=user, is_owner=False)) ThreadParticipant.objects.bulk_create(bulk) def remove_participant(self, thread, user): ThreadParticipant.objects.filter(thread=thread, user=user).delete() class ThreadParticipant(models.Model): thread = models.ForeignKey( 'misago_threads.Thread', on_delete=models.CASCADE, ) user = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE, ) is_owner = models.BooleanField(default=False) objects = ThreadParticipantManager()