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 %} + + + {% else %} + + + {% endif %}