On Wednesday, February 7, 2018 at 2:08:23 PM UTC-8, Leonel Câmara wrote:
>
> Hummm you're right, can I see the code for default/sorted and the 
> quartermaster table?
>


db.define_table('QuarterMaster', 
                Field('IssueYr', 'integer',
                     requires = [IS_NOT_EMPTY(), IS_INT_IN_RANGE(1965,2018, 
"Not 
a valid year of issue")],
                     widget = lambda f, v: SQLFORM.widgets.integer.widget(f, 
v, _autofocus=True)),
                Field('StateNm', 'string', default=None, represent=lambda 
StateNm: StateNm or '', requires=IS_EMPTY_OR(IS_IN_SET(us_states))),
                Field('Other', 'string', default=None, represent=lambda 
Other: Other or '', requires=IS_EMPTY_OR(IS_IN_SET(us_other))),
                Field('Mint', 'string', requires=IS_MATCH('^[dpx]*$', 
error_message="not a valid mint string")),
                Field('NumAdded', "integer", compute = lambda r: len(r[
"Mint"])),
                Field('PostDate', "date", requires=IS_DATE(format='%Y-%m-%d'
, error_message='must be YYYY-MM-DD!'))) 

 And then the ugly beast:
(most of the ugliness is in the way I present 1 field)
def sorted():
    import re
    from gluon.storage import Storage
    from pydal.objects import Rows
    dateshape = re.compile("\d{4}-\d{2}-\d{2}")
    if request.vars.pdate:
        if not dateshape.match(request.vars.pdate):
            raise HTTP(501, "error in date argument; YYYY-MM-DD expected")
        r = db(db.QuarterMaster.PostDate == request.vars.pdate)
    else:
        r = db(db.QuarterMaster.PostDate != None)
    sum = db.QuarterMaster.NumAdded.sum()
    streetval = r.select(sum).first()[sum]
    rows=r.select(orderby=db.QuarterMaster.IssueYr|db.QuarterMaster.StateNm|
db.QuarterMaster.Other)
    rowed = Rows(db);
    rowed.records = []
    print rows
    prev = 0
    skip = 0
    for row in rows:
        if len(rowed.records) == 0:    #row == rows[0]:
            prev = 0;
            rowed.records.append(row)
        elif rowed.records[-1].IssueYr == row.IssueYr and str(rowed.records
[-1].StateNm) == str(row.StateNm) and str(rowed.records[-1].Other) == str(
row.Other):
            rowed.records[-1].NumAdded = rowed.records[-1].NumAdded + row.
NumAdded
            rawmint = rowed.records[-1].Mint + row.Mint # + "-" + row.Mint
            rowed.records[-1].Mint = rawmint.replace('x', '').replace('p', 
'')
            rowed.records[-1].Mint += rawmint.replace('x', '').replace('d', 
'')
            rowed.records[-1].Mint += rawmint.replace('d', '').replace('p', 
'')
            row.NumAdded = 0
            row.Mint = ""
            print "matched and munged" + str(rowed.records[-1].IssueYr) + 
str(rowed.records[-1].Mint)
        else:
            prev = prev + 1
            rowed.records.append(row)
    print "done"
    if (streetval):
        return dict(rows = rowed, streetval = float(streetval)/4)
    else:
        return dict(rows = rowed, streetval = 0);


-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to