For this purpose they are not...I may include a field on printers table 
that inform the date I searching for.

If what I want to do in this page is still not clear I can try to explain 
more.
basically its a grid that each TD have a bg-color dependant on it last date



EmpresaTb = db.define_table("empresa",
            Field('nome_fantasia','string'),
            format='%(nome_fantasia)s'
            #migrate=False
            )

FilialTb = db.define_table("filial_empresa",
            Field('descricao_filial','string'),
            Field('endereco','string'),
            Field('telefone','string'),
            Field('Contato',default=''),
            Field('email','string'),
            Field('id_empresa','reference empresa'),
            format='%(descricao_filial)s',
            migrate=False
            )

FabricanteTb = db.define_table("fabricante",
            Field('nome_fabricante','string'),
            format='%(nome_fabricante)s'
            #migrate=False
            )

ModeloTb = db.define_table("modelo",
            Field('nome_modelo','string'),
            Field('id_fabricante','reference fabricante'),
            format='%(nome_modelo)s'
            #migrate=False
            )


ImpressoraTb = db.define_table("impressora",
            Field('serial','string'),
            Field('macaddress','string'),
            Field('id_modelo','reference modelo'),
            Field('id_filial_empresa','reference filial_empresa'),
            format=lambda r: r.serial or r.macaddress
            #migrate=False
            )


ContadoresTb = db.define_table("contadores",
            Field('printpb','integer'),
            Field('copypb','integer'),
            Field('printcolor','integer'),
            Field('copycolor','integer'),
            Field('singlecolor','integer'),
            Field('twocolor','integer'),
            Field('copysinglecolor','integer'),
            Field('copytwocolor','integer'),
            Field('scanner','integer'),
            Field('fax','integer'),
            Field('total','integer'),
            Field('data','date'),
            Field('hora','time'),
            Field('id_impressora','reference impressora')
            #Field('fkempresa','reference empresa'),
            #migrate=False
            )

Em quarta-feira, 16 de maio de 2012 16h50min35s UTC-3, Richard escreveu:
>
> Would you show your models... 
>
> You make complexe queries, maybe your models are not pretty well design 
> for the purpose.
>
> Richard
>
> On Wed, May 16, 2012 at 3:22 PM, Fabiano Faver <far...@gmail.com> wrote:
>
>> But because of the group by clause it are too slow and I curious to know 
>> if I can query each company separately  do what i must with the data and 
>> show the result on page as soon as they are ready
>>
>>
>> 2012/5/16 Fabiano Faver <far...@gmail.com>
>>
>>> I'm trying to display a table with the name of some companies with the 
>>> background color of each TD or DIV  dependent of the last day the printers 
>>> company were checked
>>>
>>> this it what I have now:
>>>  
>>> def exibicao_empresas():
>>>     #get companies
>>>     empr = db(auth.accessible_query('**read', db.empresa, 
>>> auth.user_id)).select()
>>>     tabela_empresa = TABLE( _class='grid_color')
>>>     tr = TR()
>>>     columns = 6
>>>     count_cl = 0
>>>     #for each company get all their printers and the last date it were 
>>> checked
>>>     for td in empr:
>>>         lista_1 = []
>>>         count_menos = count_mais = 0
>>>         #getting printers
>>>         impress = db((db.impressora.id_filial_**empresa==
>>> db.filial_empresa.id)**&(db.filial_empresa.id_**empresa==td.id
>>> ))._select(db.**impressora.id <http://db.impressora.id/>)
>>>
>>>         quant_impressoras = len(impress)
>>>         maxdata = db.contadores.data.max()
>>>         #getting dates
>>>         dias = db(db.contadores.id_**impressora.belongs(impress)).**select( 
>>> maxdata,db.contadores.id_**impressora, groupby=db.contadores.id_**
>>> impressora)
>>>
>>>         # checking to show the indicative background-color
>>>         for dia in dias:
>>>             if (((dia_hoje-dia[maxdata]).days >= 1) and 
>>> ((dia_hoje-dia[maxdata]).days < 5)): count_menos = count_menos+1
>>>             if ((dia_hoje-dia[maxdata]).days > 5): count_mais = 
>>> count_mais+1
>>>         bg_td = 'background-color: #99FFCC'
>>>         if count_menos: bg_td = 'background-color: #EAEA9F'
>>>         if count_mais == len(dias): bg_td = 'background-color: #FF9999'
>>>
>>>         tr.append(TD(td.nome_fantasia, _style = bg_td))
>>>         count_cl = count_cl + 1
>>>         if count_cl==columns:
>>>             tabela_empresa.append(tr)
>>>             tr=TR()
>>>     else:
>>>         if len(tr): tabela_empresa.append(tr)
>>>
>>>     return dict(tabela_empresa =tabela_empresa )
>>>
>>>>
>>>>
>>
>

Reply via email to