diff --git a/deploy/deploy.sh b/deploy/deploy.sh new file mode 100644 index 0000000..cd64364 --- /dev/null +++ b/deploy/deploy.sh @@ -0,0 +1,7 @@ +#!/bin/bash +sudo cp restart_partsearch.sh /usr/local/sbin/ +cd Git-Auto-Deploy +sudo python setup.py install +sudo cp /ELAB-partsearch/deploy/git-auto-deploy.service /etc/systemd/system +sudo systemctl enable git-auto-deploy.service +sudo systemctl start git-auto-deploy.service diff --git a/deploy/git-auto-deploy.service b/deploy/git-auto-deploy.service new file mode 100644 index 0000000..938e96e --- /dev/null +++ b/deploy/git-auto-deploy.service @@ -0,0 +1,11 @@ +[Unit] +Description=GitAutoDeploy + +[Service] +User=www-data +Group=www-data +WorkingDirectory=/srv/ELAB-partsearch/deploy/Git-Auto-Deploy/ +ExecStart=/usr/bin/python -m /srv/ELAB-partsearch/deploy/Git-Auto-Deploy/gitautodeploy --daemon-mode --config /srv/ELAB-partsearch/deploy/GitAutoDeploy.config.json + +[Install] +WantedBy=multi-user.target diff --git a/parts/server.py b/parts/server.py index e5fa3ec..524bccd 100644 --- a/parts/server.py +++ b/parts/server.py @@ -239,7 +239,7 @@ def alter(partID): @app.route('/parts/delete/') # @requires_auth def delete(partID): - if partID < 0: + if int(partID) < 0: abort(400) s = text('delete from parts where id=:id;') r = db_engine.execute(s, id=partID) diff --git a/parts/static/script.js b/parts/static/script.js index 23a5f42..af31969 100644 --- a/parts/static/script.js +++ b/parts/static/script.js @@ -10,6 +10,8 @@ function init_edit(partID) { $('table#details tr#datasheet td input').show(); + $('#duplicate-button').closest('div').hide(); + var datasheet_input = $('') $('#datasheet-info').replaceWith(datasheet_input); @@ -21,16 +23,15 @@ function new_entry() { $('table#details tr#location td p').text(''); $('table#details tr#partno td p').text(''); $('table#details tr#description td p').text(''); - // $('table#details tr#location select').text(''); - $('table#details tr#partno td input').text(''); - $('table#details tr#description td input').text(''); + $('table#details tr#partno td input').val(''); + $('table#details tr#description td input').val(''); init_edit(-1); overlay_in(); } function end_edit() { - $('table#details tr#location td p').text($('table#details tr#location td select option:checked').val()); + $('table#details tr#location td p').text($('table#details tr#location td select option:checked').text()); $('table#details tr#location td p').show(); $('table#details tr#location td select').hide(); @@ -44,46 +45,21 @@ function end_edit() { $('table#details tr#datasheet td input').hide(); + $('#duplicate-button').closest('div').show(); + var newButton = '
'; $('.round-button-left').replaceWith(newButton); } function save(partID) { - // var block_v = $('#block-input').val(); - // var type_v = $('#type-input').val(); var location_id_v = $('table#details tr#location td select').val(); var partno_v = $('table#details tr#partno td input').val(); var description_v = $('table#details tr#description td input').val(); - // var quantity_v = $('#quantity-input').val(); - // var notes_v = $('#notes-input').val(); var datasheet = $('table#details tr#datasheet td input')[0].files; - // if(! partno_v.match(/^([a-zA-Z0-9]{1,20}\s*){1,3}$/g)) { - // alert('Invalid part number format. Accepted: '); - // return; - // } - // if(! block_v.match(/^[0-9]+$/g)) { - // alert('Invalid location field. Only numbers accepted.'); - // return; - // } - // if(type_v.length > 25) { - // alert('Manufacturer name too long (max 25 characters).') - // return; - // } if(description_v.length > 200) { alert('Description too long (max 200 characters).') return; } - // if(quantity_v.length > 10) { - // alert('Quantity info too long (max 10 characters).') - // return; - // } - // if(notes_v.length > 200) { - // alert('Notes too long (max 200 characters).') - // return; - // } - - // var partnos = partno_v.split(' '); - var data = new FormData(); if (datasheet.length == 1) @@ -92,21 +68,9 @@ function save(partID) { return; } data.append('datasheet-file', datasheet[0]); - // data.append('block', block_v); - // data.append('type', type_v); data.append('partno', partno_v); data.append('location_id', location_id_v) - // if (partnos.length > 1) - // data.append('partnoalt', partnos[1]); - // else - // data.append('partnoalt', ''); - // if(partnos.length > 2) - // data.append('partnoalt2', partnos[2]); - // else - // data.append('partnoalt2', ''); data.append('description', description_v); - // data.append('quantity', quantity_v); - // data.append('notes', notes_v); $.ajax({ // Your server script to process the upload @@ -134,6 +98,7 @@ function save(partID) { }); end_edit(); + perform_query(); } function text_filter(string) { diff --git a/parts/static/style.css b/parts/static/style.css index da5ad9c..dba8d54 100644 --- a/parts/static/style.css +++ b/parts/static/style.css @@ -196,7 +196,7 @@ div label input { .round-button { position: absolute; bottom: 15pt; - left: calc(15% - 20pt); + left: calc(11% - 20pt); width: 40pt; height: 32pt; border-radius: 20pt; @@ -209,7 +209,20 @@ div label input { .round-button-left { position: absolute; bottom: 15pt; - left: calc(30% - 20pt); + left: calc(22% - 20pt); + width: 40pt; + height: 32pt; + border-radius: 20pt; + background-color: #5E9292; + font-size: 20pt; + padding-top: 8pt; + box-shadow: 2pt 1pt 8pt black; +} + +.round-button-right { + position: absolute; + bottom: 15pt; + left: calc(33% - 20pt); width: 40pt; height: 32pt; border-radius: 20pt; @@ -227,6 +240,10 @@ div label input { color: #D7E2E2; } +.round-button-right a{ + color: #D7E2E2; +} + .small-square-button { position: absolute; top: 5pt; diff --git a/parts/templates/partsearch.html b/parts/templates/partsearch.html index 9a9a117..e589255 100644 --- a/parts/templates/partsearch.html +++ b/parts/templates/partsearch.html @@ -60,6 +60,7 @@
+