Added several indexes to optimize some db queries\nFixed too many connections due to not being closed on threads termination\nAdvanced on new dashboard

This commit is contained in:
Adolfo Gómez García 2015-10-05 13:17:54 +02:00
parent 69b6f7d7d8
commit dff20bd6e1
11 changed files with 1723 additions and 1631 deletions

View File

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('uds', '0017_calendar_calendarrule'),
]
operations = [
migrations.AlterField(
model_name='scheduler',
name='last_execution',
field=models.DateTimeField(auto_now_add=True, db_index=True),
),
migrations.AlterIndexTogether(
name='userservice',
index_together=set([('deployed_service', 'cache_level', 'state')]),
),
]

View File

@ -33,7 +33,7 @@
from __future__ import unicode_literals
__updated__ = '2014-04-24'
__updated__ = '2015-10-05'
from django.db import models
from django.db.models import signals
@ -70,7 +70,7 @@ class Scheduler(models.Model):
name = models.CharField(max_length=64, unique=True)
frecuency = models.PositiveIntegerField(default=DAY)
last_execution = models.DateTimeField(auto_now_add=True)
last_execution = models.DateTimeField(auto_now_add=True, db_index=True)
next_execution = models.DateTimeField(default=NEVER, db_index=True)
owner_server = models.CharField(max_length=64, db_index=True, default='')
state = models.CharField(max_length=1, default=State.FOR_EXECUTE, db_index=True)

View File

@ -55,7 +55,7 @@ from uds.models.Util import getSqlDatetime
import logging
__updated__ = '2015-05-14'
__updated__ = '2015-10-05'
logger = logging.getLogger(__name__)
@ -105,6 +105,11 @@ class UserService(UUIDModel):
db_table = 'uds__user_service'
ordering = ('creation_date',)
app_label = 'uds'
index_together = (
'deployed_service',
'cache_level',
'state'
)
def getEnvironment(self):
'''

File diff suppressed because one or more lines are too long

View File

@ -28,7 +28,7 @@ gui.gallery.link = ->
if file.size > 256*1024
gui.notify gettext("Image is too big (max. upload size is 256Kb)")
return
returng
$(modalId).modal "hide"
reader = new FileReader()

View File

@ -1,16 +1,21 @@
$btn-margin: $font-size-base/2;
.btn-alert {
@include button-variant(complement($brand-danger), darken($brand-danger, 10%), darken($brand-danger, 20%));
//@include button-variant(complement($brand-danger), darken($brand-danger, 10%), darken($brand-danger, 20%));
@include pretty-buttons(complement($brand-danger), darken($brand-danger, 10%));
margin-right: $btn-margin;
}
.btn-action {
@include button-variant($btn-default-color, invert($btn-default-color), $btn-default-border);
//@include button-variant($btn-default-color, invert($btn-default-color), $btn-default-border);
@include pretty-buttons($btn-default-color, $btn-default-bg);
margin-right: $font-size-base/2;
}
.btn-export {
@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
//@include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
@include pretty-buttons($btn-default-color, $btn-default-bg);
margin-right: $font-size-base/2;
}

View File

@ -0,0 +1,58 @@
@mixin pretty-buttons($color, $background, $text-shadow: none) {
color: $color;
@include gradient-vertical(lighten($background, 5%), darken($background, 5%), 0%, 100%);
border-color: darken($background, 10%);
border-bottom-color: darken($background, 20%);
text-shadow: $text-shadow;
//@include box-shadow(inset 0 1px 0 rgba(255, 255, 255, .1));
&:hover,
&:focus,
&:active,
&.active {
@include gradient-vertical(darken($background, 0), darken($background, 10%), 0%, 100%);
border-color: darken($background, 20%);
color: $color;
}
&.disabled,
&[disabled],
fieldset[disabled] & {
&,
&:hover,
&:focus,
&:active,
&.active {
background-color: $background;
border-color: darken($background, 5%);
}
}
}
/*
.btn {
&.btn-default {
@include pretty-buttons($btn-default-color, $btn-default-bg);
}
&.btn-primary {
@include pretty-buttons($btn-primary-color, $btn-primary-bg);
}
&.btn-success {
@include pretty-buttons($btn-success-color, $btn-success-bg);
}
&.btn-info {
@include pretty-buttons($btn-info-color, $btn-info-bg);
}
&.btn-warning {
@include pretty-buttons($btn-warning-color, $btn-warning-bg);
}
&.btn-danger {
@include pretty-buttons($btn-danger-color, $btn-danger-bg);
}
&.btn-inverse {
@include pretty-buttons(white, #474949);
}
}
*/

View File

@ -1,6 +1,7 @@
// Bootstrap
$icon-font-path: "../fonts/";
@import "_tools";
@import "_udsvars";
// Own variables

View File

@ -0,0 +1,159 @@
<!doctype html>
<html class="no-js" lang="">
<head>
<meta charset="utf-8">
<title>admin</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="/favicon.ico">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<!-- Place favicon.ico and apple-touch-icon.png in the root directory -->
<link rel="stylesheet" href="css/datatables.css">
<link href="css/font-awesome.min.css" rel="stylesheet" media="screen">
<!-- build:css(.) css/vendor.css -->
<!-- bower:css -->
<!-- endbower -->
<!-- endbuild -->
<!-- build:css(.tmp) css/main.css -->
<link rel="stylesheet" href="css/main.css">
<!-- endbuild -->
</head>
<body>
<!-- Navigation bar -->
<div id="wrapper">
<nav class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class ="navbar-brand lnk-dashboard" href="#">
<img alt="Universal Desktop Services" src="img/udsicon.png" class="navbar-img pull-left">
<span>Universal Desktop Services</span>
</a>
</div>
<!-- Side bar -->
<div class="collapse navbar-collapse navbar-ex1-collapse">
<div class="side-nav">
<div class="switcher fa"> </div>
<ul class="nav navbar-nav">
<li><a class="lnk-dashboard" href="#"><img src="img/icons/dashboard-monitor.png" class="icon"> <span class="menu-lnk">Overview</span></a></li>
<li><a class="lnk-service_providers" href="#"><img class="icon" src="img/icons/providers.png"/> <span class="menu-lnk">Services</span></a></li>
<li><a class="lnk-authenticators" href="#"><img class="icon" src="img/icons/authenticators.png"/> <span class="menu-lnk">Authenticators</span></a></li>
<li><a class="lnk-osmanagers" href="#"><img class="icon" src="img/icons/osmanagers.png"/> <span class="menu-lnk">Os Managers</span></a></li>
<li><a class="lnk-connectivity" href="#"><img class="icon" src="img/icons/transports.png"/> <span class="menu-lnk">Connectivity</span></a></li>
<li><a class="lnk-calendars" href="#"><img class="icon" src="img/icons/calendars.png"/> <span class="menu-lnk">Calendars</span></a></li>
<li><a class="lnk-deployed_services" href=""><img class="icon" src="img/icons/pools.png"/> <span class="menu-lnk">Service Pools</span></a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><img class="table-icon" src="img/icons/tools.png"/> Tools <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a class="lnk-gallery" href="#"><img class="table-icon" src="img/icons/gallery.png"/> Gallery</a></li>
<li><a class="lnk-reports" href=""><img class="table-icon" src="img/icons/reports.png"/> Reports</a></li>
<li><a class="lnk-configuration" href="#"><img class="table-icon" src="img/icons/configuration.png"/> Configuration</a></li>
<li><a class="lnk-clear_cache" href="#"><img class="table-icon" src="img/icons/flush-cache.png"/> Flush cache</a></li>
</ul>
</li>
</ul>
</div>
<ul class="nav navbar-nav navbar-right navbar-user">
</ul>
<form id="form_language" action="{% url "django.views.i18n.set_language" %}" method="post">
<input id="id_language" type="hidden" name="language" value=""/>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><!--<i class="glyphicon bfh-flag-{{ lang.0|country }}"></i>-->
<i class="fa fa-comments-o"></i> Spanish<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<!-- here we force an update of locale of REST api -->
<li><a href="#" onclick='$("#id_language").val("{{ lang.0 }}"); $("#form_language").submit();'>English</a></li>
<li><a href="#" onclick='$("#id_language").val("{{ lang.0 }}"); $("#form_language").submit();'>French</a></li>
<li><a href="#" onclick='$("#id_language").val("{{ lang.0 }}"); $("#form_language").submit();'>German</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-dashboard"></i> Username <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="{% url 'uds.web.views.index"><span class="fa fa-user"></span> User mode</a></li>
<li><a href="/logout"><span class="fa fa-power-off text-danger"></span> Logout</a></li>
</ul>
</li>
</ul>
</form>
</div>
</nav>
<!-- End of menu -->
<!-- Content -->
<div id="page-wrapper">
<div id="content">
<!-- start -->
<!-- end -->
</div>
</div>
</div>
<!-- build:js(.) js/vendor.js -->
<!-- bower:js -->
<script src="/bower_components/jquery/dist/jquery.js"></script>
<!-- endbower -->
<!-- endbuild -->
<!-- build:js(.) js/plugins.js -->
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/affix.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/alert.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/modal.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/transition.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/button.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/popover.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/carousel.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/collapse.js"></script>
<script src="/bower_components/bootstrap-sass/assets/javascripts/bootstrap/tab.js"></script>
<!-- endbuild -->
<!-- build:js js/main.js -->
<script src="js/datatables.min.js"></script>
<script src="js/main.js"></script>
<!-- endbuild -->
<script>
$(function(){
$('.side-nav .switcher').on('click', function() {
var rr = [$('.side-nav'), $('#wrapper')];
for( var r = 0; r < 2; r++ ) {
if( rr[r].attr('class').contains('full') ) {
rr[r].removeClass('full');
} else {
rr[r].addClass('full');
}
}
});
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff