Advertisement
Guest User

Untitled

a guest
May 3rd, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 12.09 KB | None | 0 0
  1. # autogenerated by sqlautocode, with manual modifications
  2.  
  3. import sqlalchemy as sa
  4. from sqlalchemy import orm
  5. from sqlalchemy import Column, Float, String, Boolean, ForeignKey, Integer, DateTime
  6. from sqlalchemy.types import TIMESTAMP
  7. from sqlalchemy.ext.declarative import declarative_base
  8. from sqlalchemy import schema, types
  9. from sqlalchemy.orm import relation, synonym
  10.  
  11. from skynet.db.sa import session as sess
  12.  
  13. DeclarativeBase = declarative_base()
  14.  
  15. class Site(DeclarativeBase):
  16.     __tablename__ = 'sites'
  17.  
  18.     c_name = Column('c_Name', String, primary_key=True)    
  19.     c_latitude = Column('c_Latitude', Float)
  20.     c_longitude = Column('c_Longitude', Float)
  21.  
  22.     telescopes = relation("Telescope", backref="site")
  23.    
  24. class Telescope(DeclarativeBase):
  25.     __tablename__ = 'telescopes'
  26.    
  27.     c_name = Column('c_Name', String, primary_key=True)
  28.     c_filters = Column('c_Filters', String)
  29.     c_siteName = Column('c_SiteName', String, ForeignKey('sites.c_Name'))
  30.    
  31.     @property
  32.     def filters(self):
  33.         tempResults = self.c_filters.split(',')
  34.         results = []
  35.         for tempResult in tempResults:
  36.             if tempResult.strip() != '':
  37.                 results.append(tempResult)
  38.                
  39.         return results
  40.        
  41. class TeleStatus(DeclarativeBase):
  42.     __tablename__ = 'tele_status'
  43.    
  44.     c_name = Column('c_Name', String, ForeignKey('telescopes.c_Name'),primary_key=True)
  45.     c_connection = Column('c_Connection', Boolean)
  46.     c_cameraStatus = Column('c_CameraStatus', String)
  47.     c_domeStatus = Column('c_DomeStatus',String)
  48.     c_mountStatus = Column('c_MountStatus',String)
  49.     c_weather = Column('c_Weather',String)
  50.     c_ra = Column('c_RA',Float)
  51.     c_dec = Column('c_Dec',Float)
  52.     c_expId = Column('c_ExpID', Integer, ForeignKey('exps.c_ExpID'))
  53.     c_obsId = Column('c_ObsID', Integer, ForeignKey('obs.c_ObsID'))
  54.     telescope = relation("Telescope", backref="status")
  55.     exp = relation("Exp")
  56.     obs = relation("Obs")
  57.  
  58. class ExpBackup(DeclarativeBase):
  59.     __tablename__ = 'exp_backups'
  60.  
  61.     # Column definitions
  62.     backupId = Column('c_BackupID', Integer(), primary_key=True, nullable=False)
  63.     expId = Column('c_ExpID', Integer(), nullable=False)
  64.     diskId = Column('c_DiskID', Integer(), nullable=False)
  65.     originalMd5 = Column('c_OriginalMD5', String(32), nullable=False)
  66.     compressedMd5 = Column('c_CompressedMD5', String(32), nullable=False)
  67.     originalSize = Column('c_OriginalSize', Integer(), nullable=False)
  68.     compressedSize = Column('c_CompressedSize', Integer(), nullable=False)
  69.     compressionRatio = Column('c_CompressionRatio', Float())
  70.     lastChecked = Column('c_LastChecked', DateTime(), nullable=False)
  71.    
  72. class Exp(DeclarativeBase):
  73.     __tablename__ = 'exps'
  74.  
  75.     # Column definitions
  76.     c_expId = Column('c_ExpID', Integer(), primary_key=True, nullable=False)
  77.     c_obsId = Column('c_ObsID', Integer(), ForeignKey('obs.c_ObsID'), nullable=False)
  78.     c_expNum = Column('c_ExpNum', Integer(), nullable=False)
  79.     c_expLength = Column('c_ExpTime', Float(precision=None, asdecimal=True), nullable=False)
  80.     c_filter = Column('c_Filter', String(length=100, convert_unicode=False, assert_unicode=None))
  81.     c_state = Column('c_State', Integer(), nullable=False)
  82.     c_type = Column('c_Type', Integer(), nullable=False)
  83.     c_timeIn = Column('c_TimeIn', TIMESTAMP(timezone=False), nullable=False)
  84.     c_path = Column('c_Path', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  85.     c_numFileError = Column('c_NumFileError', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  86.     c_priority = Column('c_Priority', Integer(), nullable=False)
  87.     c_telescope = Column('c_Telescope', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  88.     c_blockId = Column('c_BlockID', Integer(), nullable=False)
  89.     c_startAfter = Column('c_StartAfter', DateTime(timezone=False))
  90.     c_endBefore = Column('c_EndBefore', DateTime(timezone=False))
  91.     c_timeTaken = Column('c_TimeTaken', DateTime(timezone=False))
  92.     c_timeSubmitted = Column('c_TimeSubmitted', DateTime(timezone=False))
  93.     c_timeArchived = Column('c_TimeArchived', DateTime(timezone=False))
  94.     c_backupId = Column('c_BackupID', Integer(), ForeignKey('exp_backups.c_BackupID'))
  95.     c_backupFailures = Column('c_BackupFailures', Integer())
  96.     c_isCompressed = Column('c_IsCompressed', Boolean())
  97.  
  98.     # Relation definitions
  99.     backup = relation("ExpBackup", backref="exp", uselist=False)
  100.  
  101.     c_primaryId = synonym('c_expId')
  102.  
  103.     validImageCriteria = (c_state == 2)
  104.  
  105.     def filename(self, format=None):
  106.         expstr = "%03d" % self.c_expNum
  107.         filename =  "%s_%d_%s_%s.fits" % (self.obs.c_name,self.c_obsId,self.c_filter,expstr)
  108.         return filename
  109.    
  110.     def relativePath(self, format=None):
  111.         filename = self.filename(format);
  112.         return os.path.join(self.obs.c_owner,str(self.c_obsId),filename)
  113.        
  114.     def absolutePath(self, format=None):
  115.         return os.path.join(config.ROOT_DATA_PATH,self.relativePath(format))
  116.        
  117.        
  118.    
  119.    
  120. class Obs(DeclarativeBase):
  121.     __tablename__ = 'obs'
  122.  
  123.     # column definitions
  124.     c_currentTelescope = Column(u'c_CurrentTelescope', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  125.     c_dec = Column(u'c_DEC', Float(precision=None, asdecimal=True), nullable=False)
  126.     c_grbId = Column(u'c_GRB_ID', Integer(), nullable=False)
  127.     c_maxAir = Column(u'c_MaxAir', Float(precision=None, asdecimal=True), nullable=False)
  128.     c_maxSun = Column(u'c_MaxSun', Float(precision=None, asdecimal=True), nullable=False)
  129.     c_mode = Column(u'c_Mode', Integer(), nullable=False)
  130.     c_name = Column(u'c_Name', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  131.     c_objectDist = Column(u'c_ObjectDist', Float(precision=None, asdecimal=False))
  132.     c_objectName = Column(u'c_ObjectName', String(length=45, convert_unicode=False, assert_unicode=None), nullable=False)
  133.     c_objectType = Column(u'c_ObjectType', Integer(), nullable=False)
  134.     c_obsID = Column(u'c_ObsID', Integer(), primary_key=True, nullable=False)
  135.     c_owner = Column(u'c_Owner', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  136.     c_priority = Column(u'c_Priority', Integer(), nullable=False)
  137.     c_ra = Column(u'c_RA', Float(precision=None, asdecimal=True), nullable=False)
  138.     c_Tate = Column(u'c_State', Integer(), nullable=False)
  139.     c_telescopes = Column(u'c_Telescopes', String(length=255, convert_unicode=False, assert_unicode=None), nullable=False)
  140.     c_timeID = Column(u'c_TimeID', Integer(), nullable=False)
  141.     c_timeIn = Column(u'c_TimeIn', TIMESTAMP(timezone=False), nullable=False)
  142.     c_type = Column(u'c_Type', Integer(), nullable=False)
  143.     c_user = Column(u'c_User', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  144.  
  145.     # relation definitions
  146.     exps = relation(Exp, backref="obs")
  147.  
  148.    
  149.    
  150.  
  151. class Group(DeclarativeBase):
  152.     __tablename__ = 'groups'
  153.  
  154.     #column definitions
  155.     c_ID = Column('c_ID', String(length=100, convert_unicode=False, assert_unicode=None), primary_key=True, nullable=False)
  156.     c_priority = Column(u'c_priority', Integer(), nullable=False)
  157.  
  158.     #relation definitions
  159.    
  160. class User(DeclarativeBase):
  161.     __tablename__ = 'users'
  162.  
  163.     #column definitions
  164.     c_username = Column('c_userID', String, primary_key=True)
  165.     c_password = Column(u'c_password', String)
  166.     c_password_md5 = Column('c_password_md5', String)
  167.     c_name = Column('c_name', String)
  168.  
  169.     #relation definitions
  170.    
  171. class MasterCalibration(DeclarativeBase):
  172.     __tablename__ = 'master_calibrations'
  173.  
  174.     #column definitions
  175.     c_average = Column('average', Float(precision=None, asdecimal=True), nullable=False)
  176.     c_combine_method = Column('combine_method', String(length=6, convert_unicode=False, assert_unicode=None), nullable=False)
  177.     c_date = Column('date', DateTime(timezone=False), nullable=False)
  178.     c_exp_length = Column('exp_length', Float(precision=None, asdecimal=True))
  179.     c_filter = Column('filter', String(length=45, convert_unicode=False, assert_unicode=None))
  180.     c_id = Column('id', Integer(), primary_key=True, nullable=False)
  181.     c_image_type = Column('image_type', String(length=4, convert_unicode=False, assert_unicode=None), nullable=False)
  182.     c_reject_method = Column('reject_method', String(length=9, convert_unicode=False, assert_unicode=None), nullable=False)
  183.     c_scale_method = Column('scale_method', String(length=4, convert_unicode=False, assert_unicode=None), nullable=False)
  184.     c_start_date = Column('start_date', DateTime(timezone=False), nullable=False)
  185.     c_stdev = Column('stdev', Float(precision=None, asdecimal=True), nullable=False)
  186.     c_stop_date = Column('stop_date', String(length=45, convert_unicode=False, assert_unicode=None), nullable=False)
  187.     c_telescope = Column('telescope', String(length=100, convert_unicode=False, assert_unicode=None), nullable=False)
  188.  
  189.     #relation definitions
  190.  
  191.     c_primaryId = synonym('c_id')
  192.     validImageCriteria = None
  193.        
  194.     def filename(self, format=None):
  195.         expstr = "%03d" % self.c_id
  196.         filename =  "%s_m%s_%03d.fits" % ( self.c_telescope, self.c_image_type, self.c_id )
  197.         return filename
  198.    
  199.     def relativePath(self, format=None):
  200.         filename = self.filename(format);
  201.         return os.path.join('',filename)
  202.        
  203.     def absolutePath(self, format=None):
  204.         return os.path.join(config.ROOT_DATA_PATH,self.relativePath(format))
  205.        
  206.        
  207. typesToModel = {"r": Exp, "m": MasterCalibration}
  208.  
  209.  
  210. class ImageId():
  211.     def __init__(self, value):
  212.         if len(value) <= 1:
  213.             raise InvalidImageId("%s is not a valid image id. Must be at least 2 characters" % value)
  214.        
  215.         self.type = typesToModel.get(value[0],None)
  216.        
  217.         if self.type is None:
  218.             raise InvalidImageId("Unrecognized image type code for image: %s" % value)
  219.        
  220.         try:
  221.             self.id = int(value[1:])
  222.         except ValueError, e:
  223.             raise InvalidImageId("Invalid integer value after image type code for image id: %s" % value)
  224.            
  225.     def get(self):
  226.         sess.query(self.type).get(self.id)
  227.        
  228. class InvalidImageId(Exception):
  229.     def __init__(self, value):
  230.         self.value = value
  231.     def __str__(self):
  232.         return repr(self.value)
  233.        
  234. def normalizeImageId(imageId):
  235.     """
  236.    Given a string image id or an ImageId object, return an ImageId object.
  237.  
  238.    @raise InvalidImageId: if a bad parameter was given
  239.    """
  240.  
  241.     imageIdObj = None
  242.  
  243.     if isinstance(imageId, str):
  244.         return ImageId(imageId) # May throw InvalidImageId
  245.     elif isinstance(imageId, ImageId):
  246.         return imageId
  247.     else:
  248.         msg = "can't convert %s to image id" % repr(type(imageId))
  249.         raise InvalidImageId(msg)
  250.  
  251. def normalizeImageIdList(imageIds):
  252.     """
  253.    Given a list of image id strings or ImageId objects, return a list
  254.    of valid ImageId objects, and a list of exceptions for invalid items
  255.  
  256.    For example:
  257.    (imageIdObjs, errors) = normalizeImageIdList([ImageId("r1234"), "w2345"])
  258.    """
  259.  
  260.     imageIdObjs = []
  261.     errors = []
  262.  
  263.     for imageId in imageIds:
  264.         try:
  265.             imageIdObj = normalizeImageId(imageId)
  266.             imageIdObjs.append(imageIdObj)
  267.         except InvalidImageId, ex:
  268.             errors.append(ex)
  269.  
  270.     return (imageIdObjs, errors)
  271.  
  272. def modelObjsFromImageIds(imageIds):
  273.     (imageIds, errors) = normalizeImageIdList(imageIds)
  274.  
  275.     modelObjs = []
  276.  
  277.     imageGroups = {}
  278.  
  279.     for imageId in imageIds:
  280.         if imageId.type not in imageGroups:
  281.             imageGroups[imageId.type] = []
  282.         imageGroups[imageId.type].append(imageId)
  283.  
  284.     for modelClass in imageGroups:
  285.         modelIds = imageGroups[modelClass]
  286.         rawIds = [modelId.id for modelId in modelIds]
  287.  
  288.         q = sess.query(modelClass).filter(modelClass.validImageCriteria)
  289.         q = q.filter(modelClass.c_primaryId.in_(rawIds))
  290.         modelObjs.extend(q.all())
  291.  
  292.     return modelObjs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement