From f890269902afb2def71954678def061a4848b660 Mon Sep 17 00:00:00 2001 From: Ashwin Date: Tue, 20 Mar 2018 21:43:00 +0530 Subject: [PATCH 1/2] added user management --- common/forms.py | 47 +- common/models.py | 2 + common/urls.py | 5 + common/views.py | 70 ++- opportunity/apps.py | 4 +- opportunity/tests.py | 4 +- opportunity/urls.py | 2 +- static/css/main.css | 857 +++++++++++------------------------- templates/nav_menu.html | 96 ++-- templates/users/create.html | 68 +++ templates/users/list.html | 111 +++++ 11 files changed, 597 insertions(+), 669 deletions(-) create mode 100644 templates/users/create.html create mode 100644 templates/users/list.html diff --git a/common/forms.py b/common/forms.py index e5c75adb..a6f0edf7 100644 --- a/common/forms.py +++ b/common/forms.py @@ -1,5 +1,5 @@ from django import forms -from common.models import Address +from common.models import Address, User class BillingAddressForm(forms.ModelForm): @@ -44,4 +44,47 @@ class ShippingAddressForm(forms.ModelForm): 'placeholder': 'State'}) self.fields['postcode'].widget.attrs.update({ 'placeholder': 'Postcode'}) - self.fields["country"].choices = [("", "--Country--"), ] + list(self.fields["country"].choices)[1:] \ No newline at end of file + self.fields["country"].choices = [("", "--Country--"), ] + list(self.fields["country"].choices)[1:] + + +class UserForm(forms.ModelForm): + + password = forms.CharField(max_length=100, required=False) + + class Meta: + model = User + fields = ['email', 'first_name', 'last_name', 'username'] + + def __init__(self, *args, **kwargs): + super(UserForm, self).__init__(*args, **kwargs) + + self.fields['first_name'].required = True + self.fields['username'].required = True + self.fields['email'].required = True + + if not self.instance.pk: + self.fields['password'].required = True + + def clean_password(self): + password = self.cleaned_data.get('password') + if password: + if len(password) < 4: + raise forms.ValidationError( + 'Password must be at least 4 characters long!') + return password + + def clean_email(self): + email = self.cleaned_data.get("email") + if self.instance.id: + if self.instance.email != email: + if not User.objects.filter(email=self.cleaned_data.get("email")).exists(): + return self.cleaned_data.get("email") + else: + raise forms.ValidationError('Email already exists') + else: + return self.cleaned_data.get("email") + else: + if not User.objects.filter(email=self.cleaned_data.get("email")).exists(): + return self.cleaned_data.get("email") + else: + raise forms.ValidationError('User already exists with this email') \ No newline at end of file diff --git a/common/models.py b/common/models.py index ce4d7e82..8a40fec1 100644 --- a/common/models.py +++ b/common/models.py @@ -7,6 +7,8 @@ from common.utils import COUNTRIES class User(AbstractBaseUser, PermissionsMixin): username = models.CharField(max_length=100, unique=True) + first_name = models.CharField(max_length=150, blank=True) + last_name = models.CharField(max_length=150, blank=True) email = models.EmailField(max_length=255, unique=True) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) diff --git a/common/urls.py b/common/urls.py index 8eed257f..32984370 100644 --- a/common/urls.py +++ b/common/urls.py @@ -8,4 +8,9 @@ app_name = 'common' urlpatterns = [ url(r'^$', views.home, name="home"), url(r'^login/$', views.login_crm, name="home"), + url(r'^users/list$', views.users_list, name="users_list"), + url(r'^users/create$', views.create_user, name="create_user"), + url(r'^user/(?P\d*)/view/$', views.view_user, name="view_user"), + url(r'^user/(?P\d*)/edit/$', views.edit_user, name="edit_user"), + url(r'^user/(?P\d*)/delete/$', views.remove_user, name="remove_user"), ] diff --git a/common/views.py b/common/views.py index 9f93da9b..efe8a4ff 100644 --- a/common/views.py +++ b/common/views.py @@ -1,9 +1,11 @@ -from django.shortcuts import render +from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.decorators import login_required from django.views.decorators.csrf import csrf_exempt -from django.http import HttpResponseRedirect +from django.http import HttpResponseRedirect, JsonResponse from django.contrib.auth import logout, authenticate, login +from common.models import User +from common.forms import UserForm #@login_required @@ -25,3 +27,67 @@ def login_crm(request): else: return HttpResponseRedirect('/') return render(request, 'login.html') + + +@csrf_exempt +def users_list(request): + users_list = User.objects.all() + active_users = User.objects.filter(is_active=True) + inactive_users = User.objects.filter(is_active=False) + return render(request, "users/list.html", { + 'users': users_list, 'active_users': active_users, 'inactive_users': inactive_users + }) + + +@csrf_exempt +@login_required +def create_user(request): + user_form = UserForm() + users_list = User.objects.all() + print(users_list) + if request.method == 'POST': + user_form = UserForm(request.POST) + if user_form.is_valid(): + user = user_form.save(commit=False) + if request.POST.get("password"): + user.set_password(request.POST.get("password")) + user.save() + return redirect("common:users_list") + else: + return render(request, 'users/create.html', {'user_form': user_form, "errors": user_form.errors}) + else: + return render(request, 'users/create.html', {'user_form': user_form}) + + +@csrf_exempt +def view_user(request, user_id): + users_list = User.objects.all() + user_obj = User.objects.filter(id=user_id) + active_users = User.objects.filter(is_active=True) + inactive_users = User.objects.filter(is_active=False) + return render(request, "users/list.html", { + 'users': users_list, 'user_obj': user_obj, + 'active_users': active_users, 'inactive_users': inactive_users + }) + + +@csrf_exempt +def edit_user(request, user_id): + user_obj = get_object_or_404(User, id=user_id) + user_form = UserForm(instance=user_obj) + if request.method == 'POST': + user_form = UserForm(request.POST, instance=user_obj) + if user_form.is_valid(): + user_form.save() + return redirect("common:users_list") + else: + return render(request, 'users/create.html', {'user_form': user_form, "errors": user_form.errors}) + else: + return render(request, 'users/create.html', {'user_form': user_form, 'user_obj': user_obj}) + + +@csrf_exempt +def remove_user(request, user_id): + user_obj = get_object_or_404(User, id=user_id) + user_obj.delete() + return redirect("common:users_list") diff --git a/opportunity/apps.py b/opportunity/apps.py index 87b19163..167fd619 100644 --- a/opportunity/apps.py +++ b/opportunity/apps.py @@ -1,5 +1,5 @@ from django.apps import AppConfig -class OppurtunityConfig(AppConfig): - name = 'oppurtunity' +class OpportunityConfig(AppConfig): + name = 'opportunity' diff --git a/opportunity/tests.py b/opportunity/tests.py index 297389ce..6269bdd9 100644 --- a/opportunity/tests.py +++ b/opportunity/tests.py @@ -1,5 +1,5 @@ from django.test import TestCase -from oppurtunity.models import Opportunity +from opportunity.models import Opportunity from common.models import Address from accounts.models import Account from contacts.models import Contact @@ -53,7 +53,7 @@ class opportunityCreateTestCase(OpportunityModel, TestCase): self.assertEqual(self.opportunity.id, 1) def test_view_opportunity(self): - self.oppurtunity = Opportunity.objects.all() + self.opportunity = Opportunity.objects.all() response = self.client.get('/oppurtunities/1/view/') self.assertEqual(response.status_code, 200) self.assertEqual(response.context['opp'].id, self.opportunity.id) diff --git a/opportunity/urls.py b/opportunity/urls.py index a4a9b19e..dfa78a2a 100644 --- a/opportunity/urls.py +++ b/opportunity/urls.py @@ -1,7 +1,7 @@ from django.conf.urls import url from opportunity import views -app_name = 'oppurtunity' +app_name = 'opportunity' urlpatterns = [ diff --git a/static/css/main.css b/static/css/main.css index 470be0aa..5ce8a26d 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -1,70 +1,48 @@ body { - font-family: Poppins, sans-serif; - padding: 0; - font-size: 12px; - font-weight: 500; - margin: 0; - padding-top: 60px; -} + font-family: Poppins, sans-serif; + padding: 0; + font-size: 12px; + font-weight: 500; + margin: 0; + padding-top: 60px; } .login_register_body { - background: #808080; -} + background: #808080; } .marl { - margin-left: 0; - margin-right: 0; -} - -.input-focus { - border-color: red -} + margin-left: 0; + margin-right: 0; } .login_block { - margin-top: 75px; - background: #fff; - -webkit-box-shadow: 10px 10px 0px -4px rgba(0, 0, 0, 0.19); - -moz-box-shadow: 10px 10px 0px -4px rgba(0, 0, 0, 0.19); - box-shadow: 10px 10px 0px -4px rgba(0, 0, 0, 0.19); -} - -.login_block .welcome { + margin-top: 75px; + background: #fff; + -webkit-box-shadow: 10px 10px 0px -4px rgba(0, 0, 0, 0.19); + -moz-box-shadow: 10px 10px 0px -4px rgba(0, 0, 0, 0.19); + box-shadow: 10px 10px 0px -4px rgba(0, 0, 0, 0.19); } + .login_block .welcome { text-transform: uppercase; font-size: 14px; font-weight: 600; letter-spacing: 1px; - color: #333; -} - -.login_block .welcome span { - color: #00e5ff; -} - -.login_block .welcome span.create_head { - color: #7eea51; -} + color: #333; } + .login_block .welcome span { + color: #00e5ff; } + .login_block .welcome span.create_head { + color: #7eea51; } .login_form_block { - margin-top: 30px; - padding: 50px 15px; -} - -.login_form_block .welcome { + margin-top: 30px; + padding: 50px 15px; } + .login_form_block .welcome { margin-bottom: 20px; - text-align: center; -} - -.login_form_block .form-group { - margin-bottom: 15px; -} - -.login_form_block label { + text-align: center; } + .login_form_block .form-group { + margin-bottom: 15px; } + .login_form_block label { font-size: 12px; color: #595f75; - font-weight: 500; -} - -.login_form_block .form-control { + font-weight: 500; } + .login_form_block .form-control { background: #dcdcdc; color: #5a6e79; min-height: 40px; @@ -72,10 +50,8 @@ body { letter-spacing: 0.5px; box-shadow: none; border: none; - border-radius: 3px; -} - -.login_form_block .btn { + border-radius: 3px; } + .login_form_block .btn { background: #ed6364; border-radius: 3px; border: none; @@ -86,489 +62,321 @@ body { color: #fff; width: 100%; outline: none; - padding: 10px 20px; -} - -.login_form_block .btn:hover { - text-decoration: none; -} - -.login_form_block .checkbox { - text-align: center; -} - -.login_form_block .checkbox input[type=checkbox] { - vertical-align: middle; - margin: 0; - margin-top: 1px; - margin-left: -19px; -} + padding: 10px 20px; } + .login_form_block .btn:hover { + text-decoration: none; } + .login_form_block .checkbox { + text-align: center; } + .login_form_block .checkbox input[type=checkbox] { + vertical-align: middle; + margin: 0; + margin-top: 1px; + margin-left: -19px; } /* inner_pages starts here */ .main_body_bg_color { - background: #CDCDCD; -} + background: #CDCDCD; } header .navbar-default { - background: #39464d; - border: none; -} - -header .navbar-default .navbar-brand { - color: #ed6364; -} - -header .navbar-default .navbar-brand:hover { - color: #ed6364; -} - -header .navbar-default .navbar-nav > li > a { + background: #39464d; + border: none; } + header .navbar-default .navbar-brand { + color: #ed6364; } + header .navbar-default .navbar-brand:hover { + color: #ed6364; } + header .navbar-default .navbar-nav > li > a { color: #aaa; font-weight: 500; font-size: 12px; - padding: 15px 10px; -} - -header .navbar-default .navbar-nav > li > a:hover { - color: #ddd; -} - -header .navbar-default .navbar-nav > .open > a { - background: #ed6364 !important; -} - -header .navbar-default .navbar-nav li .dropdown-menu li a { - font-size: 12px; -} - -header .navbar-default .navbar-nav.navbar-right .dropdown > a { - padding: 15px 10px; -} - -.leadviewactions { - display: inline-block; -} - -header .navbar-default .navbar-nav > li > a:hover { - color: #ddd; -} - -header .navbar-default .navbar-nav > .open > a { - background: #ed6364 !important; -} - -header .navbar-default .navbar-nav li .dropdown-menu li a { - font-size: 12px; -} - -header .navbar-default .navbar-nav.navbar-right .dropdown > a { + padding: 15px 10px; } + header .navbar-default .navbar-nav > li > a:hover { + color: #ddd; } + header .navbar-default .navbar-nav > .open > a { + background: #ed6364 !important; } + header .navbar-default .navbar-nav li .dropdown-menu li a { + font-size: 12px; } + header .navbar-default .navbar-nav.navbar-right .dropdown > a { background: #657b88; color: #fff; - border-right: 1px solid #718895; -} - -header .navbar-default .navbar-form .form-group .form-control { + border-right: 1px solid #718895; } + header .navbar-default .navbar-form .form-group .form-control { border-radius: 3px; - border: none; -} - -header .navbar-default .navbar-form .btn { + border: none; } + header .navbar-default .navbar-form .btn { border-radius: 3px; padding: 7px 12px; border: none; - background: #41B871; -} - -header .navbar-default .navbar-form .btn.btn-default { - color: #fff; -} + background: #41B871; } + header .navbar-default .navbar-form .btn.btn-default { + color: #fff; } /* inner_pages ends here */ /* CSS used here will be applied after bootstrap.css */ .glyphicon-bell { - font-size: 1.5rem; -} + font-size: 1.5rem; } .notifications { - min-width: 420px; - font-size: 12px; - padding: 0; - border: none; -} - -.notifications a.content { + min-width: 420px; + font-size: 12px; + padding: 0; + border: none; } + .notifications a.content { text-decoration: none; - background: #ccc; -} + background: #ccc; } .notifications-wrapper { - overflow: auto; - max-height: 250px; -} + overflow: auto; + max-height: 250px; } .menu-title { - color: #ffffff; - font-size: 12px; - display: inline-block; - text-transform: uppercase; - font-weight: 500; - letter-spacing: 1px; -} + color: #ffffff; + font-size: 12px; + display: inline-block; + text-transform: uppercase; + font-weight: 500; + letter-spacing: 1px; } .glyphicon-circle-arrow-right { - margin-left: 10px; -} + margin-left: 10px; } .notification-heading { - padding: 2px 10px; - background: #657b88; - border-top: 1px solid #718895; -} + padding: 2px 10px; + background: #657b88; + border-top: 1px solid #718895; } .notification-footer { - padding: 2px 10px; - background: #41B871; -} + padding: 2px 10px; + background: #41B871; } .dropdown-menu.divider { - margin: 5px 0; -} + margin: 5px 0; } .item-title { - font-size: 12px; - color: #39464d; - margin: 0; -} + font-size: 12px; + color: #39464d; + margin: 0; } .notification-item { - padding: 10px; - margin: 5px; - background: #ccc; - border-radius: 4px; -} - -.notification-item p { + padding: 10px; + margin: 5px; + background: #ccc; + border-radius: 4px; } + .notification-item p { margin: 0; color: #fff; - margin-top: 6px; -} + margin-top: 6px; } /* main_container stats here */ .main_container { - /* filter_row starts here */ - /* filter_row ends here */ - /* table_container_row starts here */ -} - -.main_container .heading_create .heading { + /* filter_row starts here */ + /* filter_row ends here */ + /* table_container_row starts here */ } + .main_container .heading_create .heading { font-size: 16px; text-transform: uppercase; letter-spacing: 1px; color: #39464d; - font-weight: 600; -} - -.main_container .heading_create .create_new a { + font-weight: 600; } + .main_container .heading_create .create_new a { background: #ed6364; color: #fff; font-size: 12px; font-weight: 500; text-transform: uppercase; display: inline-block; - padding: 10px 10px 7px 10px; -} - -.main_container .heading_create .search-row .form-group .input-group .left-dropdown .filters-button { + padding: 10px 10px 7px 10px; } + .main_container .heading_create .search-row .form-group .input-group .left-dropdown .filters-button { font-size: 12px; background: #fff; border: none; box-shadow: none; - margin-top: 1px; -} - -.main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li a { - font-size: 12px; -} - -.main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li.checkbox { + margin-top: 1px; } + .main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li a { + font-size: 12px; } + .main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li.checkbox { color: #000; padding-left: 10px; font-size: 12px; - letter-spacing: 0.4px; -} - -.main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li.checkbox input[type=checkbox] { - margin: 0; - margin-left: -10px; - margin-top: 1px; - margin-right: 10px; -} - -.main_container .heading_create .search-row .form-group .input-group .form-control { + letter-spacing: 0.4px; } + .main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li.checkbox input[type=checkbox] { + margin: 0; + margin-left: -10px; + margin-top: 1px; + margin-right: 10px; } + .main_container .heading_create .search-row .form-group .input-group .form-control { height: 29px; border: none; - margin-top: 2px; -} - -.main_container .heading_create .search-row .form-group .input-group .search { + margin-top: 2px; } + .main_container .heading_create .search-row .form-group .input-group .search { background: #41B871; color: #fff; border: none; padding: 5px 13px; - margin-top: 2px; -} - -.main_container .heading_create .search-row .extra_option_btn { + margin-top: 2px; } + .main_container .heading_create .search-row .extra_option_btn { font-size: 12px; background: #5b636e; border: none; color: #fff; padding-top: 7px; - padding-bottom: 7px; -} - -.main_container .heading_create .search-row .extra_option_btn.add-filter-button { - background-color: #099CBE; -} - -.main_container .heading_create .search-row .dropdown-menu { - font-size: 12px; -} - -.main_container .filter_row, .main_container .assigned_teams, .main_container .overview_form_block, .main_container .details_block, .main_container .attendees { - margin-top: 0px; -} - -.main_container .filter_row .panel .panel-heading, .main_container .assigned_teams .panel .panel-heading, .main_container .overview_form_block .panel .panel-heading, .main_container .details_block .panel .panel-heading, .main_container .attendees .panel .panel-heading { - text-transform: uppercase; -} - -.main_container .filter_row .panel .panel-content, .main_container .assigned_teams .panel .panel-content, .main_container .overview_form_block .panel .panel-content, .main_container .details_block .panel .panel-content, .main_container .attendees .panel .panel-content { - padding: 10px 0; -} - -.main_container .filter_row .panel .panel-content .form-group, .main_container .assigned_teams .panel .panel-content .form-group, .main_container .overview_form_block .panel .panel-content .form-group, .main_container .details_block .panel .panel-content .form-group, .main_container .attendees .panel .panel-content .form-group { - margin-bottom: 10px; -} - -.main_container .filter_row .panel .panel-content .form-group label, .main_container .assigned_teams .panel .panel-content .form-group label, .main_container .overview_form_block .panel .panel-content .form-group label, .main_container .details_block .panel .panel-content .form-group label, .main_container .attendees .panel .panel-content .form-group label { - color: #5a6e79; - font-size: 12px; - font-weight: 500; -} - -.main_container .filter_row .panel .panel-content .form-group .form-control, .main_container .assigned_teams .panel .panel-content .form-group .form-control, .main_container .overview_form_block .panel .panel-content .form-group .form-control, .main_container .details_block .panel .panel-content .form-group .form-control, .main_container .attendees .panel .panel-content .form-group .form-control { - border-radius: 0; - box-shadow: none; - font-size: 12px; -} + padding-bottom: 7px; } + .main_container .heading_create .search-row .extra_option_btn.add-filter-button { + background-color: #099CBE; } + .main_container .heading_create .search-row .dropdown-menu { + font-size: 12px; } + .main_container .filter_row, .main_container .assigned_teams, .main_container .overview_form_block, .main_container .details_block, .main_container .attendees { + margin-top: 0px; } + .main_container .filter_row .panel .panel-heading, .main_container .assigned_teams .panel .panel-heading, .main_container .overview_form_block .panel .panel-heading, .main_container .details_block .panel .panel-heading, .main_container .attendees .panel .panel-heading { + text-transform: uppercase; } + .main_container .filter_row .panel .panel-content, .main_container .assigned_teams .panel .panel-content, .main_container .overview_form_block .panel .panel-content, .main_container .details_block .panel .panel-content, .main_container .attendees .panel .panel-content { + padding: 10px 0; } + .main_container .filter_row .panel .panel-content .form-group, .main_container .assigned_teams .panel .panel-content .form-group, .main_container .overview_form_block .panel .panel-content .form-group, .main_container .details_block .panel .panel-content .form-group, .main_container .attendees .panel .panel-content .form-group { + margin-bottom: 10px; } + .main_container .filter_row .panel .panel-content .form-group label, .main_container .assigned_teams .panel .panel-content .form-group label, .main_container .overview_form_block .panel .panel-content .form-group label, .main_container .details_block .panel .panel-content .form-group label, .main_container .attendees .panel .panel-content .form-group label { + color: #5a6e79; + font-size: 12px; + font-weight: 500; } + .main_container .filter_row .panel .panel-content .form-group .form-control, .main_container .assigned_teams .panel .panel-content .form-group .form-control, .main_container .overview_form_block .panel .panel-content .form-group .form-control, .main_container .details_block .panel .panel-content .form-group .form-control, .main_container .attendees .panel .panel-content .form-group .form-control { + border-radius: 0; + box-shadow: none; + font-size: 12px; } /* main_container ends here */ .table_container_row { - margin-top: 10px; - /* mail_menu starts here */ - /* mail_menu ends here */ -} - -.table_container_row .panel-default .panel-heading { - padding: 5px 10px; -} - -.table_container_row .panel-default .panel-heading .dropdown { - display: inline-block; -} - -.table_container_row .panel-default .panel-heading .dropdown .dropdown-toggle { - background: #099CBE; - font-size: 12px; - color: #fff; - border-radius: 0; - border: none; -} - -.table_container_row .panel-default .panel-heading .mark_read { - background: #CDCDCD; - display: inline-block; - padding: 6px 10px; - margin-left: 6px; - color: #5a6e79; -} - -.table_container_row .panel-default .panel-heading .mark_read:hover { - background: #5a6e79; - color: #fff; - text-decoration: none; -} - -.table_container_row .panel-default .panel-heading .total_count { - margin-top: 5px; -} - -.table_container_row .panel-content { - padding: 15px; -} - -.table_container_row .panel-content table thead tr th { - background: #5b646d; - color: #fff; - font-weight: 500; - /* text-transform: uppercase; */ - font-size: 12px; - border: none; -} - -.table_container_row .panel-content table tbody tr td { - vertical-align: middle; - color: #5b636d; - font-size: 12px; - font-weight: 500; -} - -.table_container_row .panel-content table tbody tr td .dropdown .dropdown-toggle { - background: #099CBE; - font-size: 12px; - color: #fff; - border-radius: 0; - border: none; -} - -.table_container_row .mail_menu .panel { + margin-top: 10px; + /* mail_menu starts here */ + /* mail_menu ends here */ } + .table_container_row .panel-default .panel-heading { + padding: 5px 10px; } + .table_container_row .panel-default .panel-heading .dropdown { + display: inline-block; } + .table_container_row .panel-default .panel-heading .dropdown .dropdown-toggle { + background: #099CBE; + font-size: 12px; + color: #fff; + border-radius: 0; + border: none; } + .table_container_row .panel-default .panel-heading .mark_read { + background: #CDCDCD; + display: inline-block; + padding: 6px 10px; + margin-left: 6px; + color: #5a6e79; } + .table_container_row .panel-default .panel-heading .mark_read:hover { + background: #5a6e79; + color: #fff; + text-decoration: none; } + .table_container_row .panel-default .panel-heading .total_count { + margin-top: 5px; } + .table_container_row .panel-content { + padding: 15px; } + .table_container_row .panel-content table thead tr th { + background: #5b646d; + color: #fff; + font-weight: 500; + /* text-transform: uppercase; */ + font-size: 12px; + border: none; } + .table_container_row .panel-content table tbody tr td { + vertical-align: middle; + color: #5b636d; + font-size: 12px; + font-weight: 500; } + .table_container_row .panel-content table tbody tr td .dropdown .dropdown-toggle { + background: #099CBE; + font-size: 12px; + color: #fff; + border-radius: 0; + border: none; } + .table_container_row .mail_menu .panel { border-radius: 0; padding: 0; background: none; - border: 0; -} - -.table_container_row .mail_menu .panel .panel-content { - padding: 0; -} - -.table_container_row .mail_menu .panel .panel-content .mail_options { - margin: 0; - padding: 0; -} - -.table_container_row .mail_menu .panel .panel-content .mail_options li { - list-style: none; -} - -.table_container_row .mail_menu .panel .panel-content .mail_options li a { - display: block; - padding: 10px; - background: #5a6e79; - margin: 1px; - color: white; - text-transform: uppercase; - letter-spacing: 0.6px; -} - -.table_container_row .mail_menu .panel .panel-content .mail_options li a:hover { - background: #41B871; - color: #fff; - text-decoration: none; - border-left: 3px solid white; -} - -.table_container_row .mail_menu .panel .panel-content .mail_options li.active a { - background: #41B871; - color: #fff; - text-decoration: none; - border-left: 3px solid white; -} + border: 0; } + .table_container_row .mail_menu .panel .panel-content { + padding: 0; } + .table_container_row .mail_menu .panel .panel-content .mail_options { + margin: 0; + padding: 0; } + .table_container_row .mail_menu .panel .panel-content .mail_options li { + list-style: none; } + .table_container_row .mail_menu .panel .panel-content .mail_options li a { + display: block; + padding: 10px; + background: #5a6e79; + margin: 1px; + color: white; + text-transform: uppercase; + letter-spacing: 0.6px; } + .table_container_row .mail_menu .panel .panel-content .mail_options li a:hover { + background: #41B871; + color: #fff; + text-decoration: none; + border-left: 3px solid white; } + .table_container_row .mail_menu .panel .panel-content .mail_options li.active a { + background: #41B871; + color: #fff; + text-decoration: none; + border-left: 3px solid white; } /* table_container_row ends here */ /* breadcrumb starts here */ .breadcrumb { - margin: 0; - display: inline-block; - background: none; -} - -.breadcrumb > li + li { - color: #5a6e79; -} + margin: 0; + background: none; } .breadcrumb > li + li:before { - color: #696565; -} -.breadcrumb_view_actions{ - margin-bottom: 10px; -} -.view_actions{ - padding-right:15px; -} - -.breadcrumb > li + li:before { - color: #5a6e79; -} + color: #5a6e79; } /* breadcrumb ends here */ /* assigned_teams starts here */ .assigned_teams { - margin-top: 0; -} + margin-top: 0; } /* assigned_teams ends here */ /* overview_form_block starts here */ .overview_form_block { - margin-top: 0; -} - -.overview_form_block .form-control { + margin-top: 0; } + .overview_form_block .form-control { border-radius: 0; box-shadow: none; - font-size: 12px; -} - -.overview_form_block .country_class { + font-size: 12px; } + .overview_form_block .country_class { + margin-top: 10px; } + .overview_form_block .shiiping_block { + margin-top: 10px; } + .overview_form_block .shiiping_block .checkbox { + color: #5a6e79; } + .overview_form_block .filters-button { + border-radius: 0; } + .overview_form_block .website_block { + margin-top: 10px; } + .overview_form_block .search { + border-radius: 0; } + .overview_form_block .copy_billing_btn { margin-top: 10px; -} - -.overview_form_block .shiiping_block { - margin-top: 10px; -} - -.overview_form_block .shiiping_block .checkbox { - color: #5a6e79; -} - -.overview_form_block .filters-button { - border-radius: 0; -} - -.overview_form_block .website_block { - margin-top: 10px; -} - -.overview_form_block .search { - border-radius: 0; -} - -.overview_form_block .copy_billing_btn { - margin-top: 10px; - display: block; -} + display: block; } /* overview_form_block ends here */ /* details_block starts here */ .details_block .form-control { - border-radius: 0; - box-shadow: none; - font-size: 12px; -} + border-radius: 0; + box-shadow: none; + font-size: 12px; } .buttons_row { - margin-bottom: 20px; -} - -.buttons_row button { + margin-bottom: 20px; } + .buttons_row button { border-radius: 0; - font-size: 12px; -} + font-size: 12px; } + .buttons_row button.save { + background: #099CBE; + color: #fff; } -.buttons_row button.save { - background: #099CBE; - color: #fff; +.nav>li>a>img { + max-width: none; + width: 20px; + height: 20px; } /* details_block ends here */ @@ -576,178 +384,3 @@ header .navbar-default .navbar-form .btn.btn-default { /* attendees ends here */ /*# sourceMappingURL=main.css.map */ -.filter_buttons { - margin-top: 20px; -} - -.buttons_row button.save { - background: #099CBE; - color: #fff; -} - -.fade { - opacity: 0; - transition: opacity 1s linear; -} - -.fade-scale { - transform: scale(0); - opacity: 0; - -webkit-transition: all .25s linear; - -o-transition: all .25s linear; - transition: all .25s linear; -} - -.fade-scale.in { - opacity: 1; - transform: scale(1); -} - -.errorlist li { - color: red; - font-size: 12px; - font-size: 100%; - list-style: none; - margin-left:-35px; - margin-top:0px; -} - -.errorlist li:before { - content: "*"; -} - -.jqueryError_list{ - color: red; - font-size: 12px; - font-size: 100%; - list-style: none; -} - -.jqueryError_list{ -content:"*"; -} - -.filter_col.btn{ - margin-top: 20px; -} - -.btn-primary { - color: #000; - background-color: #099CBE; - border-color: #ffffff; -} - -.table_container_row .panel-default .panel-heading-list { - padding: 15px 10px; - border-bottom: 1px solid transparent; - border-top-left-radius: 3px; - border-top-right-radius: 3px; - color: #333; - background-color: #f5f5f5; - border-color: #ddd; -} - -.reminderslist input[type="checkbox"] { - display: none; -} - -input[type="checkbox"] + label span { - display: inline-block; - width: 19px; - height: 19px; - margin: -1px 4px 0 0; - vertical-align: middle; - cursor: pointer; -} - -input[type="checkbox"]:checked + label span { - color: red; - display: none; -} - -.pagination { - text-align: center; -} - -.pagination { - /*float: right;*/ - position: relative; - top: 9px; -} - -.pagination ul { - margin: 0px; - padding: 0; -} - -.pagination ul li { - list-style: none; - display: inline-block; -} - -.pagination ul li a { - padding: 8px 10px; - border: 1px solid #fff; - font-size: 13px; - margin: 15px 0px; - cursor: pointer; -} - -.pagination ul li a:hover { - background: #fff; - color: #4c4c4c; -} - -.pagination ul .active a { - background: #fff; - color: #4c4c4c; -} - -.account_field { - font-size: 13px -} - -.lead_address_col { - margin-top:10px; -} - -.hidden { - display: none; -} - -.panel-heading{ - background:#099CBE; -} -.opportunities_cases .panel .panel-heading{ - padding:10px; -} -.assigned_teams_section{ - padding:0px; -} -.button_content{ - margin-top: 10px; -} -.stream_list{ - margin-top:10px; -} -.stream_list ul { - margin:0; - padding:0; -} -.stream_list ul li{ - list-style: none; - padding:10px; - border-top:1px solid #ddd; -} -.stream_list ul li .heading_dropdown{ - -} -.stream_list ul li .time{ - margin-top:6px; -} -.stream_button_actions{ - margin-top: 6px; -} -.nav>li>a>img{ - width: 20px; -} \ No newline at end of file diff --git a/templates/nav_menu.html b/templates/nav_menu.html index f01f76a4..c067ef2c 100644 --- a/templates/nav_menu.html +++ b/templates/nav_menu.html @@ -1,52 +1,52 @@ {% load static %} diff --git a/templates/users/create.html b/templates/users/create.html new file mode 100644 index 00000000..954df91f --- /dev/null +++ b/templates/users/create.html @@ -0,0 +1,68 @@ +{% extends 'base.html' %} +{% load staticfiles %} +{% block breadcrumb %} + +{% endblock breadcrumb %} +{% block content %} +
{%csrf_token%} +
+
+
+
+ Create User +
+
+
+
+
+
+ {{ user_obj.first_name }} + +
+ {{ errors.first_name }} +
+
+
+ + +
+ {{ errors.last_name }} +
+
+
+ + +
+ {{ errors.username }} +
+
+
+ + +
+ {{ errors.email }} +
+ {% if not user_obj %} +
+
+ + +
+ {{ errors.password }} +
+ {% endif %} +
+
+
+ + +
+
+
+
+
+
+{% endblock content %} diff --git a/templates/users/list.html b/templates/users/list.html new file mode 100644 index 00000000..115027dc --- /dev/null +++ b/templates/users/list.html @@ -0,0 +1,111 @@ +{% extends 'base.html' %} +{% load staticfiles %} +{% load paginate %} +{% block content %} + +
+ +
+
+
+

Users

+
+
+ +
+
+
+ + +
+
+
+
+
+
{%csrf_token%} +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + Clear +
+
+
+
+
+
+
+
+ +
+
+
+
+ LIST OF USERS + {% if show_pageitems %} {% show_pageitems %}{% else %}Total Users {{ user_obj|length }}{% endif %} +
+
+ + + + + + + + + + + + + {% for user in users %} + + + + + + + + {% endfor %} + +
S.NoFirst NameUsernameEmail AddressStatusActions
{{ forloop.counter }}{{ user.first_name }}{{ user.username }} + {{ user.email }}{{ user.status }} + View + Edit + Delete +
+
+
+
+
+
+ +{% endblock %} +{% block js_block %} + +{% endblock js_block %} \ No newline at end of file From 10aa525da026aa3b1730be2fee951d0cec4c7842 Mon Sep 17 00:00:00 2001 From: Ashwin Date: Wed, 21 Mar 2018 19:20:47 +0530 Subject: [PATCH 2/2] bug fixes and updating to bootstrap 4 --- accounts/models.py | 3 + cases/models.py | 3 + cases/tests.py | 26 +- common/migrations/0003_auto_20180321_1135.py | 25 + crm/settings.py | 33 +- leads/models.py | 3 + leads/tests.py | 50 +- opportunity/models.py | 3 + opportunity/tests.py | 28 +- static/CACHE/css/e10c044d9349.css | 617 ++++++++++++++++++ static/CACHE/css/e896313d318c.css | 1 + static/css/main.scss | 128 +++- static/css/ref.scss | 49 +- templates/accounts/accounts.html | 59 +- templates/accounts/create_account.html | 34 +- templates/accounts/view_account.html | 118 ++-- templates/base.html | 20 +- templates/cases/cases.html | 45 +- templates/cases/create_cases.html | 29 +- templates/cases/view_case.html | 100 ++- templates/contacts/contacts.html | 58 +- templates/contacts/create_contact.html | 28 +- templates/contacts/view_contact.html | 37 +- templates/leads/create_lead.html | 44 +- templates/leads/leads.html | 60 +- templates/leads/view_leads.html | 44 +- templates/login.html | 25 +- templates/nav_menu.html | 71 +- templates/opportunity/create_opportunity.html | 29 +- templates/opportunity/opportunity.html | 44 +- templates/opportunity/view_opportunity.html | 35 +- templates/users/create.html | 19 +- templates/users/list.html | 45 +- 33 files changed, 1439 insertions(+), 474 deletions(-) create mode 100644 common/migrations/0003_auto_20180321_1135.py create mode 100644 static/CACHE/css/e10c044d9349.css create mode 100644 static/CACHE/css/e896313d318c.css diff --git a/accounts/models.py b/accounts/models.py index d004229b..74189c75 100644 --- a/accounts/models.py +++ b/accounts/models.py @@ -23,3 +23,6 @@ class Account(models.Model): def __str__(self): return self.name + + class Meta: + ordering = ['-created_on'] diff --git a/cases/models.py b/cases/models.py index 45a2bcdc..16130639 100644 --- a/cases/models.py +++ b/cases/models.py @@ -26,6 +26,9 @@ class Case(models.Model): created_on = models.DateTimeField(_("Created on"), auto_now_add=True) is_active = models.BooleanField(default=False) + class Meta: + ordering = ['-created_on'] + def __str__(self): return self.name diff --git a/cases/tests.py b/cases/tests.py index 162d2b60..93a2c1f0 100644 --- a/cases/tests.py +++ b/cases/tests.py @@ -6,6 +6,7 @@ from django.test import Client from common.models import Address from django.core.urlresolvers import reverse from common.models import User +from django.utils import timezone class CaseCreation(object): @@ -15,6 +16,8 @@ class CaseCreation(object): self.user = User.objects.create(username='raghu', email='r@mp.com') self.user.set_password('raghu') self.user.save() + self.client.login(email='r@mp.com', password='raghu') + self.account = Account.objects.create(name="account", email="account@gmail.com", phone="12345", billing_address=self.address, shipping_address=self.address, @@ -25,10 +28,9 @@ class CaseCreation(object): email="contact@gmail.com", phone="12345", account=self.account, description="contact", address=self.address, created_by=self.user) # self.comment = Comments.objects.create(comment="new", caseid=self.case.id, comment_) - self.client.login(email='r@mp.com', password='raghu') - self.case = Case.objects.create(name="raghu", case_type="Problem", status="New", account=self.account, - priority="Low", description="something", teams="Sales", - created_by=self.user) + self.case = Case.objects.create(name="raghu", case_type="Problem", status="New", + priority="low", description="something", + created_by=self.user, closed_on=timezone.now()) class CaseCreateTestCase(CaseCreation, TestCase): @@ -66,11 +68,11 @@ class CaseShowTestCase(CaseCreation, TestCase): def test_show_case(self): response = self.client.get('/cases/1/view/') self.assertEqual(response.status_code, 200) - self.assertEqual(response.context['case'].id, 1) + self.assertEqual(response.context['case_record'].id, 1) def test_show_case_html(self): response = self.client.get('/cases/1/view/') - self.assertTemplateUsed(response, 'cases/show_case.html') + self.assertTemplateUsed(response, 'cases/view_case.html') def test_show_case_invalid_data(self): response = self.client.get('/cases/1/view/') @@ -79,8 +81,8 @@ class CaseShowTestCase(CaseCreation, TestCase): class CaseRemoveTestCase(CaseCreation, TestCase): def test_case_deletion_show_case(self): - response = self.client.get('/cases/1/delete/') - self.assertEqual(response['location'], '/cases/list') + response = self.client.get('/cases/1/remove/') + self.assertEqual(response.status_code, 302) class CaseUpdateTestCase(CaseCreation, TestCase): @@ -94,8 +96,8 @@ class CaseUpdateTestCase(CaseCreation, TestCase): def test_case_update_html(self): response = self.client.post('/cases/1/edit_case/', {'hiddenval': self.case.id}) - self.assertTemplateUsed(response, 'cases/show_case.html') + self.assertEqual(response.status_code, 200) - def test_edit_details(self): - response = self.client.post('/cases/editdetails/', {'tid': self.case.id}) - self.assertEqual(int(response.json()['eid']), self.case.id) \ No newline at end of file + # def test_edit_details(self): + # response = self.client.post('/cases/editdetails/', {'tid': self.case.id}) + # self.assertEqual(int(response.json()['eid']), self.case.id) diff --git a/common/migrations/0003_auto_20180321_1135.py b/common/migrations/0003_auto_20180321_1135.py new file mode 100644 index 00000000..55cd99ed --- /dev/null +++ b/common/migrations/0003_auto_20180321_1135.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-03-21 06:05 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0002_auto_20170926_1752'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='first_name', + field=models.CharField(blank=True, max_length=150), + ), + migrations.AddField( + model_name='user', + name='last_name', + field=models.CharField(blank=True, max_length=150), + ), + ] diff --git a/crm/settings.py b/crm/settings.py index 1f7c8ba1..ede9d793 100644 --- a/crm/settings.py +++ b/crm/settings.py @@ -37,7 +37,8 @@ INSTALLED_APPS = [ 'leads', 'opportunity', 'planner', - 'simple_pagination' + 'simple_pagination', + 'compressor' ] MIDDLEWARE = [ @@ -139,3 +140,33 @@ EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' AUTH_USER_MODEL = 'common.User' + +STATIC_URL = '/static/' +STATICFILES_DIRS = (BASE_DIR + '/static',) +STATICFILES_FINDERS = ( + 'django.contrib.staticfiles.finders.FileSystemFinder', + 'django.contrib.staticfiles.finders.AppDirectoriesFinder', + 'compressor.finders.CompressorFinder', +) + +COMPRESS_ROOT = BASE_DIR + '/static/' +COMPRESS_URL = STATIC_URL +COMPRESS_ENABLED = True + +COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.CSSMinFilter'] +COMPRESS_REBUILD_TIMEOUT = 5400 + + +COMPRESS_OUTPUT_DIR = 'CACHE' +COMPRESS_URL = STATIC_URL +COMPRESS_ENABLED = True + +COMPRESS_PRECOMPILERS = ( + ('text/less', '/usr/local/bin/lessc {infile} {outfile}'), + ('text/x-sass', '/usr/local/bin/sass {infile} {outfile}'), + ('text/x-scss', '/usr/local/bin/sass --scss {infile} {outfile}'), +) + +COMPRESS_OFFLINE_CONTEXT = { + 'STATIC_URL': 'STATIC_URL', +} diff --git a/leads/models.py b/leads/models.py index 918c843a..73e04513 100644 --- a/leads/models.py +++ b/leads/models.py @@ -34,5 +34,8 @@ class Lead(models.Model): is_active = models.BooleanField(default=False) enquery_type = models.CharField(max_length=255, blank=True, null=True) + class Meta: + ordering =['-created_on'] + def __str__(self): return self.first_name + self.last_name diff --git a/leads/tests.py b/leads/tests.py index db7f5a21..6d8c9696 100644 --- a/leads/tests.py +++ b/leads/tests.py @@ -1,26 +1,22 @@ from django.test import TestCase from django.test import Client -from django.contrib.auth.models import User +# from django.contrib.auth.models import User from leads.models import Lead -from common.models import Address, Country +from common.models import Address, User from accounts.models import Account class TestLeadModel(object): def setUp(self): - self.client = Client() - self.country = Country.objects.create(iso_3166_1_a2="IN", - iso_3166_1_a3="IND", - iso_3166_1_numeric="001", - name="India", - printable_name="Bharath", - is_shipping_country="True") - + self.user = User.objects.create(username='uday', email='u@mp.com') + self.user.set_password('uday2293') + self.user.save() + self.client.login(username='u@mp.com', password='uday2293') self.address = Address.objects.create(street="Gokul enclave colony", city="Hasthinapuram", state="Telangana", postcode="500079", - country=self.country) + country='India') self.account = Account.objects.create(name="account", email="account@gmail.com", @@ -28,13 +24,13 @@ class TestLeadModel(object): billing_address=Address.objects.get(pk=1), shipping_address=Address.objects.get(pk=1), website="account.com", - account_type="account", - sis_code="12345", industry="IT", - description="account") + description="account", + created_by=self.user) self.lead = Lead.objects.create(title="LeadCreation", - name="kotha", + first_name="kotha", + last_name="k", email="anjalikotha1993@gmail.com", account=self.account, address=self.address, @@ -42,11 +38,9 @@ class TestLeadModel(object): status="assigned", source="Call", opportunity_amount="700", - description="Iam an Lead") + description="Iam an Lead", + created_by=self.user) - self.user = User.objects.create_superuser('user@micropyramid.com', - 'username', 'password') - self.client.login(username='user@micropyramid.com', password='password') def testaddress_post_object_creation(self): c = Address.objects.count() @@ -56,13 +50,13 @@ class TestLeadModel(object): p = Address.objects.get(state="Telangana") self.assertEqual(p.street, "Gokul enclave colony") - def testcountry_post_object_creation(self): - c = Country.objects.count() - self.assertEqual(c, 1) + # def testcountry_post_object_creation(self): + # c = Country.objects.count() + # self.assertEqual(c, 1) - def test_get_countryobject_with_name(self): - p = Country.objects.get(name="India") - self.assertEqual(p.name, "India") + # def test_get_countryobject_with_name(self): + # p = Country.objects.get(name="India") + # self.assertEqual(p.name, "India") def test_lead_object_creation(self): c = Lead.objects.count() @@ -144,7 +138,8 @@ class LeadsViewTestCase(TestLeadModel, TestCase): def test_leads_view(self): Lead.objects.create(title="LeadCreationbylead", - name="kotha", + first_name="kotha", + last_name="k", email="srilathakotha1993@gmail.com", account=self.account, address=self.address, @@ -152,7 +147,8 @@ class LeadsViewTestCase(TestLeadModel, TestCase): status='converted', source="Call", opportunity_amount="900", - description="Iam an Opportunity") + description="Iam an Opportunity", + created_by=self.user) self.lead = Lead.objects.all() response = self.client.get('/leads/1/view/') self.assertEqual(response.status_code, 200) diff --git a/opportunity/models.py b/opportunity/models.py index 2dd40bb0..47f6eb25 100644 --- a/opportunity/models.py +++ b/opportunity/models.py @@ -27,5 +27,8 @@ class Opportunity(models.Model): created_on = models.DateTimeField(_("Created on"), auto_now_add=True) is_active = models.BooleanField(default=False) + class Meta: + ordering = ['-created_on'] + def __str__(self): return self.name diff --git a/opportunity/tests.py b/opportunity/tests.py index 6269bdd9..43b66588 100644 --- a/opportunity/tests.py +++ b/opportunity/tests.py @@ -4,6 +4,7 @@ from common.models import Address from accounts.models import Account from contacts.models import Contact from common.models import User +from django.utils import timezone # Create your tests here. @@ -14,7 +15,7 @@ class OpportunityModel(object): self.address = Address.objects.create( street="kphb", city="hyderabad", postcode="584", country='IN') - self.user = User.objects.create(username='madhurima') + self.user = User.objects.create(username='madhurima', email="m@mp.com") self.user.set_password('madhu123') self.user.save() @@ -26,21 +27,23 @@ class OpportunityModel(object): industry="sw", description="bgyyr", created_by=self.user) self.contacts = Contact.objects.create( first_name="navi", + last_name="s", email="navi@gmail.com", phone="8547", account=self.account, description="defyj", - address=self.address) + address=self.address, + created_by=self.user) self.opportunity = Opportunity.objects.create( name="madhurima", amount="478", stage="negotiation/review", lead_source="Call", probability="58", - close_date="2016-05-04", - description="hgfdxc") - self.client.login(username='madhurima', password='madhu123') + closed_on=timezone.now(), + description="hgfdxc", created_by=self.user) + self.client.login(email='m@mp.com', password='madhu123') class OpportunityCreateTestCase(OpportunityModel, TestCase): def test_opportunity_create(self): - response = self.client.get('/oppurtunities/create/', { + response = self.client.get('/opportunities/create/', { 'name': "madhurima", 'amount': "478", 'stage': "NEGOTIATION/REVIEW", 'lead_source': "Call", 'probability': "58", @@ -54,27 +57,26 @@ class opportunityCreateTestCase(OpportunityModel, TestCase): def test_view_opportunity(self): self.opportunity = Opportunity.objects.all() - response = self.client.get('/oppurtunities/1/view/') + response = self.client.get('/opportunities/1/view/') self.assertEqual(response.status_code, 200) - self.assertEqual(response.context['opp'].id, self.opportunity.id) def test_del_opportunity(self): - response = self.client.get('/oppurtunities/1/delete/') - self.assertEqual(response['location'], '/oppurtunities/list/') + response = self.client.get('/opportunities/1/delete/') + self.assertEqual(response.status_code, 302) def test_opportunity_delete(self): Opportunity.objects.filter(id=self.account.id).delete() - response = self.client.get('/oppurtunities/list/') + response = self.client.get('/opportunities/list/') self.assertEqual(response.status_code, 200) class EditOpportunityTestCase(OpportunityModel, TestCase): def test_edit(self): - response = self.client.get('/oppurtunities/1/edit/') + response = self.client.get('/opportunities/1/edit/') self.assertEqual(response.status_code, 200) def test_edit_opportunity(self): - response = self.client.get('/oppurtunities/1/edit/', { + response = self.client.get('/opportunities/1/edit/', { 'name': "madhurima", 'amount': "478", 'stage': "negotiation/review", 'lead_source': "Call", 'probability': "58", diff --git a/static/CACHE/css/e10c044d9349.css b/static/CACHE/css/e10c044d9349.css new file mode 100644 index 00000000..807ad887 --- /dev/null +++ b/static/CACHE/css/e10c044d9349.css @@ -0,0 +1,617 @@ +@import "ref.scss"; + + +body { + font-family: $font_0, $font_1; + padding: 0; + font-size: 12px; + font-weight: 500; + margin: 0; + padding-top:60px; +} +.login_register_body { + background: $body_bg; +} +.marl { + margin-left: 0; + margin-right: 0; +} +.login_row { +} +.login_block { + margin-top: 75px; + background: $login_bg; + -webkit-box-shadow: 10px 10px 0px -4px rgba(0,0,0,0.19); +-moz-box-shadow: 10px 10px 0px -4px rgba(0,0,0,0.19); +box-shadow: 10px 10px 0px -4px rgba(0,0,0,0.19); + .welcome { + text-transform: uppercase; + font-size: 14px; + font-weight: 600; + letter-spacing: 1px; + color: #333; + span { + color: $color_cyan_aqua_approx; + &.create_head { + color: $color_screamin_green_approx; + } + } + } +} +.login_form_block { + margin-top: 30px; + padding:50px 15px; + .welcome{ + margin-bottom: 20px; + text-align: center; + } + + .form-group { + margin-bottom: 15px; + } + label { + font-size: 12px; + color: darken($text_color2, 15%); + font-weight:500; + } + .form-control { + background: #dcdcdc; + color: $text_color; + min-height: 40px; + font-size: 13px; + letter-spacing: 0.5px; + //Instead of the line below you could use @include box-shadow($shadow-1, $shadow-2, $shadow-3, $shadow-4, $shadow-5, $shadow-6, $shadow-7, $shadow-8, $shadow-9, $shadow-10) + box-shadow: none; + border: none; + //Instead of the line below you could use @include border-radius($radius, $vertical-radius) + border-radius: 3px; + } + .btn { + background: $login_btn_bg; + //Instead of the line below you could use @include border-radius($radius, $vertical-radius) + border-radius: 3px; + border: none; + text-transform: uppercase; + font-size: 13px; + letter-spacing: 1px; + font-weight: 500; + color: $white; + width: 100%; + outline:none; + padding: 10px 20px; + &:hover{ + text-decoration:none; + } + } + .checkbox{ + text-align: center; + input[type=checkbox]{ + vertical-align: middle; + margin: 0; + margin-top: 1px; + margin-left: -19px; + } + } +} + + +/* inner_pages starts here */ +.main_body_bg_color{ + background: $inner_page_bg; +} +header{ + .navbar{ + background: darken($text_color, 15%); + border:none; + .navbar-brand{ + color: $login_btn_bg; + &:hover{ + color: $login_btn_bg; + } + } + .navbar-nav{ + >li{ + >a{ + color: $text_color3; + font-weight: 500; + font-size: 12px; + padding:15px 10px; + @media(min-width: $mob_min) and (max-width: $smob_max) { + padding:5px 10px; + } + &:hover{ + color:#ddd; + } + } + } + >.open{ + >a{ + background: $login_btn_bg !important; + + } + } + li{ + .dropdown-toggle{ + img{ + width: 25px; + height: 25px; + } + } + .dropdown-menu{ + a{ + font-size: 12px; + } + } + } + &.navbar-right{ + .dropdown{ + .dropdown-toggle{ + img{ + width: 25px; + height: 25px; + } + } + >a{ + background:lighten($text_color,5%); + color: #fff; + border-right:1px solid lighten($text_color,10%); + &.nav-link{ + padding:0.5rem; + } + } + } + } + } + .navbar-form{ + .form-group{ + .form-control{ + border-radius:3px; + border:none; + } + } + .btn{ + border-radius:3px; + padding:7px 12px; + border:none; + background: $green; + &.btn-default{ + color: #fff; + } + } + } + } +} +/* inner_pages ends here */ + +/* CSS used here will be applied after bootstrap.css */ +$color_1: #ff7788; +$color_2: #000; + +.glyphicon-bell { + font-size: 1.5rem; +} +.notifications { + min-width: 420px; + font-size: 12px; + padding:0; + border:none; + a.content { + text-decoration: none; + background: #ccc; + } +} +.notifications-wrapper { + overflow: auto; + max-height: 250px; +} +.menu-title { + color: #ffffff; + font-size: 12px; + display: inline-block; + text-transform: uppercase; + font-weight: 500; + letter-spacing: 1px; +} +.glyphicon-circle-arrow-right { + margin-left: 10px; +} +.notification-heading { + padding: 2px 10px; + background:lighten($text_color,5%); + border-top:1px solid lighten($text_color,10%); +} +.notification-footer { + padding: 2px 10px; + background:$green; +} +.dropdown-menu.divider { + margin: 5px 0; +} +.item-title { + font-size: 12px; + color: darken($text_color, 15%); + margin:0; +} +.notification-item { + padding: 10px; + margin: 5px; + background: #ccc; + border-radius: 4px; + p{ + margin: 0; + color: #fff; + margin-top: 6px; + } +} + +/* main_container stats here */ +.main_container{ + padding-top: 10px; + .heading_create{ + .heading{ + font-size: 14px; + text-transform: uppercase; + letter-spacing: 1px; + color: darken($text_color, 15%); + font-weight: 600; + h4{ + font-size: 15px; + } + } + .create_new{ + a{ + background: $login_btn_bg; + color: #fff; + font-size: 12px; + font-weight: 500; + text-transform: capitalize; + letter-spacing: initial; + display: inline-block; + padding: 5px 10px 3px 10px; + } + } + .search-row{ + .form-group{ + .input-group{ + .left-dropdown{ + .filters-button{ + font-size: 12px; + background: #fff; + border:none; + box-shadow:none; + margin-top:1px; + } + .dropdown-menu{ + li{ + a{ + font-size: 12px; + } + &.checkbox{ + color: #000; + padding-left:10px; + font-size: 12px; + letter-spacing: 0.4px; + input[type=checkbox]{ + margin:0; + margin-left:-10px; + margin-top:1px; + margin-right:10px; + } + } + } + } + } + .form-control{ + height: 29px; + border: none; + margin-top: 2px; + } + .search{ + background: $green; + color: #fff; + border:none; + padding:5px 13px; + margin-top:2px; + } + } + } + .extra_option_btn{ + font-size: 12px; + background: #5b636e; + border:none; + color:#fff; + padding-top:7px; + padding-bottom: 7px; + &.add-filter-button{ + background-color: $dark_sky; + } + } + .dropdown-menu{ + font-size: 12px; + } + } + } + + + /* filter_row starts here */ + .filter_row{ + margin-top:10px; + .card{ + border:1px solid #ccc; + .card-body{ + padding:0px 0; + .card-title{ + background: #e5e5e5; + padding:6px 10px; + font-size: 13px; + + } + .form-group{ + margin-bottom: 10px; + label{ + color: $text_color; + font-size: 12px; + font-weight: 500; + } + .form-control{ + border-radius: 0; + box-shadow: none; + font-size: 12px; + } + } + } + } + } + /* filter_row ends here */ + /* table_container_row starts here */ + +} +/* main_container ends here */ + .table_container_row{ + margin-top: 10px; + .card{ + .card-title{ + padding:5px 10px; + background: #e5e5e5; + padding:6px 10px; + font-size: 13px; + margin-bottom: 0; + .dropdown{ + display: inline-block; + .dropdown-toggle{ + background: $dark_sky; + font-size: 12px; + color:#fff; + border-radius: 0; + border:none; + } + } + .mark_read{ + background: $inner_page_bg; + display: inline-block; + padding:6px 10px; + margin-left:6px; + color: $text_color; + &:hover{ + background:$text_color; + color: #fff; + text-decoration: none; + } + } + .total_count{ + margin-top:0px; + } + } + } + .card-body{ + padding:0px 0px; + table{ + thead{ + tr{ + th{ + background: #5b646d; + color: #fff; + font-weight: 500; + /* text-transform: uppercase; */ + font-size: 12px; + border: none; + padding:6px; + } + } + } + tbody{ + tr{ + td{ + vertical-align: middle; + color: #454545; + font-size: 12px; + font-weight: 400; + padding:7px 0; + a{ + color: #454545; + } + .dropdown{ + .dropdown-toggle{ + background: $dark_sky; + font-size: 12px; + color:#fff; + border-radius: 0; + border:none; + } + } + &.actions{ + .btn{ + border-radius: 0; + font-size: 12px; + padding:3px 5px; + color: #fff; + svg{ + display: inline-block; + margin-right: 5px; + } + } + } + } + } + } + } + } + /* mail_menu starts here */ + .mail_menu{ + .panel{ + border-radius: 0; + padding:0; + background:none; + border:0; + .panel-content{ + padding:0; + .mail_options{ + margin:0; + padding: 0; + li{ + list-style:none; + a{ + display: block; + padding: 10px; + background: $text_color; + margin: 1px; + color: white; + text-transform: uppercase; + letter-spacing: 0.6px; + &:hover{ + background:$green; + color: #fff; + text-decoration: none; + border-left: 3px solid white; + } + } + &.active{ + a{ + background:$green; + color: #fff; + text-decoration: none; + border-left: 3px solid white; + } + } + } + } + } + } + } + /* mail_menu ends here */ + } + /* table_container_row ends here */ +/* breadcrumb starts here */ +.breadcrumb{ + margin:0; + background: none; + .breadcrumb-item{ + a{ + color: $dark_sky; + } + } +} +.breadcrumb>li+li:before{ + color:$text_color; +} +/* breadcrumb ends here */ +/* assigned_teams starts here */ +.assigned_teams{ + @extend .filter_row; + margin-top:0; +} +/* assigned_teams ends here */ + +/* overview_form_block starts here */ +.overview_form_block{ + @extend .filter_row; + .card-title{ + height: 45px; + h5{ + margin-bottom: 0; + position: relative; + top: 10px; + font-size: 13px; + } + .dropdown{ + .dropdown-menu{ + li{ + a{ + font-size: 0.85rem; + color: #454545; + text-transform: capitalize !important; + font-weight: 400; + display: block; + padding:5px 8px; + } + } + } + } + } + .buttons_row{ + margin:0; + position: relative; + top: -10px; + } + .form-control{ + border-radius: 0; + box-shadow: none; + font-size: 12px; + } + margin-top:0; + .country_class{ + margin-top:10px; + } + .shiiping_block{ + margin-top:10px; + .checkbox{ + color: $text_color; + } + } + .filters-button{ + border-radius: 0; + } + .website_block{ + margin-top:10px; + } + .search{ + border-radius: 0; + } + .copy_billing_btn{ + margin-top:10px; + display: block; + } +} +/* overview_form_block ends here */ +/* details_block starts here */ +.details_block{ + @extend .filter_row; + .form-control{ + border-radius: 0; + box-shadow: none; + font-size: 12px; + } +} +.buttons_row{ + margin-bottom: 20px; + button{ + border-radius: 0; + font-size: 12px; + &.save{ + background: $dark_sky; + color: #fff; + } + } +} +/* details_block ends here */ +/* attendees starts here */ +.attendees{ + @extend .filter_row; +} +/* attendees ends here */ + + + +.case-list-container{ + margin-bottom: 15px; +} \ No newline at end of file diff --git a/static/CACHE/css/e896313d318c.css b/static/CACHE/css/e896313d318c.css new file mode 100644 index 00000000..24832828 --- /dev/null +++ b/static/CACHE/css/e896313d318c.css @@ -0,0 +1 @@ +.card{border:1px solid #ccc}.buttons_row{margin-top:23px}.buttons_row button{border-radius:0;font-size:12px}.buttons_row button.save{background:#099CBE;color:#fff}.buttons_row .clear{border:1px solid #099CBE;border:1px solid #099CBE;border-radius:0;color:#099CBE;font-size:12px}.buttons_row.form_btn_row{display:block}.table-responsive{padding:10px}select.form-control{height:32px!important}.mar-top{margin-top:15px}body{font-family:Poppins,sans-serif;padding:0;font-size:12px;font-weight:500;margin:0;padding-top:60px}.login_register_body{background:#808080}.marl{margin-left:0;margin-right:0}.login_block{margin-top:75px;background:#fff;-webkit-box-shadow:10px 10px 0px -4px rgba(0,0,0,0.19);-moz-box-shadow:10px 10px 0px -4px rgba(0,0,0,0.19);box-shadow:10px 10px 0px -4px rgba(0,0,0,0.19)}.login_block .welcome{text-transform:uppercase;font-size:14px;font-weight:600;letter-spacing:1px;color:#333}.login_block .welcome span{color:#00e5ff}.login_block .welcome span.create_head{color:#7eea51}.login_form_block{margin-top:30px;padding:50px 15px}.login_form_block .welcome{margin-bottom:20px;text-align:center}.login_form_block .form-group{margin-bottom:15px}.login_form_block label{font-size:12px;color:#595f75;font-weight:500}.login_form_block .form-control{background:#dcdcdc;color:#5a6e79;min-height:40px;font-size:13px;letter-spacing:0.5px;box-shadow:none;border:none;border-radius:3px}.login_form_block .btn{background:#ed6364;border-radius:3px;border:none;text-transform:uppercase;font-size:13px;letter-spacing:1px;font-weight:500;color:#fff;width:100%;outline:none;padding:10px 20px}.login_form_block .btn:hover{text-decoration:none}.login_form_block .checkbox{text-align:center}.login_form_block .checkbox input[type=checkbox]{vertical-align:middle;margin:0;margin-top:1px;margin-left:-19px}.main_body_bg_color{background:#CDCDCD}header .navbar{background:#39464d;border:none}header .navbar .navbar-brand{color:#ed6364}header .navbar .navbar-brand:hover{color:#ed6364}header .navbar .navbar-nav>li>a{color:#aaa;font-weight:500;font-size:12px;padding:15px 10px}@media (min-width:240px) and (max-width:767px){header .navbar .navbar-nav>li>a{padding:5px 10px}}header .navbar .navbar-nav>li>a:hover{color:#ddd}header .navbar .navbar-nav>.open>a{background:#ed6364!important}header .navbar .navbar-nav li .dropdown-toggle img{width:25px;height:25px}header .navbar .navbar-nav li .dropdown-menu a{font-size:12px}header .navbar .navbar-nav.navbar-right .dropdown .dropdown-toggle img{width:25px;height:25px}header .navbar .navbar-nav.navbar-right .dropdown>a{background:#657b88;color:#fff;border-right:1px solid #718895}header .navbar .navbar-nav.navbar-right .dropdown>a.nav-link{padding:0.5rem}header .navbar .navbar-form .form-group .form-control{border-radius:3px;border:none}header .navbar .navbar-form .btn{border-radius:3px;padding:7px 12px;border:none;background:#41B871}header .navbar .navbar-form .btn.btn-default{color:#fff}.glyphicon-bell{font-size:1.5rem}.notifications{min-width:420px;font-size:12px;padding:0;border:none}.notifications a.content{text-decoration:none;background:#ccc}.notifications-wrapper{overflow:auto;max-height:250px}.menu-title{color:#ffffff;font-size:12px;display:inline-block;text-transform:uppercase;font-weight:500;letter-spacing:1px}.glyphicon-circle-arrow-right{margin-left:10px}.notification-heading{padding:2px 10px;background:#657b88;border-top:1px solid #718895}.notification-footer{padding:2px 10px;background:#41B871}.dropdown-menu.divider{margin:5px 0}.item-title{font-size:12px;color:#39464d;margin:0}.notification-item{padding:10px;margin:5px;background:#ccc;border-radius:4px}.notification-item p{margin:0;color:#fff;margin-top:6px}.main_container{padding-top:10px}.main_container .heading_create .heading{font-size:14px;text-transform:uppercase;letter-spacing:1px;color:#39464d;font-weight:600}.main_container .heading_create .heading h4{font-size:15px}.main_container .heading_create .create_new a{background:#ed6364;color:#fff;font-size:12px;font-weight:500;text-transform:capitalize;letter-spacing:initial;display:inline-block;padding:5px 10px 3px 10px}.main_container .heading_create .search-row .form-group .input-group .left-dropdown .filters-button{font-size:12px;background:#fff;border:none;box-shadow:none;margin-top:1px}.main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li a{font-size:12px}.main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li.checkbox{color:#000;padding-left:10px;font-size:12px;letter-spacing:0.4px}.main_container .heading_create .search-row .form-group .input-group .left-dropdown .dropdown-menu li.checkbox input[type=checkbox]{margin:0;margin-left:-10px;margin-top:1px;margin-right:10px}.main_container .heading_create .search-row .form-group .input-group .form-control{height:29px;border:none;margin-top:2px}.main_container .heading_create .search-row .form-group .input-group .search{background:#41B871;color:#fff;border:none;padding:5px 13px;margin-top:2px}.main_container .heading_create .search-row .extra_option_btn{font-size:12px;background:#5b636e;border:none;color:#fff;padding-top:7px;padding-bottom:7px}.main_container .heading_create .search-row .extra_option_btn.add-filter-button{background-color:#099CBE}.main_container .heading_create .search-row .dropdown-menu{font-size:12px}.main_container .filter_row,.main_container .assigned_teams,.main_container .overview_form_block,.main_container .details_block,.main_container .attendees{margin-top:10px}.main_container .filter_row .card,.main_container .assigned_teams .card,.main_container .overview_form_block .card,.main_container .details_block .card,.main_container .attendees .card{border:1px solid #ccc}.main_container .filter_row .card .card-body,.main_container .assigned_teams .card .card-body,.main_container .overview_form_block .card .card-body,.main_container .details_block .card .card-body,.main_container .attendees .card .card-body{padding:0px 0}.main_container .filter_row .card .card-body .card-title,.main_container .assigned_teams .card .card-body .card-title,.main_container .overview_form_block .card .card-body .card-title,.main_container .details_block .card .card-body .card-title,.main_container .attendees .card .card-body .card-title{background:#e5e5e5;padding:6px 10px;font-size:13px}.main_container .filter_row .card .card-body .form-group,.main_container .assigned_teams .card .card-body .form-group,.main_container .overview_form_block .card .card-body .form-group,.main_container .details_block .card .card-body .form-group,.main_container .attendees .card .card-body .form-group{margin-bottom:10px}.main_container .filter_row .card .card-body .form-group label,.main_container .assigned_teams .card .card-body .form-group label,.main_container .overview_form_block .card .card-body .form-group label,.main_container .details_block .card .card-body .form-group label,.main_container .attendees .card .card-body .form-group label{color:#5a6e79;font-size:12px;font-weight:500}.main_container .filter_row .card .card-body .form-group .form-control,.main_container .assigned_teams .card .card-body .form-group .form-control,.main_container .overview_form_block .card .card-body .form-group .form-control,.main_container .details_block .card .card-body .form-group .form-control,.main_container .attendees .card .card-body .form-group .form-control{border-radius:0;box-shadow:none;font-size:12px}.table_container_row{margin-top:10px}.table_container_row .card .card-title{padding:5px 10px;background:#e5e5e5;padding:6px 10px;font-size:13px;margin-bottom:0}.table_container_row .card .card-title .dropdown{display:inline-block}.table_container_row .card .card-title .dropdown .dropdown-toggle{background:#099CBE;font-size:12px;color:#fff;border-radius:0;border:none}.table_container_row .card .card-title .mark_read{background:#CDCDCD;display:inline-block;padding:6px 10px;margin-left:6px;color:#5a6e79}.table_container_row .card .card-title .mark_read:hover{background:#5a6e79;color:#fff;text-decoration:none}.table_container_row .card .card-title .total_count{margin-top:0px}.table_container_row .card-body{padding:0px 0px}.table_container_row .card-body table thead tr th{background:#5b646d;color:#fff;font-weight:500;font-size:12px;border:none;padding:6px}.table_container_row .card-body table tbody tr td{vertical-align:middle;color:#454545;font-size:12px;font-weight:400;padding:7px 0}.table_container_row .card-body table tbody tr td a{color:#454545}.table_container_row .card-body table tbody tr td .dropdown .dropdown-toggle{background:#099CBE;font-size:12px;color:#fff;border-radius:0;border:none}.table_container_row .card-body table tbody tr td.actions .btn{border-radius:0;font-size:12px;padding:3px 5px;color:#fff}.table_container_row .card-body table tbody tr td.actions .btn svg{display:inline-block;margin-right:5px}.table_container_row .mail_menu .panel{border-radius:0;padding:0;background:none;border:0}.table_container_row .mail_menu .panel .panel-content{padding:0}.table_container_row .mail_menu .panel .panel-content .mail_options{margin:0;padding:0}.table_container_row .mail_menu .panel .panel-content .mail_options li{list-style:none}.table_container_row .mail_menu .panel .panel-content .mail_options li a{display:block;padding:10px;background:#5a6e79;margin:1px;color:white;text-transform:uppercase;letter-spacing:0.6px}.table_container_row .mail_menu .panel .panel-content .mail_options li a:hover{background:#41B871;color:#fff;text-decoration:none;border-left:3px solid white}.table_container_row .mail_menu .panel .panel-content .mail_options li.active a{background:#41B871;color:#fff;text-decoration:none;border-left:3px solid white}.breadcrumb{margin:0;background:none}.breadcrumb .breadcrumb-item a{color:#099CBE}.breadcrumb>li + li:before{color:#5a6e79}.assigned_teams{margin-top:0}.overview_form_block{margin-top:0}.overview_form_block .card-title{height:45px}.overview_form_block .card-title h5{margin-bottom:0;position:relative;top:10px;font-size:13px}.overview_form_block .card-title .dropdown .dropdown-menu li a{font-size:0.85rem;color:#454545;text-transform:capitalize!important;font-weight:400;display:block;padding:5px 8px}.overview_form_block .buttons_row{margin:0;position:relative;top:-10px}.overview_form_block .form-control{border-radius:0;box-shadow:none;font-size:12px}.overview_form_block .country_class{margin-top:10px}.overview_form_block .shiiping_block{margin-top:10px}.overview_form_block .shiiping_block .checkbox{color:#5a6e79}.overview_form_block .filters-button{border-radius:0}.overview_form_block .website_block{margin-top:10px}.overview_form_block .search{border-radius:0}.overview_form_block .copy_billing_btn{margin-top:10px;display:block}.details_block .form-control{border-radius:0;box-shadow:none;font-size:12px}.buttons_row{margin-bottom:20px}.buttons_row button{border-radius:0;font-size:12px}.buttons_row button.save{background:#099CBE;color:#fff}.case-list-container{margin-bottom:15px} \ No newline at end of file diff --git a/static/css/main.scss b/static/css/main.scss index 93a46edb..807ad887 100644 --- a/static/css/main.scss +++ b/static/css/main.scss @@ -100,7 +100,7 @@ box-shadow: 10px 10px 0px -4px rgba(0,0,0,0.19); background: $inner_page_bg; } header{ - .navbar-default{ + .navbar{ background: darken($text_color, 15%); border:none; .navbar-brand{ @@ -116,6 +116,9 @@ header{ font-weight: 500; font-size: 12px; padding:15px 10px; + @media(min-width: $mob_min) and (max-width: $smob_max) { + padding:5px 10px; + } &:hover{ color:#ddd; } @@ -128,20 +131,33 @@ header{ } } li{ - .dropdown-menu{ - li{ - a{ - font-size: 12px; + .dropdown-toggle{ + img{ + width: 25px; + height: 25px; } } + .dropdown-menu{ + a{ + font-size: 12px; + } } } &.navbar-right{ .dropdown{ + .dropdown-toggle{ + img{ + width: 25px; + height: 25px; + } + } >a{ background:lighten($text_color,5%); color: #fff; border-right:1px solid lighten($text_color,10%); + &.nav-link{ + padding:0.5rem; + } } } } @@ -230,13 +246,17 @@ $color_2: #000; /* main_container stats here */ .main_container{ + padding-top: 10px; .heading_create{ .heading{ - font-size: 16px; + font-size: 14px; text-transform: uppercase; letter-spacing: 1px; color: darken($text_color, 15%); font-weight: 600; + h4{ + font-size: 15px; + } } .create_new{ a{ @@ -244,9 +264,10 @@ $color_2: #000; color: #fff; font-size: 12px; font-weight: 500; - text-transform: uppercase; + text-transform: capitalize; + letter-spacing: initial; display: inline-block; - padding: 10px 10px 7px 10px; + padding: 5px 10px 3px 10px; } } .search-row{ @@ -314,13 +335,17 @@ $color_2: #000; /* filter_row starts here */ .filter_row{ - margin-top:0px; - .panel{ - .panel-heading{ - text-transform: uppercase; - } - .panel-content{ - padding:10px 0; + margin-top:10px; + .card{ + border:1px solid #ccc; + .card-body{ + padding:0px 0; + .card-title{ + background: #e5e5e5; + padding:6px 10px; + font-size: 13px; + + } .form-group{ margin-bottom: 10px; label{ @@ -344,9 +369,13 @@ $color_2: #000; /* main_container ends here */ .table_container_row{ margin-top: 10px; - .panel-default{ - .panel-heading{ + .card{ + .card-title{ padding:5px 10px; + background: #e5e5e5; + padding:6px 10px; + font-size: 13px; + margin-bottom: 0; .dropdown{ display: inline-block; .dropdown-toggle{ @@ -370,12 +399,12 @@ $color_2: #000; } } .total_count{ - margin-top:5px; + margin-top:0px; } } } - .panel-content{ - padding:15px; + .card-body{ + padding:0px 0px; table{ thead{ tr{ @@ -386,6 +415,7 @@ $color_2: #000; /* text-transform: uppercase; */ font-size: 12px; border: none; + padding:6px; } } } @@ -393,9 +423,13 @@ $color_2: #000; tr{ td{ vertical-align: middle; - color: #5b636d; + color: #454545; font-size: 12px; - font-weight: 500; + font-weight: 400; + padding:7px 0; + a{ + color: #454545; + } .dropdown{ .dropdown-toggle{ background: $dark_sky; @@ -405,6 +439,18 @@ $color_2: #000; border:none; } } + &.actions{ + .btn{ + border-radius: 0; + font-size: 12px; + padding:3px 5px; + color: #fff; + svg{ + display: inline-block; + margin-right: 5px; + } + } + } } } } @@ -459,6 +505,11 @@ $color_2: #000; .breadcrumb{ margin:0; background: none; + .breadcrumb-item{ + a{ + color: $dark_sky; + } + } } .breadcrumb>li+li:before{ color:$text_color; @@ -474,6 +525,34 @@ $color_2: #000; /* overview_form_block starts here */ .overview_form_block{ @extend .filter_row; + .card-title{ + height: 45px; + h5{ + margin-bottom: 0; + position: relative; + top: 10px; + font-size: 13px; + } + .dropdown{ + .dropdown-menu{ + li{ + a{ + font-size: 0.85rem; + color: #454545; + text-transform: capitalize !important; + font-weight: 400; + display: block; + padding:5px 8px; + } + } + } + } + } + .buttons_row{ + margin:0; + position: relative; + top: -10px; + } .form-control{ border-radius: 0; box-shadow: none; @@ -531,3 +610,8 @@ $color_2: #000; } /* attendees ends here */ + + +.case-list-container{ + margin-bottom: 15px; +} \ No newline at end of file diff --git a/static/css/ref.scss b/static/css/ref.scss index e6cf8528..41adfbcb 100644 --- a/static/css/ref.scss +++ b/static/css/ref.scss @@ -18,4 +18,51 @@ $inner_page_bg:#CDCDCD; //fonts $font_0: Poppins; -$font_1: sans-serif; \ No newline at end of file +$font_1: sans-serif; + +//mediaviews +$med_min:992px; +$med_max:1199px; +$tab_max:991px; +$tab_min:768px; +$smob_max:767px; +$smob_min:480px; +$mob_max:479px; +$mob_min:240px; + +.card{ + border:1px solid #ccc; +} +.buttons_row{ + margin-top: 23px; + button{ + border-radius: 0; + font-size: 12px; + &.save{ + background: $dark_sky; + color: #fff; + } + } + .clear{ + border:1px solid $dark_sky; + border:1px solid $dark_sky; + border-radius: 0; + color: $dark_sky; + font-size: 12px; + } + &.form_btn_row{ + display: block; + } +} +.table-responsive{ + padding:10px; +} +select{ + &.form-control{ + height: 32px !important; + } +} + +.mar-top{ + margin-top: 15px; +} diff --git a/templates/accounts/accounts.html b/templates/accounts/accounts.html index 00cc99f7..939d1548 100644 --- a/templates/accounts/accounts.html +++ b/templates/accounts/accounts.html @@ -7,6 +7,7 @@
+

Accounts

@@ -15,30 +16,32 @@ Add New Account
+
-
-
-
+
+
+
Filters
{% csrf_token %} -
-
+ +
+
-
+
-
+
-
+
{% if not account_obj %} - + {% endif %} - CANCEL + CANCEL
{% endblock %} diff --git a/templates/accounts/view_account.html b/templates/accounts/view_account.html index 57f99cd5..ed335f29 100644 --- a/templates/accounts/view_account.html +++ b/templates/accounts/view_account.html @@ -2,10 +2,12 @@ {% load staticfiles %} {% block breadcrumb1 %} + {% endblock breadcrumb1 %} {% block content %} @@ -13,13 +15,15 @@
-
-
+
+ +
+
- OVERVIEW - -
-
{% if account_record.name %} @@ -140,17 +143,20 @@
-
-
COMMENTS
+ +
+
+
Comments
-
{% csrf_token %}

+
+
@@ -205,11 +211,12 @@
-
-
+
+ +
+
Label
-
@@ -266,20 +273,22 @@
-
-
- CONTACTS +
+ +
+
+ Contacts
-
+
- - - - + + + + @@ -289,15 +298,16 @@ - {% endfor %}
S.NoCONTACT NAMEPHONEEMAILACTIONSContact NamePhoneEmailActions
{{ contact.first_name }} {{ contact.last_name }} {{ contact.phone }} {{ contact.email }} - - - + + + +
+

@@ -777,20 +787,22 @@
-
-
- OPPORTUNITIES +
+ +
+
+ Opportunities
-
+
- - - - + + + + @@ -800,16 +812,17 @@ - {% endfor %}
S.NoNAMESTAGEPROBABILITYACTIONSNameStageProbabilityActions
{{opportunity.name}} {{opportunity.stage}} {{opportunity.probability}} {% if opportunity.probability %} % {% endif %} - - - + + + +
+

@@ -1334,20 +1347,22 @@
-
-
- CASES +
+ +
+
+ Cases
-
+
- - - - + + + + @@ -1357,15 +1372,16 @@ - {% endfor %}
S.NoNAMESTATUSPRIORITYACTIONSNameStatusPriorityActions
{{ case.name }} {{ case.status }} {{ case.priority }} - - - + + + +
+

diff --git a/templates/base.html b/templates/base.html index a8342907..767d1e8a 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,4 +1,6 @@ -{% load staticfiles %} + {% load staticfiles %} + {% load compress %} + @@ -7,15 +9,16 @@ - Micro CRM + Django CRM - - - + + + - + {% compress css %} + + {% endcompress %} {% block extralinks %}{% endblock %} @@ -39,8 +42,9 @@ - + + {% block content %} diff --git a/templates/cases/cases.html b/templates/cases/cases.html index 239bea2a..40276678 100644 --- a/templates/cases/cases.html +++ b/templates/cases/cases.html @@ -7,6 +7,7 @@
+

Cases

@@ -15,17 +16,19 @@ Add New Case
+
-
-
-
+
+ {% csrf_token %} -
+
+
Filters
+
@@ -67,13 +70,16 @@
+
-
- - Clear +
+ + Clear +
+

@@ -84,12 +90,14 @@
-
-
- LIST OF CASES - {% if show_pageitems %} {% show_pageitems %}{% else %}Total Cases {{ cases|length }}{% endif %} +
+ +
+
+ List Of Cases + {% if show_pageitems %} {% show_pageitems %}{% else %}Total Cases {{ cases|length }}{% endif %}
-
+
@@ -120,18 +128,19 @@ - {% endfor %}
{{ case.status }} {{ case.priority }} - View - Edit - Remove - Close + + View + Edit + + Close
+
{% ifequal cases|length 0 %} -

No Cases Records Found

+
No Cases Records Found
{% endifequal %}
{% show_pages %} diff --git a/templates/cases/create_cases.html b/templates/cases/create_cases.html index bc071a42..6a5ce423 100644 --- a/templates/cases/create_cases.html +++ b/templates/cases/create_cases.html @@ -1,20 +1,25 @@ {% extends 'base.html' %} {% load staticfiles %} {% block breadcrumb %} + + {% endblock %} {% block content %}
{% csrf_token %}
-
-
+
+ +
+
Assigned Users & Teams
-
+
@@ -27,6 +32,7 @@ {{ case_form.teams }}
+

@@ -35,12 +41,13 @@
-
-
+
+ +
+
Overview
-
-
+
@@ -113,12 +120,12 @@
-
+
{% if not case_obj %} {% endif %} - Cancel + Cancel
{% endblock %} diff --git a/templates/cases/view_case.html b/templates/cases/view_case.html index d6ba0422..9173a920 100644 --- a/templates/cases/view_case.html +++ b/templates/cases/view_case.html @@ -5,13 +5,15 @@
-
-
+
+ +
+
- OVERVIEW - -
-
@@ -94,17 +95,20 @@
-
-
COMMENTS
+ +
+
+
Comments
-
{% csrf_token %}

+
+
@@ -159,11 +163,12 @@
-
-
+
+ +
+
Label
-
@@ -213,19 +218,30 @@
-
-
-

+
+ +
+
+ Activities -

+
-
- -
+
+ + + + +
@@ -368,22 +384,35 @@
+
-
-
-

+
+ +
+
+ History -

+
-
- -
+
+ + + + + +
@@ -522,6 +551,7 @@
+
diff --git a/templates/contacts/contacts.html b/templates/contacts/contacts.html index da57088e..ecc7bd14 100644 --- a/templates/contacts/contacts.html +++ b/templates/contacts/contacts.html @@ -7,6 +7,7 @@
+

Contacts

@@ -15,18 +16,21 @@ Add New Contact
+
-
-
-
+
+
{%csrf_token%} -
-
+ +
+
Filters
+
+
-
+
-
+
-
- - Clear +
+ + Clear
+

@@ -65,21 +70,23 @@
-
-
- LIST OF CONTACTS +
+ +
+
+ List of Contacts {% if show_pageitems %} {% show_pageitems %}{% else %}Total Contacts {{contact_obj_list|length}}{% endif %}
-
+
- - - - - - + + + + + + @@ -113,17 +120,18 @@ Not Specified {% endif %} - {% endfor%}
S.NoNAMEACCOUNTCITYSTATEACTIONSS.noNameCityStateIndustryActions
- View - Edit - Delete + + View + Edit +
+
{%ifequal contact_obj_list|length 0 %} -

No Contact Records Found

+
No Contact Records Found
{%endifequal%}
{% show_pages %} diff --git a/templates/contacts/create_contact.html b/templates/contacts/create_contact.html index 51570dce..b368c10f 100644 --- a/templates/contacts/create_contact.html +++ b/templates/contacts/create_contact.html @@ -1,20 +1,24 @@ {% extends 'base.html' %} {% load staticfiles %} {% block breadcrumb %} + + {% endblock %} {% block content %}
{%csrf_token%}
-
-
+
+
+
Assigned Users & Teams
-
+
@@ -31,18 +35,20 @@

+

-
-
+
+ +
+
Overview
-
-
+
@@ -124,12 +130,12 @@
-
+
{% if not contact_obj %} {% endif %} - Cancel + Cancel
{% endblock %} diff --git a/templates/contacts/view_contact.html b/templates/contacts/view_contact.html index 25cfa71c..3c3419ca 100644 --- a/templates/contacts/view_contact.html +++ b/templates/contacts/view_contact.html @@ -1,23 +1,27 @@ {% extends 'base.html' %} {% load staticfiles %} {% block breadcrumb %} + {%endblock%} {%block content%}
-
-
+
+ +
+
- OVERVIEW - -
-
@@ -95,17 +98,20 @@
-
-
COMMENTS
+ +
+
+
Comments
-
{% csrf_token %}

+
+
@@ -160,11 +166,12 @@
-
-
+
+ +
+
Label
-
diff --git a/templates/leads/create_lead.html b/templates/leads/create_lead.html index 48f8a49f..3c4d62fc 100644 --- a/templates/leads/create_lead.html +++ b/templates/leads/create_lead.html @@ -1,20 +1,25 @@ {% extends 'base.html' %} {% load staticfiles %} {% block breadcrumb %} + + {% endblock %} {%block content%}
{%csrf_token%}
-
-
+
+ +
+
Assigned Users & Teams
-
+
@@ -29,6 +34,7 @@ {{ lead_form.teams.errors }}
+

@@ -37,12 +43,13 @@
-
-
+
+ +
+
Overview
-
-
+
@@ -87,6 +94,13 @@ {{ lead_form.email.errors }}
+
+
+ + {{ lead_form.website }} + {{ lead_form.website.errors }} +
+
@@ -130,13 +144,7 @@
-
-
- - {{ lead_form.website }} - {{ lead_form.website.errors }} -
-
+
@@ -152,12 +160,12 @@
-
+
{% if not lead_obj %} {% endif %} - Cancel + Cancel
{% endblock %} diff --git a/templates/leads/leads.html b/templates/leads/leads.html index 8a58a892..901c719e 100644 --- a/templates/leads/leads.html +++ b/templates/leads/leads.html @@ -7,6 +7,7 @@
+

Leads

@@ -14,6 +15,7 @@ +
@@ -21,24 +23,25 @@
-
-
-
+
+
{%csrf_token%} -
-
+
+
Filters
+
+
-
+
-
+
-
-
- - Clear +
+
+ + Clear
+

@@ -65,22 +69,25 @@
-
-
+
+ +
+
LIST OF LEADS {% if show_pageitems %} {% show_pageitems %}{% else %}Total Leads {{ lead_obj|length }}{% endif %}
-
+
- - - - - - - + + + + + + + + {% if per_page %} @@ -105,17 +112,18 @@ {% endwith %} - {% endfor %}
S.NoNAMESTATUSASSIGNED USERCREATED ONACTIONS
S.noNameStatusAssigned UserCreated OnActions
{{ lead.created_on }} - View - Edit - Delete + + View + Edit +
+
{%ifequal lead_obj|length 0%} -

No Lead Records Found

+
No Lead Records Found
{%endifequal%}
{% show_pages %} diff --git a/templates/leads/view_leads.html b/templates/leads/view_leads.html index 121a0799..b329f189 100644 --- a/templates/leads/view_leads.html +++ b/templates/leads/view_leads.html @@ -1,22 +1,27 @@ {% extends 'base.html' %} {% load staticfiles %} {% block breadcrumb %} - + + {%endblock%} {% block content %}
-
-
+
+ +
+
- OVERVIEW - -
-
@@ -129,17 +133,20 @@
-
-
COMMENTS
+ +
+
+
Comments
-
{% csrf_token %} -
+

+
+
@@ -195,11 +202,12 @@
-
-
+
+ +
+
Label
-
diff --git a/templates/login.html b/templates/login.html index 95c5b6e3..73a30c0a 100644 --- a/templates/login.html +++ b/templates/login.html @@ -1,4 +1,6 @@ {% load staticfiles %} + {% load compress %} + @@ -7,20 +9,22 @@ - CRM Login + Django CRM - - + + + - - + {% compress css %} + + {% endcompress %} + {% block extralinks %}{% endblock %}
-