def contact_page(request): if request.method == 'POST': form = LeadForm(request.POST) if form.is_valid(): new_lead = Lead() new_lead.name = request.POST.get('name', '') new_lead.subject = request.POST.get('subject', '') new_lead.email = request.POST.get('email', '') new_lead.message = request.POST.get('message', '') new_lead.save() messages.success( request, '{}, Your message was delivered!'.format(new_lead.name)) else: messages.error(request, 'Something is going wrong! Try again!') form = LeadForm() print(form) context = {'form': form} return render(request, 'leads/contact.html', context=context)
def add_lead(request): accounts = Account.objects.all() users = User.objects.filter(is_active=True).order_by('email') teams = Team.objects.all() assignedto_list = request.POST.getlist('assigned_to') teams_list = request.POST.getlist('teams') lead_account = request.POST.get('account_name') lead_email = request.POST.get('email') lead_phone = request.POST.get('phone') form = LeadForm(assigned_to=users) address_form = BillingAddressForm() if request.method == 'POST': form = LeadForm(request.POST, assigned_to=users) address_form = BillingAddressForm(request.POST) if form.is_valid() and address_form.is_valid(): lead_obj = form.save(commit=False) address_object = address_form.save() lead_obj.address = address_object lead_obj.created_by = request.user lead_obj.save() lead_obj.assigned_to.add(*assignedto_list) lead_obj.teams.add(*teams_list) if request.POST.get('status') == "converted": Account.objects.create(created_by=request.user, name=lead_account, email=lead_email, phone=lead_phone) if request.POST.get("savenewform"): return HttpResponseRedirect(reverse("leads:add_lead")) else: return HttpResponseRedirect(reverse('leads:list')) else: return render( request, 'leads/create_lead.html', { 'lead_form': form, 'address_form': address_form, 'accounts': accounts, 'countries': COUNTRIES, 'teams': teams, 'users': users, 'status': LEAD_STATUS, 'source': LEAD_SOURCE, 'assignedto_list': assignedto_list, 'teams_list': teams_list }) else: return render( request, 'leads/create_lead.html', { 'lead_form': form, 'address_form': address_form, 'accounts': accounts, 'countries': COUNTRIES, 'teams': teams, 'users': users, 'status': LEAD_STATUS, 'source': LEAD_SOURCE, 'assignedto_list': assignedto_list, 'teams_list': teams_list })
def lead(request, lead_id=None): """Lead creation or modification""" lead = None updated_fields = [] blacklist_fields = ["creation_date", "tags"] max_length = 50 old_lead_description = "" try: if lead_id: lead = Lead.objects.get(id=lead_id) old_lead_description = lead.description except Lead.DoesNotExist: pass if request.method == "POST": if lead: form = LeadForm(request.POST, instance=lead) else: form = LeadForm(request.POST) if form.is_valid(): changed_fields = form.changed_data for field_name, field in form.fields.items(): if field_name in changed_fields and field_name not in blacklist_fields: value = form.cleaned_data[field_name] if field_name == "description": if compact_text(value) == old_lead_description: # Don't consider description field as changed if content is the same continue if isinstance(value, (list, QuerySet)): value = ", ".join([unicode(i) for i in value]) else: value = force_text(value) value = value if len( value) <= max_length else value[0:max_length - 3] + '...' updated_fields.append( "%s: %s" % (force_text(field.label or field_name), value)) lead = form.save() postSaveLead(request, lead, updated_fields) return HttpResponseRedirect( urlresolvers.reverse("leads.views.detail", args=[lead.id])) else: if lead: form = LeadForm(instance=lead) # A form that edit current lead else: try: consultant = Consultant.objects.get( trigramme__iexact=request.user.username) form = LeadForm(initial={"responsible": consultant}) # An unbound form except Consultant.DoesNotExist: form = LeadForm() # An unbound form return render(request, "leads/lead.html", { "lead": lead, "form": form, "user": request.user })
def edit_lead(request, lead_id): lead_obj = get_object_or_404(Lead, id=lead_id) address_obj = get_object_or_404(Address, id=lead_obj.address.id) accounts = Account.objects.all() users = User.objects.filter().order_by('email') form = LeadForm(instance=lead_obj, assigned_to=users) address_form = BillingAddressForm(instance=address_obj) assignedto_list = request.POST.getlist('assigned_to') teams_list = request.POST.getlist('teams') lead_account = request.POST.get('account_name') lead_email = request.POST.get('email') lead_phone = request.POST.get('phone') teams = Team.objects.all() if request.method == 'POST': form = LeadForm(request.POST, instance=lead_obj, assigned_to=users) address_form = BillingAddressForm(request.POST, instance=address_obj) if request.POST.get('status') == "converted": form.fields['account_name'].required = True else: form.fields['account_name'].required = False if form.is_valid() and address_form.is_valid(): dis_address_obj = address_form.save() lead_obj = form.save(commit=False) lead_obj.address = dis_address_obj lead_obj.created_by = request.user lead_obj.save() lead_obj.assigned_to.clear() lead_obj.assigned_to.add(*assignedto_list) lead_obj.teams.clear() lead_obj.teams.add(*teams_list) if request.POST.get('status') == "converted": Account.objects.create( created_by=request.user, name=lead_account, email=lead_email, phone=lead_phone ) return HttpResponseRedirect(reverse('leads:list')) else: return render(request, 'leads/create_lead.html', { 'lead_obj': lead_obj, 'lead_form': form, 'address_form': address_form, 'accounts': accounts, 'countries': COUNTRIES, 'teams': teams, 'users': users, 'status': LEAD_STATUS, 'source': LEAD_SOURCE, 'assignedto_list': assignedto_list, 'teams_list': teams_list}) else: return render(request, 'leads/create_lead.html', { 'lead_form': form, 'address_form': address_form, 'lead_obj': lead_obj, 'address_obj': address_obj, 'accounts': accounts, 'countries': COUNTRIES, 'teams': teams, 'users': users, 'status': LEAD_STATUS, 'source': LEAD_SOURCE, 'assignedto_list': assignedto_list, 'teams_list': teams_list})
def lead_create_edit_view(request): #Displays a ModelForm for a Lead object; if an "instance" is passed via the url, that #instance is loaded into the ModelForm for editing instance_id = request.GET.get('instance', None) if instance_id is not None: instance = Lead.objects.get(id=instance_id) if instance.distributor != request.user.distributor: messages.add_message(request, messages.WARNING, "You are not authorized to edit that lead.") return redirect( "leads:leadlist") #named URL; make sure patterns match else: instance = None if request.method == 'POST': form = LeadForm(request.POST, instance=instance) if form.is_valid(): newlead = form.save(commit=False) newlead.distributor = request.user.distributor newlead.save() form.save_m2m() messages.add_message(request, messages.SUCCESS, "Lead saved!") return redirect(request.POST['request_url']) else: form = LeadForm(instance=instance) #pull these to main indent level so that queryset is restricted both on GET and when re-rendering #a form with errors after a bad POST form.fields[ 'invoked_email_automations'].queryset = EmailAutomation.objects.filter( distributor=request.user.distributor) form.fields[ 'invoked_post_automations'].queryset = PostAutomation.objects.filter( distributor=request.user.distributor) #http://stackoverflow.com/questions/11276100/how-do-i-insert-a-django-form-in-twitter-bootstrap-modal-window return render(request, "leads/leadform.html", { 'form': form, 'instance': instance })
def post(self, request): form = LeadForm(request.POST) if form.is_valid(): print(form.data) Lead.objects.create(name=form.cleaned_data['name'], email=form.cleaned_data['email'].lower()) return render(request, 'index.html', context={'message': 'Success!'}) else: print(form.errors) return render(request, 'index.html', context={'message': 'Data is incorrect'})
def update_lead(request, pk): lead_record = Lead.objects.filter(pk=pk).first() template_name = "create_lead.html" users = [] if request.user.role == 'ADMIN' or request.user.is_superuser: users = User.objects.filter(is_active=True).order_by('email') else: users = User.objects.filter(role='ADMIN').order_by('email') status = request.GET.get('status', None) initial = {} if status and status == "Qualified": error = "This field is required." lead_record.status = "Qualified" initial.update({ "status": status, "lead": lead_record.id}) error = "" form = LeadForm(instance=lead_record, initial=initial, assigned_to=users) if request.POST: form = LeadForm(request.POST, request.FILES, instance=lead_record, initial=initial, assigned_to=users) if request.POST.get('status') == "Qualified": form.fields['account_name'].required = True form.fields['email'].required = True else: form.fields['account_name'].required = False form.fields['email'].required = False if form.is_valid(): assigned_to_ids = lead_record.assigned_to.all().values_list( 'id', flat=True) lead_obj = form.save(commit=False) lead_obj.save() previous_assigned_to_users = list(lead_obj.assigned_to.all().values_list('id', flat=True)) lead_obj.tags.clear() all_members_list = [] if request.POST.get('tags', ''): tags = 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) lead_obj.tags.add(tag) if request.POST.getlist('assigned_to', []): if request.POST.get('status') != "Qualified": current_site = get_current_site(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(request) # recipients = all_members_list # send_email_to_assigned_user.delay(recipients, lead_obj.id, domain=current_site.domain, # protocol=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 lead.' # message = render_to_string( # 'assigned_to/leads_assigned.html', { # 'user': user, # 'domain': current_site.domain, # 'protocol': request.scheme, # 'lead': lead_obj # }) # email = EmailMessage( # mail_subject, message, to=[user.email]) # email.content_subtype = "html" # email.send() lead_obj.assigned_to.clear() lead_obj.assigned_to.add(*request.POST.getlist('assigned_to')) else: lead_obj.assigned_to.clear() if request.POST.getlist('teams', []): user_ids = Teams.objects.filter(id__in=request.POST.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 request.POST.getlist('teams', []): lead_obj.teams.clear() lead_obj.teams.add(*request.POST.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 request.POST.get('status') == "Qualified": account_object = Account.objects.create( created_by=request.user, name=lead_obj.account_name, email=lead_obj.email, phone=lead_obj.phone, description=request.POST.get('description'), website=request.POST.get('website'), lead=lead_obj ) 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 request.POST.getlist('assigned_to', []): # account_object.assigned_to.add(*request.POST.getlist('assigned_to')) assigned_to_list = request.POST.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) # current_site = get_current_site(request) # for assigned_to_user in assigned_to_list: # user = get_object_or_404(User, pk=assigned_to_user) # mail_subject = 'Assigned to account.' # message = render_to_string( # 'assigned_to/account_assigned.html', { # 'user': user, # 'domain': current_site.domain, # 'protocol': request.scheme, # 'account': account_object # }) # email = EmailMessage( # mail_subject, message, to=[user.email]) # email.content_subtype = "html" # email.send() for comment in lead_obj.leads_comments.all(): comment.account = account_object comment.save() account_object.save() status = request.GET.get('status', None) success_url = reverse('leads:list') if status: success_url = reverse('accounts:list') return JsonResponse({'error': False, 'success_url': success_url}) return JsonResponse({'error': True, 'errors': form.errors}) context = {} context["lead_obj"] = lead_record user_assgn_list = [ assigned_to.id for assigned_to in lead_record.get_assigned_users_not_in_teams] if request.user == lead_record.created_by: user_assgn_list.append(request.user.id) if request.user.role != "ADMIN" and not request.user.is_superuser: if request.user.id not in user_assgn_list: raise PermissionDenied team_ids = [user.id for user in lead_record.get_team_users] all_user_ids = [user.id for user in users] users_excluding_team_id = set(all_user_ids) - set(team_ids) users_excluding_team = User.objects.filter(id__in=users_excluding_team_id) context["lead_form"] = form context["accounts"] = Account.objects.filter(status="open") context["users"] = users context["users_excluding_team"] = users_excluding_team context["countries"] = COUNTRIES context["status"] = LEAD_STATUS context["source"] = LEAD_SOURCE context["error"] = error context["teams"] = Teams.objects.all() context["assignedto_list"] = [ int(i) for i in request.POST.getlist('assigned_to', []) if i] return render(request, template_name, context)
def create_lead(request): template_name = "create_lead.html" users = [] if request.user.role == 'ADMIN' or request.user.is_superuser: users = User.objects.filter(is_active=True).order_by('email') elif request.user.google.all(): users = [] else: users = User.objects.filter(role='ADMIN').order_by('email') form = LeadForm(assigned_to=users) if request.POST: form = LeadForm(request.POST, request.FILES, assigned_to=users) if form.is_valid(): lead_obj = form.save(commit=False) lead_obj.created_by = request.user lead_obj.save() l = Lead.objects.values_list('id',flat=True).latest('id') print("Lead:",l) if request.POST.get('tags', ''): tags = 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) lead_obj.tags.add(tag) if request.POST.getlist('assigned_to', []): lead_obj.assigned_to.add(*request.POST.getlist('assigned_to')) assigned_to_list = request.POST.getlist('assigned_to') for i in assigned_to_list: print("I:",i) print(User.objects.values_list('username',flat=True).get(id=i)) # V_user = get_object_or_404(User,pk=i) v_user=User.objects.values_list('username',flat=True).get(id=i) uname = request.user.id notifi=LeadNotification.objects.create(leadid=l,userid=i) # 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 assigned_to_user in assigned_to_list: # user = get_object_or_404(User, pk=assigned_to_user) # mail_subject = 'Assigned to lead.' # message = render_to_string( # 'assigned_to/leads_assigned.html', { # 'user': user, # 'domain': current_site.domain, # 'protocol': request.scheme, # 'lead': lead_obj # }) # email = EmailMessage( # mail_subject, message, to=[user.email]) # email.content_subtype = "html" # email.send() if request.POST.getlist('teams', []): user_ids = Teams.objects.filter(id__in=request.POST.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 request.POST.getlist('teams', []): lead_obj.teams.add(*request.POST.getlist('teams')) current_site = get_current_site(request) recipients = list(lead_obj.assigned_to.all().values_list('id', flat=True)) 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 request.POST.get('status') == "qualified": account_object = Account.objects.create( created_by=request.user, name=lead_obj.account_name, email=lead_obj.email, phone=lead_obj.phone, description=request.POST.get('description'), website=request.POST.get('website'), ) 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 request.POST.getlist('assigned_to', []): # account_object.assigned_to.add(*request.POST.getlist('assigned_to')) assigned_to_list = request.POST.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 assigned_to_user in assigned_to_list: # user = get_object_or_404(User, pk=assigned_to_user) # mail_subject = 'Assigned to account.' # message = render_to_string( # 'assigned_to/account_assigned.html', { # 'user': user, # 'domain': current_site.domain, # 'protocol': request.scheme, # 'account': account_object # }) # email = EmailMessage( # mail_subject, message, to=[user.email]) # email.content_subtype = "html" # email.send() account_object.save() # update_leads_cache.delay() success_url = reverse('leads:list') if request.POST.get("savenewform"): success_url = reverse("leads:add_lead") return JsonResponse({'error': False, 'success_url': success_url}) return JsonResponse({'error': True, 'errors': form.errors}) context = {} context["lead_form"] = form context["accounts"] = Account.objects.filter(status="open") context["users"] = users context["countries"] = COUNTRIES context["status"] = LEAD_STATUS context["source"] = LEAD_SOURCE context["teams"] = Teams.objects.all() context["assignedto_list"] = [ int(i) for i in request.POST.getlist('assigned_to', []) if i] return render(request, template_name, context)
def update_lead(request, pk): print('-- inside update lead --') lead_record = Lead.objects.filter(pk=pk).first() print('-- should make it past pk.first --') template_name = "create_lead.html" users = [] if 'ADMIN' in request.user.role or request.user.is_superuser: print('-- admin detected in lead update view --') users = User.objects.filter(is_active=True).order_by('email') elif request.user.google.all(): users = [] else: users = User.objects.filter( role__in=['ADMIN', 'MANAGER']).order_by('email') status = request.GET.get('status', None) initial = {} #if status and status == "converted": # error = "This field is required." # lead_record.status = "converted" # initial.update({ # "status": status, "lead": lead_record.id}) error = "" form = LeadForm(instance=lead_record, initial=initial, assigned_to=users) if request.POST: print('-- inside update lead post --') form = LeadForm(request.POST, request.FILES, instance=lead_record, initial=initial, assigned_to=users) print(form.errors) if form.is_valid(): #print(form) assigned_to_ids = lead_record.assigned_to.all().values_list( 'id', flat=True) lead_obj = form.save(commit=False) lead_obj.save() lead_obj.tags.clear() all_members_list = [] if request.POST.get('tags', ''): tags = request.POST.get("tags") if tags: split_tags = tags.split(",") print('-- found tags --') print(split_tags) lead_obj.tags.clear() for tag in split_tags: print('-- adding %s to Lead: %s' % (tag, lead_obj.domain.domain_common)) lead_obj.tags.add(tag) else: print('-- no tags returned. clearing ...') lead_obj.tags.clear() if request.POST.getlist('assigned_to', []): if request.POST.get('status') != "converted": current_site = get_current_site(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))) lead_obj.assigned_to.clear() lead_obj.assigned_to.add(*request.POST.getlist('assigned_to')) else: lead_obj.assigned_to.clear() status = request.GET.get('status', None) success_url = reverse('leads:list') if status: success_url = reverse('accounts:list') return JsonResponse({'error': False, 'success_url': success_url}) return JsonResponse({'error': True, 'errors': form.errors}) context = {} context["lead_obj"] = lead_record user_assgn_list = [ assigned_to.id for assigned_to in lead_record.assigned_to.all() ] #if request.user == lead_record.created_by: # user_assgn_list.append(request.user.id) if "ADMIN" not in request.user.role and not request.user.is_superuser: if request.user.id not in user_assgn_list: raise PermissionDenied context["lead_form"] = form #context["accounts"] = Account.objects.filter(status="open") context["users"] = users #context["countries"] = COUNTRIES context["status"] = LEAD_STATUS #context["source"] = LEAD_SOURCE context["error"] = error context["assignedto_list"] = [ int(i) for i in request.POST.getlist('assigned_to', []) if i ] return render(request, template_name, context)
def create_lead(request): template_name = "create_lead.html" users = [] if request.user.role == 'ADMIN' or request.user.is_superuser: users = User.objects.filter(is_active=True).order_by('email') elif request.user.google.all(): users = [] else: users = User.objects.filter(role='ADMIN').order_by('email') form = LeadForm(assigned_to=users) if request.POST: print(request.POST) cat_id = Category.objects.get(pk=request.POST.get('category')) subc_id = SubCategory.objects.get(pk=request.POST.get('sub_category')) item_id = ItemList.objects.get(pk=request.POST.get('item_list')) form = LeadForm(request.POST, request.FILES, assigned_to=users,sub_category=subc_id,item_list=item_id) if form.is_valid(): lead_obj = form.save(commit=False) lead_obj.created_by = request.user lead_obj.save() if request.POST.get('tags', ''): tags = 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) lead_obj.tags.add(tag) if request.POST.getlist('assigned_to', []): lead_obj.assigned_to.add(*request.POST.getlist('assigned_to')) assigned_to_list = request.POST.getlist('assigned_to') if request.POST.getlist('teams', []): user_ids = Teams.objects.filter(id__in=request.POST.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 request.POST.getlist('teams', []): lead_obj.teams.add(*request.POST.getlist('teams')) if request.POST.getlist('products',[]): lead_obj.products.add(*request.POST.getlist('products')) current_site = get_current_site(request) recipients = list(lead_obj.assigned_to.all().values_list('id', flat=True)) 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 request.POST.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=request.POST.get('description'), website=request.POST.get('website'), ) 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 request.POST.getlist('assigned_to', []): # account_object.assigned_to.add(*request.POST.getlist('assigned_to')) assigned_to_list = request.POST.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) account_object.save() # update_leads_cache.delay() success_url = reverse('leads:list') if request.POST.get("savenewform"): success_url = reverse("leads:add_lead") return JsonResponse({'error': False, 'success_url': success_url}) return JsonResponse({'error': True, 'errors': form.errors}) context = {} context["lead_form"] = form context["accounts"] = Account.objects.filter(status="open") context["users"] = users context["countries"] = COUNTRIES context["status"] = LEAD_STATUS context["source"] = LEAD_SOURCE context["teams"] = Teams.objects.all() context['products'] = Product.objects.all() context["assignedto_list"] = [ int(i) for i in request.POST.getlist('assigned_to', []) if i] return render(request, template_name, context)
def create_lead(request): template_name = "create_lead.html" users = User.objects.filter(is_active=True).order_by('email') form = LeadForm(assigned_to=users) if request.POST: form = LeadForm(request.POST, request.FILES, assigned_to=users) if form.is_valid(): lead_obj = form.save(commit=False) lead_obj.created_by = request.user lead_obj.save() if request.POST.get('tags', ''): tags = 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) lead_obj.tags.add(tag) if request.POST.getlist('assigned_to', []): lead_obj.assigned_to.add(*request.POST.getlist('assigned_to')) assigned_to_list = request.POST.getlist('assigned_to') current_site = get_current_site(request) for assigned_to_user in assigned_to_list: user = get_object_or_404(User, pk=assigned_to_user) mail_subject = 'Assigned to lead.' message = render_to_string( 'assigned_to/leads_assigned.html', { 'user': user, 'domain': current_site.domain, 'protocol': request.scheme, 'lead': lead_obj }) email = EmailMessage(mail_subject, message, to=[user.email]) email.content_subtype = "html" email.send() 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 request.POST.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=request.POST.get('description'), website=request.POST.get('website'), ) 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 request.POST.getlist('assigned_to', []): # account_object.assigned_to.add(*request.POST.getlist('assigned_to')) assigned_to_list = request.POST.getlist('assigned_to') current_site = get_current_site(request) for assigned_to_user in assigned_to_list: user = get_object_or_404(User, pk=assigned_to_user) mail_subject = 'Assigned to account.' message = render_to_string( 'assigned_to/account_assigned.html', { 'user': user, 'domain': current_site.domain, 'protocol': request.scheme, 'account': account_object }) email = EmailMessage(mail_subject, message, to=[user.email]) email.content_subtype = "html" email.send() account_object.save() success_url = reverse('leads:list') if request.POST.get("savenewform"): success_url = reverse("leads:add_lead") return JsonResponse({'error': False, 'success_url': success_url}) else: return JsonResponse({'error': True, 'errors': form.errors}) else: context = {} context["lead_form"] = form context["accounts"] = Account.objects.filter(status="open") context["users"] = users context["countries"] = COUNTRIES context["status"] = LEAD_STATUS context["source"] = LEAD_SOURCE context["assignedto_list"] = [ int(i) for i in request.POST.getlist('assigned_to', []) if i ] return render(request, template_name, context)