Network
This commit is contained in:
+53
-9
@@ -26,10 +26,21 @@ def read_xml(d, fn):
|
||||
subject_str = m.find('subject').text
|
||||
xml_data.append({'nbr': nbr_str, 'date': date_str, 'from': from_str, 'subject': subject_str})
|
||||
|
||||
# sort
|
||||
xml_data[:] = sorted(xml_data, key=lambda x: parse_nbr_xml(x['nbr']))
|
||||
return xml_data
|
||||
|
||||
|
||||
def update_nbr_xml(d, fn, nbr, new_nbr):
|
||||
def parse_nbr_xml(nbr_str):
|
||||
if '-' in nbr_str:
|
||||
nbr_str = nbr_str.split('-')[0]
|
||||
# split number and return a tuple
|
||||
# ex. 15.4 -> (15, 4)
|
||||
tok = nbr_str.split('.')
|
||||
tup = (int(tok[0]), int(tok[1]))
|
||||
return tup
|
||||
|
||||
def update_nbr_xml(d, fn, nbr, new_nbr, date):
|
||||
fp = os.path.join(d, fn)
|
||||
if not os.path.isfile(fp):
|
||||
return False
|
||||
@@ -37,24 +48,54 @@ def update_nbr_xml(d, fn, nbr, new_nbr):
|
||||
tr = et.parse(fp)
|
||||
m = tr.xpath(".//nbr[text()='" + nbr + "']")
|
||||
|
||||
if m is None or len(m) > 1:
|
||||
if m is None:
|
||||
return False
|
||||
|
||||
mm = None
|
||||
for k in m:
|
||||
if k.getparent().find('date').text == date:
|
||||
mm = k
|
||||
break
|
||||
|
||||
if mm is None:
|
||||
return False
|
||||
|
||||
# replace nbr
|
||||
m[0].text = new_nbr
|
||||
mm.text = new_nbr
|
||||
|
||||
# order all mails according to their nbr
|
||||
mails = tr.find('mails')
|
||||
print(mails)
|
||||
|
||||
mails[:] = sorted(mails, key=lambda x: float(x.find('nbr').text))
|
||||
mails[:] = sorted(mails, key=lambda x: parse_nbr_xml(x.find('nbr').text))
|
||||
|
||||
tr.write(fp)
|
||||
return True
|
||||
|
||||
|
||||
def delete_nbr_xml(d, fn, nbr, date):
|
||||
fp = os.path.join(d, fn)
|
||||
if not os.path.isfile(fp):
|
||||
return False
|
||||
|
||||
tr = et.parse(fp)
|
||||
m = tr.xpath(".//nbr[text()='" + nbr + "']")
|
||||
|
||||
if m is None:
|
||||
return False
|
||||
|
||||
mm = None
|
||||
for k in m:
|
||||
if k.getparent().find('date').text == date:
|
||||
mm = k
|
||||
break
|
||||
|
||||
if mm is None:
|
||||
return False
|
||||
|
||||
mail = mm.getparent()
|
||||
mail.getparent().remove(mail)
|
||||
|
||||
tr.write(fp)
|
||||
return True
|
||||
|
||||
|
||||
@app.route('/')
|
||||
@@ -78,11 +119,14 @@ def xmlfn(fn):
|
||||
return "File: " + fn + "does not exist."
|
||||
elif request.method == 'POST':
|
||||
data = request.form
|
||||
print(data)
|
||||
a = data.get('action')
|
||||
if a == "update":
|
||||
logging.info("POST update for " + fn + " -- " + data.get('nbr') + " ++ " + data.get('new_nbr'))
|
||||
if update_nbr_xml(config.xml['path'], fn, data.get('nbr'), data.get('new_nbr')):
|
||||
logging.info("POST UPDATE " + fn + " -- " + data.get('nbr') + " ++ " + data.get('new_nbr'))
|
||||
if update_nbr_xml(config.xml['path'], fn, data.get('nbr'), data.get('new_nbr'), data.get('date')):
|
||||
return "ok"
|
||||
elif a == "delete":
|
||||
logging.info("POST DELETE " + fn + " -- " + data.get('nbr'))
|
||||
if delete_nbr_xml(config.xml['path'], fn, data.get('nbr'), data.get('date')):
|
||||
return "ok"
|
||||
return "-"
|
||||
|
||||
|
||||
+4
-2
@@ -1,8 +1,10 @@
|
||||
$(document).ready(function(){
|
||||
$('.nbr_input').submit(function(e) { return false; });
|
||||
$('.update').click(function(e) {
|
||||
$('.update, .delete').click(function(e) {
|
||||
console.log("blabla");
|
||||
var li = $(this).parent("li");
|
||||
$.post('/xml/' + li.data("file"), {'action': 'update', 'nbr': li.data("nbr"), 'new_nbr': li.children(".nbr_input").val()}, function(d) {
|
||||
console.log($(this).attr('class'));
|
||||
$.post('/xml/' + li.data("file"), {'action': $(this).attr('class'), 'nbr': li.data("nbr"), 'new_nbr': li.children(".nbr_input").val(), 'date': li.data("date")}, function(d) {
|
||||
if(d === 'ok') {
|
||||
location.reload();
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<ul>
|
||||
<!-- {'nbr': nbr_str, 'date': date_str, 'from': from_str, 'subject': subject_str} -->
|
||||
{% for d in data %}
|
||||
<li data-file={{fn}} data-nbr="{{d.nbr}}" data-date={{d.date}}><input type="text" class="nbr_input" value="{{d.nbr}}"> - {{d.from}} - {{d.subject}} - {{d.date}}<button class="update">+</button></li>
|
||||
<li data-file="{{fn}}" data-nbr="{{d.nbr}}" data-date="{{d.date}}"><input type="text" class="nbr_input" value="{{d.nbr}}"> - {{d.from}} - {{d.subject}} - {{d.date}}<button class="update">+</button><button class="delete">-</button></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user