Commit 70cb3792 by Estók Dániel

setty: elements hold position rate vertically.

parent 37c7213d
{% load i18n %}
<div class="panel panel-default">
<div class="panel-heading">
<span class="btn btn-default btn-xs infobtn pull-right" data-container="body" title="{% trans 'List of your Setty services. You can create new ones or customize existing ones.' %}">
<i class="fa fa-info-circle"></i>
</span>
<h3 class="no-margin"><i class="fa fa-server"></i> {% trans 'Services' %}
</h3>
</div>
<div class="list-group" id="template-list-view">
<div id="dashboard-service-list">
{% for s in services %}
<a href="{% url 'setty.views.service-detail' pk=s.pk %}" class="list-group-item
{% if forloop.last and templates|length < 5 %} list-group-item-last{% endif %}">
<span class="index-template-list-name">
{{ s.name }}
</span>
<small class="text-muted index-template-list-system">{{ s.status }}</small>
<div data-href="{% url 'setty.views.service-start' pk=s.pk %}" class="pull-right">
{% if s.status == "stopped" %}
<i data-container="body" title="{% trans 'Start service' %}"
class="fa fa-play"></i>
{% else %}
<i data-container="body" title="{% trans 'Stop service' %}"
class="fa fa-stop"></i>
{% endif %}
</div>
<div class="clearfix"></div>
</a>
{% empty %}
<div class="list-group-item">
<div class="alert alert-warning" style="margin: 10px;">
<p>
{% trans "You don't have any services, however you can create new ones!" %}
</p>
</div>
</div>
{% endfor %}
</div>
<div class="list-group-item list-group-footer">
<div class="row">
<div class="col-xs-5 col-sm-6">
<form action="{% url 'setty.views.service-list' %}" method="GET" id="dashboard-service-search-form">
<div class="input-group input-group-sm">
<input name="serviceSearch" type="text" class="form-control" placeholder="{% trans 'Search...' %}" />
<div class="input-group-btn">
<button type="submit" class="btn btn-primary"><i class="fa fa-search"></i></button>
</div>
</div>
</form>
</div>
<div class="col-xs-7 col-sm-6 text-right">
<a href="{% url 'setty.views.service-list' %}" class="btn btn-primary btn-xs">
<i class="fa fa-chevron-circle-right"></i> {% trans "list" %}
</a>
<a href="{% url 'setty.views.service-create' %}" class="btn btn-success btn-xs">
<i class="fa fa-plus-circle"></i> {% trans "new" %}
</a>
</div>
</div>
</div>
</div>
</div>
...@@ -43,6 +43,12 @@ ...@@ -43,6 +43,12 @@
</div> </div>
{% endif %} {% endif %}
{% if perms.vm.create_template %}
<div class="col-lg-4 col-sm-6">
{% include "dashboard/index-setty.html" %}
</div>
{% endif %}
{% if perms.vm.view_statistics %} {% if perms.vm.view_statistics %}
<div class="col-lg-4 col-sm-6"> <div class="col-lg-4 col-sm-6">
{% include "dashboard/index-nodes.html" %} {% include "dashboard/index-nodes.html" %}
......
...@@ -29,6 +29,7 @@ from braces.views import LoginRequiredMixin ...@@ -29,6 +29,7 @@ from braces.views import LoginRequiredMixin
from dashboard.models import GroupProfile from dashboard.models import GroupProfile
from vm.models import Instance, Node, InstanceTemplate from vm.models import Instance, Node, InstanceTemplate
from dashboard.views.vm import vm_ops from dashboard.views.vm import vm_ops
from setty.models import Service
from ..store_api import Store from ..store_api import Store
...@@ -100,6 +101,10 @@ class IndexView(LoginRequiredMixin, TemplateView): ...@@ -100,6 +101,10 @@ class IndexView(LoginRequiredMixin, TemplateView):
context['templates'] = InstanceTemplate.get_objects_with_level( context['templates'] = InstanceTemplate.get_objects_with_level(
'operator', user, disregard_superuser=True).all()[:5] 'operator', user, disregard_superuser=True).all()[:5]
# setty services
if user.has_perm('vm.create_template'):
context['services'] = Service.objects.filter(user=user).order_by('-pk')[:5]
# toplist # toplist
if settings.STORE_URL: if settings.STORE_URL:
cache_key = "files-%d" % self.request.user.pk cache_key = "files-%d" % self.request.user.pk
......
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('setty', '0009_element_anchors'),
]
operations = [
migrations.AlterField(
model_name='element',
name='pos_x',
field=models.FloatField(),
),
migrations.AlterField(
model_name='element',
name='pos_y',
field=models.FloatField(),
),
]
...@@ -48,8 +48,8 @@ class Element(Model): ...@@ -48,8 +48,8 @@ class Element(Model):
service = models.ForeignKey(Service, on_delete=models.CASCADE) service = models.ForeignKey(Service, on_delete=models.CASCADE)
parameters = models.TextField() parameters = models.TextField()
display_id = models.TextField() display_id = models.TextField()
pos_x = models.PositiveSmallIntegerField() pos_x = models.FloatField() # Stores a rate.
pos_y = models.PositiveSmallIntegerField() pos_y = models.FloatField() # Stores concrete position.
anchors = models.PositiveSmallIntegerField() anchors = models.PositiveSmallIntegerField()
def __unicode__(self): def __unicode__(self):
......
/* Settimng up csrf token, touch event and zoom options. */
function getCookie(name) { function getCookie(name) {
var cookieValue = null; var cookieValue = null;
if (document.cookie && document.cookie !== '') { if (document.cookie && document.cookie !== '') {
...@@ -29,33 +30,42 @@ $.ajaxSetup({ ...@@ -29,33 +30,42 @@ $.ajaxSetup({
}); });
(function($){ (function($){
$.event.special.doubletap = { $.event.special.doubletap = {
bindType: 'touchend', bindType: 'touchend',
delegateType: 'touchend', delegateType: 'touchend',
handle: function(event) { handle: function(event) {
var handleObj = event.handleObj, var handleObj = event.handleObj,
targetData = jQuery.data(event.target), targetData = jQuery.data(event.target),
now = new Date().getTime(), now = new Date().getTime(),
delta = targetData.lastTouch ? now - targetData.lastTouch : 0, delta = targetData.lastTouch ? now - targetData.lastTouch : 0,
delay = delay === null ? 300 : delay; delay = delay === null ? 300 : delay;
if (delta < delay && delta > 30) { if (delta < delay && delta > 30) {
targetData.lastTouch = null; targetData.lastTouch = null;
event.type = handleObj.origType; event.type = handleObj.origType;
['clientX', 'clientY', 'pageX', 'pageY'].forEach(function(property) { ['clientX', 'clientY', 'pageX', 'pageY'].forEach(function(property) {
event[property] = event.originalEvent.changedTouches[0][property]; event[property] = event.originalEvent.changedTouches[0][property];
}); });
handleObj.handler.apply(this, arguments); handleObj.handler.apply(this, arguments);
} else { } else {
targetData.lastTouch = now; targetData.lastTouch = now;
} }
} }
}; };
$("#dropContainer").attr('unselectable', 'on').css({
'user-select': 'none',
'MozUserSelect': 'none'})
.on('selectstart', false)
.on('mousedown', false);
})(jQuery); })(jQuery);
/* Setty implementation starts here. */
jsPlumb.ready(function() { jsPlumb.ready(function() {
var jsPlumbInstance = jsPlumb.getInstance({ var jsPlumbInstance = jsPlumb.getInstance({
DragOptions: { DragOptions: {
...@@ -96,7 +106,8 @@ jsPlumb.ready(function() { ...@@ -96,7 +106,8 @@ jsPlumb.ready(function() {
var elementIndex = 0; var elementIndex = 0;
var dragContainerScroll = 0; var dragContainerScroll = 0;
var clickEvent = 0; var clickEvent = 0;
var dragContainer = document.getElementById("dragContainer");
var workspaceWidth = $("#dropContainer").width();
var stackIndexer = 0; var stackIndexer = 0;
var stackSize = 0; var stackSize = 0;
...@@ -104,12 +115,7 @@ jsPlumb.ready(function() { ...@@ -104,12 +115,7 @@ jsPlumb.ready(function() {
var undoStack = []; var undoStack = [];
var redoStack = []; var redoStack = [];
$("#dropContainer").attr('unselectable', 'on').css({ /* Functions. */
'user-select': 'none',
'MozUserSelect': 'none'})
.on('selectstart', false)
.on('mousedown', false);
setServiceStatus = function(status) { setServiceStatus = function(status) {
if (status == "unsaved") { if (status == "unsaved") {
...@@ -120,7 +126,6 @@ jsPlumb.ready(function() { ...@@ -120,7 +126,6 @@ jsPlumb.ready(function() {
} }
}; };
addInfo = function(title, info, type, object) { addInfo = function(title, info, type, object) {
$("#informationContainer").empty(); $("#informationContainer").empty();
...@@ -199,9 +204,10 @@ jsPlumb.ready(function() { ...@@ -199,9 +204,10 @@ jsPlumb.ready(function() {
$("#dragPanel").hide(); $("#dragPanel").hide();
$("#informationPanel").show(); $("#informationPanel").show();
sharedObject = object;
}; };
updateConnections = function(connection, remove) { updateConnections = function(connection, remove) {
if (!remove) { if (!remove) {
elementConnections.push(connection); elementConnections.push(connection);
...@@ -221,7 +227,6 @@ jsPlumb.ready(function() { ...@@ -221,7 +227,6 @@ jsPlumb.ready(function() {
setServiceStatus("unsaved"); setServiceStatus("unsaved");
}; };
checkDuplicateConnection = function(connection) { checkDuplicateConnection = function(connection) {
for (var i = 0; i < elementConnections.length; i++) { for (var i = 0; i < elementConnections.length; i++) {
if (((elementConnections[i].targetId == if (((elementConnections[i].targetId ==
...@@ -240,7 +245,6 @@ jsPlumb.ready(function() { ...@@ -240,7 +245,6 @@ jsPlumb.ready(function() {
return true; return true;
}; };
checkCompatibility = function(sourceId, targetId) { checkCompatibility = function(sourceId, targetId) {
validTargets = $("#" + sourceId).attr("type").split(','); validTargets = $("#" + sourceId).attr("type").split(',');
...@@ -251,7 +255,6 @@ jsPlumb.ready(function() { ...@@ -251,7 +255,6 @@ jsPlumb.ready(function() {
return true; return true;
}; };
checkSourceTargetEquality = function(connection) { checkSourceTargetEquality = function(connection) {
if (connection.targetId == connection.sourceId) { if (connection.targetId == connection.sourceId) {
addMessage("Connecting element to itself is forbidden.", "danger"); addMessage("Connecting element to itself is forbidden.", "danger");
...@@ -260,7 +263,6 @@ jsPlumb.ready(function() { ...@@ -260,7 +263,6 @@ jsPlumb.ready(function() {
return true; return true;
}; };
getAnchorCoordinate = function(rate) { getAnchorCoordinate = function(rate) {
x = Math.cos(2.0 * Math.PI * rate) / 2; x = Math.cos(2.0 * Math.PI * rate) / 2;
y = Math.sin(2.0 * Math.PI * rate) / 2; y = Math.sin(2.0 * Math.PI * rate) / 2;
...@@ -293,7 +295,6 @@ jsPlumb.ready(function() { ...@@ -293,7 +295,6 @@ jsPlumb.ready(function() {
return [y + 0.5, -x + 0.5, dy, -dx]; return [y + 0.5, -x + 0.5, dy, -dx];
}; };
isConnected = function(anchorId) { isConnected = function(anchorId) {
returnValue = false; returnValue = false;
$.each(elementConnections, function(index) { $.each(elementConnections, function(index) {
...@@ -306,7 +307,6 @@ jsPlumb.ready(function() { ...@@ -306,7 +307,6 @@ jsPlumb.ready(function() {
return returnValue; return returnValue;
}; };
getConnectionparamAndAnchor = function(anchorId) { getConnectionparamAndAnchor = function(anchorId) {
parameters = ""; parameters = "";
otherAnchor = ""; otherAnchor = "";
...@@ -328,7 +328,6 @@ jsPlumb.ready(function() { ...@@ -328,7 +328,6 @@ jsPlumb.ready(function() {
return [otherAnchor, parameters]; return [otherAnchor, parameters];
}; };
addEndpoint = function(element) { addEndpoint = function(element) {
anchors = element.attr("anchors"); anchors = element.attr("anchors");
...@@ -350,7 +349,6 @@ jsPlumb.ready(function() { ...@@ -350,7 +349,6 @@ jsPlumb.ready(function() {
jsPlumbInstance.repaintEverything(); jsPlumbInstance.repaintEverything();
}; };
removeEndoint = function(element) { removeEndoint = function(element) {
anchors = element.attr("anchors"); anchors = element.attr("anchors");
...@@ -385,7 +383,6 @@ jsPlumb.ready(function() { ...@@ -385,7 +383,6 @@ jsPlumb.ready(function() {
jsPlumbInstance.repaintEverything(); jsPlumbInstance.repaintEverything();
}; };
connectEndpoints = function(data) { connectEndpoints = function(data) {
connectionObject = connectionObject =
jsPlumbInstance.connect({ jsPlumbInstance.connect({
...@@ -397,7 +394,6 @@ jsPlumb.ready(function() { ...@@ -397,7 +394,6 @@ jsPlumb.ready(function() {
setServiceStatus("unsaved"); setServiceStatus("unsaved");
}; };
disconnectEndpoints = function(data) { disconnectEndpoints = function(data) {
for (var i = 0; i < elementConnections.length; i++) { for (var i = 0; i < elementConnections.length; i++) {
if (elementConnections[i].endpoints[0].getUuid() == data[0] && if (elementConnections[i].endpoints[0].getUuid() == data[0] &&
...@@ -409,7 +405,6 @@ jsPlumb.ready(function() { ...@@ -409,7 +405,6 @@ jsPlumb.ready(function() {
return; return;
}; };
addElement = function(idOrInstance, newId, newPositionY, endpoints, parameters, newPositionX) { addElement = function(idOrInstance, newId, newPositionY, endpoints, parameters, newPositionX) {
newInstance = ""; newInstance = "";
...@@ -443,15 +438,15 @@ jsPlumb.ready(function() { ...@@ -443,15 +438,15 @@ jsPlumb.ready(function() {
setServiceStatus("unsaved"); setServiceStatus("unsaved");
jsPlumbInstance.repaintEverything(); jsPlumbInstance.repaintEverything();
return newInstance;
}; };
removeElement = function(object) { removeElement = function(object) {
jsPlumbInstance.detachAllConnections(object); jsPlumbInstance.detachAllConnections(object);
jsPlumbInstance.remove(object.attr("id")); jsPlumbInstance.remove(object.attr("id"));
}; };
scrollContainer = function(direction) { scrollContainer = function(direction) {
dragContainerScroll += direction; dragContainerScroll += direction;
...@@ -463,7 +458,6 @@ jsPlumb.ready(function() { ...@@ -463,7 +458,6 @@ jsPlumb.ready(function() {
); );
}; };
mouseScrollContainer = function(event) { mouseScrollContainer = function(event) {
var e = window.event || event; var e = window.event || event;
var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail))); var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));
...@@ -476,6 +470,16 @@ jsPlumb.ready(function() { ...@@ -476,6 +470,16 @@ jsPlumb.ready(function() {
}; };
/* Registering eventlisteners for controlling scroll events. */
if (dragContainer.addEventListener) {
dragContainer.addEventListener("mousewheel", mouseScrollContainer, false);
dragContainer.addEventListener("DOMMouseScroll", mouseScrollContainer, false);
} else dragContainer.attachEvent("onmousewheel", mouseScrollContainer);
/* Registering events using JsPlumb. */
jsPlumbInstance.bind("connection", function(info) { jsPlumbInstance.bind("connection", function(info) {
updateConnections(info.connection); updateConnections(info.connection);
info.connection.parameters = ""; info.connection.parameters = "";
...@@ -498,14 +502,12 @@ jsPlumb.ready(function() { ...@@ -498,14 +502,12 @@ jsPlumb.ready(function() {
} }
}); });
jsPlumbInstance.bind("beforeDrop", function(info) { jsPlumbInstance.bind("beforeDrop", function(info) {
return checkDuplicateConnection(info.connection) && return checkDuplicateConnection(info.connection) &&
checkSourceTargetEquality(info.connection) && checkSourceTargetEquality(info.connection) &&
checkCompatibility(info.connection.sourceId, info.connection.targetId); checkCompatibility(info.connection.sourceId, info.connection.targetId);
}); });
jsPlumbInstance.bind("connectionDetached", function(info) { jsPlumbInstance.bind("connectionDetached", function(info) {
updateConnections(info.connection, true); updateConnections(info.connection, true);
...@@ -522,19 +524,16 @@ jsPlumb.ready(function() { ...@@ -522,19 +524,16 @@ jsPlumb.ready(function() {
} }
}); });
jsPlumbInstance.bind("connectionMoved", function(info) { jsPlumbInstance.bind("connectionMoved", function(info) {
updateConnections(info.connection, true); updateConnections(info.connection, true);
}); });
jsPlumbInstance.bind("contextmenu", function(info) { jsPlumbInstance.bind("contextmenu", function(info) {
jsPlumbInstance.detach(info); jsPlumbInstance.detach(info);
$("#informationPanel").hide(); $("#informationPanel").hide();
$("#dragPanel").show(); $("#dragPanel").show();
}); });
jsPlumbInstance.bind("dblclick", function(info) { jsPlumbInstance.bind("dblclick", function(info) {
$('.element').removeClass('elementSelected'); $('.element').removeClass('elementSelected');
jsPlumbInstance.select().setPaintStyle({strokeStyle:'#9932cc', lineWidth: 8}); jsPlumbInstance.select().setPaintStyle({strokeStyle:'#9932cc', lineWidth: 8});
...@@ -545,12 +544,13 @@ jsPlumb.ready(function() { ...@@ -545,12 +544,13 @@ jsPlumb.ready(function() {
info); info);
}); });
jsPlumbInstance.draggable(jsPlumb.getSelector(".element"), { jsPlumbInstance.draggable(jsPlumb.getSelector(".element"), {
containment: $("#dropContainer") containment: $("#dropContainer")
}); });
/* Registering events using JQuery. */
$('body').on('click', '.elementTemplate', function() { $('body').on('click', '.elementTemplate', function() {
addElement($(this).attr("id"), (++elementIndex) + "_" + $(this).attr("id"), (elementIndex % 21) * 30, 4, "", (elementIndex % 21) * 30); addElement($(this).attr("id"), (++elementIndex) + "_" + $(this).attr("id"), (elementIndex % 21) * 30, 4, "", (elementIndex % 21) * 30);
...@@ -561,7 +561,6 @@ jsPlumb.ready(function() { ...@@ -561,7 +561,6 @@ jsPlumb.ready(function() {
stackIndexer++; stackIndexer++;
}); });
$('body').on('dblclick doubletap', '.element', function() { $('body').on('dblclick doubletap', '.element', function() {
element = $(this); element = $(this);
$('.element').removeClass('elementSelected'); $('.element').removeClass('elementSelected');
...@@ -571,7 +570,6 @@ jsPlumb.ready(function() { ...@@ -571,7 +570,6 @@ jsPlumb.ready(function() {
$(document).scrollTop(0); $(document).scrollTop(0);
}); });
$('body').on('contextmenu', '.element', function(event) { $('body').on('contextmenu', '.element', function(event) {
setServiceStatus("unsaved"); setServiceStatus("unsaved");
$("#informationPanel").hide(); $("#informationPanel").hide();
...@@ -589,7 +587,6 @@ jsPlumb.ready(function() { ...@@ -589,7 +587,6 @@ jsPlumb.ready(function() {
stackIndexer++; stackIndexer++;
}); });
$('body').on('click', '#closeInfoPanel', function() { $('body').on('click', '#closeInfoPanel', function() {
$('#informationPanel').hide(); $('#informationPanel').hide();
$('#dragPanel').show(); $('#dragPanel').show();
...@@ -597,7 +594,6 @@ jsPlumb.ready(function() { ...@@ -597,7 +594,6 @@ jsPlumb.ready(function() {
jsPlumbInstance.select().setPaintStyle({strokeStyle:'#9932cc', lineWidth: 8}); jsPlumbInstance.select().setPaintStyle({strokeStyle:'#9932cc', lineWidth: 8});
}); });
$('body').on('keyUp', '#infoInput', function() { $('body').on('keyUp', '#infoInput', function() {
setServiceStatus("unsaved"); setServiceStatus("unsaved");
newParams = $("#infoInput").val(); newParams = $("#infoInput").val();
...@@ -606,51 +602,46 @@ jsPlumb.ready(function() { ...@@ -606,51 +602,46 @@ jsPlumb.ready(function() {
if (type == "element") object.attr("parameters", newParams); if (type == "element") object.attr("parameters", newParams);
}); });
$('body').on('click', '#addEndpoint', function() { $('body').on('click', '#addEndpoint', function() {
addEndpoint(object); addEndpoint(sharedObject);
undoStack.splice(stackIndexer, 0, removeEndoint); undoStack.splice(stackIndexer, 0, removeEndoint);
redoStack.splice(stackIndexer, 0, addEndpoint); redoStack.splice(stackIndexer, 0, addEndpoint);
objectStack.splice(stackIndexer, 0, object); objectStack.splice(stackIndexer, 0, sharedObject);
stackIndexer++; stackIndexer++;
stackSize++; stackSize++;
}); });
$('body').on('click', '#removeEndpoint', function() { $('body').on('click', '#removeEndpoint', function() {
removeEndoint(object); removeEndoint(sharedObject);
undoStack.splice(stackIndexer, 0, addEndpoint); undoStack.splice(stackIndexer, 0, addEndpoint);
redoStack.splice(stackIndexer, 0, removeEndoint); redoStack.splice(stackIndexer, 0, removeEndoint);
objectStack.splice(stackIndexer, 0, object); objectStack.splice(stackIndexer, 0, sharedObject);
stackIndexer++; stackIndexer++;
stackSize++; stackSize++;
}); });
$('body').on('click', '#removeFromWorkspace', function() { $('body').on('click', '#removeFromWorkspace', function() {
$('.element').removeClass('elementSelected'); $('.element').removeClass('elementSelected');
removeElement(object); removeElement(sharedObject);
$("#informationPanel").hide(); $("#informationPanel").hide();
$("#dragPanel").show(); $("#dragPanel").show();
undoStack.splice(stackIndexer, 0, addElement); undoStack.splice(stackIndexer, 0, addElement);
redoStack.splice(stackIndexer, 0, removeElement); redoStack.splice(stackIndexer, 0, removeElement);
objectStack.splice(stackIndexer, 0, object); objectStack.splice(stackIndexer, 0, sharedObject);
stackSize++; stackSize++;
stackIndexer++; stackIndexer++;
}); });
$('body').on('click', '#removeConnection', function() { $('body').on('click', '#removeConnection', function() {
jsPlumbInstance.detach(object); jsPlumbInstance.detach(sharedObject);
$("#informationPanel").hide(); $("#informationPanel").hide();
$("#dragPanel").show(); $("#dragPanel").show();
}); });
$('body').on('click', '#addElementToWorkspace', function() { $('body').on('click', '#addElementToWorkspace', function() {
addElement(object.attr("id"), (++elementIndex) + "_" + object.attr("id"), (elementIndex % 21) * 30, 4, "", (elementIndex % 21) * 30); newInstance = addElement(sharedObject.attr("id"), (++elementIndex) + "_" + sharedObject.attr("id"), (elementIndex % 21) * 30, 4, "", (elementIndex % 21) * 30);
undoStack.splice(stackIndexer, 0, removeElement); undoStack.splice(stackIndexer, 0, removeElement);
redoStack.splice(stackIndexer, 0, addElement); redoStack.splice(stackIndexer, 0, addElement);
...@@ -659,7 +650,6 @@ jsPlumb.ready(function() { ...@@ -659,7 +650,6 @@ jsPlumb.ready(function() {
stackIndexer++; stackIndexer++;
}); });
$('body').on('click', '#clearService', function() { $('body').on('click', '#clearService', function() {
jsPlumbInstance.reset(); jsPlumbInstance.reset();
$(".element").remove(); $(".element").remove();
...@@ -668,7 +658,6 @@ jsPlumb.ready(function() { ...@@ -668,7 +658,6 @@ jsPlumb.ready(function() {
elementIndex = 0; elementIndex = 0;
}); });
$('body').on('click', '#undoMovement', function() { $('body').on('click', '#undoMovement', function() {
if (stackIndexer <= 0) return; if (stackIndexer <= 0) return;
stackIndexer--; stackIndexer--;
...@@ -678,7 +667,6 @@ jsPlumb.ready(function() { ...@@ -678,7 +667,6 @@ jsPlumb.ready(function() {
clickEvent = 0; clickEvent = 0;
}); });
$('body').on('click', '#redoMovement', function() { $('body').on('click', '#redoMovement', function() {
if (stackIndexer >= stackSize) return; if (stackIndexer >= stackSize) return;
clickEvent = 1; clickEvent = 1;
...@@ -687,29 +675,45 @@ jsPlumb.ready(function() { ...@@ -687,29 +675,45 @@ jsPlumb.ready(function() {
clickEvent = 0; clickEvent = 0;
}); });
$('body').on('click', '.elementTemplateInfo', function() { $('body').on('click', '.elementTemplateInfo', function() {
id = $(this).attr("element"); id = $(this).attr("element");
addInfo($("#" + id).attr("alt"), $("#" + id).attr("desc"), "elementTemplate", $("#" + id)); addInfo($("#" + id).attr("alt"), $("#" + id).attr("desc"), "elementTemplate", $("#" + id));
}); });
$('body').on('click', '#serviceName', function() { $('body').on('click', '#serviceName', function() {
$(this).replaceWith('<input type="text" id="serviceName" class="form-control form-control-sm" style="margin-top: -4px !important; margin-bottom: -4px !important;" value="' + $(this).html() + '" />'); $(this).replaceWith('<input type="text" id="serviceName" class="form-control form-control-sm" style="margin-top: -4px !important; margin-bottom: -4px !important;" value="' + $(this).html() + '" />');
document.getElementById("serviceName").select(); document.getElementById("serviceName").select();
setServiceStatus("unsaved"); setServiceStatus("unsaved");
}); });
$('body').on('click', '#dragContainerScrollUp', function() { $('body').on('click', '#dragContainerScrollUp', function() {
scrollContainer(-1); scrollContainer(-1);
}); });
$('body').on('click', '#dragContainerScrollDown', function() { $('body').on('click', '#dragContainerScrollDown', function() {
scrollContainer(1); scrollContainer(1);
}); });
$('body').on('keyup', '#searchElementTemplate', function() {
$(".elementTemplate").each(function() {
$(this).parent().parent().hide();
if ($(this).attr("alt").toLowerCase().indexOf($("#searchElementTemplateInput").val().toLowerCase()) >= 0)
$(this).parent().parent().show();
});
});
$(window).on('resize', function() {
$(".element").each(function() {
rate = ($(this).position().left)/(workspaceWidth-45.0);
left = rate*($("#dropContainer").width()-45.0);
$(this).css("left", left);
});
workspaceWidth = $("#dropContainer").width();
jsPlumbInstance.repaintEverything();
});
/* Registering events concerning persistence. */
$('body').on('click', '#saveService', function() { $('body').on('click', '#saveService', function() {
serviceName = $("#serviceName").val() === ''?$("#serviceName").text():$("#serviceName").val(); serviceName = $("#serviceName").val() === ''?$("#serviceName").text():$("#serviceName").val();
...@@ -728,7 +732,7 @@ jsPlumb.ready(function() { ...@@ -728,7 +732,7 @@ jsPlumb.ready(function() {
$.each($(".element"), function() { $.each($(".element"), function() {
instanceSet.push({ instanceSet.push({
"displayId": $(this).prop("id"), "displayId": $(this).prop("id"),
"posX": Math.floor($(this).position().left), "posX": $(this).position().left/(workspaceWidth-45.0),
"posY": Math.floor($(this).position().top), "posY": Math.floor($(this).position().top),
"anchors": $(this).attr("anchors"), "anchors": $(this).attr("anchors"),
"parameters": $(this).attr("parameters")}); "parameters": $(this).attr("parameters")});
...@@ -746,34 +750,6 @@ jsPlumb.ready(function() { ...@@ -746,34 +750,6 @@ jsPlumb.ready(function() {
}); });
}); });
$(window).resize(function() {
$(".element").each(function() {
if ($(this).position().left + $(this).width() > $("#dropContainer").position().left + $("#dropContainer").width()) {
$(this).css("left", $("#dropContainer").position().left + $("#dropContainer").width() - $(this).width() +4);
}
});
jsPlumbInstance.repaintEverything();
});
var dragContainer = document.getElementById("dragContainer");
if (dragContainer.addEventListener) {
dragContainer.addEventListener("mousewheel", mouseScrollContainer, false);
dragContainer.addEventListener("DOMMouseScroll", mouseScrollContainer, false);
} else dragContainer.attachEvent("onmousewheel", mouseScrollContainer);
$("#searchElementTemplate").keyup(function() {
$(".elementTemplate").each(function() {
$(this).parent().parent().hide();
if ($(this).attr("alt").toLowerCase().indexOf($("#searchElementTemplateInput").val().toLowerCase()) >= 0)
$(this).parent().parent().show();
});
});
$(document).ready(function() { $(document).ready(function() {
$.post("", { $.post("", {
event: "loadService" event: "loadService"
...@@ -785,10 +761,10 @@ jsPlumb.ready(function() { ...@@ -785,10 +761,10 @@ jsPlumb.ready(function() {
$.each(result.elements, function(i, element) { $.each(result.elements, function(i, element) {
addElement(element.displayId.split('_')[1], addElement(element.displayId.split('_')[1],
element.displayId, element.displayId,
element.posY + "px", element.posY + "px", // Server stores a concrete position.
element.anchors, element.anchors,
element.parameters, element.parameters,
element.posX + "px"); (element.posX*(workspaceWidth-45.0) ) + "px"); // Server stores a rate.
if (elementIndex < element.displayId.split('_')[0]) if (elementIndex < element.displayId.split('_')[0])
elementIndex = element.displayId.split('_')[0]; elementIndex = element.displayId.split('_')[0];
elementIndex++; elementIndex++;
......
./vm/migrations/0001_initial.py:29:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:30:80: E501 line too long (140 > 79 characters)
./vm/migrations/0001_initial.py:31:80: E501 line too long (147 > 79 characters)
./vm/migrations/0001_initial.py:32:80: E501 line too long (326 > 79 characters)
./vm/migrations/0001_initial.py:33:80: E501 line too long (152 > 79 characters)
./vm/migrations/0001_initial.py:34:80: E501 line too long (216 > 79 characters)
./vm/migrations/0001_initial.py:35:80: E501 line too long (167 > 79 characters)
./vm/migrations/0001_initial.py:36:80: E501 line too long (197 > 79 characters)
./vm/migrations/0001_initial.py:37:80: E501 line too long (154 > 79 characters)
./vm/migrations/0001_initial.py:38:80: E501 line too long (160 > 79 characters)
./vm/migrations/0001_initial.py:39:80: E501 line too long (196 > 79 characters)
./vm/migrations/0001_initial.py:40:80: E501 line too long (146 > 79 characters)
./vm/migrations/0001_initial.py:41:80: E501 line too long (149 > 79 characters)
./vm/migrations/0001_initial.py:42:80: E501 line too long (165 > 79 characters)
./vm/migrations/0001_initial.py:43:80: E501 line too long (183 > 79 characters)
./vm/migrations/0001_initial.py:44:80: E501 line too long (138 > 79 characters)
./vm/migrations/0001_initial.py:45:80: E501 line too long (90 > 79 characters)
./vm/migrations/0001_initial.py:46:80: E501 line too long (129 > 79 characters)
./vm/migrations/0001_initial.py:47:80: E501 line too long (179 > 79 characters)
./vm/migrations/0001_initial.py:48:80: E501 line too long (175 > 79 characters)
./vm/migrations/0001_initial.py:49:80: E501 line too long (174 > 79 characters)
./vm/migrations/0001_initial.py:51:80: E501 line too long (134 > 79 characters)
./vm/migrations/0001_initial.py:52:80: E501 line too long (155 > 79 characters)
./vm/migrations/0001_initial.py:59:80: E501 line too long (448 > 79 characters)
./vm/migrations/0001_initial.py:66:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:67:80: E501 line too long (140 > 79 characters)
./vm/migrations/0001_initial.py:68:80: E501 line too long (147 > 79 characters)
./vm/migrations/0001_initial.py:69:80: E501 line too long (98 > 79 characters)
./vm/migrations/0001_initial.py:70:80: E501 line too long (172 > 79 characters)
./vm/migrations/0001_initial.py:71:80: E501 line too long (169 > 79 characters)
./vm/migrations/0001_initial.py:72:80: E501 line too long (142 > 79 characters)
./vm/migrations/0001_initial.py:73:80: E501 line too long (146 > 79 characters)
./vm/migrations/0001_initial.py:74:80: E501 line too long (117 > 79 characters)
./vm/migrations/0001_initial.py:75:80: E501 line too long (154 > 79 characters)
./vm/migrations/0001_initial.py:76:80: E501 line too long (92 > 79 characters)
./vm/migrations/0001_initial.py:77:80: E501 line too long (124 > 79 characters)
./vm/migrations/0001_initial.py:78:80: E501 line too long (166 > 79 characters)
./vm/migrations/0001_initial.py:79:80: E501 line too long (120 > 79 characters)
./vm/migrations/0001_initial.py:80:80: E501 line too long (168 > 79 characters)
./vm/migrations/0001_initial.py:91:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:92:80: E501 line too long (140 > 79 characters)
./vm/migrations/0001_initial.py:93:80: E501 line too long (147 > 79 characters)
./vm/migrations/0001_initial.py:94:80: E501 line too long (216 > 79 characters)
./vm/migrations/0001_initial.py:95:80: E501 line too long (167 > 79 characters)
./vm/migrations/0001_initial.py:96:80: E501 line too long (197 > 79 characters)
./vm/migrations/0001_initial.py:97:80: E501 line too long (154 > 79 characters)
./vm/migrations/0001_initial.py:98:80: E501 line too long (160 > 79 characters)
./vm/migrations/0001_initial.py:99:80: E501 line too long (196 > 79 characters)
./vm/migrations/0001_initial.py:100:80: E501 line too long (146 > 79 characters)
./vm/migrations/0001_initial.py:101:80: E501 line too long (149 > 79 characters)
./vm/migrations/0001_initial.py:102:80: E501 line too long (165 > 79 characters)
./vm/migrations/0001_initial.py:103:80: E501 line too long (183 > 79 characters)
./vm/migrations/0001_initial.py:104:80: E501 line too long (126 > 79 characters)
./vm/migrations/0001_initial.py:105:80: E501 line too long (90 > 79 characters)
./vm/migrations/0001_initial.py:106:80: E501 line too long (164 > 79 characters)
./vm/migrations/0001_initial.py:113:80: E501 line too long (228 > 79 characters)
./vm/migrations/0001_initial.py:120:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:121:80: E501 line too long (108 > 79 characters)
./vm/migrations/0001_initial.py:122:80: E501 line too long (121 > 79 characters)
./vm/migrations/0001_initial.py:123:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:134:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:135:80: E501 line too long (170 > 79 characters)
./vm/migrations/0001_initial.py:136:80: E501 line too long (186 > 79 characters)
./vm/migrations/0001_initial.py:137:80: E501 line too long (132 > 79 characters)
./vm/migrations/0001_initial.py:150:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:151:80: E501 line too long (93 > 79 characters)
./vm/migrations/0001_initial.py:152:80: E501 line too long (189 > 79 characters)
./vm/migrations/0001_initial.py:153:80: E501 line too long (185 > 79 characters)
./vm/migrations/0001_initial.py:165:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:166:80: E501 line too long (140 > 79 characters)
./vm/migrations/0001_initial.py:167:80: E501 line too long (147 > 79 characters)
./vm/migrations/0001_initial.py:168:80: E501 line too long (216 > 79 characters)
./vm/migrations/0001_initial.py:169:80: E501 line too long (167 > 79 characters)
./vm/migrations/0001_initial.py:170:80: E501 line too long (197 > 79 characters)
./vm/migrations/0001_initial.py:171:80: E501 line too long (154 > 79 characters)
./vm/migrations/0001_initial.py:172:80: E501 line too long (160 > 79 characters)
./vm/migrations/0001_initial.py:173:80: E501 line too long (142 > 79 characters)
./vm/migrations/0001_initial.py:183:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:184:80: E501 line too long (140 > 79 characters)
./vm/migrations/0001_initial.py:185:80: E501 line too long (147 > 79 characters)
./vm/migrations/0001_initial.py:186:80: E501 line too long (134 > 79 characters)
./vm/migrations/0001_initial.py:187:80: E501 line too long (123 > 79 characters)
./vm/migrations/0001_initial.py:188:80: E501 line too long (109 > 79 characters)
./vm/migrations/0001_initial.py:189:80: E501 line too long (153 > 79 characters)
./vm/migrations/0001_initial.py:190:80: E501 line too long (187 > 79 characters)
./vm/migrations/0001_initial.py:191:80: E501 line too long (163 > 79 characters)
./vm/migrations/0001_initial.py:192:80: E501 line too long (116 > 79 characters)
./vm/migrations/0001_initial.py:193:80: E501 line too long (182 > 79 characters)
./vm/migrations/0001_initial.py:198:80: E501 line too long (91 > 79 characters)
./vm/migrations/0001_initial.py:205:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:206:80: E501 line too long (140 > 79 characters)
./vm/migrations/0001_initial.py:207:80: E501 line too long (147 > 79 characters)
./vm/migrations/0001_initial.py:208:80: E501 line too long (98 > 79 characters)
./vm/migrations/0001_initial.py:209:80: E501 line too long (172 > 79 characters)
./vm/migrations/0001_initial.py:210:80: E501 line too long (169 > 79 characters)
./vm/migrations/0001_initial.py:211:80: E501 line too long (142 > 79 characters)
./vm/migrations/0001_initial.py:212:80: E501 line too long (146 > 79 characters)
./vm/migrations/0001_initial.py:213:80: E501 line too long (117 > 79 characters)
./vm/migrations/0001_initial.py:214:80: E501 line too long (154 > 79 characters)
./vm/migrations/0001_initial.py:215:80: E501 line too long (150 > 79 characters)
./vm/migrations/0001_initial.py:216:80: E501 line too long (116 > 79 characters)
./vm/migrations/0001_initial.py:217:80: E501 line too long (168 > 79 characters)
./vm/migrations/0001_initial.py:227:80: E501 line too long (114 > 79 characters)
./vm/migrations/0001_initial.py:238:80: E501 line too long (121 > 79 characters)
./vm/migrations/0001_initial.py:244:80: E501 line too long (116 > 79 characters)
./vm/migrations/0001_initial.py:256:80: E501 line too long (215 > 79 characters)
./vm/migrations/0001_initial.py:262:80: E501 line too long (195 > 79 characters)
./vm/migrations/0001_initial.py:268:80: E501 line too long (174 > 79 characters)
./vm/migrations/0001_initial.py:274:80: E501 line too long (116 > 79 characters)
./vm/migrations/0001_initial.py:280:80: E501 line too long (178 > 79 characters)
./vm/migrations/0001_initial.py:292:80: E501 line too long (195 > 79 characters)
./vm/migrations/0001_initial.py:298:80: E501 line too long (174 > 79 characters)
./vm/migrations/0001_initial.py:304:80: E501 line too long (234 > 79 characters)
./vm/migrations/0002_interface_model.py:17:80: E501 line too long (190 > 79 characters)
./storage/migrations/0001_initial.py:19:80: E501 line too long (114 > 79 characters)
./storage/migrations/0001_initial.py:20:80: E501 line too long (93 > 79 characters)
./storage/migrations/0001_initial.py:21:80: E501 line too long (93 > 79 characters)
./storage/migrations/0001_initial.py:22:80: E501 line too long (100 > 79 characters)
./storage/migrations/0001_initial.py:34:80: E501 line too long (114 > 79 characters)
./storage/migrations/0001_initial.py:35:80: E501 line too long (140 > 79 characters)
./storage/migrations/0001_initial.py:36:80: E501 line too long (147 > 79 characters)
./storage/migrations/0001_initial.py:37:80: E501 line too long (92 > 79 characters)
./storage/migrations/0001_initial.py:38:80: E501 line too long (101 > 79 characters)
./storage/migrations/0001_initial.py:39:80: E501 line too long (198 > 79 characters)
./storage/migrations/0001_initial.py:40:80: E501 line too long (82 > 79 characters)
./storage/migrations/0001_initial.py:41:80: E501 line too long (103 > 79 characters)
./storage/migrations/0001_initial.py:42:80: E501 line too long (89 > 79 characters)
./storage/migrations/0001_initial.py:44:80: E501 line too long (114 > 79 characters)
./storage/migrations/0001_initial.py:45:80: E501 line too long (147 > 79 characters)
./storage/migrations/0001_initial.py:51:80: E501 line too long (166 > 79 characters)
./storage/migrations/0002_disk_bus.py:17:80: E501 line too long (153 > 79 characters)
./request/migrations/0001_initial.py:23:80: E501 line too long (114 > 79 characters)
./request/migrations/0001_initial.py:34:80: E501 line too long (114 > 79 characters)
./request/migrations/0001_initial.py:46:80: E501 line too long (114 > 79 characters)
./request/migrations/0001_initial.py:47:80: E501 line too long (140 > 79 characters)
./request/migrations/0001_initial.py:48:80: E501 line too long (147 > 79 characters)
./request/migrations/0001_initial.py:49:80: E501 line too long (169 > 79 characters)
./request/migrations/0001_initial.py:50:80: E501 line too long (166 > 79 characters)
./request/migrations/0001_initial.py:54:80: E501 line too long (115 > 79 characters)
./request/migrations/0001_initial.py:55:80: E501 line too long (83 > 79 characters)
./request/migrations/0001_initial.py:56:80: E501 line too long (94 > 79 characters)
./request/migrations/0001_initial.py:66:80: E501 line too long (114 > 79 characters)
./request/migrations/0001_initial.py:67:80: E501 line too long (216 > 79 characters)
./request/migrations/0001_initial.py:68:80: E501 line too long (167 > 79 characters)
./request/migrations/0001_initial.py:69:80: E501 line too long (160 > 79 characters)
./request/migrations/0001_initial.py:80:80: E501 line too long (114 > 79 characters)
./request/migrations/0001_initial.py:81:80: E501 line too long (132 > 79 characters)
./request/migrations/0001_initial.py:91:80: E501 line too long (114 > 79 characters)
./request/migrations/0001_initial.py:93:80: E501 line too long (80 > 79 characters)
./request/migrations/0002_auto_20150407_1117.py:35:80: E501 line too long (93 > 79 characters)
./request/migrations/0003_auto_20150410_1917.py:23:80: E501 line too long (166 > 79 characters)
./.ropeproject/config.py:23:5: E265 block comment should start with '# '
./.ropeproject/config.py:33:5: E265 block comment should start with '# '
./.ropeproject/config.py:36:5: E265 block comment should start with '# '
./acl/migrations/0001_initial.py:20:80: E501 line too long (114 > 79 characters)
./acl/migrations/0001_initial.py:21:80: E501 line too long (80 > 79 characters)
./acl/migrations/0001_initial.py:22:80: E501 line too long (89 > 79 characters)
./acl/migrations/0001_initial.py:23:80: E501 line too long (83 > 79 characters)
./acl/migrations/0001_initial.py:24:80: E501 line too long (83 > 79 characters)
./acl/migrations/0001_initial.py:33:80: E501 line too long (114 > 79 characters)
./acl/migrations/0001_initial.py:35:80: E501 line too long (83 > 79 characters)
./firewall/migrations/0001_initial.py:21:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:22:80: E501 line too long (86 > 79 characters)
./firewall/migrations/0001_initial.py:23:80: E501 line too long (80 > 79 characters)
./firewall/migrations/0001_initial.py:24:80: E501 line too long (94 > 79 characters)
./firewall/migrations/0001_initial.py:25:80: E501 line too long (233 > 79 characters)
./firewall/migrations/0001_initial.py:26:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:27:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:38:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:39:80: E501 line too long (120 > 79 characters)
./firewall/migrations/0001_initial.py:40:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:41:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:43:80: E501 line too long (90 > 79 characters)
./firewall/migrations/0001_initial.py:44:80: E501 line too long (96 > 79 characters)
./firewall/migrations/0001_initial.py:53:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:54:80: E501 line too long (200 > 79 characters)
./firewall/migrations/0001_initial.py:55:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:56:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:65:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:66:80: E501 line too long (92 > 79 characters)
./firewall/migrations/0001_initial.py:75:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:76:80: E501 line too long (128 > 79 characters)
./firewall/migrations/0001_initial.py:77:80: E501 line too long (129 > 79 characters)
./firewall/migrations/0001_initial.py:78:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:79:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:80:80: E501 line too long (119 > 79 characters)
./firewall/migrations/0001_initial.py:89:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:90:80: E501 line too long (209 > 79 characters)
./firewall/migrations/0001_initial.py:91:80: E501 line too long (131 > 79 characters)
./firewall/migrations/0001_initial.py:92:80: E501 line too long (247 > 79 characters)
./firewall/migrations/0001_initial.py:93:80: E501 line too long (211 > 79 characters)
./firewall/migrations/0001_initial.py:94:80: E501 line too long (186 > 79 characters)
./firewall/migrations/0001_initial.py:95:80: E501 line too long (227 > 79 characters)
./firewall/migrations/0001_initial.py:96:80: E501 line too long (220 > 79 characters)
./firewall/migrations/0001_initial.py:97:80: E501 line too long (162 > 79 characters)
./firewall/migrations/0001_initial.py:98:80: E501 line too long (154 > 79 characters)
./firewall/migrations/0001_initial.py:99:80: E501 line too long (80 > 79 characters)
./firewall/migrations/0001_initial.py:100:80: E501 line too long (135 > 79 characters)
./firewall/migrations/0001_initial.py:101:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:102:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:103:80: E501 line too long (167 > 79 characters)
./firewall/migrations/0001_initial.py:104:80: E501 line too long (147 > 79 characters)
./firewall/migrations/0001_initial.py:114:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:115:80: E501 line too long (152 > 79 characters)
./firewall/migrations/0001_initial.py:116:80: E501 line too long (212 > 79 characters)
./firewall/migrations/0001_initial.py:117:80: E501 line too long (86 > 79 characters)
./firewall/migrations/0001_initial.py:119:80: E501 line too long (90 > 79 characters)
./firewall/migrations/0001_initial.py:120:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:121:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:122:80: E501 line too long (91 > 79 characters)
./firewall/migrations/0001_initial.py:123:80: E501 line too long (108 > 79 characters)
./firewall/migrations/0001_initial.py:124:80: E501 line too long (96 > 79 characters)
./firewall/migrations/0001_initial.py:134:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:135:80: E501 line too long (190 > 79 characters)
./firewall/migrations/0001_initial.py:136:80: E501 line too long (148 > 79 characters)
./firewall/migrations/0001_initial.py:137:80: E501 line too long (264 > 79 characters)
./firewall/migrations/0001_initial.py:138:80: E501 line too long (260 > 79 characters)
./firewall/migrations/0001_initial.py:139:80: E501 line too long (218 > 79 characters)
./firewall/migrations/0001_initial.py:140:80: E501 line too long (218 > 79 characters)
./firewall/migrations/0001_initial.py:141:80: E501 line too long (161 > 79 characters)
./firewall/migrations/0001_initial.py:142:80: E501 line too long (233 > 79 characters)
./firewall/migrations/0001_initial.py:143:80: E501 line too long (140 > 79 characters)
./firewall/migrations/0001_initial.py:144:80: E501 line too long (260 > 79 characters)
./firewall/migrations/0001_initial.py:145:80: E501 line too long (147 > 79 characters)
./firewall/migrations/0001_initial.py:146:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:147:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:148:80: E501 line too long (207 > 79 characters)
./firewall/migrations/0001_initial.py:151:80: E501 line too long (98 > 79 characters)
./firewall/migrations/0001_initial.py:160:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:161:80: E501 line too long (90 > 79 characters)
./firewall/migrations/0001_initial.py:162:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:163:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:172:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:173:80: E501 line too long (224 > 79 characters)
./firewall/migrations/0001_initial.py:174:80: E501 line too long (177 > 79 characters)
./firewall/migrations/0001_initial.py:175:80: E501 line too long (285 > 79 characters)
./firewall/migrations/0001_initial.py:176:80: E501 line too long (321 > 79 characters)
./firewall/migrations/0001_initial.py:177:80: E501 line too long (204 > 79 characters)
./firewall/migrations/0001_initial.py:178:80: E501 line too long (267 > 79 characters)
./firewall/migrations/0001_initial.py:179:80: E501 line too long (185 > 79 characters)
./firewall/migrations/0001_initial.py:180:80: E501 line too long (87 > 79 characters)
./firewall/migrations/0001_initial.py:181:80: E501 line too long (162 > 79 characters)
./firewall/migrations/0001_initial.py:182:80: E501 line too long (129 > 79 characters)
./firewall/migrations/0001_initial.py:183:80: E501 line too long (539 > 79 characters)
./firewall/migrations/0001_initial.py:184:80: E501 line too long (181 > 79 characters)
./firewall/migrations/0001_initial.py:185:80: E501 line too long (254 > 79 characters)
./firewall/migrations/0001_initial.py:186:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:187:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:188:80: E501 line too long (153 > 79 characters)
./firewall/migrations/0001_initial.py:189:80: E501 line too long (119 > 79 characters)
./firewall/migrations/0001_initial.py:190:80: E501 line too long (270 > 79 characters)
./firewall/migrations/0001_initial.py:200:80: E501 line too long (114 > 79 characters)
./firewall/migrations/0001_initial.py:201:80: E501 line too long (128 > 79 characters)
./firewall/migrations/0001_initial.py:202:80: E501 line too long (129 > 79 characters)
./firewall/migrations/0001_initial.py:203:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0001_initial.py:204:80: E501 line too long (97 > 79 characters)
./firewall/migrations/0001_initial.py:205:80: E501 line too long (119 > 79 characters)
./firewall/migrations/0001_initial.py:206:80: E501 line too long (170 > 79 characters)
./firewall/migrations/0001_initial.py:215:80: E501 line too long (142 > 79 characters)
./firewall/migrations/0001_initial.py:221:80: E501 line too long (117 > 79 characters)
./firewall/migrations/0001_initial.py:227:80: E501 line too long (212 > 79 characters)
./firewall/migrations/0001_initial.py:233:80: E501 line too long (179 > 79 characters)
./firewall/migrations/0001_initial.py:239:80: E501 line too long (196 > 79 characters)
./firewall/migrations/0001_initial.py:245:80: E501 line too long (159 > 79 characters)
./firewall/migrations/0001_initial.py:251:80: E501 line too long (179 > 79 characters)
./firewall/migrations/0001_initial.py:257:80: E501 line too long (200 > 79 characters)
./firewall/migrations/0001_initial.py:263:80: E501 line too long (129 > 79 characters)
./firewall/migrations/0001_initial.py:273:80: E501 line too long (123 > 79 characters)
./firewall/migrations/0001_initial.py:279:80: E501 line too long (100 > 79 characters)
./firewall/migrations/0002_auto_20150115_0021.py:18:80: E501 line too long (677 > 79 characters)
./firewall/migrations/0003_auto_20150226_1927.py:21:80: E501 line too long (103 > 79 characters)
./firewall/migrations/0003_auto_20150226_1927.py:27:80: E501 line too long (81 > 79 characters)
./firewall/migrations/0003_auto_20150226_1927.py:33:80: E501 line too long (108 > 79 characters)
./firewall/migrations/0003_auto_20150226_1927.py:39:80: E501 line too long (81 > 79 characters)
./firewall/migrations/0003_auto_20150226_1927.py:45:80: E501 line too long (88 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:4:1: F401 'models' imported but unused
./firewall/migrations/0004_auto_20150318_1317.py:16:80: E501 line too long (118 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:20:80: E501 line too long (102 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:24:80: E501 line too long (120 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:28:80: E501 line too long (106 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:32:80: E501 line too long (110 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:36:80: E501 line too long (113 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:40:80: E501 line too long (112 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:44:80: E501 line too long (99 > 79 characters)
./firewall/migrations/0004_auto_20150318_1317.py:48:80: E501 line too long (110 > 79 characters)
./firewall/migrations/0005_auto_20150520_2250.py:17:80: E501 line too long (146 > 79 characters)
./firewall/migrations/0005_auto_20150520_2250.py:22:80: E501 line too long (248 > 79 characters)
./firewall/migrations/0005_auto_20150520_2250.py:27:80: E501 line too long (150 > 79 characters)
./bower_components/no-vnc/utils/img2js.py:9:11: E401 multiple imports on one line
./bower_components/no-vnc/utils/img2js.py:23:4: E221 multiple spaces before operator
./bower_components/no-vnc/utils/img2js.py:26:3: E271 multiple spaces after keyword
./bower_components/no-vnc/utils/img2js.py:26:18: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/img2js.py:27:28: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/img2js.py:28:18: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/img2js.py:40:9: E126 continuation line over-indented for hanging indent
./bower_components/no-vnc/utils/json2graph.py:10:1: F401 'pprint' imported but unused
./bower_components/no-vnc/utils/json2graph.py:10:11: E401 multiple imports on one line
./bower_components/no-vnc/utils/json2graph.py:15:1: E302 expected 2 blank lines, found 1
./bower_components/no-vnc/utils/json2graph.py:18:72: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:19:59: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:20:72: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:21:70: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:22:15: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:24:16: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:25:26: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:26:32: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:27:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:28:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:29:24: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:30:21: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:31:32: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:32:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:33:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:34:24: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:35:21: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:36:32: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:37:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:38:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:39:24: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:40:20: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:41:19: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:42:27: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:43:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:44:39: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:45:59: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:46:59: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:47:26: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:48:23: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:49:39: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:50:24: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:51:23: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:52:21: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:53:37: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:54:24: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:55:21: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:56:22: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:57:19: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:58:16: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/json2graph.py:61:1: E302 expected 2 blank lines, found 1
./bower_components/no-vnc/utils/json2graph.py:66:1: E265 block comment should start with '# '
./bower_components/no-vnc/utils/json2graph.py:165:36: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/json2graph.py:167:29: E231 missing whitespace after ','
./bower_components/no-vnc/utils/json2graph.py:179:22: E201 whitespace after '('
./bower_components/no-vnc/utils/json2graph.py:179:35: E202 whitespace before ')'
./bower_components/no-vnc/utils/json2graph.py:183:13: E201 whitespace after '('
./bower_components/no-vnc/utils/json2graph.py:184:13: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/json2graph.py:184:16: E251 unexpected spaces around keyword / parameter equals
./bower_components/no-vnc/utils/json2graph.py:184:18: E251 unexpected spaces around keyword / parameter equals
./bower_components/no-vnc/utils/json2graph.py:184:49: E251 unexpected spaces around keyword / parameter equals
./bower_components/no-vnc/utils/json2graph.py:184:51: E251 unexpected spaces around keyword / parameter equals
./bower_components/no-vnc/utils/json2graph.py:186:1: E302 expected 2 blank lines, found 1
./bower_components/no-vnc/utils/json2graph.py:192:68: E228 missing whitespace around modulo operator
./bower_components/no-vnc/utils/json2graph.py:192:80: E501 line too long (80 > 79 characters)
./bower_components/no-vnc/utils/json2graph.py:193:17: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/json2graph.py:201:1: E265 block comment should start with '# '
./bower_components/no-vnc/utils/web.py:11:17: E401 multiple imports on one line
./bower_components/no-vnc/utils/web.py:14:1: E265 block comment should start with '# '
./bower_components/no-vnc/utils/web.py:17:1: E302 expected 2 blank lines, found 1
./bower_components/no-vnc/utils/web.py:22:1: E302 expected 2 blank lines, found 1
./bower_components/no-vnc/utils/web.py:25:5: E265 block comment should start with '# '
./bower_components/no-vnc/utils/web.py:37:25: E126 continuation line over-indented for hanging indent
./bower_components/no-vnc/utils/websocket.py:19:10: E401 multiple imports on one line
./bower_components/no-vnc/utils/websocket.py:20:13: E401 multiple imports on one line
./bower_components/no-vnc/utils/websocket.py:34:4: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:34:5: E272 multiple spaces before keyword
./bower_components/no-vnc/utils/websocket.py:35:7: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:35:9: F401 'StringIO' imported but unused
./bower_components/no-vnc/utils/websocket.py:36:4: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:36:5: E272 multiple spaces before keyword
./bower_components/no-vnc/utils/websocket.py:37:7: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:40:4: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:40:5: E272 multiple spaces before keyword
./bower_components/no-vnc/utils/websocket.py:41:7: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:48:5: E301 expected 1 blank line, found 0
./bower_components/no-vnc/utils/websocket.py:63:4: F821 undefined name 'multiprocessing'
./bower_components/no-vnc/utils/websocket.py:82:80: E501 line too long (84 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:103:17: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:118:12: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:121:24: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:121:52: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:122:25: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:123:24: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:123:52: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:124:25: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:125:17: E265 block comment should start with '# '
./bower_components/no-vnc/utils/websocket.py:126:21: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:129:17: E265 block comment should start with '# '
./bower_components/no-vnc/utils/websocket.py:130:24: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:130:52: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:131:25: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:132:24: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:132:52: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:133:25: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:134:25: E126 continuation line over-indented for hanging indent
./bower_components/no-vnc/utils/websocket.py:135:21: F821 undefined name 'numpy'
./bower_components/no-vnc/utils/websocket.py:161:36: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/websocket.py:170:9: E265 block comment should start with '# '
./bower_components/no-vnc/utils/websocket.py:189:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:190:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:191:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:192:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:193:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:194:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:195:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:196:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:197:28: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:206:21: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/websocket.py:218:25: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/websocket.py:223:25: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/websocket.py:228:28: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/websocket.py:229:21: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/websocket.py:238:51: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:260:5: E303 too many blank lines (2)
./bower_components/no-vnc/utils/websocket.py:301:80: E501 line too long (91 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:303:80: E501 line too long (92 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:307:29: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:308:33: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:350:13: E265 block comment should start with '# '
./bower_components/no-vnc/utils/websocket.py:352:33: E711 comparison to None should be 'if cond is None:'
./bower_components/no-vnc/utils/websocket.py:359:43: E261 at least two spaces before inline comment
./bower_components/no-vnc/utils/websocket.py:367:17: F841 local variable 'start' is assigned to but never used
./bower_components/no-vnc/utils/websocket.py:368:17: F841 local variable 'end' is assigned to but never used
./bower_components/no-vnc/utils/websocket.py:371:52: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:374:48: E127 continuation line over-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:376:25: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:379:13: E303 too many blank lines (2)
./bower_components/no-vnc/utils/websocket.py:422:80: E501 line too long (89 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:439:80: E501 line too long (104 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:448:13: E129 visually indented line with same indent as next logical line
./bower_components/no-vnc/utils/websocket.py:457:27: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:488:31: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:505:80: E501 line too long (85 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:520:80: E501 line too long (92 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:553:80: E501 line too long (118 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:565:13: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:566:13: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:567:13: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:568:13: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:569:13: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:570:13: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:574:21: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:575:25: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:576:25: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:577:25: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:578:22: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:579:20: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:580:22: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:581:21: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:582:26: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:583:21: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:585:25: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:586:27: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:587:24: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:589:20: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:590:27: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:591:25: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:592:26: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:593:27: E221 multiple spaces before operator
./bower_components/no-vnc/utils/websocket.py:610:16: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:612:32: F821 undefined name 'resource'
./bower_components/no-vnc/utils/websocket.py:618:17: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:622:12: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:659:28: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:660:80: E501 line too long (86 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:660:86: E703 statement ends with a semicolon
./bower_components/no-vnc/utils/websocket.py:668:21: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:676:15: E271 multiple spaces after keyword
./bower_components/no-vnc/utils/websocket.py:691:28: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:713:25: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:715:25: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:722:17: F821 undefined name 'resource'
./bower_components/no-vnc/utils/websocket.py:722:36: F821 undefined name 'resource'
./bower_components/no-vnc/utils/websocket.py:723:21: F821 undefined name 'resource'
./bower_components/no-vnc/utils/websocket.py:723:43: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:730:44: E701 multiple statements on one line (colon)
./bower_components/no-vnc/utils/websocket.py:756:1: W293 blank line contains whitespace
./bower_components/no-vnc/utils/websocket.py:757:9: E303 too many blank lines (2)
./bower_components/no-vnc/utils/websocket.py:762:9: E265 block comment should start with '# '
./bower_components/no-vnc/utils/websocket.py:775:20: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:782:27: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:783:25: E126 continuation line over-indented for hanging indent
./bower_components/no-vnc/utils/websocket.py:787:20: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:789:33: F821 undefined name 'ssl'
./bower_components/no-vnc/utils/websocket.py:831:5: E303 too many blank lines (2)
./bower_components/no-vnc/utils/websocket.py:840:9: E265 block comment should start with '# '
./bower_components/no-vnc/utils/websocket.py:847:80: E501 line too long (101 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:870:26: W291 trailing whitespace
./bower_components/no-vnc/utils/websocket.py:897:80: E501 line too long (82 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:939:80: E501 line too long (80 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:944:37: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:955:80: E501 line too long (82 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:956:80: E501 line too long (81 > 79 characters)
./bower_components/no-vnc/utils/websocket.py:957:45: E127 continuation line over-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:987:50: E203 whitespace before ':'
./bower_components/no-vnc/utils/websocket.py:989:41: E128 continuation line under-indented for visual indent
./bower_components/no-vnc/utils/websocket.py:994:37: E126 continuation line over-indented for hanging indent
./bower_components/no-vnc/utils/websocket.py:1030:1: W391 blank line at end of file
./dashboard/migrations/0001_initial.py:26:80: E501 line too long (114 > 79 characters)
./dashboard/migrations/0001_initial.py:27:80: E501 line too long (200 > 79 characters)
./dashboard/migrations/0001_initial.py:28:80: E501 line too long (125 > 79 characters)
./dashboard/migrations/0001_initial.py:29:80: E501 line too long (300 > 79 characters)
./dashboard/migrations/0001_initial.py:30:80: E501 line too long (101 > 79 characters)
./dashboard/migrations/0001_initial.py:39:80: E501 line too long (114 > 79 characters)
./dashboard/migrations/0001_initial.py:50:80: E501 line too long (114 > 79 characters)
./dashboard/migrations/0001_initial.py:51:80: E501 line too long (129 > 79 characters)
./dashboard/migrations/0001_initial.py:61:80: E501 line too long (114 > 79 characters)
./dashboard/migrations/0001_initial.py:62:80: E501 line too long (161 > 79 characters)
./dashboard/migrations/0001_initial.py:74:80: E501 line too long (114 > 79 characters)
./dashboard/migrations/0001_initial.py:75:80: E501 line too long (140 > 79 characters)
./dashboard/migrations/0001_initial.py:76:80: E501 line too long (147 > 79 characters)
./dashboard/migrations/0001_initial.py:77:80: E501 line too long (192 > 79 characters)
./dashboard/migrations/0001_initial.py:91:80: E501 line too long (114 > 79 characters)
./dashboard/migrations/0001_initial.py:92:80: E501 line too long (174 > 79 characters)
./dashboard/migrations/0001_initial.py:93:80: E501 line too long (165 > 79 characters)
./dashboard/migrations/0001_initial.py:95:80: E501 line too long (165 > 79 characters)
./dashboard/migrations/0001_initial.py:96:80: E501 line too long (180 > 79 characters)
./dashboard/migrations/0001_initial.py:97:80: E501 line too long (204 > 79 characters)
./dashboard/migrations/0001_initial.py:98:80: E501 line too long (148 > 79 characters)
./dashboard/migrations/0001_initial.py:102:80: E501 line too long (80 > 79 characters)
./dashboard/migrations/0002_auto_20150318_1317.py:4:1: F401 'models' imported but unused
./dashboard/migrations/0002_auto_20150318_1317.py:28:80: E501 line too long (107 > 79 characters)
./dashboard/migrations/0003_message.py:19:80: E501 line too long (114 > 79 characters)
./dashboard/migrations/0003_message.py:20:80: E501 line too long (140 > 79 characters)
./dashboard/migrations/0003_message.py:21:80: E501 line too long (147 > 79 characters)
./dashboard/migrations/0003_message.py:22:80: E501 line too long (93 > 79 characters)
./dashboard/migrations/0003_message.py:23:80: E501 line too long (89 > 79 characters)
./dashboard/migrations/0003_message.py:24:80: E501 line too long (86 > 79 characters)
./dashboard/migrations/0003_message.py:25:80: E501 line too long (202 > 79 characters)
./dashboard/migrations/0003_message.py:26:80: E501 line too long (88 > 79 characters)
./setty/migrations/0001_initial.py:20:80: E501 line too long (114 > 79 characters)
./setty/migrations/0001_initial.py:30:80: E501 line too long (114 > 79 characters)
./setty/migrations/0001_initial.py:34:80: E501 line too long (89 > 79 characters)
./setty/migrations/0001_initial.py:35:80: E501 line too long (89 > 79 characters)
./setty/migrations/0001_initial.py:41:80: E501 line too long (114 > 79 characters)
./setty/migrations/0001_initial.py:45:80: E501 line too long (182 > 79 characters)
./setty/migrations/0001_initial.py:51:80: E501 line too long (114 > 79 characters)
./setty/migrations/0002_elementtemplate_description.py:19:80: E501 line too long (106 > 79 characters)
./setty/migrations/0003_auto_20150701_1621.py:4:1: F401 'models' imported but unused
./setty/migrations/0004_service_status.py:19:80: E501 line too long (120 > 79 characters)
./setty/migrations/0005_elementtemplate_compatibles.py:17:80: E501 line too long (103 > 79 characters)
./setty/migrations/0008_auto_20150827_1044.py:18:80: E501 line too long (98 > 79 characters)
[flake8]
exclude = circle/static_collected/*, circle/bower_components/*, */migrations/*
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment