diff --git a/accounts/templates/create_account.html b/accounts/templates/create_account.html
index b32a0da4..eeb473cd 100644
--- a/accounts/templates/create_account.html
+++ b/accounts/templates/create_account.html
@@ -148,11 +148,13 @@
Attachment
{% if account_obj.account_attachment.count %}
- {% for i in account_obj.account_attachment.all %}
-
- {{ i.file_name }}
- X
-
+ {% for attachment in account_obj.account_attachment.all %}
+
+
{{ attachment.file_name }}
+ {% if not attachment.created_by.role == 'ADMIN' or attachment.created_by.role == request.user.role %}
+
X
+ {% endif %}
+
{% endfor %}
{% endif %}
@@ -284,4 +286,4 @@
}
});
-{% endblock js_block %}
+{% endblock js_block %}
\ No newline at end of file
diff --git a/accounts/views.py b/accounts/views.py
index 483a8490..408b2337 100644
--- a/accounts/views.py
+++ b/accounts/views.py
@@ -57,7 +57,8 @@ class AccountsListView(LoginRequiredMixin, TemplateView):
context['close_accounts'] = close_accounts
context["industries"] = INDCHOICES
context["per_page"] = self.request.POST.get('per_page')
- context["tags"] = Tags.objects.all()
+ tag_ids = list(set(Account.objects.values_list('tags', flat=True)))
+ context["tags"] = Tags.objects.filter(id__in=tag_ids)
search = False
if (
diff --git a/cases/templates/create_cases.html b/cases/templates/create_cases.html
index a66f574e..448f7c2d 100644
--- a/cases/templates/create_cases.html
+++ b/cases/templates/create_cases.html
@@ -26,28 +26,28 @@
Name{% if case_form.name.field.required %}* {% endif %}
{{ case_form.name }}
- {{ case_form.name.errors }}
+ {{ case_form.name.errors }}
Status{% if case_form.status.field.required %}* {% endif %}
{{ case_form.status }}
- {{ case_form.status.errors }}
+ {{ case_form.status.errors }}
Priority{% if case_form.priority.field.required %}* {% endif %}
{{ case_form.priority }}
- {{ case_form.priority.errors }}
+ {{ case_form.priority.errors }}
Type of Case{% if case_form.case_type.field.required %}* {% endif %}
{{ case_form.case_type }}
- {{ case_form.case_type.errors }}
+ {{ case_form.case_type.errors }}
@@ -61,7 +61,7 @@
- {{ case_form.closed_on.errors }}
+ {{ case_form.closed_on.errors }}
@@ -72,7 +72,7 @@
{{user.email}}
{% endfor %}
- {{ case_form.assigned_to.errors }}
+ {{ case_form.assigned_to.errors }}
@@ -85,22 +85,24 @@
{% else %}
{{case_form.account}}
{% endif %}
- {{case_form.account.errors}}
+ {{case_form.account.errors}}
@@ -109,14 +111,14 @@
Contacts{% if case_form.contacts.field.required %}* {% endif %}
{{ case_form.contacts }}
- {{case_form.contacts.errors}}
+ {{case_form.contacts.errors}}
Description{% if case_form.description.field.required %}* {% endif %}
{{ case_form.description }}
- {{ case_form.description.errors }}
+ {{ case_form.description.errors }}
@@ -127,7 +129,7 @@
- Save
+ Save
{% if not case_obj %}
Save & New
{% endif %}
@@ -141,10 +143,77 @@
+
{% endblock %}
{% block js_block %}
+
-
-{% endblock js_block %}
-
+{% endblock js_block %}
\ No newline at end of file
diff --git a/common/templates/list.html b/common/templates/list.html
index 18de8c48..3181e6dd 100644
--- a/common/templates/list.html
+++ b/common/templates/list.html
@@ -87,7 +87,7 @@
Edit
{% endif %}
Delete
- {% if user.email != admin_email or request.user != user %}
+ {% if user.email != admin_email and request.user != user %}
{% endif %}
diff --git a/common/templates/settings/create.html b/common/templates/settings/create.html
index 58291aac..281583d8 100644
--- a/common/templates/settings/create.html
+++ b/common/templates/settings/create.html
@@ -91,14 +91,14 @@
e.preventDefault();
$form = $(this)
$.post("", $form.serialize(), function(response){
- $(".error").remove();
+ $(".error_message").remove();
if(response.error){
$.each(response.errors, function(field_name, error){
if (field_name == '__all__'){
- error = "
" + error + " "
+ error = "
" + error + " "
$("span.__all__").after(error)
}else{
- error = "
" + error + " "
+ error = "
" + error + " "
$form.find("[name="+field_name + "]").after(error)
}
})
@@ -148,4 +148,3 @@
{% endblock js_block %}
-
diff --git a/common/templates/settings/list.html b/common/templates/settings/list.html
index 33dff112..ce5307ae 100644
--- a/common/templates/settings/list.html
+++ b/common/templates/settings/list.html
@@ -85,5 +85,4 @@
window.location = $(this).attr('href')
});
-{% endblock js_block %}
-
+{% endblock js_block %}
\ No newline at end of file
diff --git a/common/templates/settings/update.html b/common/templates/settings/update.html
index ab1e6253..e0d9424c 100644
--- a/common/templates/settings/update.html
+++ b/common/templates/settings/update.html
@@ -91,14 +91,14 @@
e.preventDefault();
$form = $(this)
$.post("", $form.serialize(), function(response){
- $(".error").remove();
+ $(".error_message").remove();
if(response.error){
$.each(response.errors, function(field_name, error){
if (field_name == '__all__'){
- error = "
" + error + " "
+ error = "
" + error + " "
$("span.__all__").after(error)
}else{
- error = "
" + error + " "
+ error = "
" + error + " "
$form.find("[name="+field_name + "]").after(error)
}
})
diff --git a/common/urls.py b/common/urls.py
index 107344e9..17e3386b 100644
--- a/common/urls.py
+++ b/common/urls.py
@@ -4,7 +4,7 @@ from django.urls import path
from common.views import (
HomeView, LoginView, ForgotPasswordView, LogoutView, ChangePasswordView, ProfileView,
UsersListView, CreateUserView, UpdateUserView, UserDetailView, UserDeleteView, PasswordResetView,
- DocumentListView, DocumentCreateView, UpdateDocumentView, DocumentDetailView, DocumentDeleteView,
+ DocumentListView, document_create, document_update, DocumentDetailView, DocumentDeleteView,
download_document, change_user_status, download_attachment, add_comment, edit_comment, remove_comment,
api_settings, add_api_settings, view_api_settings, update_api_settings, delete_api_settings,
change_passsword_by_admin, google_login
@@ -42,8 +42,8 @@ urlpatterns = [
# Document
path('documents/list/', DocumentListView.as_view(), name='doc_list'),
- path('documents/create/', DocumentCreateView.as_view(), name='create_doc'),
- path('documents/
/edit/', UpdateDocumentView.as_view(), name="edit_doc"),
+ path('documents/create/', document_create, name='create_doc'),
+ path('documents//edit/', document_update, name="edit_doc"),
path('documents//view/', DocumentDetailView.as_view(), name='view_doc'),
path('documents//delete/',
DocumentDeleteView.as_view(), name='remove_doc'),
diff --git a/common/views.py b/common/views.py
index 0b3cf7d1..6862f7bb 100644
--- a/common/views.py
+++ b/common/views.py
@@ -168,8 +168,9 @@ class LoginView(TemplateView):
"ENABLE_GOOGLE_LOGIN": settings.ENABLE_GOOGLE_LOGIN,
"GP_CLIENT_SECRET": settings.GP_CLIENT_SECRET,
"GP_CLIENT_ID": settings.GP_CLIENT_ID,
- "error": True,
- "message": "Your username and password didn't match. Please try again."
+ # "error": True,
+ # "message": "Your username and password didn't match. Please try again."
+ "form": form
})
@@ -332,48 +333,33 @@ class PasswordResetView(PasswordResetView):
email_template_name = 'registration/password_reset_email.html'
-class DocumentCreateView(LoginRequiredMixin, CreateView):
- model = Document
- form_class = DocumentForm
+def document_create(request):
template_name = "doc_create.html"
- def dispatch(self, request, *args, **kwargs):
- self.users = User.objects.filter(is_active=True).order_by('email')
- return super(DocumentCreateView, self).dispatch(request, *args, **kwargs)
-
- def get_form_kwargs(self):
- kwargs = super(DocumentCreateView, self).get_form_kwargs()
- kwargs.update({'users': self.users})
- return kwargs
-
- def form_valid(self, form):
- doc = form.save(commit=False)
- doc.created_by = self.request.user
- doc.save()
- if self.request.POST.getlist('shared_to'):
- doc.shared_to.add(*self.request.POST.getlist('shared_to'))
-
- if self.request.is_ajax():
+ users = User.objects.filter(is_active=True).order_by('email')
+ form = DocumentForm(users=users)
+ if request.POST:
+ form = DocumentForm(request.POST, request.FILES, users=users)
+ if form.is_valid():
+ doc = form.save(commit=False)
+ doc.created_by = request.user
+ doc.save()
+ if request.POST.getlist('shared_to'):
+ doc.shared_to.add(*request.POST.getlist('shared_to'))
data = {'success_url': reverse_lazy(
'common:doc_list'), 'error': False}
return JsonResponse(data)
- return super(DocumentCreateView, self).form_valid(form)
- def form_invalid(self, form):
- response = super(DocumentCreateView, self).form_invalid(form)
- if self.request.is_ajax():
+ else:
return JsonResponse({'error': True, 'errors': form.errors})
- return response
-
- def get_context_data(self, **kwargs):
- context = super(DocumentCreateView, self).get_context_data(**kwargs)
- context["doc_form"] = context["form"]
- context["users"] = self.users
+ else:
+ context = {}
+ context["doc_form"] = form
+ context["users"] = users
context["sharedto_list"] = [
- int(i) for i in self.request.POST.getlist('assigned_to', []) if i]
- if "errors" in kwargs:
- context["errors"] = kwargs["errors"]
- return context
+ int(i) for i in request.POST.getlist('assigned_to', []) if i]
+ context["errors"] = form.errors
+ return render(request, template_name, context)
class DocumentListView(LoginRequiredMixin, TemplateView):
@@ -446,6 +432,42 @@ class DocumentDeleteView(LoginRequiredMixin, DeleteView):
return redirect("common:doc_list")
+def document_update(request, pk):
+ template_name = "doc_create.html"
+ users = User.objects.filter(is_active=True).order_by('email')
+ form = DocumentForm(users=users)
+ document = Document.objects.filter(id=pk).first()
+
+ if request.POST:
+ form = DocumentForm(request.POST, request.FILES, instance=document, users=users)
+ if form.is_valid():
+ doc = form.save(commit=False)
+ doc.save()
+
+ doc.shared_to.clear()
+ if request.POST.getlist('shared_to'):
+ doc.shared_to.add(*request.POST.getlist('shared_to'))
+
+ data = {'success_url': reverse_lazy(
+ 'common:doc_list'), 'error': False}
+ return JsonResponse(data)
+
+ else:
+ return JsonResponse({'error': True, 'errors': form.errors})
+
+ else:
+ context = {}
+ context["doc_obj"] = document
+ context["doc_form"] = form
+ context["doc_file_name"] = context["doc_obj"].document_file.name.split(
+ "/")[-1]
+ context["users"] = users
+ context["sharedto_list"] = [
+ int(i) for i in request.POST.getlist('shared_to', []) if i]
+ context["errors"] = form.errors
+ return render(request, template_name, context)
+
+
class UpdateDocumentView(LoginRequiredMixin, UpdateView):
model = Document
form_class = DocumentForm
@@ -524,7 +546,7 @@ def download_document(request, pk):
if doc_obj:
if not request.user.role == 'ADMIN':
if (not request.user == doc_obj.created_by and
- request.user not in doc_obj.shared_to.all()):
+ request.user not in doc_obj.shared_to.all()):
raise PermissionDenied
path = doc_obj.document_file.path
file_path = os.path.join(settings.MEDIA_ROOT, path)
@@ -698,7 +720,7 @@ def update_api_settings(request, pk):
else:
data = {
'form': form, "setting": api_settings, 'users': users, 'assign_to_list': assign_to_list,
- 'assigned_to_list': json.dumps([i.id for i in api_settings.lead_assigned_to.all() if i])
+ 'assigned_to_list': json.dumps([setting.id for setting in api_settings.lead_assigned_to.all() if setting])
}
return render(request, 'settings/update.html', data)
@@ -759,11 +781,16 @@ def google_login(request):
link = user_document['link'] if 'link' in user_document.keys(
) else link
- verified_email = user_document['verified_email'] if 'verified_email' in user_document.keys() else ''
- name = user_document['name'] if 'name' in user_document.keys() else 'name'
- first_name = user_document['given_name'] if 'given_name' in user_document.keys() else 'first_name'
- last_name = user_document['family_name'] if 'family_name' in user_document.keys() else 'last_name'
- email = user_document['email'] if 'email' in user_document.keys() else 'email@dummy.com'
+ verified_email = user_document['verified_email'] if 'verified_email' in user_document.keys(
+ ) else ''
+ name = user_document['name'] if 'name' in user_document.keys(
+ ) else 'name'
+ first_name = user_document['given_name'] if 'given_name' in user_document.keys(
+ ) else 'first_name'
+ last_name = user_document['family_name'] if 'family_name' in user_document.keys(
+ ) else 'last_name'
+ email = user_document['email'] if 'email' in user_document.keys(
+ ) else 'email@dummy.com'
user = User.objects.filter(email=user_document['email'])
@@ -777,7 +804,7 @@ def google_login(request):
email=email,
first_name=first_name,
last_name=last_name,
- role="User"
+ role="USER"
)
google, created = Google.objects.get_or_create(user=user)
diff --git a/contacts/templates/create_contact.html b/contacts/templates/create_contact.html
index cbaf44f0..f48236b1 100644
--- a/contacts/templates/create_contact.html
+++ b/contacts/templates/create_contact.html
@@ -107,11 +107,13 @@
Attachment
{% if contact_obj.contact_attachment.count %}
- {% for i in contact_obj.contact_attachment.all %}
-
- {{i.file_name}}
- X
-
+ {% for attachment in contact_obj.contact_attachment.all %}
+
+
{{ attachment.file_name }}
+ {% if not attachment.created_by.role == 'ADMIN' or attachment.created_by.role == request.user.role %}
+
X
+ {% endif %}
+
{% endfor %}
{% endif %}
diff --git a/contacts/views.py b/contacts/views.py
index 40d595bd..0444528e 100644
--- a/contacts/views.py
+++ b/contacts/views.py
@@ -176,7 +176,7 @@ class ContactDetailView(LoginRequiredMixin, DetailView):
def get_context_data(self, **kwargs):
context = super(ContactDetailView, self).get_context_data(**kwargs)
- user_assgn_list = [i.id for i in context['object'].assigned_to.all()]
+ user_assgn_list = [assigned_to.id for assigned_to in context['object'].assigned_to.all()]
if self.request.user == context['object'].created_by:
user_assgn_list.append(self.request.user.id)
if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
@@ -285,7 +285,7 @@ class UpdateContactView(LoginRequiredMixin, UpdateView):
context = super(UpdateContactView, self).get_context_data(**kwargs)
context["contact_obj"] = self.object
user_assgn_list = [
- i.id for i in context["contact_obj"].assigned_to.all()]
+ assigned_to.id for assigned_to in context["contact_obj"].assigned_to.all()]
if self.request.user == context['contact_obj'].created_by:
user_assgn_list.append(self.request.user.id)
if self.request.user.role != "ADMIN" and not self.request.user.is_superuser:
@@ -477,4 +477,3 @@ class DeleteAttachmentsView(LoginRequiredMixin, View):
data = {'error': "You don't have permission to delete this attachment."}
return JsonResponse(data)
-
diff --git a/leads/templates/create_lead.html b/leads/templates/create_lead.html
index 3909c670..580da1f2 100644
--- a/leads/templates/create_lead.html
+++ b/leads/templates/create_lead.html
@@ -13,12 +13,9 @@
{% endblock %}
{%block content%}
-
-
-
-
Phone{% if lead_form.phone.field.required %}* {% endif %}
{{ lead_form.phone }}
- {{ lead_form.phone.errors }}
+ {{ lead_form.phone.errors }}
Email Address{% if lead_form.email.field.required %}* {% endif %}
{{ lead_form.email }}
- {{ lead_form.email.errors }}
+ {{ lead_form.email.errors }}
{% if error %}
- {{ error }}
+ {{ error }}
{% endif %}
@@ -82,13 +79,15 @@
Description{% if lead_form.description.field.required %}* {% endif %}
{{ lead_form.description }}
- {{ lead_form.description.errors }}
+ {{ lead_form.description.errors }}
@@ -119,14 +118,14 @@
{{user.email}}
{% endfor %}
-
{{ lead_form.assigned_to.errors }}
+
{{ lead_form.assigned_to.errors }}
Status{% if lead_form.status.field.required %}* {% endif %}
{{ lead_form.status }}
- {{ lead_form.status.errors }}
+ {{ lead_form.status.errors }}
@@ -135,34 +134,34 @@
Source{% if lead_form.source.field.required %}* {% endif %}
{{ lead_form.source }}
- {{ lead_form.source.errors }}
+ {{ lead_form.source.errors }}
Address
{{ lead_form.address_line }}
- {{ lead_form.address_line.errors }}
+ {{ lead_form.address_line.errors }}
{{ lead_form.street }}
-
{{ lead_form.street.errors }}
+
{{ lead_form.street.errors }}
{{ lead_form.city }}
- {{ lead_form.city.errors }}
+ {{ lead_form.city.errors }}
{{ lead_form.state }}
- {{ lead_form.state.errors }}
+ {{ lead_form.state.errors }}
{{ lead_form.postcode }}
- {{ lead_form.postcode.errors }}
+ {{ lead_form.postcode.errors }}
{{ lead_form.country }}
- {{ lead_form.country.errors }}
+ {{ lead_form.country.errors }}
@@ -177,7 +176,7 @@
- Save
+ Save
{% if not lead_obj %}
Save & New
{% endif %}
@@ -191,16 +190,84 @@
+
{% endblock %}
{% block js_block %}
+
+
-
+
-
Probability %{% if opportunity_form.probability.field.required %}* {% endif %}
{{ opportunity_form.probability }}
- {{opportunity_form.probability.errors}}
+ {{opportunity_form.probability.errors}}
@@ -99,7 +97,7 @@
Contacts{% if opportunity_form.contacts.field.required %}* {% endif %}
{{ opportunity_form.contacts }}
- {{opportunity_form.contacts.errors}}
+ {{opportunity_form.contacts.errors}}
@@ -111,7 +109,7 @@
- {{opportunity_form.closed_on.errors}}
+ {{opportunity_form.closed_on.errors}}
@@ -126,18 +124,20 @@
Description{% if opportunity_form.description.field.required %}* {% endif %}
{{ opportunity_form.description }}
- {{opportunity_form.description.errors}}
+ {{opportunity_form.description.errors}}
- Save
+ Save
{% if not opportunity_obj %}
Save & New
{% endif %}
@@ -164,12 +164,77 @@
+
{% endblock %}
{% block js_block %}
-
+
+