Example #1
0
 def input_measurement(self, consistency_check_on):
     
     if self.status != False:
         if not self.newDB_flag:
             if self.table.dx != 2:
                 errMsg("Dimension do not match:\nRequired: %d Actual: %d\n" % ( 2,  self.table.dx))
                 self.status=False
     if self.status != False:
         # determine local time for the local timezone
         t1     = datetime.datetime(1970, 01, 01, 0, 0, 0)   # 1970-01-01 00:0:0
         tl      = datetime.datetime.now()
         tnow=(time.mktime(tl.timetuple())-time.mktime(t1.timetuple()))/24/3600
         done = False
         while not done:
             fp=input_float('Please input actual measurement of \'%s\'\n\n' % self.name)
             if self.newDB_flag:
                 done  = True
             else:
                 done = self.check_measurement_input([tnow, fp])
         if self.newDB_flag:
             tlminus1 = tl - datetime.timedelta(seconds=1)
             tnowminus1=(time.mktime(tlminus1.timetuple())-time.mktime(t1.timetuple()))/24/3600
             self.add_row( [tnowminus1, fp-ALPHA])
             self.add_row( [tnow, fp])
         else:
             self.add_row( [tnow, fp])
     else:
         warnMsg("Input of measurement value abandoned due to previous errors!\n")
def send_request_to_google_analytics(utm_url, environ):
    """
  // Make a tracking request to Google Analytics from this server.
  // Copies the headers from the original request to the new one.
  // If request containg utmdebug parameter, exceptions encountered
  // communicating with Google Analytics are thown.    
    """
    http = httplib2.Http()
    try:
        resp, content = http.request(utm_url,
                                     "GET",
                                     headers={
                                         'User-Agent':
                                         environ.get('HTTP_USER_AGENT',
                                                     'Unknown'),
                                         'Accepts-Language:':
                                         environ.get("HTTP_ACCEPT_LANGUAGE",
                                                     '')
                                     })
        # dbgMsg("success")
    except httplib2.HttpLib2Error, e:
        errMsg("fail: %s" % utm_url)
        if environ['GET'].get('utmdebug'):
            raise Exception("Error opening: %s" % utm_url)
        else:
            pass
Example #3
0
    def checkTimeout(self, sTime, bTimeout):
        # check timestamp timestr against current time and timeout
        # return True if we have not timed out yet
        try:
            bYear = int(sTime[0:4])
            bMonth = int(sTime[4:6])
            bDay = int(sTime[6:8])
            bHour = int(sTime[8:10])
            bMinute = int(sTime[10:12])
            bSecond = int(sTime[12:14])
            bDaylight = time.localtime()[8]

            bThen = int(
                time.mktime((bYear, bMonth, bDay, bHour, bMinute, bSecond, 0,
                             0, bDaylight)))
            bNow = int(time.time())
            bTimeout = int(bTimeout) * 60

            if bNow - bThen > bTimeout:
                return False

            return True

        except Exception, e:
            errMsg('cannot convert time [%s] to int [%s]' % (sTime, e))
            return False
Example #4
0
 def check_strictly_increasing_new_row(self, vec):
     if self.status  != False:
         last_row=self.table.last_row()
         for j, el in enumerate(vec):
             if isinstance(el, float) and isinstance(last_row[j], float)  and self.table.strictly_increasing_check_mask[j]:
                 if last_row[j] >= el:
                     errMsg( "Entry [%d] of vector is not strictly increasing: '%s'" % ( j,   el))
                     self.status=False
     else:
         warnMsg("Method not executed due to previous errors!\n")
Example #5
0
 def convert2float(self, vec):
     vector=[]
     for i, el in enumerate(vec):
         try:
             float_val=float(el)
             vector.append(float_val)
         except:
             errMsg("Entry %d of vector is not of type float: '%s'" % (i,  el))
             self.status=False
     return(vector)
Example #6
0
 def upgradePasswordHash(self, bUserID, sPass):
     try:
         rgoResult = self._libDB.query(
             'UPDATE User SET sPassword=PASSWORD(%s) WHERE bID=%s AND sPassword=OLD_PASSWORD(%s)',
             sPass, bUserID, sPass)
         return True
     except Exception, e:
         errMsg('cannot upgrade password hash from mysql [%d] [%s] [%s]' %
                (bUserID, sPass, e))
         return False
Example #7
0
 def consistency_checks(self):
     if self.consistency_checks_on:
         self.check_dimension()
         self.check_float()
         self.check_strictly_increasing()
         if not self.status:
             errMsg("Exiting because of previous fatal errors\n")
             sys.exit(1)
         else:
             self.dy=len(self.array)
             self.dx=len(self.array[0])
Example #8
0
 def write_table(self):
     if self.status != False:
         try:
             fn=self.wd+r'/'+self.write_table_name
             f=open(fn, 'w')
             for row in self.table.list:
                 f.writelines(row +'\n')
             f.close()
         except IOError:
             errMsg('Cannot open for write %s' %  fn)
     else:
         warnMsg("Method not executed due to previous errors!\n")
Example #9
0
 def check_strictly_increasing(self):
     if self.status == True:
         for i, row in enumerate(self.array):
             if i>0:
                 for j, col in enumerate(row):
                     if  j <= len(prev)-1 and isinstance(col, float) and isinstance(prev[j], float)  and self.strictly_increasing_check_mask[j]:
                         if not col > prev[j]:
                             errMsg("Entry [%d][%d] of table '%s' is not strictly increasing: '%s'" % (i, j,  self.name,  col))
                             self.status=False
             prev=row
     else:
         warnMsg("Method not executed due to previous errors!\n")
Example #10
0
 def add_column(self, column, strictly_increasing_flag):
     if self.status != False:
         fcolumn=self.convert2float(column)
         if len(fcolumn) != self.table.dy:
             errMsg("Dimension do not match:\nRequired: %d Actual: %d\n" % ( self.table.dy, len(fcolumn)))
             self.status=False
         if self.status:
             self.table.add_column(fcolumn, strictly_increasing_flag)
             self.update_consumption()
             if messaging.debug:
                 self.table.print_table()
     else:
         warnMsg("Method not executed due to previous errors!\n")
Example #11
0
 def check_dimension(self):
     if self.status == True:
         i=0
         for entry in self.array:
             if len(entry) != self.dim:
                 errMsg("Line %d of table '%s' has not exactly %d entries: '%s'" % (i,  self.name,  self.dim,  entry))
                 self.status=False
             i+=1
         if len(self.strictly_increasing_check_mask) != self.dim:
             errMsg("strictly_increasing_check_mask of table '%s' has not exactly %d entries" % ( self.name,  self.dim))
             self.status=False
     else:
         warnMsg("Method not executed due to previous errors!\n")
Example #12
0
 def check_float(self):
     if self.status == True:
         i=0
         for i, row in enumerate(self.array):
             for j, col in enumerate(row):
                 try:
                     val=float(col)
                     self.array[i][j]=val
                 except:
                     errMsg("Entry [%d][%d] of table '%s' is not of type float: '%s'" % (i, j,  self.name,  col))
                     self.status=False
     else:
         warnMsg("Method not executed due to previous errors!\n")
Example #13
0
 def add_row(self, row):
     if self.status != False:
         frow=self.convert2float(row)
         self.check_strictly_increasing_new_row(frow)
         if len(frow) != self.table.dx:
             errMsg("Dimension do not match:\nRequired: %d Actual: %d\n" % ( self.table.dx, len(frow)))
             self.status=False
         if self.status:
             self.table.add_row(frow)
             self.update_consumption()
             if messaging.debug:
                 self.table.print_table()
     else:
         warnMsg("Method not executed due to previous errors!\n")
Example #14
0
    def hashPassword(self, sPass, fUseOldHash=False):
        try:
            # Call underlying password func for mysql
            if not fUseOldHash:
                rgoResult = self._libDB.query('SELECT PASSWORD(%s)', sPass)
            else:
                rgoResult = self._libDB.query('SELECT OLD_PASSWORD(%s)', sPass)
            if len(rgoResult) != 0:
                return (True, rgoResult[0][0])
            return (False, '')

        except Exception, e:
            errMsg('cannot get password hash from mysql [%s] [%s]' %
                   (sPass, e))
            return (False, '')
Example #15
0
 def read_table(self):
     try:
         fn=self.wd+r'/'+self.table_name
         if  os.stat(fn).st_size==0:
             errMsg('File  %s has size 0\n\n' %  fn)
             sys.exit(1)
         f=open(fn, 'r')
         list=f.readlines()
         f.close()
         list=remove_CR_LF_form_list(list)
     except IOError:
         errMsg('Cannot open for read %s' %  fn)
     self.status=True
     self.table=float_table(list, self.name, 2)
     self.update_consumption()
     if messaging.debug:
         self.table.print_table()
Example #16
0
    def hashObject(self, o):
        try:
            # return an md5 hash of the object serialized as a string
            try:
                import hashlib
                m = hashlib.md5()
            except ImportError:
                import md5
                m = md5.new()

            m = md5.new()
            m.update(pickle.dumps(o))
            return m.hexdigest()

        except Exception, e:
            errMsg('cannot hash object [%s]' % e)
            return ''
Example #17
0
    def logMsg(self, sMsg, sUser=''):
        """ Log msg into database. """

        try:
            bUserID = 0
            if sUser != '':
                bUserID = self._dbUserList.getUser(sName=sUser).getID()

            sTimestamp = time.strftime('%Y%m%d%H%M%S')
            self._libDB.query(
                'INSERT INTO log (timestamp,user_id,message) VALUES (%s,%s,%s)',
                sTimestamp, bUserID, sMsg)

            return True

        except Exception, e:
            errMsg('error logging message [%s]' % e)
            raise Exception, 'System error while trying to log message.'
Example #18
0
    def query(self, sQuery, *rgsArgs):
        self._oLock.acquire()
        try:
            # parse query to determine type
            sType = 'select'
            if sQuery[0:6] == 'INSERT':
                sType = 'insert'
            elif sQuery[0:6] == 'DELETE':
                sType = 'delete'
            elif sQuery[0:6] == 'UPDATE':
                sType = 'update'

            try:
                if not self._oConnection:
                    self._oConnection = MySQLdb.connect(host=self._sHost,
                                                        user=self._sUser,
                                                        passwd=self._sPass,
                                                        db=self._sDB)
            except MySQLdb.Error, (bError, sError):
                errMsg('error while connecting to database -- %s' % sError)
                raise Exception, sError

            try:
                try:
                    if not self._oCursor:
                        self._oCursor = self._oConnection.cursor()
                except MySQLdb.Error, (bError, sError):
                    errMsg('error while creating cursor for database -- %s' %
                           sError)
                    raise Exception, sError

                if len(rgsArgs) == 0:
                    self._oCursor.execute(sQuery)
                else:
                    self._oCursor.execute(sQuery, rgsArgs)

                rgoResult = self._oCursor.fetchall()
                if len(rgoResult) == 0:
                    return ()

                self._oConnection.commit()
                return list(rgoResult)
Example #19
0
 def read_table(self):
     try:
         fn=self.wd+r'/'+self.table_name
         if  os.stat(fn).st_size==0:
             if not self.newDB_flag:
                 errMsg('Data base file  ''%s'' has size 0\n\n' %  fn)
             list=[]
             self.init_flag=True
         else:
             f=open(fn, 'r')
             list=f.readlines()
             f.close()
             list=remove_CR_LF_form_list(list)
     except IOError:
         errMsg('Cannot open for read %s' %  fn)
     self.status=True
     self.table=float_table(list, self.name, 2)
     self.update_consumption()
     if messaging.debug:
         self.table.print_table()
def send_request_to_google_analytics(utm_url, environ):
    """
  // Make a tracking request to Google Analytics from this server.
  // Copies the headers from the original request to the new one.
  // If request containg utmdebug parameter, exceptions encountered
  // communicating with Google Analytics are thown.    
    """
    http = httplib2.Http()    
    try:
        resp, content = http.request(utm_url, 
                                     "GET", 
                                     headers={'User-Agent': environ.get('HTTP_USER_AGENT', 'Unknown'),
                                              'Accepts-Language:': environ.get("HTTP_ACCEPT_LANGUAGE",'')}
                                     )
        # dbgMsg("success")            
    except HttpLib2Error, e:
        errMsg("fail: %s" % utm_url)            
        if environ['GET'].get('utmdebug'):
            raise Exception("Error opening: %s" % utm_url)
        else:
            pass
Example #21
0
def check_working_directory (directory):
    dbgMsg("checking working directory %s" % directory)
    if not os.path.exists(directory):
        errMsg("specified working directory \'%s\' does not exist!\n" % directory)
        sys.exit(1)
    if not os.path.isdir(directory):
        errMsg("specified working directory \'%s\' is not a directory!\n" % directory)
        sys.exit(1)
    if not isWritable(directory):
        errMsg("specified working directory \'%s\' is not writable!\n" % directory)
        sys.exit()
    return True
Example #22
0
def check_database_file (directory, file_name):      
    fn = directory+r'/'+ file_name
    if not os.path.isfile(fn):
        errMsg("Specified data base file \'%s\' does not exist!\n\n" % fn)
        sys.exit(1)
    if not os.access(fn, os.R_OK):
        errMsg("Specified data base file \'%s\' is not readable!\n\n" % fn)
        sys.exit(1)
    if  os.stat(fn).st_size==0:
        errMsg("Specified data base file \'%s\' has size of 0!\n\n" % fn)
        sys.exit(1)
    return True
Example #23
0
def check_working_directory (directory):
    dbgMsg("checking working directory %s" % directory)
    if not os.path.exists(directory):
        errMsg("Specified working directory \'%s\' does not exist!\n\nPlease create the data base with the command line option '-n'\n" % directory)
        sys.exit(1)
    if not os.path.isdir(directory):
        errMsg("Specified working directory \'%s\' is not a directory!\n" % directory)
        sys.exit(1)
    if not isWritable(directory):
        errMsg("Specified working directory \'%s\' is not writable!\n" % directory)
        sys.exit()
    return True
Example #24
0
def check_add_graphs(args):
    gi=1
    #check correct number of arguments
    if ( len(args)%3 != 0):
        errMsg( 'Wrong number of arguments (not multiple of 3): %d\nExiting because of a fatal error!\n' % len(args))
        errMsg('\nPassed arguments were:\n')
        for i in args: 
            print i
        sys.exit(1)
    #check dimensions of arrays
    for j in range(0, len(args), 3):
        gi=gi+1
        if ( len(args[j]) != len(args[j+1])  ):
            errMsg( 'Dimensions of input arrays of graph %d do not match: %d versus %d\nExiting because of a fatal error!\n' % (gi,  len(args[j]),  len(args[j+1])))
            sys.exit(1)
Example #25
0
def check_database_file (directory, file_name,  newDB):      
    fn = directory+r'/'+ file_name
    if newDB:
        print ("\nTrying to create a new data base: '%s'\n"  %  fn)
        if not os.path.isfile(fn):
            #create the specified data base file with size 0
            with open(fn, "w") as f:
                f.write("")
            print ("\n\nCreated a new data base file: '%s'\n" % fn)
        else:
            errMsg("Specified data base file \'%s\' does already exist!\n\nCannot create a data base with the same name as an existing one!\n\nAborting!\n\n" % fn)
            sys.exit(1)
    else:
        if not os.path.isfile(fn):
            errMsg("Specified data base file \'%s\' does not exist!\n\nPlease create the data base with the command line option '-n'\n" % fn)
            sys.exit(1)
    if not os.access(fn, os.R_OK):
        errMsg("Specified data base file \'%s\' is not readable!\n\n" % fn)
        sys.exit(1)
    if not newDB:
        if  os.stat(fn).st_size==0:
            warnMsg("Specified data base file \'%s\' has size of 0!\n\n" % fn)
    return True
Example #26
0
class DBUtil:
    def __init__(self, sHost, sUser, sPass, sDB):
        self._oLock = threading.Lock()

        self._sHost = sHost
        self._sUser = sUser
        self._sPass = sPass
        self._sDB = sDB

        self._oConnection = None
        self._oCursor = None

#	def __del__(self):
#		try:
#			if self._oCursor:
#				self._oCursor.close()
#				self._oCursor = None
#			if self._oConnection:
#				self._oConnection.close()
#				self._oConnection = None
#
#		except MySQLdb.Error, (bError, sError):
#			errMsg('error while delecting database object -- %s' % sError)
#			raise Exception, sError

    def query(self, sQuery, *rgsArgs):
        self._oLock.acquire()
        try:
            # parse query to determine type
            sType = 'select'
            if sQuery[0:6] == 'INSERT':
                sType = 'insert'
            elif sQuery[0:6] == 'DELETE':
                sType = 'delete'
            elif sQuery[0:6] == 'UPDATE':
                sType = 'update'

            try:
                if not self._oConnection:
                    self._oConnection = MySQLdb.connect(host=self._sHost,
                                                        user=self._sUser,
                                                        passwd=self._sPass,
                                                        db=self._sDB)
            except MySQLdb.Error, (bError, sError):
                errMsg('error while connecting to database -- %s' % sError)
                raise Exception, sError

            try:
                try:
                    if not self._oCursor:
                        self._oCursor = self._oConnection.cursor()
                except MySQLdb.Error, (bError, sError):
                    errMsg('error while creating cursor for database -- %s' %
                           sError)
                    raise Exception, sError

                if len(rgsArgs) == 0:
                    self._oCursor.execute(sQuery)
                else:
                    self._oCursor.execute(sQuery, rgsArgs)

                rgoResult = self._oCursor.fetchall()
                if len(rgoResult) == 0:
                    return ()

                self._oConnection.commit()
                return list(rgoResult)

            except MySQLdb.Error, (bError, sError):
                errMsg('error while querying database [%s]' % sError)
                if self._oCursor:
                    self._oCursor.close()
                    self._oCursor = None
                if self._oConnection:
                    self._oConnection.close()
                    self._oConnection = None
                raise Exception, 'error while querying database [%s]' % sError
Example #27
0
                rgoResult = self._oCursor.fetchall()
                if len(rgoResult) == 0:
                    return ()

                self._oConnection.commit()
                return list(rgoResult)

            except MySQLdb.Error, (bError, sError):
                errMsg('error while querying database [%s]' % sError)
                if self._oCursor:
                    self._oCursor.close()
                    self._oCursor = None
                if self._oConnection:
                    self._oConnection.close()
                    self._oConnection = None
                raise Exception, 'error while querying database [%s]' % sError

            except Exception, e:
                errMsg('error while querying database [%s]' % e)
                if self._oCursor:
                    self._oCursor.close()
                    self._oCursor = None
                if self._oConnection:
                    self._oConnection.close()
                    self._oConnection = None
                raise Exception, 'error while querying database [%s]' % e

        finally:
            self._oLock.release()
Example #28
0
 def baz(self):
     errMsg("this is an error message in bar")
Example #29
0
 def set_table_name(self, table_name):
     self.table_name = table_name
     fn = self.wd+r'/'+table_name
     if not os.access(fn, os.R_OK):
         errMsg("File \'%s\' is not readable!\n\n" % fn)
         sys.exit(1)
Example #30
0
 def set_working_dir(self, name):
     self.wd = name
     if not os.path.isdir(self.wd):
         errMsg("Directory \'%s\' does not exist!\n\n" % self.wd)
         sys.exit(1)
Example #31
0
 def set_write_table_name(self, table_name):
     self.write_table_name = table_name.replace(' ', '_')
     fn = self.wd
     if not os.access(fn, os.W_OK):
         errMsg("Directory \'%s\' is not writable!\n\n" % fn)
         sys.exit(1)