예제 #1
0
파일: views.py 프로젝트: schmico/teamedup
    def post(self, request):
        organization = request.user.organization

        userpic = request.FILES.get('userpic')
        notify = json.loads(request.POST.get('notify'))
        is_owner = json.loads(request.POST.get('is_owner'))
        user_data = json.loads(request.POST.get('user'))

        user_id = user_data.get('id')
        if user_id is not None:
            user = User.objects.get(pk=user_id)
            if user not in [m.user for m in organization.members]:
                return json_response({'error': 'wrong_user', 'error_text': 'This user doesn\'t belong to your organization'}, status=400)
        else:
            email = user_data.get('email')
            try:
                _u = User.objects.get(email=email)
                return json_response({'error': 'email_taken', 'error_text': 'This email was already taken'}, status=400)
            except User.DoesNotExist:
                pass
            user = User()
            user.email = email

        if userpic is not None:
            user.userpic = userpic
        user.name = user_data.get('name', '')
        user.public_email = user_data.get('public_email', '')
        user.public_phone = user_data.get('public_phone', '')
        user.city = user_data.get('city', '')
        user.country = user_data.get('country', '')
        user.bio = user_data.get('bio', '')
        user.save()

        try:
            membership = OrganizationMember.objects.get(user=user, organization=organization)
        except OrganizationMember.DoesNotExist:
            membership = OrganizationMember(user=user, organization=organization)
        membership.is_owner = is_owner
        membership.save()

        if notify:
            token = Token()
            token.user = user
            token.save()
            link = request.build_absolute_uri(reverse('reset-password-step1', args=[token.token]))
            send_mail('Set password', settings.ORG_MEMBER_CREATED_EMAIL % (organization.name, link,),
              '*****@*****.**', [token.user.email, ])

        return json_response(membership.to_dict())