##// END OF EJS Templates
Add BASE_URL in settings to work with proxys
Add BASE_URL in settings to work with proxys

File last commit:

r0:b84e1135c2c4
r18:5a8055e18e7b
Show More
changeExpStatus.py
195 lines | 5.5 KiB | text/x-python | PythonLexer
#!PYTHONEXE
#$Id: changeExpStatus.py 7045 2019-10-07 19:56:46Z brideout $
usage = """
changeExpStatus.py is a script used to change the status of an
existing Madrigal experiment. The following attributes can be changed:
expUrl
experiment name
siteID
start date
start time
end date
end time
instrument code
security (public, private. ignore)
PI (optional - overrides default for instrument)
PIEmail (optional - overrides default for instrument)
Required argument:
--expDir - full path to experiment directory. Example:
"/opt/madrigal/experiments/1998/mlh/20jan98"
Optional arguments - set these to change an experiment attribute:
--expUrl - must be in form <cgi base>/madtoc/YYYY/<3 letter lower case inst code>/<expDir> or
<cgi base>/madtoc/experiments[0-9]*/YYYY/<3 letter lower case inst code>/<expDir>
example: http://www.haystack.mit.edu/cgi-bin/experiments2/madtoc/1997/mlh/03dec97g
--expName - experiment name. Quotes required if contains spaces. Example: "World Day"
--siteID - Madrigal siteID of where data will be stored. Error raised if not the siteID
of the local Madrigal site. Example: 4
--startDate - new start date of experiment (UT). In form YYYY-MM-DD. Example: 1998-01-20
--startTime - new start time of experiment (UT). In form HH:MM:DD. Example: 12:30:00
--endDate - new end date of experiment (UT). In form YYYY-MM-DD. Example: 1998-01-21
--endTime - new end time of experiment (UT). In form HH:MM:DD. Example: 23:30:00
--inst - new instrument code. Example: 30
--security - new security code. Allowed values are 0 for public, 1 for private (limited IP range access)
-1 for ignore, 2 for archived experiment, 3 for private (limited IP range access) archived
experiment.
--PI - set Principal Investigator for this experiment
--PIEmail - set PI email for this experiment
"""
import sys
import os, os.path
import getopt
import traceback
import datetime
import madrigal.admin
# parse command line
arglist = ''
longarglist = ['expDir=',
'expUrl=',
'expName=',
'siteID=',
'startDate=',
'startTime=',
'endDate=',
'endTime=',
'inst=',
'security=',
'PI=',
'PIEmail=']
optlist, args = getopt.getopt(sys.argv[1:], arglist, longarglist)
# set default values
expDir = None
expUrl = None
expName = None
siteID = None
startDate = None
startTime = None
endDate = None
endTime = None
inst = None
security = None
PI = None
PIEmail = None
for opt in optlist:
if opt[0] == '--expDir':
expDir = opt[1]
elif opt[0] == '--expUrl':
expUrl = opt[1]
elif opt[0] == '--expName':
expName = opt[1]
elif opt[0] == '--siteID':
siteID = int(opt[1])
elif opt[0] == '--startDate':
startDate = opt[1]
elif opt[0] == '--startTime':
startTime = opt[1]
elif opt[0] == '--endDate':
endDate = opt[1]
elif opt[0] == '--endTime':
endTime = opt[1]
elif opt[0] == '--inst':
inst = int(opt[1])
elif opt[0] == '--security':
security = opt[1]
elif opt[0] == '--PI':
PI = opt[1]
elif opt[0] == '--PIEmail':
PIEmail = opt[1]
else:
print(usage)
raise ValueError('Illegal option %s\n%s' % (opt[0], opt[1]))
# check that all required arguments passed in
if expDir == None:
print('--expDir argument required - must be full path to experiment directory')
print(usage)
sys.exit(0)
if expUrl == None and expName == None and siteID == None and \
startDate == None and startTime == None and endDate == None and \
endTime == None and inst == None and security == None and \
PI == None and PIEmail == None:
print('No experiment attributes are being changed')
print(usage)
sys.exit(0)
# create startDatetime
if startDate == None and startTime == None:
startDatetime = None
else:
if startDate == None or startTime == None:
raise ValueError('Both startDate and startTime must be set if either set')
items = startDate.split('-')
year = int(items[0])
month = int(items[1])
day = int(items[2])
items = startTime.split(':')
hour = int(items[0])
minute = int(items[1])
second = int(items[2])
startDatetime = datetime.datetime(year, month, day, hour, minute, second)
# create endDatetime
if endDate == None and endTime == None:
endDatetime = None
else:
if endDate == None or endTime == None:
raise ValueError('Both endDate and endTime must be set if either set')
items = endDate.split('-')
year = int(items[0])
month = int(items[1])
day = int(items[2])
items = endTime.split(':')
hour = int(items[0])
minute = int(items[1])
second = int(items[2])
endDatetime = datetime.datetime(year, month, day, hour, minute, second)
adminObj = madrigal.admin.MadrigalDBAdmin()
adminObj.changeExpStatus(expDir,
expUrl,
expName,
siteID,
startDatetime,
endDatetime,
inst,
security,
PI,
PIEmail)
print('Status of experiment %s changed in local metadata - run updateMaster to register' % (expDir))