示例#1
0
文件: latest.py 项目: ghoshen/tmstats
def getlatest(table, conn):
    curs = conn.cursor()
    # The MySQLdb library doesn't allow interpolating the table name, so we do
    # it via normal Python.
    district = tmparms.tmparms().district
    statement = 'select t.monthstart, l.latest FROM %s t INNER JOIN (select max(loadedfor) as latest FROM loaded WHERE tablename="%s") l ON t.asof = l.latest WHERE district = "%s" GROUP BY t.monthstart, l.latest' % (table, table, district)
    try:
        curs.execute(statement)
        ans = curs.fetchone()
        if ans:
            ans = [tmutil.stringify(x) for x in ans]
        else:
            ans = ('', '')
    except (MySQLdb.Error, TypeError) as e:
        sys.stderr.write(repr(e))
        ans = ('', '')
    return ans
示例#2
0
        

    def key(self):
        return (self.area, self.clubnumber)




### Insert classes and functions here.  The main program begins in the "if" statement below.

if __name__ == "__main__":
 
    import tmparms

    # Handle parameters
    parms = tmparms.tmparms()
    parms.add_argument('--quiet', '-q', action='count', default=0)
    parms.parser.add_argument("--fromend", dest='fromend', type=int, default=12)
    parms.parser.add_argument("--toend", dest='toend', type=int, default=2)
    parms.parser.add_argument("--outfile", dest='outfile', type=argparse.FileType('w'), default='punch.html')
    parms.parser.add_argument("--needed", dest='needed', type=int, default=5)
    parms.parser.add_argument("--renewbase", dest='renewbase', type=int, default=2)
    parms.parser.add_argument("--renewbyend", dest='renewbyend', type=int, default=3)

    # Do global setup
    globals.setup(parms)
    curs = globals.curs
    conn = globals.conn
    

    today = datetime.now()
示例#3
0
        return ('    <td>%s</td><td>%s</td><td>%.2f%%</td>' % (self.area, self.clubname, self.pct))

    def key(self):
        return (self.area, self.clubnumber)

if __name__ == "__main__":
    import tmparms, latest, os, sys, csv
    from datetime import datetime
    from tmutil import showclubswithvalues, cleandate, getClubBlock
    import tmglobals
    myglobals = tmglobals.tmglobals()
    

    
    # Define args and parse command line
    parms = tmparms.tmparms(description=__doc__, epilog='pct and earns must have the same number of items.\nIf names is specified, it must have the same number as well.')
    parms.add_argument('--finaldate', default='', dest='finaldate', help="Final date for qualifying.")
    parms.add_argument('--outfileprefix', default='', dest='outfileprefix', type=str, help="Output file prefix - defaults to program name.")
    parms.add_argument('--format', default='$%d in District Credit')
    parms.add_argument('--pct', dest='pct', nargs='+', type=float, help='Threshold to qualify (in percent) for each level.', default='75.0')
    parms.add_argument('--earns', dest='earns', nargs='+', type=int, help='Amount earned for each level.', default='50')
    parms.add_argument('--program', choices=['madness', 'stellar'], help='Program name')
    parms.add_argument('--name', dest='name', nargs='+', type=str, help='Name for each level.  Specify \'\' if no name for a level.')
    parms.add_argument('--trackingsheet', dest='trackingsheet', default='https://docs.google.com/spreadsheets/d/1zfNpg1o5n2GVI70PAXjQXqZQ9xNxqwdYU-mKh2ChMLA/edit#gid=1938482035')
    parms.add_argument('--sheetname', dest='sheetname', default='', help='Name of the tab in the tracking spreadsheet')

    
    # Do global setup
    myglobals.setup(parms)
    curs = myglobals.curs
    conn = myglobals.conn
示例#4
0
        self.parms = args[0]
        self.conn = None
        self.curs = None
        self.tmyear = None
        if kwargs.get('gotodatadir', True):
            curdir = os.path.realpath(os.curdir)  # Get the canonical directory
            lastpart = curdir.split(os.sep)[-1]
            if lastpart.lower() != 'data':
                os.chdir(
                    'data'
                )  # Fails if there is no data directory; that is intentional.
        if kwargs.get('defaultencoding', ''):
            imp.reload(sys).setdefaultencoding(defaultencoding)
        if kwargs.get('parse', True):
            self.parms.parse()
        if kwargs.get('connect', True):
            self.conn = dbconn.dbconn(self.parms.dbhost, self.parms.dbuser,
                                      self.parms.dbpass, self.parms.dbname)
            self.curs = self.conn.cursor()
            self.curs.execute("SELECT MAX(tmyear) FROM lastfor")
            self.tmyear = self.curs.fetchone()[0]
        self.today = date.today()
        return self


if __name__ == '__main__':
    import tmparms
    p = tmparms.tmparms()
    g = tmglobals()
    g.setup(p)
示例#5
0
    def qualcell(self):
        visitneed = int(math.ceil(.75 * self.base))
        res = td('%d (%d needed)' % (self.novVisit, visitneed),
                 "madeit" if self.novVisit >= visitneed else "")
        res += td('%d (%d needed)' % (self.mayVisit, visitneed),
                  "madeit" if self.mayVisit >= visitneed else "")
        self.isQual = (self.paid >= self.paidgoals[0]) and (
            self.novVisit >= visitneed) and (self.mayVisit >= visitneed)
        return res


### Main Program Starts Here ###

# Define args and parse command line
parms = tmparms.tmparms(description=__doc__)
parms.add_argument(
    "--tmyear",
    default=None,
    action="store",
    dest="tmyear",
    help=
    "TM Year for the report.  Default is latest year in the database; '2014' means '2014-15'."
)
parms.add_argument(
    "--testalignment",
    dest="testalignment",
    default=None,
    help=
    "CSV file with alignment information to create a report with a new alignment."
)
示例#6
0
                s = 'with extension of ' + ', '.join(extensions[:-1])
                if len(extensions) > 2:
                    s += ','
                s += ' OR ' + extensions[-1]
            output.warning += ' ' + s

    return output


if __name__ == "__main__":
    import tmutil, tmparms
    tmutil.gotodatadir()
    reload(sys).setdefaultencoding('utf8')

    # Handle parameters
    parms = tmparms.tmparms(description=__doc__)
    parms.add_argument('--verbose', '-v', action='count', help="Increase verbosity of output")
    parms.add_argument('--directory', dest='directory', default='', help="Dropbox directory to examine")
    parms.add_argument('--extensions', dest='extensions', metavar="EXTENSION", type=str, nargs='+', action="append", help="extensions to consider")
    parms.add_argument('--outfile', dest='outfile', default='-', help="filename for output file; specify '-' for stdout; specify '+' to use the name of the file found; specify 'something.+' to keep the extension of the file but force the name to be 'something'.  File is not changed if no file is found.")
    parms.add_argument('--namefile', dest='namefile', default=None, help='filename into which to write the name of the output file.  Not changed if nothing is written.')
    parms.add_argument('--outdir', dest='outdir', default='', help="output directory for output file, especially useful if outfile is '+'")
    parms.add_argument('--dropboxtoken', dest='dropboxtoken', help="Dropbox access token")
    group = parms.add_mutually_exclusive_group()
    group.add_argument('--cursor', dest='cursor', default=None, help="Dropbox cursor")
    group.add_argument('--cfile', dest='cfile', default=None, help="Text file containing a Dropbox cursor; gets updated or created if required.")
    # Add other parameters here
    parms.parse()

    # Flatten extension in case it was specified many times
    if parms.extensions:
示例#7
0
文件: tmglobals.py 项目: d4tm/tmstats
            self.setup(*args,**kwargs)
        return

    def setup(self, *args, **kwargs):
        self.parms = args[0]
        self.conn = None
        self.curs = None
        self.tmyear = None
        if kwargs.get('gotodatadir', True):
            curdir = os.path.realpath(os.curdir)  # Get the canonical directory
            lastpart = curdir.split(os.sep)[-1]
            if lastpart.lower() != 'data':
                os.chdir('data')   # Fails if there is no data directory; that is intentional.
        if kwargs.get('defaultencoding', ''):
            reload(sys).setdefaultencoding(defaultencoding)
        if kwargs.get('parse', True):
            self.parms.parse()
        if kwargs.get('connect', True):
            self.conn = dbconn.dbconn(self.parms.dbhost, self.parms.dbuser, self.parms.dbpass, self.parms.dbname)
            self.curs = self.conn.cursor()
            self.curs.execute("SELECT MAX(tmyear) FROM lastfor")
            self.tmyear = self.curs.fetchone()[0]
        self.today = date.today()
        return self

if __name__ == '__main__':
    import tmparms
    p = tmparms.tmparms()
    g = tmglobals()
    g.setup(p)
示例#8
0
import tmglobals
globals = tmglobals.tmglobals()

from collections.abc import Iterable
def flatten(l):
    ### From http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python
    for el in l:
        if isinstance(el, Iterable) and not isinstance(el, str):
            for sub in flatten(el):
                yield sub
        else:
            yield el


# Handle parameters
parms = tmparms.tmparms(description=__doc__, YMLfile="tmmail.yml", includedbparms=False)
parms.parser.add_argument("--htmlfile", dest='htmlfile')
parms.parser.add_argument("--textfile", dest='textfile')
parms.parser.add_argument("--mailserver", dest='mailserver')
parms.parser.add_argument("--mailpw", dest='mailpw')
parms.parser.add_argument("--mailport", dest='mailport')
parms.parser.add_argument("--from", dest='from')
parms.parser.add_argument("--to", dest='to', nargs='+', default=[], action='append')
parms.parser.add_argument("--cc", dest='cc', nargs='+', default=[], action='append')
parms.parser.add_argument("--bcc", dest='bcc', nargs='+', default=[], action='append')
parms.parser.add_argument("--subject", dest='subject', default='Mail from the District Webmaster')

globals.setup(parms, connect=False)

parms.sender = parms.__dict__['from']  # Get around reserved word
示例#9
0
import tmglobals
myglobals = tmglobals.tmglobals()

from collections.abc import Iterable
def flatten(l):
    ### From http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python
    for el in l:
        if isinstance(el, Iterable) and not isinstance(el, str):
            for sub in flatten(el):
                yield sub
        else:
            yield el


# Handle parameters
parms = tmparms.tmparms(description=__doc__, includedbparms=False)
parms.parser.add_argument("--htmlfile", dest='htmlfile')
parms.parser.add_argument("--textfile", dest='textfile')
parms.parser.add_argument("--mailserver", dest='mailserver')
parms.parser.add_argument("--mailpw", dest='mailpw')
parms.parser.add_argument("--mailport", dest='mailport')
parms.parser.add_argument("--from", dest='from')
parms.parser.add_argument("--to", dest='to', nargs='+', default=[], action='append')
parms.parser.add_argument("--cc", dest='cc', nargs='+', default=[], action='append')
parms.parser.add_argument("--bcc", dest='bcc', nargs='+', default=[], action='append')
parms.parser.add_argument("--subject", dest='subject', default='Mail from the District Webmaster')
parms.parser.add_argument("--section", dest='section', help='INI file section to use in addition to [common]')

myglobals.setup(parms, connect=False)
if parms.section:
    # Need to reparse to pick up proper defaults from the named section
示例#10
0
        return ('    <td>%s</td><td>%s</td><td>%.2f%%</td>' % (self.area, self.clubname, self.pct))

    def key(self):
        return (self.area, self.clubnumber)

if __name__ == "__main__":
    import tmparms, latest, os, sys, csv
    from datetime import datetime
    from tmutil import showclubswithvalues, cleandate, getClubBlock, gotodatadir
    import tmglobals
    globals = tmglobals.tmglobals()
    

    
    # Define args and parse command line
    parms = tmparms.tmparms(description=__doc__, epilog='pct and earns must have the same number of items.\nIf names is specified, it must have the same number as well.')
    parms.add_argument('--finaldate', default='', dest='finaldate', help="Final date for qualifying.")
    parms.add_argument('--outfileprefix', default='', dest='outfileprefix', type=str, help="Output file prefix.")
    parms.add_argument('--format', default='$%d in District Credit')
    parms.add_argument('--pct', dest='pct', nargs='+', type=float, help='Threshold to qualify (in percent) for each level.', default='75.0')
    parms.add_argument('--earns', dest='earns', nargs='+', type=int, help='Amount earned for each level.', default='50')
    parms.add_argument('--program', choices=['madness', 'stellar'])
    parms.add_argument('--name', dest='name', nargs='+', type=str, help='Name for each level.  Specify \'\' if no name for a level.')
    
    # Do global setup
    globals.setup(parms)
    curs = globals.curs
    conn = globals.conn

    # Ensure proper matching of names, pct, and earns.
    if not isinstance(parms.pct, list):
示例#11
0
from collections.abc import Iterable


def flatten(l):
    ### From http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python
    for el in l:
        if isinstance(el, Iterable) and not isinstance(el, str):
            for sub in flatten(el):
                yield sub
        else:
            yield el


# Handle parameters
parms = tmparms.tmparms(description=__doc__,
                        YMLfile="tmmail.yml",
                        includedbparms=False)
parms.parser.add_argument("--htmlfile", dest='htmlfile')
parms.parser.add_argument("--textfile", dest='textfile')
parms.parser.add_argument("--mailserver", dest='mailserver')
parms.parser.add_argument("--mailpw", dest='mailpw')
parms.parser.add_argument("--mailport", dest='mailport')
parms.parser.add_argument("--from", dest='from')
parms.parser.add_argument("--to",
                          dest='to',
                          nargs='+',
                          default=[],
                          action='append')
parms.parser.add_argument("--cc",
                          dest='cc',
                          nargs='+',