forked from rubayte/edivaApp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
process_mail_out.py
117 lines (99 loc) · 3.71 KB
/
process_mail_out.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import os
import subprocess
import sys
jobid =sys.argv[1]
command=sys.argv[4]
returncode=sys.argv[2]
outputfile=sys.argv[3]
def extract_mail(command):
#so split the command,
ff=command.strip().split()
#search for username/
field_of_interest = ''
for i in ff:
if i.startswith('userspace/'):
field_of_interest = i
break
if field_of_interest == '' :
print 'no interestin field'
return ('','None')
#look for username/.csv_file
username = field_of_interest.split('/')[1]
if os.path.isfile('userspace/'+username+'/.csv_file.csv'):
f = open('userspace/'+username+'/.csv_file.csv','r')
email = f.readline().strip().split(',')[1]
#print email
f.close()
return (email,username)
else:
print 'no csv file for username %s'%username
return ('',username)
def parse_command(command):
#remove all paths basically
ff=command.strip().split()
outf = []
for i in ff:
tmp = i.split('/')[-1]
if 'csv_file' in tmp or '.csv_file' in tmp :pass
else : outf.append(tmp)
return ' '.join(outf)
(email,uname) = extract_mail(command)
if email== '':
#there's no mail I can find so screw it
sys.exit(0)
command = parse_command(command)
print command
with open('mailtext.txt','w') as wr:
header ='''To: %s
Subject: ediva processing result
From:"Ediva Team"<[email protected]>
'''%(email)
if returncode == '0':
header ='''To: %s
Subject: eDiVA processing result
From:"Ediva Team"<[email protected]>
'''%(email)
wr.write(header)
if 'annotate_template.sh' in command:
fname = command.split(' ')[-1].split('/')[-1]
outStr="Hello %s \n\n"%uname
outStr+="Your Annotation job for %s : ended successfully.\n"%fname
outStr+="You can retreive the results in your userspace.\n"
outStr+="Cheers \neDiVA Team \n\n-- "
elif 'priorit' in command:
fname = command.split(' ')[-2].split('/')[-1]
fname =''
for ff in command.split(' '):
if ff.endswith('ranked.csv'):
fname = ff.split('/')[-1]
outStr="Hello %s \n\n"%uname
outStr+="Your Prioritization job for %s : ended successfully.\n"%fname
outStr+="You can retreive the results in your userspace.\n"
outStr+="Cheers \neDiVA Team \n\n-- "
wr.write(outStr)
else:
header ='''To: %s
Subject: eDiVA Error report
From:"Ediva Team"<[email protected]>
'''%(email)
wr.write(header)
outStr = 'Your command %s \nEnded with Error code %s \nContact us if you do not find the error cause \n\n'%(command, returncode)
if 'annotate_template.sh' in command:
fname = command.split(' ')[-1].split('/')[-1]
outStr ="Hello %s \n\n"%uname
outStr+="Your Annotation job for %s : ended with an error.\n"%(fname)
outStr+="Please check if the input file format is correct.\nIf the error remains please contact us.\n"
outStr+="Cheers \neDiVA Team \n\n-- "
elif 'priorit' in command:
fname = command.split(' ')[-2].split('/')[-1]
fname =''
for ff in command.split(' '):
if ff.endswith('ranked.csv'):
fname = ff.split('/')[-1]
outStr ="Hello %s \n\n"%uname
outStr+="Your Prioritization job for %s : ended with an error.\n"%(fname)
outStr+="Please check if the input file format is correct.\nIf the error remains please contact us.\n"
outStr+="Cheers \neDiVA Team \n\n-- "
wr.write(outStr)
return_val = subprocess.call('/usr/sbin/sendmail -vt < mailtext.txt',shell=True)
#if return_val == 0 : os.unlink('mailtext.txt')