<?xml version="1.0" ?>

<kc>

<title>GNUe Traffic</title>

<editor contact="mailto:psu@burdonvale.co.uk">Peter Sullivan</editor>

<issue num="115" date="08 May 2006 12:00:00 -0800" />

<intro>
  This newsletter mainly covers the the #gnuenterprise IRC channel, 
  with occasional coverage of the three main mailing lists 
  (gnue-announce, gnue and gnue-dev) for the 
  <a href="http://www.gnuenterprise.org">GNU Enterprise</a> 
  project.
</intro>


<section 
   title="Using filters in Application Server"
   subject="[IRC] 02 May 2006"
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.2006-05-02"
   author="Peter Sullivan" 
   contact="mailto:psu@burdonvale.co.uk" 
   startdate="02 May 2006 12:00:00 -0800"
   enddate="02 May 2006 12:00:00 -0800">

<topic>Application Server</topic>

<p>Reinhard M&#252;ller (reinhard) explained 
<quote who="Reinhard M&#252;ller">the idea behind filters is to 
implement things like multi company - you have a table 
&quot;company&quot; that contains the companies - and all other tables 
have a foreign key to the company table. You select the company you want 
to work in at startup or you can even define it in your connections.conf 
- and you will only see the records for your company</quote>. 
Malek Hadj-Ali (lekma) asked <quote who="Malek Hadj-Ali">why is getFilters 
language dependant?</quote> wondering whether he could 
<quote who="Malek Hadj-Ali">use filters to rule out all record that are 
not in my locale?</quote> Reinhard said this was certainly possible, but the 
more basic reason why filters were language dependent was because the name of 
the object being filtered on would be different in different locales - 
for example, <quote who="Reinhard M&#252;ller">for German it will not be 
&quot;Company&quot; but &quot;Firma&quot;</quote>. He noted that 
<quote who="Reinhard M&#252;ller">you can find example for filters 
in gnue-luca</quote> (as referred to in 
<kcref title="Current Status of GNUe Project" subject="[IRC] 09 Mar 2006" />).</p>

<p>Malek asked how to supply the filter value to the Application Server. 
Reinhard explained that, for example, <quote who="Reinhard M&#252;ller">if 
you have a filter=&quot;base_lang&quot;, appserver creates the field 
implicitly</quote> and <quote who="Reinhard M&#252;ller">on login, you 
give base_lang = &lt;the gnue_id of the language you want to 
have&gt;</quote>. Malek asked how he would know 
<quote who="Malek Hadj-Ali">which gnue id</quote> to supply. Reinhard 
replied <quote who="Reinhard M&#252;ller">that's the purpose 
of getFilters - it gets you the valid values with their respective 
gnue_id. The idea is that you can, on the front end, display a dropdown 
with the values - and let the user select, and then send the 
corresponding gnue_id at login</quote>. The reason for using getFilters 
rather than just querying the table or class that contained the possible 
values for the filter was that the class  
<quote who="Reinhard M&#252;ller">could have dozens of fields</quote> so 
you needed a mechanism to decide <quote who="Reinhard M&#252;ller">which 
of these fields you want to see in the login dialog</quote> for the user 
to select from - <quote who="Reinhard M&#252;ller">you see only those 
fields that have a search=</quote> property. This was similar to the way 
the search= property was used in Forms, to determine which field or 
fields were displayed as the pick-list in dropdown selection fields.</p>

<p>Ealier, Malek had asked <quote who="Malek Hadj-Ali">is there a way to 
bypass a filter?</quote> Reinhard explained 
<quote who="Reinhard M&#252;ller">you can bypass a filter by explicitly 
including the filter property into the condition tree</quote>. The way 
that filters were implemented was that normally 
<quote who="Reinhard M&#252;ller">appserver implicitly adds a &quot;... 
and filter_property = filter_value&quot;</quote> to the end 
of all queries. But it only did this <quote who="Reinhard M&#252;ller">if 
the condition does not contain any reference to the filter 
property</quote> already. So putting in your own, explicit, condition 
on filter_property that was always true (e.g. filter_property IS NOT 
NULL) would bypass the filter and show you all records.</p>

<p>Reinhard also explained that some of the apparent complexity of the 
filter-realted code was an attempt to deal with multi-level filters, such 
as language and dialect. You might need to first of all select a language 
(e.g. English), and then select the dialect (e.g. British English or 
American English).</p>

<p>He admitted that there was more work to do on filters, 
<quote who="Reinhard M&#252;ller">but I think in basic 
principle, it's usable and the right direction</quote>. When the time 
came <quote who="Reinhard M&#252;ller">to play around with the login 
process a little more, when we want to add real security to 
appserver</quote>, that might well also be the time to 
<quote who="Reinhard M&#252;ller">think the filter stuff 
through again</quote>.</p>

<p>He added that, in terms of security for Application Server, 
<quote who="Reinhard M&#252;ller">I would prefer login methods that don't 
send passwords over the net - so we would either need a wrapper that 
encrypts passwords client side and decrypts server side - or use an 
authentication system that is secure as such. I've been thinking TLS, 
SASL, Kerberos, GSSAPI and a lot of other buzzwords, but I need to read 
deeper into it to see what fits with what we actually need - but that's 
down the road anyway</quote>.</p>

</section>


<section 
   title="Using different parts of the GNUe toolkit in real-world applications"
   subject="[IRC] 03 May 2006"
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.2006-05-03"
   author="Peter Sullivan" 
   contact="mailto:psu@burdonvale.co.uk" 
   startdate="03 May 2006 12:00:00 -0800"
   enddate="03 May 2006 12:00:00 -0800">

<topic>Reports</topic>
<topic>Forms</topic>
<topic>Common</topic>

<p>Nick Rusnov (nickr) noted <quote who="Nick Rusnov">I need to 
make a little app to calculate sales quotes</quote>, asking 
<quote who="Nick Rusnov">Do I need to create database records for 
the actual quote in order to produce a report from it</quote> 
using GNUe Reports? Quotes would be calculated from 
<quote who="Nick Rusnov">a database of prices, discounts, schedules 
etc - I'm just wondering if I need that to be created as a group of 
records in the database in order to get it as an output or if I can 
get it directly from the forms client somehow</quote>? James Thompson 
(jamest) recommended saving the details of the quotes generated 
in any case - <quote who="James Thompson">as i always get hit up for it 
later</quote> - <quote who="James Thompson">people want that history 
here at times</quote> of previous quotations provided.</p>

<p>More generally, he explained <quote who="James Thompson">in some 
of my forms i have a trigger do the work, store the record(s), then 
call a python app to generate the output form</quote>. This 
was then passed to <quote who="James Thompson">a python app 
that uses <a href="http://www.reportlab.org/bauer1.html">reportlab</a> 
to build the output</quote>. However, you could also produce output 
this way without saving the data to a database first. This was 
<quote who="James Thomspon">like my packing slips, the gnue-form 
frontend isn't directly bound to any tables - the shipping guys fill 
in the form, press a complete button. my output looks nothing like the 
form - as it adds company logo, barcodes, extra info the shippers don't 
enter</quote>. This was a fairly simple application - a 463 line 
GNUe Form Definition (.gfd), plus about 100 lines of python for the 
triggers.</p>

<p>Nick explained his requirements - <quote who="Nick Rusnov">essentialy 
the sales person selects a discount/pricing schedule, and then adds items 
to a list which have this pricing schedule applied to them - if they don't 
specify an exact count they can select a quantity break - if they specify 
an exact count for every item then it caries over the price and 
totals</quote>. Then <quote who="Nick Rusnov">at the end they click a done 
button or whatever and it outputs a nice pdf of the quote for the 
customer</quote>. Why he was interested in using GNUe Forms was that 
<quote who="Nick Rusnov">it'd be nice if they could see the items as they 
are added and then be able to at least delete them if they make a 
mistake</quote>.</p>

<p>James Thompson said that <quote who="James Thomspon">another option 
if forms is too rough would be a small custom app based upon gnue-common - 
i do that for more complex tools like our scanner app and order processing 
app</quote>. A custom application could use GNUe Common directly (i.e. not 
via Forms or Reports) to <quote who="James Thompson">present a QT designer 
built UI to the user - access to our datasources - basic argument parsing - 
the debug and profiling stuff</quote>.</p>

<p>He explained that <quote who="James Thompson">forms is mainly a data-aware 
front end that provides basic input manipulation, validation, and 
triggers</quote> but he cautioned <quote who="James Thompson">forms can't 
dynamically change the UI layout currenlty</quote>. He confessed 
<quote who="James Thompson">for me I use forms more than I should - 
as it presents a common interface to most our apps - but if you need areas to 
expand and contract then forms won't fly</quote> as of time of writing. Nick 
felt that <quote who="Nick Rusnov">forms needs a data table widget</quote>. 
James said <quote who="James Thompson">we're talking about adding 
a table widget - but really other than looks the rows=</quote> tag that already 
existed <quote who="James Thompson">does the same thing</quote>. 
Reinhard M&#252;ller noted that <quote who="Reinhard M&#252;ller">a grid is 
going to be in form's next release</quote> but this was probably several 
months away.</p>

</section>


<section 
   title="Status of various accounting packages in GNUe"
   subject="[IRC] 07 May 2006"
   archive="http://www.gnuenterprise.org/irc-logs/gnue-public.log.2006-05-07"
   author="Peter Sullivan" 
   contact="mailto:psu@burdonvale.co.uk" 
   startdate="07 May 2006 12:00:00 -0800"
   enddate="07 May 2006 12:00:00 -0800">

<topic>Financials (Accounting)</topic>
<topic>Luca</topic>
<topic>Small Business</topic>
<topic>Application Server</topic>

<p>It was asked if there was an accounting schema for GNUe. Dmitry Sorokin 
(dimas) said <quote who="Dmitry Sorokin">the only accounting schema i 
remember was in gnue-luca</quote>. It was noted that there had been no 
work done on GNUe Small Business Edition since July 2003. Dmitry said 
that schemas were normally stored in .gcd (GNUe Class Definition) files, 
as used by the Application Server. GNUe Small Business did not have 
these, as it <quote who="Dmitry Sorokin">did not intend to use appserver 
from the beginning</quote>, but just work in two-tier mode (GNUe Forms 
or Reports talking directly to the database).</p>

</section>


</kc>