Exemple #1
0
def membership_add_subscription(user, membership_type, active=False):
    valid_from = timezone.now()
    valid_to = valid_from + timedelta(days=membership_type.day_to_live)

    membership = Membership(user=user, membership_type=membership_type,
                            valid_to=valid_to, valid_from=valid_from,
                            updated_at=valid_from, active=active)
    membership.save()
Exemple #2
0
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()
        })
Exemple #3
0
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
        })
Exemple #4
0
def subscribe(request, groupname):
    login = login_verify(request, None, True)
    if login:
        return login
    group = Group.objects.get(name=groupname)
    if request.method == 'POST':
        uid = request.POST.get('uid', '')
        expiration_date = request.POST.get('expiration_date', '')
        user = User.objects.get(uid=uid)
        membership = Membership(user=user, expiration_date=expiration_date)
        membership.save()
        group.members.add(membership)
        group.save()
        return HttpResponseRedirect('/view_group/' + groupname + '/')
    else:
        form = SubscribeForm()
        all_users = User.objects.all()
        user_list = []
        for user in all_users:
            if user not in group.members.all():
                user_list += [user]
        context = {'form': form, 'groupname': group.name, 'group': group, 'user_list': user_list}
        return render(request, 'app/subscribe.html', context)
Exemple #5
0
            permission_created = True
            break

if not permission_created:
    p = Permission(value="ICanHaz.access", description="Access to the permission system")
    p.save()
    group.permissions.add(p)
    group.save()

names = []
uids = []

for line in codecs.open('admins_to_add.txt', 'r', 'utf-8'):
    names.append(" ".join(line.split()[:-1]))
    uids.append(line.split()[-1])

for g, i, j, index in [[v,v,v,v] for v in range(0,len(names))]:
    try:
        i = User(name=names[index], uid=uids[index])
        i.save()
        year = str(datetime.now().year)
        j = Membership(expiration_date=year+'-12-31', user=i)
        j.save()
        g = Group.objects.get(name='ICanHaz')
        g.members.add(j)
        g.save()
        print(i.name + " " + i.uid)
    except Exception as e:
        print("Failed on user number " + str(index) + " " + e.message, file=sys.stderr)