def form_valid(self, form): contact_obj = form.save(commit=False) if self.request.POST.getlist('assigned_to', []): contact_obj.assigned_to.add(*self.request.POST.getlist('assigned_to')) assigned_to_list = self.request.POST.getlist('assigned_to') current_site = get_current_site(self.request) for assigned_to_user in assigned_to_list: user = get_object_or_404(User, pk=assigned_to_user) mail_subject = 'Assigned to contact.' message = render_to_string('assigned_to/contact_assigned.html', { 'user': user, 'domain': current_site.domain, 'protocol': self.request.scheme, 'contact': contact_obj }) email = EmailMessage(mail_subject, message, to=[user.email]) email.content_subtype = "html" email.send() if self.request.FILES.get('contact_attachment'): attachment = Attachments() attachment.created_by = self.request.user attachment.file_name = self.request.FILES.get('contact_attachment').name attachment.contact = contact_obj attachment.attachment = self.request.FILES.get('contact_attachment') attachment.save() if self.request.is_ajax(): return JsonResponse({'error': False}) if self.request.POST.get("savenewform"): return redirect("contacts:add_contact") return redirect('contacts:list')
def post(self, request, *args, **kwargs): params = request.query_params if len( request.data) == 0 else request.data contact_serializer = CreateContactSerializer( data=params, request_obj=request ) address_serializer = BillingAddressSerializer(data=params) data = {} if not contact_serializer.is_valid(): data["contact_errors"] = contact_serializer.errors if not address_serializer.is_valid(): data["address_errors"] = (address_serializer.errors,) if data: return Response( {"error": True, "errors": data}, status=status.HTTP_400_BAD_REQUEST, ) # if contact_serializer.is_valid() and address_serializer.is_valid(): address_obj = address_serializer.save() contact_obj = contact_serializer.save( date_of_birth=params.get("date_of_birth") ) contact_obj.address = address_obj contact_obj.created_by = self.request.profile contact_obj.org = request.org contact_obj.save() if params.get("teams"): teams_list = json.loads(params.get("teams")) teams = Teams.objects.filter( id__in=teams_list, org=request.org) contact_obj.teams.add(*teams) if params.get("assigned_to"): assinged_to_list = json.loads( params.get("assigned_to")) profiles = Profile.objects.filter( id__in=assinged_to_list, org=request.org) contact_obj.assigned_to.add(*profiles) recipients = list( contact_obj.assigned_to.all().values_list("id", flat=True) ) send_email_to_assigned_user.delay( recipients, contact_obj.id, ) if request.FILES.get("contact_attachment"): attachment = Attachments() attachment.created_by = request.profile attachment.file_name = request.FILES.get("contact_attachment").name attachment.contact = contact_obj attachment.attachment = request.FILES.get("contact_attachment") attachment.save() return Response( {"error": False, "message": "Contact created Successfuly"}, status=status.HTTP_200_OK, )
def form_valid(self, form): contact_obj = form.save(commit=False) if self.request.POST.getlist("assigned_to", []): contact_obj.assigned_to.add( *self.request.POST.getlist("assigned_to")) # for assigned_to_user in assigned_to_list: # user = get_object_or_404(User, pk=assigned_to_user) # mail_subject = 'Assigned to contact.' # message = render_to_string( # 'assigned_to/contact_assigned.html', { # 'user': user, # 'domain': current_site.domain, # 'protocol': self.request.scheme, # 'contact': contact_obj # }) # email = EmailMessage(mail_subject, message, to=[user.email]) # email.content_subtype = "html" # email.send() if self.request.POST.getlist("teams", []): user_ids = Teams.objects.filter( id__in=self.request.POST.getlist("teams")).values_list( "users", flat=True) assinged_to_users_ids = contact_obj.assigned_to.all().values_list( "id", flat=True) for user_id in user_ids: if user_id not in assinged_to_users_ids: contact_obj.assigned_to.add(user_id) if self.request.POST.getlist("teams", []): contact_obj.teams.add(*self.request.POST.getlist("teams")) assigned_to_list = list(contact_obj.assigned_to.all().values_list( "id", flat=True)) current_site = get_current_site(self.request) recipients = assigned_to_list send_email_to_assigned_user.delay( recipients, contact_obj.id, domain=current_site.domain, protocol=self.request.scheme, ) if self.request.FILES.get("contact_attachment"): attachment = Attachments() attachment.created_by = self.request.user attachment.file_name = self.request.FILES.get( "contact_attachment").name attachment.contact = contact_obj attachment.attachment = self.request.FILES.get( "contact_attachment") attachment.save() if self.request.is_ajax(): return JsonResponse({"error": False}) if self.request.POST.get("savenewform"): return redirect("contacts:add_contact") return redirect("contacts:list")
def form_valid(self, form): assigned_to_ids = self.get_object().assigned_to.all().values_list( 'id', flat=True) contact_obj = form.save(commit=False) all_members_list = [] if self.request.POST.getlist('assigned_to', []): current_site = get_current_site(self.request) assigned_form_users = form.cleaned_data.get( 'assigned_to').values_list('id', flat=True) all_members_list = list( set(list(assigned_form_users)) - set(list(assigned_to_ids))) current_site = get_current_site(self.request) recipients = all_members_list send_email_to_assigned_user.delay(recipients, contact_obj.id, domain=current_site.domain, protocol=self.request.scheme) # if all_members_list: # for assigned_to_user in all_members_list: # user = get_object_or_404(User, pk=assigned_to_user) # mail_subject = 'Assigned to contact.' # message = render_to_string( # 'assigned_to/contact_assigned.html', { # 'user': user, # 'domain': current_site.domain, # 'protocol': self.request.scheme, # 'contact': contact_obj # }) # email = EmailMessage( # mail_subject, message, to=[user.email]) # email.content_subtype = "html" # email.send() contact_obj.assigned_to.clear() contact_obj.assigned_to.add( *self.request.POST.getlist('assigned_to')) else: contact_obj.assigned_to.clear() if self.request.FILES.get('contact_attachment'): attachment = Attachments() attachment.created_by = self.request.user attachment.file_name = self.request.FILES.get( 'contact_attachment').name attachment.contact = contact_obj attachment.attachment = self.request.FILES.get( 'contact_attachment') attachment.save() if self.request.POST.get('from_account'): from_account = self.request.POST.get('from_account') return redirect("accounts:view_account", pk=from_account) if self.request.is_ajax(): return JsonResponse({'error': False}) return redirect("contacts:list")
def post(self, request, pk, **kwargs): params = ( self.request.query_params if len(self.request.data) == 0 else self.request.data ) context = {} self.contact_obj = Contact.objects.get(pk=pk) if self.request.profile.role != "ADMIN" and not self.request.profile.is_admin: if not ( (self.request.profile == self.contact_obj.created_by) or (self.request.profile in self.contact_obj.assigned_to.all()) ): return Response( { "error": True, "errors": "You do not have Permission to perform this action", }, status=status.HTTP_403_FORBIDDEN, ) comment_serializer = CommentSerializer(data=params) if comment_serializer.is_valid(): if params.get("comment"): comment_serializer.save( contact_id=self.contact_obj.id, commented_by_id=self.request.profile.id, org=request.org ) if self.request.FILES.get("contact_attachment"): attachment = Attachments() attachment.created_by = self.request.profile attachment.file_name = self.request.FILES.get( "contact_attachment").name attachment.contact = self.contact_obj attachment.attachment = self.request.FILES.get( "contact_attachment") attachment.save() comments = Comment.objects.filter(contact__id=self.contact_obj.id).order_by( "-id" ) attachments = Attachments.objects.filter( contact__id=self.contact_obj.id ).order_by("-id") context.update( { "contact_obj": ContactSerializer(self.contact_obj).data, "attachments": AttachmentsSerializer(attachments, many=True).data, "comments": CommentSerializer(comments, many=True).data, } ) return Response(context)
def put(self, request, pk, format=None): params = request.query_params if len( request.data) == 0 else request.data contact_obj = self.get_object(pk=pk) address_obj = contact_obj.address if contact_obj.org != request.org: return Response( { "error": True, "errors": "User company doesnot match with header...." }, status=status.HTTP_403_FORBIDDEN) contact_serializer = CreateContactSerializer(data=params, instance=contact_obj, request_obj=request, contact=True) address_serializer = BillingAddressSerializer(data=params, instance=address_obj) data = {} if not contact_serializer.is_valid(): data["contact_errors"] = contact_serializer.errors if not address_serializer.is_valid(): data["address_errors"] = (address_serializer.errors, ) if data: data["error"] = True return Response( data, status=status.HTTP_400_BAD_REQUEST, ) if contact_serializer.is_valid(): if self.request.profile.role != "ADMIN" and not self.request.profile.is_admin: if not ( (self.request.profile == contact_obj.created_by) or (self.request.profile in contact_obj.assigned_to.all())): return Response( { "error": True, "errors": "You do not have Permission to perform this action", }, status=status.HTTP_403_FORBIDDEN, ) address_obj = address_serializer.save() contact_obj = contact_serializer.save( date_of_birth=params.get("date_of_birth")) contact_obj.address = address_obj contact_obj.save() contact_obj = contact_serializer.save() contact_obj.teams.clear() if params.get("teams"): teams_list = json.loads(params.get("teams")) teams = Teams.objects.filter(id__in=teams_list, org=request.org) contact_obj.teams.add(*teams) contact_obj.assigned_to.clear() if params.get("assigned_to"): assinged_to_list = json.loads(params.get("assigned_to")) profiles = Profile.objects.filter(id__in=assinged_to_list, org=request.org) contact_obj.assigned_to.add(*profiles) previous_assigned_to_users = list( contact_obj.assigned_to.all().values_list("id", flat=True)) assigned_to_list = list(contact_obj.assigned_to.all().values_list( "id", flat=True)) recipients = list( set(assigned_to_list) - set(previous_assigned_to_users)) send_email_to_assigned_user.delay( recipients, contact_obj.id, ) if request.FILES.get("contact_attachment"): attachment = Attachments() attachment.created_by = request.profile attachment.file_name = request.FILES.get( "contact_attachment").name attachment.contact = contact_obj attachment.attachment = request.FILES.get("contact_attachment") attachment.save() return Response( { "error": False, "message": "Contact Updated Successfully" }, status=status.HTTP_200_OK, )
def put(self, request, pk, format=None): params = request.query_params if len(request.data) == 0 else request.data contact_obj = self.get_object(pk=pk) address_obj = contact_obj.address contact_serializer = CreateContactSerializer( data=params, instance=contact_obj, request_obj=request, contact=True ) address_serializer = BillingAddressSerializer(data=params, instance=address_obj) data = {} if not contact_serializer.is_valid(): data["contact_errors"] = contact_serializer.errors if not address_serializer.is_valid(): data["address_errors"] = (address_serializer.errors,) if data: data["error"] = True return Response( data, status=status.HTTP_400_BAD_REQUEST, ) if contact_serializer.is_valid(): if self.request.user.role != "ADMIN" and not self.request.user.is_superuser: if not ( (self.request.user == contact_obj.created_by) or (self.request.user in contact_obj.assigned_to.all()) ): return Response( { "error": True, "errors": "You do not have Permission to perform this action", }, status=status.HTTP_403_FORBIDDEN, ) address_obj = address_serializer.save() contact_obj = contact_serializer.save() contact_obj.address = address_obj contact_obj.save() contact_obj = contact_serializer.save() if self.request.user.role == "ADMIN": contact_obj.teams.clear() if params.get("teams"): teams = json.loads(params.get("teams")) for team in teams: teams_ids = Teams.objects.filter(id=team) if teams_ids.exists(): contact_obj.teams.add(team) else: data["team"] = "Please enter valid Team" return Response( {"error": True, "errors": data}, status=status.HTTP_400_BAD_REQUEST, ) contact_obj.assigned_to.clear() if params.get("assigned_to"): assinged_to_users_ids = json.loads(params.get("assigned_to")) for user_id in assinged_to_users_ids: user = User.objects.filter(id=user_id) if user.exists(): contact_obj.assigned_to.add(user_id) else: data["assigned_to"] = "Please enter valid user" return Response( {"error": True, "errors": data}, status=status.HTTP_400_BAD_REQUEST, ) previous_assigned_to_users = list( contact_obj.assigned_to.all().values_list("id", flat=True) ) assigned_to_list = list( contact_obj.assigned_to.all().values_list("id", flat=True) ) recipients = list(set(assigned_to_list) - set(previous_assigned_to_users)) send_email_to_assigned_user.delay( recipients, contact_obj.id, domain=settings.Domain, protocol=request.scheme, ) if request.FILES.get("contact_attachment"): attachment = Attachments() attachment.created_by = request.user attachment.file_name = request.FILES.get("contact_attachment").name attachment.contact = contact_obj attachment.attachment = request.FILES.get("contact_attachment") attachment.save() return Response( {"error": False, "message": "Contact Updated Successfully"}, status=status.HTTP_200_OK, )
def post(self, request, *args, **kwargs): params = request.query_params if len(request.data) == 0 else request.data contact_serializer = CreateContactSerializer( data=params, request_obj=request, contact=True ) address_serializer = BillingAddressSerializer(data=params) data = {} if not contact_serializer.is_valid(): data["contact_errors"] = contact_serializer.errors if not address_serializer.is_valid(): data["address_errors"] = (address_serializer.errors,) if data: return Response( {"error": True, "errors": data}, status=status.HTTP_400_BAD_REQUEST, ) # if contact_serializer.is_valid() and address_serializer.is_valid(): address_obj = address_serializer.save() contact_obj = contact_serializer.save() contact_obj.address = address_obj contact_obj.created_by = self.request.user contact_obj.save() if self.request.user.role == "ADMIN": if params.get("teams"): teams = json.loads(params.get("teams")) for team in teams: teams_ids = Teams.objects.filter(id=team) if teams_ids.exists(): contact_obj.teams.add(team) else: contact_obj.delete() data["team"] = "Please enter valid Team" return Response( {"error": True, "errors": data}, status=status.HTTP_400_BAD_REQUEST, ) assinged_to_users_ids = json.loads(params.get("assigned_to")) for user_id in assinged_to_users_ids: user = User.objects.filter(id=user_id) if user.exists(): contact_obj.assigned_to.add(user_id) else: contact_obj.delete() data["assigned_to"] = "Please enter valid user" return Response( {"error": True, "errors": data}, status=status.HTTP_400_BAD_REQUEST, ) assigned_to_list = list( contact_obj.assigned_to.all().values_list("id", flat=True) ) recipients = assigned_to_list send_email_to_assigned_user.delay( recipients, contact_obj.id, domain=settings.Domain, protocol=self.request.scheme, ) if request.FILES.get("contact_attachment"): attachment = Attachments() attachment.created_by = request.user attachment.file_name = request.FILES.get("contact_attachment").name attachment.contact = contact_obj attachment.attachment = request.FILES.get("contact_attachment") attachment.save() return Response( {"error": False, "message": "Contact created Successfuly"}, status=status.HTTP_200_OK, )