@@ -76,10 +87,11 @@
{% if accounts_list|length > 0 %}
| ID |
- Name |
+ Name |
City |
State |
Industry |
+ Tags |
Actions |
{% endif %}
@@ -97,6 +109,17 @@
{% if each_account.billing_address.city %}{{ each_account.billing_address.city }} {% else %} Not specified {% endif %} |
{% if each_account.billing_address.state %}{{ each_account.billing_address.state }} {% else %} Not specified {% endif %} |
{% if each_account.industry %}{{ each_account.industry }} {% else %} Not specified {% endif %} |
+
+ {% with tags=each_account.tags.all %}
+ {% if tags %}
+ {% for tag in tags %}
+ {{ tag.name }}
+ {% endfor %}
+ {% else %}
+ No Tags
+ {% endif %}
+ {% endwith %}
+ |
{# View #}
diff --git a/accounts/templates/create_account.html b/accounts/templates/create_account.html
index 8cddd156..8e227ea4 100644
--- a/accounts/templates/create_account.html
+++ b/accounts/templates/create_account.html
@@ -13,6 +13,12 @@
{% endblock %}
{% block content %}
+
+
+
+
+
+
|
+
+ {% with tags=lead.tags.all %}
+ {% if tags %}
+ {% for tag in tags %}
+ {{ tag.name }}
+ {% endfor %}
+ {% else %}
+ No Tags
+ {% endif %}
+ {% endwith %}
+ |
{{ lead.created_on }} |
{# #}
diff --git a/leads/views.py b/leads/views.py
index 83b11e96..45c9cfa6 100644
--- a/leads/views.py
+++ b/leads/views.py
@@ -11,7 +11,7 @@ from django.urls import reverse
from django.views.generic import (
CreateView, UpdateView, DetailView, ListView, TemplateView, View)
-from accounts.models import Account
+from accounts.models import Account, Tags
from common.forms import BillingAddressForm
from common.models import User, Comment, Team, Attachments
from common.utils import LEAD_STATUS, LEAD_SOURCE, COUNTRIES
@@ -40,6 +40,8 @@ class LeadListView(LoginRequiredMixin, TemplateView):
queryset = queryset.filter(email__icontains=request_post.get('email'))
if request_post.get('status'):
queryset = queryset.filter(status=request_post.get('status'))
+ if request_post.get('tag'):
+ queryset = queryset.filter(tags__in=request_post.get('tag'))
return queryset
def get_context_data(self, **kwargs):
@@ -47,6 +49,7 @@ class LeadListView(LoginRequiredMixin, TemplateView):
context["lead_obj"] = self.get_queryset()
context["status"] = LEAD_STATUS
context["per_page"] = self.request.POST.get('per_page')
+ context['tags'] = Tags.objects.all()
return context
def post(self, request, *args, **kwargs):
@@ -83,6 +86,16 @@ class CreateLeadView(LoginRequiredMixin, CreateView):
lead_obj.address = address_object
lead_obj.created_by = self.request.user
lead_obj.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)
+ lead_obj.tags.add(tag)
if self.request.POST.getlist('assigned_to', []):
lead_obj.assigned_to.add(*self.request.POST.getlist('assigned_to'))
assigned_to_list = self.request.POST.getlist('assigned_to')
@@ -105,9 +118,12 @@ class CreateLeadView(LoginRequiredMixin, CreateView):
created_by=self.request.user, name=lead_obj.account_name,
email=lead_obj.email, phone=lead_obj.phone,
description=self.request.POST.get('description'),
- website=self.request.POST.get('website')
+ website=self.request.POST.get('website'),
)
account_object.billing_address = address_object
+ for tag in lead_obj.tags.all():
+ account_object.tags.add(tag)
+ account_object.tags.add(address_object)
if self.request.POST.getlist('assigned_to', []):
account_object.assigned_to.add(*self.request.POST.getlist('assigned_to'))
assigned_to_list = self.request.POST.getlist('assigned_to')
@@ -238,24 +254,33 @@ class UpdateLeadView(LoginRequiredMixin, UpdateView):
return self.form_invalid(form, address_form)
def form_valid(self, form, address_form):
+ assigned_to_ids = self.get_object().assigned_to.all().values_list('id', flat=True)
address_obj = address_form.save()
lead_obj = form.save(commit=False)
- assigned_to_ids = lead_obj.assigned_to.all().values_list('id', flat=True)
lead_obj.address = address_obj
lead_obj.save()
- lead_obj.assigned_to.clear()
lead_obj.teams.clear()
+ lead_obj.tags.clear()
all_members_list = []
+ 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)
+ lead_obj.tags.add(tag)
if self.request.POST.getlist('assigned_to', []):
- lead_obj.assigned_to.add(*self.request.POST.getlist('assigned_to'))
if self.request.POST.get('status') != "converted":
- assigned_to_list = 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)))
if len(all_members_list):
- for assigned_to_user in assigned_to_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', {
@@ -266,6 +291,10 @@ class UpdateLeadView(LoginRequiredMixin, UpdateView):
})
email = EmailMessage(mail_subject, message, to=[user.email])
email.send()
+
+ lead_obj.assigned_to.clear()
+ lead_obj.assigned_to.add(*self.request.POST.getlist('assigned_to'))
+
if self.request.POST.getlist('teams', []):
lead_obj.teams.add(*self.request.POST.getlist('teams'))
if self.request.POST.get('status') == "converted":
@@ -276,6 +305,8 @@ class UpdateLeadView(LoginRequiredMixin, UpdateView):
website=self.request.POST.get('website')
)
account_object.billing_address = address_obj
+ for tag in lead_obj.tags.all():
+ account_object.tags.add(tag)
if self.request.POST.getlist('assigned_to', []):
account_object.assigned_to.add(*self.request.POST.getlist('assigned_to'))
assigned_to_list = self.request.POST.getlist('assigned_to')
@@ -389,7 +420,8 @@ class AddCommentView(LoginRequiredMixin, CreateView):
self.lead = get_object_or_404(Lead, id=request.POST.get('leadid'))
if (
request.user in self.lead.assigned_to.all() or
- request.user == self.lead.created_by
+ request.user == self.lead.created_by or request.user.is_superuser or
+ request.user.role == 'ADMIN'
):
form = self.get_form()
if form.is_valid():
@@ -476,7 +508,8 @@ class AddAttachmentsView(LoginRequiredMixin, CreateView):
self.lead = get_object_or_404(Lead, id=request.POST.get('leadid'))
if (
request.user in self.lead.assigned_to.all() or
- request.user == self.lead.created_by
+ request.user == self.lead.created_by or request.user.is_superuser or
+ request.user.role == 'ADMIN'
):
form = self.get_form()
if form.is_valid():
@@ -509,7 +542,8 @@ class DeleteAttachmentsView(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
self.object = get_object_or_404(Attachments, id=request.POST.get("attachment_id"))
- if request.user == self.object.created_by:
+ if (request.user == self.object.created_by or request.user.is_superuser or
+ request.user.role == 'ADMIN'):
self.object.delete()
data = {"aid": request.POST.get("attachment_id")}
return JsonResponse(data)
diff --git a/opportunity/templates/create_opportunity.html b/opportunity/templates/create_opportunity.html
index 23db1994..e5729336 100644
--- a/opportunity/templates/create_opportunity.html
+++ b/opportunity/templates/create_opportunity.html
@@ -32,7 +32,7 @@
diff --git a/opportunity/views.py b/opportunity/views.py
index b84d9c52..2bf1fb30 100644
--- a/opportunity/views.py
+++ b/opportunity/views.py
@@ -185,24 +185,22 @@ class UpdateOpportunityView(LoginRequiredMixin, UpdateView):
return self.form_invalid(form)
def form_valid(self, form):
+ assigned_to_ids = self.get_object().assigned_to.all().values_list('id', flat=True)
opportunity_obj = form.save(commit=False)
if self.request.POST.get('stage') in ['CLOSED WON', 'CLOSED LOST']:
opportunity_obj.closed_by = self.request.user
opportunity_obj.save()
- assigned_to_ids = opportunity_obj.assigned_to.all().values_list('id', flat=True)
- opportunity_obj.assigned_to.clear()
opportunity_obj.teams.clear()
opportunity_obj.contacts.clear()
all_members_list = []
if self.request.POST.getlist('assigned_to', []):
- opportunity_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)
+ print(assigned_to_ids, 'aasiigned to ids')
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)))
if len(all_members_list):
- for assigned_to_user in assigned_to_list:
+ for assigned_to_user in all_members_list:
user = get_object_or_404(User, pk=assigned_to_user)
mail_subject = 'Assigned to opportunity.'
message = render_to_string('assigned_to/opportunity_assigned.html', {
@@ -213,6 +211,10 @@ class UpdateOpportunityView(LoginRequiredMixin, UpdateView):
})
email = EmailMessage(mail_subject, message, to=[user.email])
email.send()
+
+ opportunity_obj.assigned_to.clear()
+ opportunity_obj.assigned_to.add(*self.request.POST.getlist('assigned_to'))
+
if self.request.POST.getlist('teams', []):
opportunity_obj.teams.add(*self.request.POST.getlist('teams'))
if self.request.POST.getlist('contacts', []):
@@ -283,7 +285,8 @@ class AddCommentView(LoginRequiredMixin, CreateView):
self.opportunity = get_object_or_404(Opportunity, id=request.POST.get('opportunityid'))
if (
request.user in self.opportunity.assigned_to.all() or
- request.user == self.opportunity.created_by
+ request.user == self.opportunity.created_by or request.user.is_superuser or
+ request.user.role == 'ADMIN'
):
form = self.get_form()
if form.is_valid():
@@ -370,7 +373,8 @@ class AddAttachmentsView(LoginRequiredMixin, CreateView):
self.opportunity = get_object_or_404(Opportunity, id=request.POST.get('opportunityid'))
if (
request.user in self.opportunity.assigned_to.all() or
- request.user == self.opportunity.created_by
+ request.user == self.opportunity.created_by or request.user.is_superuser or
+ request.user.role == 'ADMIN'
):
form = self.get_form()
if form.is_valid():
@@ -403,7 +407,8 @@ class DeleteAttachmentsView(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
self.object = get_object_or_404(Attachments, id=request.POST.get("attachment_id"))
- if request.user == self.object.created_by:
+ if (request.user == self.object.created_by or request.user.is_superuser or
+ request.user.role == 'ADMIN'):
self.object.delete()
data = {"aid": request.POST.get("attachment_id")}
return JsonResponse(data)
diff --git a/static/css/main.scss b/static/css/main.scss
index e38684c1..8a73e66d 100644
--- a/static/css/main.scss
+++ b/static/css/main.scss
@@ -806,3 +806,14 @@ padding:0px !important;
padding:3px 10px;
border-radius: 3px;
}
+
+#list_tag{
+ background: #e5e5e5;
+ color: #000;
+ font-weight: 500;
+ padding: 1px 5px;
+ margin-right: 5px;
+ font-size: 0.9rem;
+ display: inline-block;
+ margin-bottom: 5px;
+}
\ No newline at end of file
diff --git a/templates/new_user.html b/templates/new_user.html
new file mode 100644
index 00000000..69f27abe
--- /dev/null
+++ b/templates/new_user.html
@@ -0,0 +1,3 @@
+hello {{user.email}},
+
+ Your account has been successfully created in Django CRM by {{created_by.email}}
\ No newline at end of file
|