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
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)
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)
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
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
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
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)
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)