##// END OF EJS Templates
Add fill gaps to plots and rm tmp summary files in upload
jespinoza -
r15:83785b54e857
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,160 +1,159
1 1
2 2 from django.contrib.auth.decorators import login_required
3 3 from django.shortcuts import render
4 4 from apps.updata.forms import UpdataForm, ExpForm
5 5 from django.core.files.storage import FileSystemStorage
6 6 from django.contrib import messages
7 7
8 8 import os
9 9 import glob
10 10 import datetime
11 11
12 12 # madrigal imports
13 13 import madrigal.metadata
14 14 import madrigal.ui.web
15 15 import madrigal.admin
16 16
17 17 @login_required(login_url='/madrigal/accounts/login/')
18 18 def index(request):
19 19 '''
20 20 Uploading experiments data view. Allows user to upload experiment files
21 21
22 22 '''
23 23 dbAdminObj = madrigal.admin.MadrigalDBAdmin()
24 24 madDB = madrigal.metadata.MadrigalDB()
25 25 madWebObj = madrigal.ui.web.MadrigalWeb(madDB)
26 26 siteName, siteList = madWebObj.getSiteInfo()
27 27 err = False
28 28 if request.method == 'POST':
29 29 for root, folders, tmp_files in os.walk('/tmp/'):
30 30 for f in tmp_files:
31 31 os.remove(os.path.join(root, f))
32 32
33 33 form = UpdataForm(request.POST, request.FILES)
34 34 files = list(request.FILES.getlist('file'))
35 35 files.sort()
36 36 filenames = []
37 37
38 38 choose = request.POST.get('choose')
39 39 if choose == 'new':
40 40 instCode = int(request.POST.get('inst'))
41 41 expTitle = request.POST.get('exp')
42 42 else:
43 43 instCode = int(request.POST.get('instruments'))
44 44 expId = request.POST.get('experiments')
45 45 madExp = madrigal.metadata.MadrigalExperiment()
46 46 expTitle = madExp.getExpNameByExpId(expId)
47 47
48 48 description = request.POST.get('description')
49 49 perm = int(request.POST.get('permission'))
50 50 optchar = request.POST.get('optchar').strip()
51 51 first = True
52 52
53 53 if len(files) == 1:
54 54 fs = FileSystemStorage(location='/tmp')
55 55 fs.save(files[0].name, files[0])
56 56 filename = os.path.join('/tmp', files[0].name)
57 57 fileInfo = madrigal.data.MadrigalFile(filename, madDB)
58 58 sTime = fileInfo.getEarliestTime()
59 59 startTime = datetime.datetime(sTime[0],sTime[1],sTime[2],sTime[3],sTime[4],sTime[5])
60 60 exp_list = madWebObj.getExpsOnDate(instCode, startTime.year, startTime.month, startTime.day)
61 61 if exp_list and os.path.exists(os.path.join(exp_list[0][2], files[0].name)):
62 62 expDir = exp_list[0][2]
63 63 try:
64 64 dbAdminObj.overwriteMadrigalFile(expDir, filename, notify=True)
65 65 messages.warning(request,
66 66 'Filename {} has been overwritten'.format(files[0].name)
67 67 )
68 68 except Exception as e:
69 69 err = True
70 70 messages.error(request,
71 71 'An error occur adding file {}: {}'.format(filename.split('/')[-1], e)
72 72 )
73 73 else:
74 fs = FileSystemStorage(location='/tmp')
75 fs.save(files[0].name, files[0])
76 filename = os.path.join('/tmp', files[0].name)
74 if os.path.exists(os.path.join('/tmp', 'overview', files[0].name + '.summary')):
75 os.remove(os.path.join('/tmp', 'overview', files[0].name + '.summary'))
77 76 ext = filename.split('.')[-1]
78 77 if ext not in ('hdf5', 'h5'):
79 78 convert = True
80 79 else:
81 80 convert = False
82 81 try:
83 82 expDir = dbAdminObj.createMadrigalExperiment(filename, expTitle, perm, description,
84 83 instCode, optChar=optchar, updateToMad3=convert)
85 84 except Exception as e:
86 85 err = True
87 86 messages.error(request,
88 87 'An error occur creating the experiment {}: {}'.format(expTitle, e)
89 88 )
90 89 filenames.append(filename.split('/')[-1])
91 90 else:
92 91 for f in files:
93 92 fs = FileSystemStorage(location='/tmp')
94 93 fs.save(f.name, f)
95 94 filename = os.path.join('/tmp', f.name)
96 95 ext = filename.split('.')[-1]
97 96 if ext not in ('hdf5', 'h5'):
98 97 convert = True
99 98 else:
100 99 convert = False
101 100
102 101 if first:
103 102 first = False
104 103 try:
105 104 expDir = dbAdminObj.createMadrigalExperiment(filename, expTitle, perm, description,
106 105 instCode, optChar=optchar, updateToMad3=convert)
107 106 except Exception as e:
108 107 err = True
109 108 messages.error(request,
110 109 'An error occur creating the experiment {}: {}'.format(expTitle, e)
111 110 )
112 111 break
113 112 else:
114 113 try:
115 114 dbAdminObj.addMadrigalFile(expDir, filename, perm, description, updateToMad3=convert)
116 115 except Exception as e:
117 116 err = True
118 117 messages.error(request,
119 118 'An error occur adding file {}: {}'.format(filename.split('/')[-1], e)
120 119 )
121 120 filenames.append(filename.split('/')[-1])
122 121 os.remove(filename)
123 122
124 123 if not err:
125 124 messages.success(request,
126 125 'Experiment {} created succesfully with files: {}'.format(expTitle, filenames)
127 126 )
128 127
129 128 madInstParams = madrigal.metadata.MadrigalInstrumentParameters()
130 129 madInstKindats = madrigal.metadata.MadrigalInstrumentKindats()
131 130
132 131 print('*** Updating local metadata ***')
133 132 dbAdminObj.__updateLocalMetadata__()
134 133 print('*** Rebuilding instParmTab.txt ***')
135 134 madInstParams.rebuildInstParmTable()
136 135 print('*** Rebuilding instKindatTab.txt ***')
137 136 madInstKindats.rebuildInstKindatTable()
138 137
139 138 form = UpdataForm()
140 139
141 140 else:
142 141 form = UpdataForm()
143 142
144 143 return render(request, 'updata/index.html', {
145 144 'form': form,
146 145 'site_name': siteName,
147 146 'site_list': siteList,
148 147 })
149 148
150 149
151 150 def get_experiments(request):
152 151 """get_experiments is a Ajax call that returns the experiments select html to support the
153 152 updata UI. Called when a user modifies the intruments select field.
154 153
155 154 Inputs:
156 155 request
157 156 """
158 157 form = ExpForm(request.GET)
159 158
160 159 return render(request, 'updata/experiments.html', {'form': form})
1 NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
General Comments 0
You need to be logged in to leave comments. Login now