コード例 #1
0
    def form_valid(self, form):
        # Save Account
        account_object = form.save(commit=False)
        account_object.save()
        account_object.tags.clear()
        if self.request.POST.get('tags', ''):
            tags = self.request.POST.get("tags")
            splitted_tags = tags.split(",")
            for t in splitted_tags:
                tag = Tags.objects.filter(name=t.lower())
                if tag:
                    tag = tag[0]
                else:
                    tag = Tags.objects.create(name=t.lower())
                account_object.tags.add(tag)
        if self.request.POST.getlist('contacts', []):
            account_object.contacts.clear()
            account_object.contacts.add(*self.request.POST.getlist('contacts'))
        if self.request.POST.getlist('assigned_to', []):
            account_object.assigned_to.clear()
            account_object.assigned_to.add(
                *self.request.POST.getlist('assigned_to'))
        else:
            account_object.assigned_to.clear()
        if self.request.FILES.get('account_attachment'):
            attachment = Attachments()
            attachment.created_by = self.request.user
            attachment.file_name = self.request.FILES.get(
                'account_attachment').name
            attachment.account = account_object
            attachment.attachment = self.request.FILES.get(
                'account_attachment')
            attachment.save()

        assigned_to_list = list(account_object.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,
                                          account_object.id,
                                          domain=current_site.domain,
                                          protocol=self.request.scheme)

        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 = account_object.assigned_to.all(
            ).values_list('id', flat=True)
            for user_id in user_ids:
                if user_id not in assinged_to_users_ids:
                    account_object.assigned_to.add(user_id)

        if self.request.is_ajax():
            data = {
                'success_url': reverse_lazy('accounts:list'),
                'error': False
            }
            return JsonResponse(data)
        return redirect("accounts:list")
コード例 #2
0
    def put(self, request, pk, format=None):
        params = request.query_params if len(
            request.data) == 0 else request.data
        context = {}
        serializer = AccountCreateSerializer(data=params,
                                             instance=self.account,
                                             request_obj=request,
                                             account=True)
        if serializer.is_valid():
            account_object = serializer.save()
            previous_assigned_to_users = list(
                account_object.assigned_to.all().values_list("id", flat=True))
            account_object.tags.clear()
            if params.get("tags", ""):
                tags = params.get("tags")
                splitted_tags = tags.split(",")
                for t in splitted_tags:
                    tag = Tags.objects.filter(name=t.lower())
                    if tag:
                        tag = tag[0]
                    else:
                        tag = Tags.objects.create(name=t.lower())
                    account_object.tags.add(tag)
            if params.getlist("contacts", []):
                account_object.contacts.clear()
                account_object.contacts.add(*params.getlist("contacts"))
            if params.getlist("assigned_to", []):
                account_object.assigned_to.clear()
                account_object.assigned_to.add(*params.getlist("assigned_to"))
            else:
                account_object.assigned_to.clear()
            if self.request.FILES.get("account_attachment"):
                attachment = Attachments()
                attachment.created_by = self.request.user
                attachment.file_name = self.request.FILES.get(
                    "account_attachment").name
                attachment.account = account_object
                attachment.attachment = self.request.FILES.get(
                    "account_attachment")
                attachment.save()

            if params.getlist("teams", []):
                account_object.teams.clear()
                account_object.teams.add(*params.getlist("teams"))
            else:
                account_object.teams.clear()
            if params.getlist("teams", []):
                user_ids = Teams.objects.filter(
                    id__in=self.request.POST.getlist("teams")).values_list(
                        "users", flat=True)
                assinged_to_users_ids = account_object.assigned_to.all(
                ).values_list("id", flat=True)
                for user_id in user_ids:
                    if user_id not in assinged_to_users_ids:
                        account_object.assigned_to.add(user_id)

            assigned_to_list = list(
                account_object.assigned_to.all().values_list("id", flat=True))
            current_site = get_current_site(self.request)
            recipients = list(
                set(assigned_to_list) - set(previous_assigned_to_users))
            send_email_to_assigned_user.delay(
                recipients,
                account_object.id,
                domain=current_site.domain,
                protocol=self.request.scheme,
            )
            return Response({
                "error": False,
                "message": "Account Updated Successfully"
            })
        context["errors"] = serializer.errors
        return Response(context, status=status.HTTP_400_BAD_REQUEST)
コード例 #3
0
    def form_valid(self, form):
        # Save Account
        account_object = form.save(commit=False)
        account_object.created_by = self.request.user
        account_object.company = self.request.company
        account_object.save()

        if self.request.POST.get("tags", ""):
            tags = self.request.POST.get("tags")
            splitted_tags = tags.split(",")
            for t in splitted_tags:
                tag = Tags.objects.filter(name=t)
                if tag:
                    tag = tag[0]
                else:
                    tag = Tags.objects.create(name=t)
                account_object.tags.add(tag)
        if self.request.POST.getlist("contacts", []):
            account_object.contacts.add(*self.request.POST.getlist("contacts"))
        if self.request.POST.getlist("assigned_to", []):
            account_object.assigned_to.add(*self.request.POST.getlist("assigned_to"))
        if self.request.FILES.get("account_attachment"):
            attachment = Attachments()
            attachment.created_by = self.request.user
            attachment.file_name = self.request.FILES.get("account_attachment").name
            attachment.account = account_object
            attachment.attachment = self.request.FILES.get("account_attachment")
            attachment.save()
        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 = account_object.assigned_to.all().values_list(
                "id", flat=True
            )
            for user_id in user_ids:
                if user_id not in assinged_to_users_ids:
                    account_object.assigned_to.add(user_id)
        if self.request.POST.getlist("teams", []):
            account_object.teams.add(*self.request.POST.getlist("teams"))

        assigned_to_list = list(
            account_object.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,
            account_object.id,
            domain=current_site.domain,
            protocol=self.request.scheme,
        )

        if self.request.POST.get("savenewform"):
            return redirect("accounts:new_account")

        if self.request.is_ajax():
            data = {"success_url": reverse_lazy("accounts:list"), "error": False}
            return JsonResponse(data)

        return redirect("accounts:list")
コード例 #4
0
ファイル: views.py プロジェクト: kahdichienja/Django-CRM
    def put(self, request, pk, format=None):
        params = request.query_params if len(
            request.data) == 0 else request.data
        account_object = self.get_object(pk=pk)
        if account_object.org != request.org:
            return Response(
                {
                    "error": True,
                    "errors": "User company doesnot match with header...."
                },
                status=status.HTTP_403_FORBIDDEN,
            )
        serializer = AccountCreateSerializer(account_object,
                                             data=params,
                                             request_obj=request,
                                             account=True)

        if serializer.is_valid():
            if self.request.profile.role != "ADMIN" and not self.request.profile.is_admin:
                if not ((self.request.profile == account_object.created_by) or
                        (self.request.profile
                         in account_object.assigned_to.all())):
                    return Response(
                        {
                            "error":
                            True,
                            "errors":
                            "You do not have Permission to perform this action",
                        },
                        status=status.HTTP_403_FORBIDDEN,
                    )
            account_object = serializer.save()
            previous_assigned_to_users = list(
                account_object.assigned_to.all().values_list("id", flat=True))

            account_object.contacts.clear()
            if params.get("contacts"):
                contacts_list = json.loads(params.get("contacts"))
                contacts = Contact.objects.filter(id__in=contacts_list,
                                                  org=request.org)
                if contacts:
                    account_object.contacts.add(*contacts)

            account_object.tags.clear()
            if params.get("tags"):
                tags = json.loads(params.get("tags"))
                for tag in tags:
                    tag_obj = Tags.objects.filter(slug=tag.lower())
                    if tag_obj.exists():
                        tag_obj = tag_obj[0]
                    else:
                        tag_obj = Tags.objects.create(name=tag)
                    account_object.tags.add(tag_obj)

            account_object.teams.clear()
            if params.get("teams"):
                teams_list = json.loads(params.get("teams"))
                teams = Teams.objects.filter(id__in=teams_list,
                                             org=request.org)
                if teams:
                    account_object.teams.add(*teams)

            account_object.assigned_to.clear()
            if params.get("assigned_to"):
                assigned_to_list = json.loads(params.get("assigned_to"))
                profiles = Profile.objects.filter(id__in=assigned_to_list,
                                                  org=request.org,
                                                  is_active=True)
                if profiles:
                    account_object.assigned_to.add(*profiles)

            if self.request.FILES.get("account_attachment"):
                attachment = Attachments()
                attachment.created_by = self.request.profile
                attachment.file_name = self.request.FILES.get(
                    "account_attachment").name
                attachment.account = account_object
                attachment.attachment = self.request.FILES.get(
                    "account_attachment")
                attachment.save()

            assigned_to_list = list(
                account_object.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,
                account_object.id,
            )
            return Response(
                {
                    "error": False,
                    "message": "Account Updated Successfully"
                },
                status=status.HTTP_200_OK,
            )
        return Response(
            {
                "error": True,
                "errors": serializer.errors
            },
            status=status.HTTP_400_BAD_REQUEST,
        )
コード例 #5
0
ファイル: views.py プロジェクト: kahdichienja/Django-CRM
    def post(self, request, *args, **kwargs):
        params = request.query_params if len(
            request.data) == 0 else request.data
        serializer = AccountCreateSerializer(data=params,
                                             request_obj=request,
                                             account=True)
        # Save Account
        if serializer.is_valid():
            account_object = serializer.save(created_by=request.profile,
                                             org=request.org)
            if params.get("contacts"):
                contacts_list = json.loads(params.get("contacts"))
                contacts = Contact.objects.filter(id__in=contacts_list,
                                                  org=request.org)
                if contacts:
                    account_object.contacts.add(*contacts)
            if params.get("tags"):
                tags = json.loads(params.get("tags"))
                for tag in tags:
                    tag_obj = Tags.objects.filter(slug=tag.lower())
                    if tag_obj.exists():
                        tag_obj = tag_obj[0]
                    else:
                        tag_obj = Tags.objects.create(name=tag)
                    account_object.tags.add(tag_obj)
            if params.get("teams"):
                teams_list = json.loads(params.get("teams"))
                teams = Teams.objects.filter(id__in=teams_list,
                                             org=request.org)
                if teams:
                    account_object.teams.add(*teams)
                if params.get("assigned_to"):
                    assigned_to_list = json.loads(params.get("assigned_to"))
                    profiles = Profile.objects.filter(id__in=assigned_to_list,
                                                      org=request.org,
                                                      is_active=True)
                    if profiles:
                        account_object.assigned_to.add(*profiles)

            if self.request.FILES.get("account_attachment"):
                attachment = Attachments()
                attachment.created_by = request.profile
                attachment.file_name = request.FILES.get(
                    "account_attachment").name
                attachment.account = account_object
                attachment.attachment = request.FILES.get("account_attachment")
                attachment.save()

            recipients = list(account_object.assigned_to.all().values_list(
                "id", flat=True))
            send_email_to_assigned_user.delay(
                recipients,
                account_object.id,
            )
            return Response(
                {
                    "error": False,
                    "message": "Account Created Successfully"
                },
                status=status.HTTP_200_OK,
            )
        return Response(
            {
                "error": True,
                "errors": serializer.errors
            },
            status=status.HTTP_400_BAD_REQUEST,
        )
コード例 #6
0
    def put(self, request, pk, **kwargs):
        params = (
            self.request.query_params
            if len(self.request.data) == 0
            else self.request.data
        )
        data = {}
        self.lead_obj = self.get_object(pk)
        if self.lead_obj.company != request.company:
            return Response(
                {"error": True, "errors": "User company doesnot match with header...."}
            )
        serializer = LeadCreateSerializer(
            data=params,
            instance=self.lead_obj,
            request_obj=request,
        )
        if serializer.is_valid():
            lead_obj = serializer.save()
            previous_assigned_to_users = list(
                lead_obj.assigned_to.all().values_list("id", flat=True)
            )
            lead_obj.tags.clear()
            if params.get("tags"):
                tags = json.loads(params.get("tags"))
                # for t in tags:
                #     tag,_ = Tags.objects.get_or_create(name=t)
                #     lead_obj.tags.add(tag)
                for t in tags:
                    tag = Tags.objects.filter(slug=t.lower())
                    if tag:
                        tag = tag[0]
                    else:
                        tag = Tags.objects.create(name=t)
                    lead_obj.tags.add(tag)

            current_site = get_current_site(request)
            assigned_to_list = list(
                lead_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,
                lead_obj.id,
                domain=current_site.domain,
                protocol=request.scheme,
            )
            if request.FILES.get("lead_attachment"):
                attachment = Attachments()
                attachment.created_by = request.user
                attachment.file_name = request.FILES.get("lead_attachment").name
                attachment.lead = lead_obj
                attachment.attachment = request.FILES.get("lead_attachment")
                attachment.save()

            if self.request.user.role == "ADMIN":
                lead_obj.teams.clear()
                if params.get("teams"):
                    teams = json.loads(params.get("teams"))
                    for team in teams:
                        teams_ids = Teams.objects.filter(
                            id=team, company=request.company
                        )
                        if teams_ids:
                            lead_obj.teams.add(team)
                        else:
                            lead_obj.delete()
                            data["team"] = "Please enter valid Team"
                            return Response({"error": True, "errors": data})
                else:
                    lead_obj.teams.clear()

                lead_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, company=request.company)
                        if user:
                            lead_obj.assigned_to.add(user_id)
                        else:
                            lead_obj.delete()
                            data["assigned_to"] = "Please enter valid User"
                            return Response({"error": True, "errors": data})
                else:
                    lead_obj.assigned_to.clear()

            if params.get("status") == "converted":
                account_object = Account.objects.create(
                    created_by=request.user,
                    name=lead_obj.account_name,
                    email=lead_obj.email,
                    phone=lead_obj.phone,
                    description=params.get("description"),
                    website=params.get("website"),
                    lead=lead_obj,
                    company=request.company,
                )
                account_object.billing_address_line = lead_obj.address_line
                account_object.billing_street = lead_obj.street
                account_object.billing_city = lead_obj.city
                account_object.billing_state = lead_obj.state
                account_object.billing_postcode = lead_obj.postcode
                account_object.billing_country = lead_obj.country
                comments = Comment.objects.filter(lead=self.lead_obj)
                if comments:
                    for comment in comments:
                        comment.account_id = account_object.id
                attachments = Attachments.objects.filter(lead=self.lead_obj)
                if attachments:
                    for attachment in attachments:
                        attachment.account_id = account_object.id
                for tag in lead_obj.tags.all():
                    account_object.tags.add(tag)
                if params.get("assigned_to"):
                    # account_object.assigned_to.add(*params.getlist('assigned_to'))
                    assigned_to_list = json.loads(params.get("assigned_to"))
                    current_site = get_current_site(request)
                    recipients = assigned_to_list
                    send_email_to_assigned_user.delay(
                        recipients,
                        lead_obj.id,
                        domain=current_site.domain,
                        protocol=request.scheme,
                    )

                for comment in lead_obj.leads_comments.all():
                    comment.account = account_object
                    comment.save()
                account_object.save()
                return Response(
                    {
                        "error": False,
                        "message": "Lead Converted to Account Successfully",
                    },
                    status=status.HTTP_200_OK,
                )
            return Response(
                {"error": False, "message": "Lead updated Successfully"},
                status=status.HTTP_200_OK,
            )
        return Response(
            {"error": True, "errors": serializer.errors},
            status=status.HTTP_400_BAD_REQUEST,
        )
コード例 #7
0
ファイル: api_views.py プロジェクト: sauravpanda/Django-CRM
    def put(self, request, pk, format=None):
        params = request.query_params if len(
            request.data) == 0 else request.data
        account_object = self.get_object(pk=pk)
        data = {}
        if account_object.company != request.company:
            return Response({
                "error":True,
                "errors":"User company doesnot match with header...."},
                status=status.HTTP_404_NOT_FOUND
            )
        serializer = AccountCreateSerializer(
            account_object, data=params, request_obj=request, account=True
        )

        if serializer.is_valid():
            if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
                if not (
                    (self.request.user == account_object.created_by)
                    or (self.request.user in account_object.assigned_to.all())
                ):
                    return Response(
                        {"error": True,
                         "errors": "You do not have Permission to perform this action"},
                         status=status.HTTP_401_UNAUTHORIZED,
                    )
            account_object = serializer.save()
            previous_assigned_to_users = list(
                account_object.assigned_to.all().values_list("id", flat=True)
            )
            account_object.contacts.clear()
            if params.get("contacts"):
                contacts = json.loads(params.get("contacts"))               
                for contact in contacts:
                    obj_contact = Contact.objects.filter(id=contact, company=request.company)
                    if obj_contact:
                        account_object.contacts.add(contact)
                    else:
                        data["contacts"] = "Please enter valid Contact"
                        return Response({"error":True, "errors":data})
            account_object.tags.clear()
            if params.get("tags"):
                tags = json.loads(params.get("tags"))
                for tag in tags:
                    tag_obj = Tags.objects.filter(slug=tag.lower())
                    if tag_obj:
                        tag_obj = tag_obj[0]
                    else:
                        tag_obj = Tags.objects.create(name=tag)
                    account_object.tags.add(tag_obj)
                        
            if self.request.user.role == "ADMIN":
                account_object.teams.clear()
                if params.get("teams"):
                    teams = json.loads(params.get("teams"))
                    for team in teams:
                        teams_ids = Teams.objects.filter(id=team,company=request.company)
                        if teams_ids:
                            account_object.teams.add(team)
                        else:
                            data["team"] = "Please enter valid Team"
                            return Response({"error": True, "errors":data})

                account_object.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, company=request.company)
                        if user:                            
                            account_object.assigned_to.add(user_id)
                        else:
                            data["assigned_to"] = "Please enter valid User"
                            return Response({"error": True, "errors":data})
                
            if self.request.FILES.get("account_attachment"):
                attachment = Attachments()
                attachment.created_by = self.request.user
                attachment.file_name = self.request.FILES.get("account_attachment").name
                attachment.account = account_object
                attachment.attachment = self.request.FILES.get("account_attachment")
                attachment.save()

            assigned_to_list = list(
                account_object.assigned_to.all().values_list("id", flat=True)
            )
            current_site = get_current_site(self.request)
            recipients = list(set(assigned_to_list) - set(previous_assigned_to_users))
            send_email_to_assigned_user.delay(
                recipients,
                account_object.id,
                domain=current_site.domain,
                protocol=self.request.scheme,
            )
            return Response(
                {"error": False, "message": "Account Updated Successfully"},
                status=status.HTTP_200_OK,
            )
        return Response(
            {"error": True, "errors": serializer.errors},
             status=status.HTTP_400_BAD_REQUEST
        )
コード例 #8
0
ファイル: api_views.py プロジェクト: sauravpanda/Django-CRM
    def post(self, request, *args, **kwargs):
        params = request.query_params if len(request.data) == 0 else request.data
        data = {}
        serializer = AccountCreateSerializer(
            data=params, request_obj=request, account=True
        )
        # Save Account
        if serializer.is_valid():
            account_object = serializer.save(
                created_by=request.user, company=request.company
            )
            if params.get("contacts"):
                contacts = json.loads(params.get("contacts"))                
                for contact in contacts:
                    obj_contact = Contact.objects.filter(id=contact, company=request.company)
                    if obj_contact:
                        account_object.contacts.add(contact)
                    else:
                        account_object.delete()
                        data["contacts"] = "Please enter valid contact"
                        return Response({"error": True, "errors":data})
            if params.get("tags"):
                tags = json.loads(params.get("tags"))
                for tag in tags:
                    tag_obj = Tags.objects.filter(slug=tag.lower())
                    if tag_obj:
                        tag_obj = tag_obj[0]
                    else:
                        tag_obj = Tags.objects.create(name=tag)
                    account_object.tags.add(tag_obj)
            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,company=request.company)
                        if teams_ids:
                            account_object.teams.add(team)
                        else:
                            account_object.delete()
                            data["team"] = "Please enter valid Team"
                            return Response({"error": True, "errors":data})
                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, company=request.company)
                        if user:                            
                            account_object.assigned_to.add(user_id)
                        else:
                            account_object.delete()
                            data["assigned_to"] = "Please enter valid user"
                            return Response({"error": True, "errors":data})
           
            if self.request.FILES.get("account_attachment"):
                attachment = Attachments()
                attachment.created_by = request.user
                attachment.file_name = request.FILES.get("account_attachment").name
                attachment.account = account_object
                attachment.attachment = request.FILES.get("account_attachment")
                attachment.save()

            assigned_to_list = list(
                account_object.assigned_to.all().values_list("id", flat=True)
            )

            current_site = get_current_site(request)
            recipients = assigned_to_list
            send_email_to_assigned_user.delay(
                recipients,
                account_object.id,
                domain=current_site.domain,
                protocol=self.request.scheme,
            )
            return Response({"error": False, "message": "Account Created Successfully"})
        return Response(
            {"error": True, "errors": serializer.errors},
             status=status.HTTP_400_BAD_REQUEST
        )
コード例 #9
0
ファイル: api_views.py プロジェクト: yassinejr/Django-CRM
    def put(self, request, pk, **kwargs):
        params = (
            self.request.query_params
            if len(self.request.data) == 0
            else self.request.data
        )
        self.lead_obj = self.get_object(pk)
        if self.lead_obj.company != request.company:
            return Response({'error': True}, status=status.HTTP_403_FORBIDDEN)
        serializer = LeadCreateSerializer(
            data=params,
            instance=self.lead_obj,
            request_obj=request,
        )
        if serializer.is_valid():
            lead_obj = serializer.save()
            previous_assigned_to_users = list(
                lead_obj.assigned_to.all().values_list("id", flat=True)
            )
            lead_obj.tags.clear()
            if params.get("tags", ""):
                tags = params.get("tags")
                splitted_tags = tags.split(",")
                for t in splitted_tags:
                    tag = Tags.objects.filter(name=t)
                    if tag:
                        tag = tag[0]
                    else:
                        tag = Tags.objects.create(name=t)
                    lead_obj.tags.add(tag)
            if params.getlist("assigned_to", []):
                lead_obj.assigned_to.clear()
                lead_obj.assigned_to.add(*params.getlist("assigned_to"))
            else:
                lead_obj.assigned_to.clear()

            if params.getlist("teams", []):
                user_ids = Teams.objects.filter(
                    id__in=params.getlist("teams")
                ).values_list("users", flat=True)
                assinged_to_users_ids = lead_obj.assigned_to.all().values_list(
                    "id", flat=True
                )
                for user_id in user_ids:
                    if user_id not in assinged_to_users_ids:
                        lead_obj.assigned_to.add(user_id)

            if params.getlist("teams", []):
                lead_obj.teams.clear()
                lead_obj.teams.add(*params.getlist("teams"))
            else:
                lead_obj.teams.clear()

            current_site = get_current_site(request)
            assigned_to_list = list(
                lead_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,
                lead_obj.id,
                domain=current_site.domain,
                protocol=request.scheme,
            )
            # update_leads_cache.delay()
            if request.FILES.get("lead_attachment"):
                attachment = Attachments()
                attachment.created_by = request.user
                attachment.file_name = request.FILES.get(
                    "lead_attachment").name
                attachment.lead = lead_obj
                attachment.attachment = request.FILES.get("lead_attachment")
                attachment.save()

            if params.get("status") == "converted":
                account_object = Account.objects.create(
                    created_by=request.user,
                    name=lead_obj.account_name,
                    email=lead_obj.email,
                    phone=lead_obj.phone,
                    description=params.get("description"),
                    website=params.get("website"),
                    lead=lead_obj,
                    company=request.company,
                )
                account_object.billing_address_line = lead_obj.address_line
                account_object.billing_street = lead_obj.street
                account_object.billing_city = lead_obj.city
                account_object.billing_state = lead_obj.state
                account_object.billing_postcode = lead_obj.postcode
                account_object.billing_country = lead_obj.country
                for tag in lead_obj.tags.all():
                    account_object.tags.add(tag)
                if params.getlist("assigned_to", []):
                    # account_object.assigned_to.add(*params.getlist('assigned_to'))
                    assigned_to_list = params.getlist("assigned_to")
                    current_site = get_current_site(request)
                    recipients = assigned_to_list
                    send_email_to_assigned_user.delay(
                        recipients,
                        lead_obj.id,
                        domain=current_site.domain,
                        protocol=request.scheme,
                    )

                for comment in lead_obj.leads_comments.all():
                    comment.account = account_object
                    comment.save()
                account_object.save()
            return Response({'error': False,
                             'message': 'Lead updated Successfully'},
                            status=status.HTTP_200_OK)
        return Response({'error': True, 'errors': serializer.errors},
                        status=status.HTTP_400_BAD_REQUEST)
コード例 #10
0
    def form_valid(self, form):
        # Save Account
        account_object = form.save(commit=False)
        account_object.save()
        previous_assigned_to_users = list(
            account_object.assigned_to.all().values_list("id", flat=True)
        )
        account_object.tags.clear()
        if self.request.POST.get("tags", ""):
            tags = self.request.POST.get("tags")
            splitted_tags = tags.split(",")
            for t in splitted_tags:
                tag = Tags.objects.filter(name=t.lower())
                if tag:
                    tag = tag[0]
                else:
                    tag = Tags.objects.create(name=t.lower())
                account_object.tags.add(tag)
        if self.request.POST.getlist("contacts", []):
            account_object.contacts.clear()
            account_object.contacts.add(*self.request.POST.getlist("contacts"))
        if self.request.POST.getlist("assigned_to", []):
            account_object.assigned_to.clear()
            account_object.assigned_to.add(*self.request.POST.getlist("assigned_to"))
        else:
            account_object.assigned_to.clear()
        if self.request.FILES.get("account_attachment"):
            attachment = Attachments()
            attachment.created_by = self.request.user
            attachment.file_name = self.request.FILES.get("account_attachment").name
            attachment.account = account_object
            attachment.attachment = self.request.FILES.get("account_attachment")
            attachment.save()

        if self.request.POST.getlist("teams", []):
            account_object.teams.clear()
            account_object.teams.add(*self.request.POST.getlist("teams"))
        else:
            account_object.teams.clear()
        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 = account_object.assigned_to.all().values_list(
                "id", flat=True
            )
            for user_id in user_ids:
                if user_id not in assinged_to_users_ids:
                    account_object.assigned_to.add(user_id)

        assigned_to_list = list(
            account_object.assigned_to.all().values_list("id", flat=True)
        )
        current_site = get_current_site(self.request)
        recipients = list(set(assigned_to_list) - set(previous_assigned_to_users))
        send_email_to_assigned_user.delay(
            recipients,
            account_object.id,
            domain=current_site.domain,
            protocol=self.request.scheme,
        )
        message = "Account updated successfully"
        if self.account_status != account_object.status:
            if account_object.status == "open":
                message = "Account opened successfully"
            else:
                message = "Account closed successfully"
        if self.request.is_ajax():
            data = {
                "success_url": reverse_lazy("accounts:list"),
                "error": False,
                "message": message,
            }
            return JsonResponse(data)
        return redirect("accounts:list")
コード例 #11
0
ファイル: api_views.py プロジェクト: andileka639/Django-CRM
    def post(self, request, *args, **kwargs):
        params = request.query_params if len(
            request.data) == 0 else request.data
        context = {}
        serializer = AccountCreateSerializer(
            data=params, request_obj=request, account=True
        )
        # Save Account
        if serializer.is_valid():
            account_object = serializer.save(
                created_by=request.user, company=request.company)

            if self.request.POST.get("tags", ""):
                tags = params.get("tags")
                splitted_tags = tags.split(",")
                for t in splitted_tags:
                    tag = Tags.objects.filter(name=t)
                    if tag:
                        tag = tag[0]
                    else:
                        tag = Tags.objects.create(name=t)
                    account_object.tags.add(tag)
            if params.getlist("contacts", []):
                account_object.contacts.add(
                    *params.getlist("contacts"))
            if params.getlist("assigned_to", []):
                account_object.assigned_to.add(
                    *params.getlist("assigned_to"))
            if self.request.FILES.get("account_attachment"):
                attachment = Attachments()
                attachment.created_by = request.user
                attachment.file_name = request.FILES.get(
                    "account_attachment").name
                attachment.account = account_object
                attachment.attachment = request.FILES.get(
                    "account_attachment")
                attachment.save()
            if params.getlist("teams", []):
                user_ids = Teams.objects.filter(
                    id__in=params.getlist("teams")
                ).values_list("users", flat=True)
                assinged_to_users_ids = account_object.assigned_to.all().values_list(
                    "id", flat=True
                )
                for user_id in user_ids:
                    if user_id not in assinged_to_users_ids:
                        account_object.assigned_to.add(user_id)
            if params.getlist("teams", []):
                account_object.teams.add(*params.getlist("teams"))

            assigned_to_list = list(
                account_object.assigned_to.all().values_list("id", flat=True)
            )
            current_site = get_current_site(request)
            recipients = assigned_to_list
            send_email_to_assigned_user.delay(
                recipients,
                account_object.id,
                domain=current_site.domain,
                protocol=self.request.scheme,
            )
            return Response({'error': False,
                             'message': 'Account Created Successfully'})
        context["errors"] = serializer.errors
        return Response(context, status=status.HTTP_400_BAD_REQUEST)