From 23d93af24d3a35ed7d9c2a866715e8786c6ac181 Mon Sep 17 00:00:00 2001
From: Jean-Baptiste Pasquier <contact@jbpasquier.eu>
Date: Tue, 29 Oct 2019 18:20:23 +0100
Subject: [PATCH] fix: virtual container, auto owner as member and unique
 constraint

---
 djangoldp_circle/models.py | 8 +++++++-
 djangoldp_circle/views.py  | 4 +++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/djangoldp_circle/models.py b/djangoldp_circle/models.py
index 777b28a..fa4351f 100644
--- a/djangoldp_circle/models.py
+++ b/djangoldp_circle/models.py
@@ -2,7 +2,7 @@ import random
 import string
 from django.conf import settings
 from django.db import models
-from django.db.models.signals import pre_save
+from django.db.models.signals import pre_save, post_save
 from django.dispatch import receiver
 from djangoldp.models import Model
 
@@ -51,6 +51,7 @@ class CircleMember(Model):
         owner_perms = ["view", "add", "delete"]
         auto_author = "user"
         owner_field = "user"
+        unique_together = ['user', 'circle']
 
 
 @receiver(pre_save, sender=Circle)
@@ -66,3 +67,8 @@ def set_jabberid(sender, instance, **kwargs):
             settings.JABBER_DEFAULT_HOST
         )
         instance.jabberRoom = True
+
+@receiver(post_save, sender=Circle)
+def set_ower_as_member(instance, created, **kwargs):
+    if(created):
+        CircleMember.objects.create(user=instance.owner, circle=instance)
diff --git a/djangoldp_circle/views.py b/djangoldp_circle/views.py
index 8a77f83..1df5a46 100644
--- a/djangoldp_circle/views.py
+++ b/djangoldp_circle/views.py
@@ -7,4 +7,6 @@ class CirclesJoinableViewset(LDPViewSet):
 
     def get_queryset(self):
         return super().get_queryset() \
-                      .exclude(team__id=self.request.user.id)
+                      .exclude(team__id=self.request.user.id) \
+                      .exclude(status="Private") \
+                      .exclude(status="Archived")
-- 
GitLab