diff --git a/Main/models/group.py b/Main/models/group.py
index 8d87989..e9c68db 100644
--- a/Main/models/group.py
+++ b/Main/models/group.py
@@ -13,6 +13,7 @@ class Group(models.Model):
creator = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
users = models.ManyToManyField(User, related_name="user_groups")
editors = ArrayField(models.TextField(), default=list)
+ access_token = models.CharField(max_length=30, null=True)
@property
def available_sets(self):
diff --git a/Main/views/GroupView.py b/Main/views/GroupView.py
index d0e8324..854846d 100644
--- a/Main/views/GroupView.py
+++ b/Main/views/GroupView.py
@@ -1,6 +1,7 @@
from django.contrib.auth.models import User
from SprintLib.BaseView import BaseView, AccessError
+from SprintLib.utils import generate_token
class GroupView(BaseView):
@@ -45,3 +46,16 @@ class GroupView(BaseView):
for t in to_delete:
self.entities.group.users.remove(t)
return "/group?group_id=" + str(self.entities.group.id)
+
+ def link_action(self, value):
+ if not self.owner:
+ raise AccessError()
+ self.entities.group.access_token = value
+ self.entities.group.save()
+ return "/group?group_id=" + str(self.entities.group.id)
+
+ def post_open_link(self):
+ return self.link_action(generate_token())
+
+ def post_close_link(self):
+ return self.link_action(None)
diff --git a/Main/views/MainView.py b/Main/views/MainView.py
index 865fb98..8e97936 100644
--- a/Main/views/MainView.py
+++ b/Main/views/MainView.py
@@ -1,5 +1,6 @@
from random import sample
+from django.core.exceptions import ObjectDoesNotExist
from django.db.models import Count, Max, Q
from django.utils import timezone
@@ -62,3 +63,12 @@ class MainView(BaseView):
raise AccessError()
group = Group.objects.create(name=self.request.POST['name'], creator=self.request.user)
return '/group?group_id=' + str(group.id)
+
+ def post_token(self):
+ token = self.request.POST['token']
+ try:
+ group = Group.objects.get(access_token=token)
+ group.users.add(self.request.user)
+ return '/group?group_id=' + str(group.id)
+ except ObjectDoesNotExist:
+ return "/"
diff --git a/templates/group.html b/templates/group.html
index b59fb88..a6dbda9 100644
--- a/templates/group.html
+++ b/templates/group.html
@@ -54,7 +54,20 @@
{{ u.username }}
{% endfor %}
{% if group.creator == user or user.username in group.editors %}
-
+
+ {% if group.access_token %}
+
+