;-)

On Wed, Oct 12, 2011 at 11:48 AM, Nate Atkinson <nja.perso...@gmail.com>wrote:

> Compute field doesn't quite work for calculating days on place
> (because it changes every day), but it will make geocoding in my app
> much more elegant.
>
> A virtual field was exactly what I needed.
>
> Thank you very much! I guess I skimmed that section of the book too
> quickly.
>
> Best regards,
>
> Nate
>
> On Oct 12, 11:16 am, Richard Vézina <ml.richard.vez...@gmail.com>
> wrote:
> > You can use compute type field (search for compute in the book) you just
> > have to put your delta in a lambda function... That if you want to store
> the
> > computed value...
> >
> > Or you can use virtual field that can compute also (not sure about that)
> > your delta will be execute each time to call you select view. That is
> what
> > you search for since the former option will calculate the delta only when
> > you enter a new record...
> >
> > It is maybe possible to make a cron job to update the state of you
> computed
> > stored delta each day for example... But if you don't need to filter base
> in
> > you select request base on the delta the virtual column is maybe the best
> > option.
> >
> > Hope it help.
> >
> > Richard
> >
> > On Wed, Oct 12, 2011 at 10:49 AM, Nate Atkinson <nja.perso...@gmail.com
> >wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Hi,
> >
> > > The company I work for places environmental measuring devices at
> > > different locations. I've designed a simple database to keep track of
> > > where we have devices. One thing that's important to us is how long a
> > > device has been on site.
> >
> > > It's probably easiest to understand if I just paste some code. Here's
> > > a sample:
> >
> > > Controller:
> >
> > > def viewbystatus():
> > >    places = db(db.plads.status == request.args(0)).select() or
> > > redirect(URL('index'))
> > >    statusstring = db.status(request.args(0)).status
> > >    return dict(places=places, status=statusstring)
> >
> > > View:
> >
> > > {{extend 'layout.html'}}
> > > {{def Linkify(element, id, method): return A(element,
> > > _href=URL(method, args=(id)))}}
> > > <h1>{{=status}}</h1>
> > > <h3>{{=str(len(places)) + ' sites'}}</h3>
> > > <table>
> > > <thead><tr>
> > > <td>Name</td><td>Address</td><td>Zipcode</td><td>City</td><td>State</
> > > td><td>Sitefinder</td><td>NumBoxes</td><td>DatePlaced</td>
> > > </tr></thead>
> > > {{for row in places:}}
> > > {{elements = [Linkify(element, row.id, 'show') for element in
> > > [row.name, row.address, row.zipcode, row.city, row.state.state,
> > > row.sitefinder.wardname, row.numboxes, row.dateplaced]]}}
> > > {{=TR(elements)}}
> > > {{pass}}
> > > </table><br>
> > > <br>
> > > [{{=A('Return to index', _href=URL('index'))}}]
> >
> > > Essentially, I would like to replace the DatePlaced column in the view
> > > with something like DaysOnSite. It's a simple matter of
> > > datetime.date.today() - row.dateplaced.
> >
> > > I could easily calculate this in the for loop in the view. Is that
> > > correct practice? Should I be calculating it in the controller? Should
> > > I add a column in the database and recalculate/update on each access?
> >
> > > For some context, there are a couple of different views where it would
> > > be useful to see the number of days on site.
> >
> > > So, what's the correct thing to do here?
>

Reply via email to