Index: trunk/ippToPsps/jython/gpc1db.py
===================================================================
--- trunk/ippToPsps/jython/gpc1db.py	(revision 37917)
+++ trunk/ippToPsps/jython/gpc1db.py	(revision 37935)
@@ -219,4 +219,37 @@
     
 
+    '''                                                                                                                                              
+    Gets a list of PSPS image IDs for this stack ID                                                                                                  
+    '''
+    def getImageIDsForThisForcedWarpID(self, forcedWarpID):
+
+        self.logger.debug("Querying GPC1 for image IDs for forcedWarp ID: " + str(forcedWarpID))
+
+        # JOIN stackInputSkyfile shoule use stack_id as well as warp_id, right? (maybe not -- the join to warp is first)                             
+        sql = "SELECT DISTINCT CONCAT(exp_id, SUBSTR(class_id, 3, 4)) FROM ( \
+               SELECT DISTINCT exp_id,class_id \
+               FROM addRun join \
+               fullForceInput on (fullForceInput.ff_id = addRun.stage_id and \
+               fullForceInput.warp_id = addRun.stage_extra1) \
+               JOIN fullForceResult using (ff_id, warp_id) \
+               JOIN warpRun USING(warp_id) \
+               JOIN warpSkyCellMap using (warp_id) \
+               JOIN fakeRun USING(fake_id) \
+               JOIN camRun USING(cam_id)  \
+               JOIN chipRun USING(chip_id) \
+               WHERE add_id = " + str(forcedWarpID) + ") AS a"
+
+        try:
+            rs = self.executeQuery(sql)
+        except:
+            self.logger.exception("Can't query for imageIDs using :" + sql )
+
+        imageIDs = []
+        while (rs.next()):
+            imageIDs.append(rs.getString(1))
+        rs.close()
+
+        return imageIDs
+
 
 
@@ -251,4 +284,49 @@
      
         return meta
+
+    '''
+    Gets some forcedwarp stage meta data for this sky_id # TODO this SQL could surely be improved
+    '''
+    def getForcedWarpStageMeta(self, forcedWarpID, warpSkyfileID):
+        self.logger.debug("Querying GPC1 for forced warp meta data")
+
+        meta = []
+
+        sql = "SELECT \
+               exp_id, \
+               exp_time, \
+               fullForceResult.software_ver, \
+               skycell_id, \
+               warpRun.tess_id \
+               FROM fullForceInput join addRun on \
+               (fullForceInput.ff_id = addRun.stage_id and fullForceInput.warp_id = addRun.stage_extra1) \
+               JOIN fullForceResult using (ff_id,warp_id) \
+               JOIN warpRun using (warp_id) \
+               JOIN warpImfile using (warp_id) \
+               JOIN fakeRun using (fake_id) \
+               JOIN camRun using (cam_id) \
+               JOIN chipRun using (chip_id) \
+               JOIN rawExp using (exp_id) \
+               WHERE add_id = " + str(forcedWarpID) + " \
+               AND warp_skyfile_id = " +  str(warpSkyfileID)
+
+        try:
+            rs = self.executeQuery(sql)
+            rs.first()
+        except:
+            self.logger.errorPair("Can't query for", "forced warp meta data")
+
+        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))
+
+        except:
+            self.logger.errorPair("getForcedWarpStageMeta()", "empty meta data")
+
+        return meta
+
 
 
@@ -300,4 +378,43 @@
 
     '''
+    get forcedwarp stage cmf
+    '''
+    def getForcedWarpStageCmf(self, dvoDb, forcedWarpID):
+        sql = "SELECT DISTINCT fullForceResult.path_base \
+              from fullForceInput join addRun on \
+              (fullForceInput.ff_id = addRun.stage_id AND \
+              fullForceInput.warp_id = addRun.stage_extra1) \
+              join fullForceResult using (ff_id, warp_id) \
+              where add_id = %d" % forcedWarpID
+        try:
+            rs = self.executeQuery(sql)
+            rs.first()
+        except:
+            self.logger.infoPair("failed sql", sql)
+            self.logger.errorPair("can't query for fullforce cmf", "add_id = %d" %forcedWarpID)
+            return None
+        
+        try:
+            pathBase = rs.getString(1)
+        except:
+            self.logger.errorPair("no full force cmfs found for add_id = %d" %forcedWarpID)
+            return None
+        
+        files = []
+        if pathBase.startswith("neb"):
+        
+            f=os.popen("neb-ls -p " + pathBase + ".cmf")
+            for i in f.readlines():
+        
+                files.append(i.rstrip())
+        
+        
+        if len(files) < 1: return None
+        fits = Fits(self.logger, self.config, files[0])
+        return fits
+
+ 
+
+    '''
     get diff stage cmf name
     '''
@@ -327,5 +444,5 @@
             pathBase = rs.getString(1)
         except:    
-            self.logger.errorPair("no diff cms found for diff_skyfile_id = %d" %diff_skyfile_id)
+            self.logger.errorPair("no diff cmfs found for diff_skyfile_id = %d" %diff_skyfile_id)
             return None
         print pathBase
