예제 #1
0
    def create(self, request, *args, **kwargs):
        email = request.DATA.get('email')
        username = request.DATA.get('username')
        first_name = request.DATA.get('first_name')
        last_name = request.DATA.get('last_name')

        if username is None and email is None:
            raise exceptions.APIException('You must provide a username or email')

        try:
            if username is not None:
                user = User.objects.get(username=username)
            elif email is not None:
                user = User.objects.get(email=email)
        except User.DoesNotExist:
            if email is None:
                raise Http404
            else:
                # we have a new user here
                user_service = EnsureCustomerService(email=email, full_name='%s %s' % (first_name, last_name))
                is_new, user, profile = user_service.process()

        if user not in self.thread.participants.all():
            # add to the join if not there already
            self.thread.participants.add(user)

            # send the added participant email
            self.thread.send_added_user_email(actor=self.request.user, user=user)

        # we have the user at this point
        serializer = self.get_serializer(user)

        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=http_status.HTTP_201_CREATED, headers=headers)
예제 #2
0
파일: review.py 프로젝트: rosscdh/toolkit
    def create(self, request, **kwargs):
        """
        we already have the matter item and revision we just need to
        1. ensure the user exists
        2. is the user already a reviewer for this revision
        3. if not make them one
        """
        username = request.DATA.get('username')
        first_name = request.DATA.get('first_name')
        last_name = request.DATA.get('last_name')
        email = request.DATA.get('email')
        note = request.DATA.get('note')

        if username is None and email is None:
            raise exceptions.APIException('You must provide a username or email')

        try:
            if username is not None:
                user = User.objects.get(username=username)

            elif email is not None:
                user = User.objects.get(email=email)

        except User.DoesNotExist:

            if email is None:
                raise Http404

            else:
                # we have a new user here
                user_service = EnsureCustomerService(email=email, full_name='%s %s' % (first_name, last_name))
                is_new, user, profile = user_service.process()

        if user not in self.get_queryset():
            # add to the join if not there already
            # add the user to the purpose of this endpoint object review||signature
            self.revision.reviewers.add(user)

            #
            # Send invite to review Email
            #
            self.item.send_invite_to_review_emails(from_user=request.user, to=[user], note=note)

            #
            # add activity
            #
            self.matter.actions.invite_user_as_reviewer(item=self.item,
                                                        inviting_user=request.user,
                                                        invited_user=user)

        review_document = self.revision.reviewdocument_set.filter(reviewers__in=[user]).first()

        # we have the user at this point
        serializer = self.get_serializer(review_document)

        headers = self.get_success_headers(serializer.data)

        return Response(serializer.data, status=http_status.HTTP_201_CREATED, headers=headers)
예제 #3
0
    def responsible_party(self, obj):
        email = self.request.DATA.get('email')
        first_name = self.request.DATA.get('first_name')
        last_name = self.request.DATA.get('last_name')

        service = EnsureCustomerService(email=email, full_name='%s %s' % (first_name, last_name))
        is_new, user, profile = service.process()

        return user
예제 #4
0
파일: forms.py 프로젝트: rosscdh/toolkit
    def save(self):
        customer_service = EnsureCustomerService(
            email=self.cleaned_data.get("client_email_address"), full_name=self.cleaned_data.get("client_full_name")
        )
        customer_service.process()
        user = customer_service.user
        is_new = customer_service.is_new

        return user, is_new
예제 #5
0
    def create(self, request, **kwargs):
        data = request.DATA.copy()

        self.validate_data(data=data, expected_keys=['email', 'first_name', 'last_name', 'message', 'role'])

        email = data.get('email')
        role = data.get('role', 'client')  # @TODO need to review
        first_name = data.get('first_name')
        last_name = data.get('last_name')
        message = data.get('message')
        permissions = data.get('permissions', {})

        try:
            new_participant = User.objects.get(email=email)

        except User.DoesNotExist:
            #
            # @BUSINESSRULE if an email does not exist then create them as
            # customer
            #
            # @TODO handle the lawyer userclass
            service = EnsureCustomerService(email=email, full_name='%s %s' % (first_name, last_name))
            is_new, new_participant, profile = service.process()

        if new_participant in self.matter.participants.all():
            # if they are already a participant they must update not create
            status = http_status.HTTP_304_NOT_MODIFIED

        else:
            status = http_status.HTTP_202_ACCEPTED
            self.matter.add_participant(user=new_participant, role=self.transform_role(role=role), **permissions)

            PARTICIPANT_ADDED.send(sender=self,
                                   matter=self.matter,
                                   participant=new_participant,
                                   user=request.user,
                                   note=message)

        return Response(LiteUserSerializer(new_participant, context={'request': self.request,
                                                                     'matter': self.matter}).data,
                        status=status)
예제 #6
0
파일: forms.py 프로젝트: rosscdh/toolkit
    def save(self):
        if self.instance is not None:
            # use the currently associated user
            user = self.instance.user
            is_new = False

        else:
            # Ensure we have a customer with this info
            customer_service = EnsureCustomerService(email=self.cleaned_data.get('signatory_email'),
                                                     full_name=self.cleaned_data.get('signatory_full_name'))
            customer_service.process()
            user = customer_service.user
            is_new = customer_service.is_new

        engageletter, is_new = user.engagementletter_set.get_or_create(workspace=self.workspace, user=user)
        engageletter.data.update(**self.cleaned_data)  # update the data
        engageletter.workspace = self.workspace
        engageletter.save()

        self.issue_signals(instance=engageletter)

        return engageletter
예제 #7
0
파일: forms.py 프로젝트: rosscdh/toolkit
    def save(self):
        if self.instance is not None:
            # use the currently associated user
            user = self.instance.user
            is_new = False

        else:
            # Ensure we have a customer with this info
            customer_service = EnsureCustomerService(email=self.cleaned_data.get('client_email'),
                                                     full_name=self.cleaned_data.get('client_full_name'))
            customer_service.process()
            user = customer_service.user
            is_new = customer_service.is_new

        eightythreeb, is_new = user.eightythreeb_set.get_or_create(workspace=self.workspace, user=user)
        eightythreeb.data.update(**self.cleaned_data)  # update the data
        eightythreeb.workspace = self.workspace
        eightythreeb.save()

        self.issue_signals(instance=eightythreeb)

        return eightythreeb
예제 #8
0
파일: sign.py 프로젝트: rosscdh/toolkit
    def create(self, request, **kwargs):
        """
        we already have the matter item and revision we just need to
        1. ensure the user exists
        2. is the user already a signer for this revision
        3. if not make them one
        """
        status = http_status.HTTP_400_BAD_REQUEST
        headers = None
        message = request.DATA.get('message')
        signers = request.DATA.get('signers')

        if not signers:
            data = {'detail': 'You need to provide at least 1 signer: You provided: %s' % signers}

        else:

            self.revision.signers.clear() # remove existing signers

            for signer in signers:

                first_name = signer.get('first_name')
                last_name = signer.get('last_name')
                email = signer.get('email')

                if email is None:
                    raise exceptions.APIException('You must provide a list of signers and they must have an email attribute {"signers": [{"email": "*****@*****.**"},]}')

                try:
                    user = User.objects.get(email=email)

                except User.DoesNotExist:

                    # we have a new user here
                    user_service = EnsureCustomerService(email=email, full_name='%s %s' % (first_name, last_name))
                    is_new, user, profile = user_service.process()

                if user not in self.get_queryset():
                    # add to the join if not there already
                    # add the user to the purpose of this endpoint object review||signature
                    self.revision.signers.add(user)

                    #
                    # Send invite to review Email
                    #
                    # self.item.send_invite_to_sign_emails(from_user=request.user, to=[user], message=message)
                    # @NB Dont invite them to sign yet, as we ahve to setup the document for signing first

                    #
                    # add activity
                    #
                    self.matter.actions.invite_user_as_signer(item=self.item,
                                                              inviting_user=request.user,
                                                              invited_user=user)

            sign_document = self.revision.primary_signdocument
            sign_document.requested_by = request.user
            sign_document.save(update_fields=['requested_by'])
            sign_document.signers.clear() # remove existing signers from sign object
            sign_document.signers = self.revision.signers.all()

            if not sign_document:
                raise Exception('Could not get Revision.primary_signdocument')

            #
            # @TODO make this async with run_task
            #
            sign_document.create_unclaimed_draft(requester_email_address=request.user.email)

            # we have the user at this point
            serializer = self.get_serializer(sign_document)

            headers = self.get_success_headers(serializer.data)
            status = http_status.HTTP_201_CREATED
            data = serializer.data

        return Response(data, status=status, headers=headers)