source: orange-bioinformatics/server_update/updater.py @ 1717:b9f395780e75

Revision 1717:b9f395780e75, 2.3 KB checked in by markotoplak, 20 months ago (diff)

Copied server update scripts from Orange source.

Line 
1import sys, os
2import subprocess
3import time, glob
4import optparse
5
6from getopt import getopt
7from datetime import datetime
8
9usage="""usage: %prog [options] [update_script ...]
10
11Run update scripts"""
12
13parser = optparse.OptionParser(usage=usage)
14parser.add_option("-u", "--user", help="User name")
15parser.add_option("-p", "--password", help="Password")
16parser.add_option("-l", "--log-dir", dest="log_dir", help="Directory to store the logs", default="./")
17parser.add_option("-m", "--mailto", help="e-mail the results to EMAIL", metavar="EMAIL", default=None)
18
19option, args = parser.parse_args()
20
21if not args:
22    args = ["updateTaxonomy.py", "updateGO.py", "updateMeSH.py", "updateNCBI_geneinfo.py",
23            "updateHomoloGene.py", "updateDictyBase.py", "updatePPI.py"]
24   
25for script in args:
26    log = open(os.path.join(option.log_dir, script + ".log.txt"), "wb")
27    p = subprocess.Popen([sys.executable, script, "-u", option.user, "-p", option.password], stdout=log, stderr=log)
28    while p.poll() is None:
29        time.sleep(3)
30    log.write("\n" + script + " exited with exit status %s" % p.poll())
31    log.close()
32    if option.mailto:
33        fromaddr = "orange@fri.uni-lj.si"
34        toaddr = option.mailto.split(",")
35        msg = open(os.path.join(option.log_dir, script + ".log.txt"), "rb").read()
36        msg = "From: %s\r\nTo: %s\r\nSubject: Error running %s update script\r\n\r\n" % (fromaddr, ",".join(toaddr), script) + msg
37        try:
38            import smtplib
39            s = smtplib.SMTP('212.235.188.18', 25)
40            s.sendmail(fromaddr, toaddr, msg)
41            s.quit()
42        except Exception, ex:
43            print "Failed to send error report due to:", ex
44   
45
46def files_report():
47  import orngServerFiles as sf
48  sf = sf.ServerFiles()
49  html = []
50  for domain in sf.listdomains():
51      if domain not in ["demo", "demo2", "test", "gad"]:
52          allinfo = sf.allinfo(domain)
53          html += ["<h2>%s</h2>" % domain,
54                   "<table><tr><th>Title</th><th>Date</th><th>Filename</th></tr>"] + \
55                  ["<tr><td>%s</td><td>%s</td><td>%s</td></tr>" % (info["title"], info["datetime"], file) \
56                   for file, info in allinfo.items()] + \
57                  ["</table>"]
58  return "\n".join(html)
59 
60open(os.path.join(option.log_dir, "serverFiles.html"), "wb").write(files_report())
Note: See TracBrowser for help on using the repository browser.