Index: trunk/ippToPsps/jython/gpc1db.py
===================================================================
--- trunk/ippToPsps/jython/gpc1db.py	(revision 39038)
+++ trunk/ippToPsps/jython/gpc1db.py	(revision 39049)
@@ -340,11 +340,4 @@
         return addIDs
 
-
-
-
-
-
-
-
     '''
     Gets some stack-stage meta data for this sky_id # TODO this SQL could surely be improved
@@ -408,9 +401,8 @@
                AND warp_skyfile_id = " +  str(warpSkyfileID)
 
-        try:
-            rs = self.executeQuery(sql)
-            rs.first()
-        except:
+        rs = self.executeQuery(sql)
+        if not rs.first():
             self.logger.errorPair("Can't query for", "forced warp meta data")
+            os._exit(3)
 
         try:
@@ -435,5 +427,6 @@
         self.logger.debug("Querying GPC1 for diff meta data")
 
-        meta = []
+        meta = {}
+
         sql = "SELECT \
                filter,\
@@ -442,7 +435,7 @@
                stack2, \
                skycell_id, \
-               diffRun.software_ver, \
+               diffRun.software_ver as software_ver, \
                exp_time, \
-               (to_days(dateobs)-678941 + time_to_sec(dateobs)/86400.), \
+               (to_days(dateobs)-678941 + time_to_sec(dateobs)/86400.) as obsTime, \
                diffInputSkyfile.tess_id, \
                exp_id \
@@ -454,23 +447,22 @@
                JOIN rawExp using (exp_id) \
                WHERE diff_skyfile_id = %d" % diffSkyfileID
-        #this is a crappy way to get the mjd from the diff but we don't save it anywhere       
-        try:
-            rs = self.executeQuery(sql)
-            rs.first()
-        except:
+
+        rs = self.executeQuery(sql)
+        if not rs.first():
             self.logger.infoPair ("this sql is broken:",sql)
             self.logger.errorPair("Can't query for", "stack meta data")
+            os._exit(3)
            
         try:
-            meta.append(rs.getString(1))
-            meta.append(rs.getString(2))
-            meta.append(rs.getString(3))
-            meta.append(rs.getString(4))
-            meta.append(rs.getString(5))
-            meta.append(rs.getString(6))
-            meta.append(rs.getString(7))
-            meta.append(rs.getString(8))
-            meta.append(rs.getString(9))
-            meta.append(rs.getString(10))
+            meta['filter']       = rs.getString(1)
+            meta['diff_mode']    = rs.getString(2)
+            meta['warp1']        = rs.getString(3)
+            meta['stack2']       = rs.getString(4)
+            meta['skycell_id']   = rs.getString(5)
+            meta['software_ver'] = rs.getString(6)
+            meta['exp_time']     = rs.getString(7)
+            meta['obsTime']      = rs.getString(8)
+            meta['tess_id']      = rs.getString(9)
+            meta['exp_id']       = rs.getString(10)
 
         except:
@@ -515,4 +507,53 @@
         
         if len(files) < 1: return None
+        fits = Fits(self.logger, self.config, files[0])
+        return fits
+
+    '''
+    get diff stage cmf name
+    '''
+    def getDiffStagePathBase(self, dvoDb, diffSkyfileID):
+        print "got here, diffstagecmf"
+        sql = "SELECT DISTINCT diffSkyfile.path_base \
+               FROM mergedvodbRun join minidvodbRun using (minidvodb_id) \
+               JOIN addRun using (minidvodb_name) \
+               JOIN diffInputSkyfile on (diff_skyfile_id = stage_extra1 \
+               AND diff_id = stage_id AND stage = 'diff') \
+               JOIN diffSkyfile using (diff_id, skycell_id, diff_skyfile_id) \
+               WHERE diff_skyfile_id = " + str(diffSkyfileID) + " \
+               AND minidvodbRun.state = 'merged' \
+               AND mergedvodbRun.state = 'full' \
+               AND mergedvodbRun.mergedvodb = '" + dvoDb + "' \
+               AND stage = 'diff'"
+
+        rs = self.executeQuery(sql)
+
+        if not rs.first():
+            self.logger.errorPair("missing cmf entry diff_skyfile_id:", str(diff_skyfile_id))
+            # self.logger.errorPair("no diff cmfs found for diff_skyfile_id = %d" %diff_skyfile_id)
+            return None
+
+        pathBase = rs.getString(1)
+        return pathBase
+
+    '''
+    get diff stage cmf name
+    '''
+    def getDiffStageCmfForPathBase(self, pathBase):
+
+        files = []
+        if pathBase.startswith("neb"):
+            self.logger.debugPair("searching for nebulous files", pathBase)
+            f = os.popen("neb-ls -p " + pathBase + ".cmf")
+            for i in f.readlines():
+                self.logger.debugPair("real file", i.rstrip())
+                files.append(i.rstrip())
+        else:
+            files = glob.glob(pathBase + ".cmf")
+
+        if len(files) < 1: 
+            self.logger.errorPair ("no cmf file found matching pathBase", pathBase + ".cmf")
+            return None
+
         fits = Fits(self.logger, self.config, files[0])
         return fits
