source: orange-bioinformatics/server_update/updater.py @ 1721:921b3780c6cc

Revision 1721:921b3780c6cc, 1.8 KB checked in by markotoplak, 19 months ago (diff)

Moved common functionality of the server files update scripts to a separate file.

Line 
1import subprocess
2import time, glob
3
4from datetime import datetime
5
6from common import *
7
8if not args:
9    args = ["updateTaxonomy.py", "updateGO.py", "updateMeSH.py", "updateNCBI_geneinfo.py",
10            "updateHomoloGene.py", "updateDictyBase.py", "updatePPI.py"]
11   
12for script in args:
13    log = open(os.path.join(option.log_dir, script + ".log.txt"), "wb")
14    p = subprocess.Popen([sys.executable, script, "-u", option.user, "-p", option.password], stdout=log, stderr=log)
15    while p.poll() is None:
16        time.sleep(3)
17    log.write("\n" + script + " exited with exit status %s" % p.poll())
18    log.close()
19    if option.mailto:
20        fromaddr = "orange@fri.uni-lj.si"
21        toaddr = option.mailto.split(",")
22        msg = open(os.path.join(option.log_dir, script + ".log.txt"), "rb").read()
23        msg = "From: %s\r\nTo: %s\r\nSubject: Error running %s update script\r\n\r\n" % (fromaddr, ",".join(toaddr), script) + msg
24        try:
25            import smtplib
26            s = smtplib.SMTP('212.235.188.18', 25)
27            s.sendmail(fromaddr, toaddr, msg)
28            s.quit()
29        except Exception, ex:
30            print "Failed to send error report due to:", ex
31   
32
33def files_report():
34    sf = serverfiles.ServerFiles()
35    html = []
36    for domain in sf.listdomains():
37        if domain not in ["demo", "demo2", "test", "gad"]:
38            allinfo = sf.allinfo(domain)
39            html += ["<h2>%s</h2>" % domain,
40                     "<table><tr><th>Title</th><th>Date</th><th>Filename</th></tr>"] + \
41                    ["<tr><td>%s</td><td>%s</td><td>%s</td></tr>" % (info["title"], info["datetime"], file) \
42                     for file, info in allinfo.items()] + \
43                    ["</table>"]
44    return "\n".join(html)
45 
46open(os.path.join(option.log_dir, "serverFiles.html"), "wb").write(files_report())
Note: See TracBrowser for help on using the repository browser.