From c9c851beadbc47e0181292490d7e0b78663f144e Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 18 Jun 2019 18:34:07 +1000 Subject: [PATCH 1/7] Add 'virtual' part flag --- InvenTree/part/migrations/0009_part_virtual.py | 18 ++++++++++++++++++ InvenTree/part/models.py | 3 +++ 2 files changed, 21 insertions(+) create mode 100644 InvenTree/part/migrations/0009_part_virtual.py diff --git a/InvenTree/part/migrations/0009_part_virtual.py b/InvenTree/part/migrations/0009_part_virtual.py new file mode 100644 index 0000000000..8a934e9064 --- /dev/null +++ b/InvenTree/part/migrations/0009_part_virtual.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.2 on 2019-06-18 08:33 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('part', '0008_auto_20190618_0042'), + ] + + operations = [ + migrations.AddField( + model_name='part', + name='virtual', + field=models.BooleanField(default=False, help_text='Is this a virtual part, such as a software product or license?'), + ), + ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 7d5476db5d..92acce5026 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -216,6 +216,7 @@ class Part(models.Model): purchaseable: Can this part be purchased from suppliers? trackable: Trackable parts can have unique serial numbers assigned, etc, etc active: Is this part active? Parts are deactivated instead of being deleted + virtual: Is this part "virtual"? e.g. a software product or similar notes: Additional notes field for this part """ @@ -377,6 +378,8 @@ class Part(models.Model): active = models.BooleanField(default=True, help_text='Is this part active?') + virtual = models.BooleanField(default=False, help_text='Is this a virtual part, such as a software product or license?') + notes = models.TextField(blank=True) bom_checksum = models.CharField(max_length=128, blank=True, help_text='Stored BOM checksum') From b1c1015778e3f93176df14e11ca06a21405a9593 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Tue, 18 Jun 2019 18:38:03 +1000 Subject: [PATCH 2/7] Add bootstrap-toggle --- InvenTree/static/css/bootstrap-toggle.min.css | 28 +++++++++++++++++++ .../script/bootstrap/bootstrap-toggle.min.js | 9 ++++++ InvenTree/templates/base.html | 2 ++ 3 files changed, 39 insertions(+) create mode 100644 InvenTree/static/css/bootstrap-toggle.min.css create mode 100644 InvenTree/static/script/bootstrap/bootstrap-toggle.min.js diff --git a/InvenTree/static/css/bootstrap-toggle.min.css b/InvenTree/static/css/bootstrap-toggle.min.css new file mode 100644 index 0000000000..0d42ed09cd --- /dev/null +++ b/InvenTree/static/css/bootstrap-toggle.min.css @@ -0,0 +1,28 @@ +/*! ======================================================================== + * Bootstrap Toggle: bootstrap-toggle.css v2.2.0 + * http://www.bootstraptoggle.com + * ======================================================================== + * Copyright 2014 Min Hur, The New York Times Company + * Licensed under MIT + * ======================================================================== */ +.checkbox label .toggle,.checkbox-inline .toggle{margin-left:-20px;margin-right:5px} +.toggle{position:relative;overflow:hidden} +.toggle input[type=checkbox]{display:none} +.toggle-group{position:absolute;width:200%;top:0;bottom:0;left:0;transition:left .35s;-webkit-transition:left .35s;-moz-user-select:none;-webkit-user-select:none} +.toggle.off .toggle-group{left:-100%} +.toggle-on{position:absolute;top:0;bottom:0;left:0;right:50%;margin:0;border:0;border-radius:0} +.toggle-off{position:absolute;top:0;bottom:0;left:50%;right:0;margin:0;border:0;border-radius:0} +.toggle-handle{position:relative;margin:0 auto;padding-top:0;padding-bottom:0;height:100%;width:0;border-width:0 1px} +.toggle.btn{min-width:59px;min-height:34px} +.toggle-on.btn{padding-right:24px} +.toggle-off.btn{padding-left:24px} +.toggle.btn-lg{min-width:79px;min-height:45px} +.toggle-on.btn-lg{padding-right:31px} +.toggle-off.btn-lg{padding-left:31px} +.toggle-handle.btn-lg{width:40px} +.toggle.btn-sm{min-width:50px;min-height:30px} +.toggle-on.btn-sm{padding-right:20px} +.toggle-off.btn-sm{padding-left:20px} +.toggle.btn-xs{min-width:35px;min-height:22px} +.toggle-on.btn-xs{padding-right:12px} +.toggle-off.btn-xs{padding-left:12px} \ No newline at end of file diff --git a/InvenTree/static/script/bootstrap/bootstrap-toggle.min.js b/InvenTree/static/script/bootstrap/bootstrap-toggle.min.js new file mode 100644 index 0000000000..37113200bf --- /dev/null +++ b/InvenTree/static/script/bootstrap/bootstrap-toggle.min.js @@ -0,0 +1,9 @@ +/*! ======================================================================== + * Bootstrap Toggle: bootstrap-toggle.js v2.2.0 + * http://www.bootstraptoggle.com + * ======================================================================== + * Copyright 2014 Min Hur, The New York Times Company + * Licensed under MIT + * ======================================================================== */ ++function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.toggle"),f="object"==typeof b&&b;e||d.data("bs.toggle",e=new c(this,f)),"string"==typeof b&&e[b]&&e[b]()})}var c=function(b,c){this.$element=a(b),this.options=a.extend({},this.defaults(),c),this.render()};c.VERSION="2.2.0",c.DEFAULTS={on:"On",off:"Off",onstyle:"primary",offstyle:"default",size:"normal",style:"",width:null,height:null},c.prototype.defaults=function(){return{on:this.$element.attr("data-on")||c.DEFAULTS.on,off:this.$element.attr("data-off")||c.DEFAULTS.off,onstyle:this.$element.attr("data-onstyle")||c.DEFAULTS.onstyle,offstyle:this.$element.attr("data-offstyle")||c.DEFAULTS.offstyle,size:this.$element.attr("data-size")||c.DEFAULTS.size,style:this.$element.attr("data-style")||c.DEFAULTS.style,width:this.$element.attr("data-width")||c.DEFAULTS.width,height:this.$element.attr("data-height")||c.DEFAULTS.height}},c.prototype.render=function(){this._onstyle="btn-"+this.options.onstyle,this._offstyle="btn-"+this.options.offstyle;var b="large"===this.options.size?"btn-lg":"small"===this.options.size?"btn-sm":"mini"===this.options.size?"btn-xs":"",c=a('