This commit is contained in:
gauthiier
2020-01-15 15:56:23 +01:00
parent dd6d67cf6b
commit 036b549e75
7 changed files with 1996 additions and 9793 deletions
+53 -9
View File
@@ -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
View File
@@ -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();
}
+1 -1
View File
@@ -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>