def createGroup(request, username): assert isinstance(request, HttpRequest) # If the method is a POST request, check if it is a valid Create Group form if request.method == 'POST': form = CreateGroupForm(request.POST) if form.is_valid(): name = form.cleaned_data['name'] # If the group already exists, do nothing if Group.objects.filter(name=name).exists(): return render( request, 'app/createGroup.html', { 'title': username, 'form': CreateGroupForm(), 'error': 'Group already exists' }) # If the group does not exists, make a new group else: user = User.objects.get_by_natural_key(username) gDrive = GoogleDrive() # Create a folder in the drive and get its id folderId = gDrive.createGroup(name) # Create a group in the db, setting the owner to be the user who created the group, # and the gdriveid to be the id of the newly created folder group = Group() group.name = name group.owner = user group.gdriveid = folderId # Create a random 16 byte key that will be used for encryption/decryption group.key = get_random_bytes(16) group.save() # Create a membership relationship between the new group and the user who created it membership = Membership() membership.group = group membership.user = user membership.save() # Redirect back to the user page return redirect('/userpage/' + username) else: # If there was no POST request, just render the userpage as normal return render(request, 'app/createGroup.html', { 'title': username, 'form': CreateGroupForm() })
def manageUsers(request, groupId): assert isinstance(request, HttpRequest) group = Group.objects.get(id=groupId) # If the method is a POST request, check if it is a valid Add User form if request.method == 'POST': form = AddUserForm(request.POST) if form.is_valid(): name = form.cleaned_data['name'] # If the user doesn't exist, render an informative message if not User.objects.filter(username=name).exists(): return render( request, 'app/manageUsers.html', { 'title': 'ManageUsers', 'form': AddUserForm(), 'error': 'User doesn\'t exist', 'group': group }) user = User.objects.get_by_natural_key(name) # If the user is already a member of the group, render an informative message if Membership.objects.filter(user=user, group=group).exists(): return render( request, 'app/manageUsers.html', { 'title': 'ManageUsers', 'form': AddUserForm(), 'error': 'User is already a member', 'group': group }) else: # Otherwise, create a membership realtionship between the user and the group membership = Membership() membership.group = group membership.user = user membership.save() return render(request, 'app/manageUsers.html', { 'title': 'ManageUsers', 'form': AddUserForm(), 'group': group }) else: # If the request is not a POST request, renser the page as normal return render(request, 'app/manageUsers.html', { 'title': 'ManageUsers', 'form': AddUserForm(), 'group': group })