Example #1
0
def add_member(request):
    kwargs = simplejson.loads(request.raw_post_data)
    gr_name = kwargs['group_name']
    user_name = kwargs['user_name']
    is_adm = kwargs['is_admin']
    
    gr = request.user.wappy_groups.get(name=gr_name)
    if not request.user.memberships.get(group=gr).is_admin:
        return json_http_response({'error': 'Only an admin can add members!',
                                   'result': None})
    try:
        usr = User.objects.get(username=user_name)
    except User.DoesNotExist:
        response_dict = {'error': 'User does not exist!',
                         'result': None}
        return json_http_response(response_dict)
    try:
        gr = request.user.wappy_groups.get(name=gr_name)
        if Membership.objects.filter(user=usr, group=gr).count() > 0:
            response_dict = {'error': 'User is already a member!',
                             'result': None}
            return json_http_response(response_dict)
        mship = Membership(user=usr, group=gr, is_admin=is_adm)
        mship.save()
        timestamp = get_timestamp(mship.join_date.timetuple())
        member = {'name': user_name,
                  'email': usr.email,
                  'is_admin': mship.is_admin,
                  'is_owner': mship.is_owner,
                  'join_date': timestamp}
        response_dict = {'error': None,
                         'result': member}
    except:
        response_dict = unkown_error_dict()
    return json_http_response(response_dict)
Example #2
0
    def test_membership(self):
        membership = Membership()

        user = User.objects.create_user("Testy McTest", "*****@*****.**", "testpassword")
        user.save()

        group = Group()
        group.name = "Test Group"
        group.save()

        membership.user = User.objects.get(id=user.id)
        membership.group = Group.objects.get(id=group.id)
        membership.is_admin = False

        membership.save()

        test_membership = Membership.objects.get(id=membership.id)

        self.assertEquals(test_membership, membership)
        self.assertEquals(test_membership.user, User.objects.get(id=user.id))
        self.assertEquals(test_membership.group, Group.objects.get(id=group.id))
        self.assertEquals(test_membership.is_admin, False)

        membership.delete()
        group.delete()
        user.delete()
Example #3
0
def confirm_email_invite(request, key):
    '''
    Confirms an email invite to a specific user.  This may or may not redirect
    to a form for creating the new user (with first name, last name, and
    password).
    '''
    key = key.lower()
    user = EmailInvite.objects.confirm_email(key)
    if user is not None:
        # Handle the user case.
        if not user.is_active:
            '''
            This may not be the best idea, but if the user is not active, then
            activate them anyway, since this is just another link they'll have
            to follow if they haven't already.
            '''
            user.is_active = True

        # Check to see if they're already in the group, as this might not be the
        # first time they've visited this link.
        invite = EmailInvite.objects.get(confirmation_key=key)
        group = invite.group
        if not group.members.all().filter(email=user.email):
            # change invite to show that user accepted
            #invite.acceptance = 'A'
            #invite.save()
            invite.delete()
            #
            membership = Membership(user=user, group=group)
            membership.save()
            group.membership_set.add(membership)  # user is now a member!

        params = {
            'group': group,
            'user': user,
        }
        return render(request, 'invite_complete.html', params)
    else:
        # Handle the non-existing user case.
        recipient_email = EmailInvite.objects.get_email(key)
        if recipient_email is not None:
            # The email is not none, so now we need to create a user.
            # Redirect them to the form page for finishing their account.
            #
            # If they choose that they are an existing user, simply verify
            # their credentials and then add them to the group, redirecting
            # them to the inbox.
            return redirect('/invite_registration/{0}'.format(key))
        else:
            return render(request, 'email_invite_error.html')
Example #4
0
def invite_registration(request, key):
    '''
    Registers the user based on an their invitation.
    '''

    # If the email for this key doesn't exist, or there is a user already with
    # the email, then whoever is here is here for the wrong reason.  We'll (for
    # now) just give them a 404.
    email = EmailInvite.objects.get_email(key)
    if email is None:
        raise Http404
    try:
        user = User.objects.get(email=email)
    except User.DoesNotExist:
        user = None
    if user is not None:
        raise Http404

    # If we're here, we have a user's email, which will be used for creating the
    # user.
    if request.method == 'POST':
        form = InviteRegistrationForm(request.POST)
        if form.is_valid():
            '''
            If the form is all good and such, then send the user off to the page
            that'll say something like 'yay, you're registered with Bulletin!'
            '''
            user = form.save(email)
            invite = EmailInvite.objects.get(confirmation_key=key)
            # change invite to show that user accepted
            #invite.acceptance = 'A'
            #invite.save()
            invite.delete()
            #
            group = invite.group
            membership = Membership(user=user, group=group)
            membership.save()
            group.membership_set.add(membership)
            group.save()
            params = {
                'group': group,
                'user': user,
            }
            return render(request, 'invite_complete.html', params)
    else:
        form = InviteRegistrationForm()
    ctx = {'form': form, 
           'action': '/invite_registration/{0}/'.format(key)}
    return render(request, 'register.html', ctx)
Example #5
0
    def test_post(self):
        post = Post()
        
        user = User.objects.create_user('Testy McTest', '*****@*****.**', 'testpassword')
        user.save()
        
        group = Group()
        group.name = "Test Group"
        group.save()
        
        membership = Membership()
        membership.user = User.objects.get(id = user.id)
        membership.group = Group.objects.get(id = group.id)
        membership.save()
        
        post.author = Membership.objects.get(id = membership.id)
        post.message = "Testing321"

        post.save()
    
        test_post = Post.objects.get(id = post.id)
        
        self.assertEquals(test_post, post)
        self.assertEquals(test_post.author, Membership.objects.get(id = membership.id))
        self.assertEquals(test_post.message, "Testing321")
   
        post.delete()
        membership.delete()
        group.delete()
        user.delete()
Example #6
0
def create_group(request):
    kwargs = simplejson.loads(request.raw_post_data)
    gr_name = kwargs['name']
    is_pub = kwargs['is_public']
    reqs_allowed = kwargs['requests_allowed']
    
    existing_group = Group.objects.filter(name=gr_name)
    if existing_group.count() == 0:
        try:
            gr = Group(name=gr_name, is_public=is_pub,
                       requests_allowed=reqs_allowed)
            gr.save()
            mship = Membership(user=request.user, group=gr,
                               is_owner=True, is_admin=True)
            mship.save()
            response_dict = {'error': None,
                             'result': 'Group created!'}
        except:
            response_dict = unkown_error_dict()
    else:
        response_dict = {'error': 'Group name already exists!',
                         'result': None}
    return json_http_response(response_dict)
Example #7
0
File: views.py Project: ZmjbS/tsar
def save_group(request):
	if not request.is_ajax():
		return False
	else:
		# print(request.POST)
		data = json.loads(request.POST['data'])
		#print(data['members'])
		#members = ast.literal_eval(data['members'][1])
		#print(type(members))
		#print(members['member_id'])
		# Check whether the group exists:
		try:
			group = get_object_or_404(Group, id=data['group_id'])
			print(group)
		except:
			return HttpResponse('no such group')

		# Iterate over the membership array
		for datum in data['members']:
			import ast
			members = ast.literal_eval(datum)
			member_id = members['member_id']
			group_status = members['status']
			print('>> Member {}: {}'.format(member_id,group_status))
			if group_status != None or group_status != 'member':
				# Check whether the member exists:
				try:
					print('Finding member {}'.format(member_id))
					member = get_object_or_404(Member, id=member_id)
					print('member {} found'.format(member))
				except:
					print('member not found')
					return HttpResponse('no such member')

				# If we need to add the member...
				if group_status == 'add-member':
					print('>>> Add member!')
					try:
						membership = get_object_or_404(Membership, member=member, group=group)
						return HttpResponse('member already exists')
					except:
						print('>> Create membership object!')
						membership = Membership(member=member, group=group)
					try:
						print('>> Clean and save membership object!')
						membership.clean()
						membership.save()
					except:
						return HttpResponse('unable to save membership')

				# If we need to remove the member...
				elif group_status == 'remove-member':
					print('>>> Remove member!')
					try:
						membership = get_object_or_404(Membership, member=member, group=group)
					except:
						print('>> No membership to remove. We\'re done!')
					try:
						membership.delete()
					except:
						return HttpResponse('unable to delete membership')
				elif group_status == 'member':
					print('already a member...')
				else:
					print('unknown group_status:')
					print(group_status)
		# All is done. Return a successful response to the template. :-)
		return HttpResponse(json.dumps({ 'type': 'success' }))
Example #8
0
def save_group(request):
	if not request.is_ajax():
		return False
	else:
		# print request.POST
		data = json.loads(request.POST['data'])
		#print data['members']
		#members = ast.literal_eval(data['members'][1])
		#print type(members)
		#print members['member_id']
		# Check whether the group exists:
		try:
			group = get_object_or_404(Group, id=data['group_id'])
			print group
		except:
			return HttpResponse('no such group')

		# Iterate over the membership array
		for datum in data['members']:
			import ast
			members = ast.literal_eval(datum)
			member_id = members['member_id']
			group_status = members['status']
			print '>> Member {}: {}'.format(member_id,group_status)
			if group_status != None or group_status != 'member':
				# Check whether the member exists:
				try:
					print 'Finding member {}'.format(member_id)
					member = get_object_or_404(Member, id=member_id)
					print 'member {} found'.format(member)
				except:
					print 'member not found'
					return HttpResponse('no such member')

				# If we need to add the member...
				if group_status == 'add-member':
					print '>>> Add member!'
					try:
						membership = get_object_or_404(Membership, member=member, group=group)
						return HttpResponse('member already exists')
					except:
						print '>> Create membership object!'
						membership = Membership(member=member, group=group)
					try:
						print '>> Clean and save membership object!'
						membership.clean()
						membership.save()
					except:
						return HttpResponse('unable to save membership')

				# If we need to remove the member...
				elif group_status == 'remove-member':
					print '>>> Remove member!'
					try:
						membership = get_object_or_404(Membership, member=member, group=group)
					except:
						print '>> No membership to remove. We\'re done!'
					try:
						membership.delete()
					except:
						return HttpResponse('unable to delete membership')
				elif group_status == 'member':
					print 'already a member...'
				else:
					print 'unknown group_status:'
					print group_status
		# All is done. Return a successful response to the template. :-)
		return HttpResponse(json.dumps({ 'type': 'success' }))
 def perform_create(self, serializer):
     membership = Membership(**serializer.validated_data)
     group_id = self.kwargs['pk']
     membership.group = Group.objects.get(pk=group_id)
     membership.save()
     return MembershipSerializer(membership)