New web2py slice post ! I'm happy because it works perfectly now !!
cascading drop down lists with ajax 2
http://www.web2pyslices.com/slice/show/1526/cascading-drop-down-lists-with-ajax-2
Why it's 2?
because this is improved version of my previous slice.
You can check the working sample on my pythonanywhere site.
http://ochiba.pythonanywhere.com/dropdown/default/index
Monday, July 2, 2012
Monday, June 18, 2012
How to use gmaps.js on web2py
It's easy to handle Google Maps on your website and of course it will be much easier if you use web2py!
1. Create new app called gmap
2. Download gmaps.js
Go to http://hpneo.github.com/gmaps/ and download gmaps.js. Place it under the app folder static/js/gmaps.js
3. controllers/default.py
Replace the def index() with the following.
Replace it with the following.
1. Create new app called gmap
2. Download gmaps.js
Go to http://hpneo.github.com/gmaps/ and download gmaps.js. Place it under the app folder static/js/gmaps.js
3. controllers/default.py
Replace the def index() with the following.
def index():Note: There was an issue #855 and just fixed with the Version 2.0.0 (2012-06-17 23:36:32) dev. If you are using the web2py version older than this, make sure to replace the latitude and longitude as follows.
from gluon.tools import geocode
latitude = longtitude = ''
form=SQLFORM.factory(Field('search'), _class='form-search')
form.custom.widget.search['_class'] = 'input-long search-query'
form.custom.submit['_value'] = 'Search'
form.custom.submit['_class'] = 'btn'
if form.accepts(request):
address=form.vars.search
(latitude, longitude) = geocode(address)
else:
(latitude, longitude) = ('','')
return dict(form=form, latitude=latitude, longitude=longitude)
(longitude, latitude) = geocode(address)4. views/default/index.html
Replace it with the following.
{{extend 'layout.html'}}
<script src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script src="{{=URL('static','js/gmaps.js')}}"></script>
<div>
{{=form.custom.begin}}
{{=form.custom.widget.search}}{{=form.custom.submit}}
{{=form.custom.end}}
</div>
{{if longitude or latitude:}}
<p>latitude, longtitude: {{=latitude}},{{=longitude}}</p>
<div id="map" style="height:400px;width:800px"></div>
<script>
$(document).ready(function(){
map = new GMaps({
div: '#map',
lat: {{=latitude}},
lng: {{=longitude}}
});
map.addMarker({
lat: {{=latitude}},
lng: {{=longitude}},
title: 'Here!',
infoWindow: {
content: '<p>{{=request.vars.search}}</p>'
}
});
});
</script>
{{pass}}
5. Result
Type "243 S Wabash Ave, Chicago, IL, USA" and see the result.
Friday, June 8, 2012
web2py on PythonAnywhere
It's too bad fluxflex will shut down and will be no longer available on June 30, 2012. It was great service, easy to deploy, I was a little bit frustrated with using git but overall I enjoyed. Especially, I was one of the fun because this company was established by young Japanese guys !
I was looking for new place and introduced PythonAnywhere in the web2py forum.
It's so easy to install. All you have to do is sign up for free account, click web2py icon and Done !
I was running my test app in a few minutes.
Wow! I'm very impressed!!
Maybe I can spend $9 per month to host it under own domain name. The performance should be enough for the small app !
I'm not familiar with console (I'm windows guy) so I wonder how I can update wen2py when new version is available...
I was looking for new place and introduced PythonAnywhere in the web2py forum.
It's so easy to install. All you have to do is sign up for free account, click web2py icon and Done !
I was running my test app in a few minutes.
Wow! I'm very impressed!!
Maybe I can spend $9 per month to host it under own domain name. The performance should be enough for the small app !
I'm not familiar with console (I'm windows guy) so I wonder how I can update wen2py when new version is available...
Thursday, May 24, 2012
web2py slices: Import CSV file with user information and date
Posted new slice Import CSV file with user information and date
Sometime it's critical to keep tracking who updated the records. Built-in CSV import function is great but doesn't update the field such as updated_on, updated_by fields. Here's how I solved the problem.
Sometime it's critical to keep tracking who updated the records. Built-in CSV import function is great but doesn't update the field such as updated_on, updated_by fields. Here's how I solved the problem.
1. Sample application image
2. Result
Wednesday, May 2, 2012
web2py bootstrap in trunk
I'm very excited about bootstrap which is now available in trunk.
This is my web2py app with bootstrap layout. It's really clean and attractive. Now I don't have to worry about layout design which I'm not really good at.
By default, some of css is conflicting with existing web2py.css, so I made the following change to make it more like bootstrap.
In web2py.css, comment out from #2 - #5, #16 - #37 and #100.
You can find more about bootstrap here.
This is my web2py app with bootstrap layout. It's really clean and attractive. Now I don't have to worry about layout design which I'm not really good at.
By default, some of css is conflicting with existing web2py.css, so I made the following change to make it more like bootstrap.
In web2py.css, comment out from #2 - #5, #16 - #37 and #100.
You can find more about bootstrap here.
Thursday, March 15, 2012
web2py app runs very slow via VPN (SOLVED)
My application works super fast when I connected in LAN but it takes about 60 sec every time the page is refreshed via VPN. This is so strange....
After a few hours of investigation, I found in the layout.html, it's trying to connect js and css files on the internet which is impossible to connect via VPN ! So my app keeps trying to connect the files over and over about 60 sec and finally gave up.
Version 1.99.4 (By default, it was NOT commented out)
<!-- uncomment here to load jquery-ui -->
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
<!-- uncomment to load jquery-ui -->
Versioon 1.99.4 (By default, it's commented out !! Yeah !)
<!-- uncomment here to load jquery-ui
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
uncomment to load jquery-ui //-->
TIPS for VPN
If you want to use the js and css files and your app may be connected by VPN, you should download the files and placed to local such as under "static/js" and "static/css".
After a few hours of investigation, I found in the layout.html, it's trying to connect js and css files on the internet which is impossible to connect via VPN ! So my app keeps trying to connect the files over and over about 60 sec and finally gave up.
Version 1.99.4 (By default, it was NOT commented out)
<!-- uncomment here to load jquery-ui -->
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
<!-- uncomment to load jquery-ui -->
Versioon 1.99.4 (By default, it's commented out !! Yeah !)
<!-- uncomment here to load jquery-ui
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
uncomment to load jquery-ui //-->
TIPS for VPN
If you want to use the js and css files and your app may be connected by VPN, you should download the files and placed to local such as under "static/js" and "static/css".
Monday, February 13, 2012
Calling remote program on DB2 from Python/Web2py
I never realized the power of stored procedure on DB2 and now I can execute the CL/RPG/QRY program from python/web2py !
1. Create Stored Procedure
Let's say, I have a CL program called MYCLPGM in MYLIB. In CL program, I added libraries, clear files and call RPG program..etc.
Then, I can create stored procedures called MYPRCD as follows.
You can also set up parameters or select different language if you need. I recommend using CL and call whatever you need from there because most of case, your objects are in different libraries and you can add them in CL.
After it's created, you can check the stored procedures information in here
From DB2, you can call the stored procedure like
2. Calling from Python
* I assume you already finished my previous post.
1. Create Stored Procedure
Let's say, I have a CL program called MYCLPGM in MYLIB. In CL program, I added libraries, clear files and call RPG program..etc.
Then, I can create stored procedures called MYPRCD as follows.
STRSQL
CREATE PROCEDURE MYLIB/MYPRCD LANGUAGE CL NOT DETERMINISTIC
CONTAINS SQL EXTERNAL NAME MYLIB/MYCLPGM PARAMETER STYLE
GENERAL
You can also set up parameters or select different language if you need. I recommend using CL and call whatever you need from there because most of case, your objects are in different libraries and you can add them in CL.
After it's created, you can check the stored procedures information in here
STRSQL
VIEW ROUTINE
SELECT * FROM SYSROUTINES WHERE SPECIFIC_NAME ='MYPRCD'
VIEW PARAMETERS
SELECT * FROM SYSPARMS
From DB2, you can call the stored procedure like
STRSQL
CALL MYLIB/MYPRCD
2. Calling from Python
* I assume you already finished my previous post.
>>> import pyodbc
>>> conn = pyodbc.connect('DSN=MYDSN;UID=xxxxx;PWD=xxxxx')
>>> cursor = conn.cursor()
>>> cursor.execute('CALL MYLIB.MYPRCD')
<pyodbc.Cursor object at 0x01E7DA30>
>>> conn.close
>>> conn.close()
3. Calling from web2py (Tested with Ver 1.99.4)
* I assume you already finished my previous post.
Yes, you can do it using executesql.
Model
-------------------------------------------------------------------
db = DAL('db2://DSN=MYDSN;UID=xxxxx;PWD=xxxxx', migrate_enabled=False)
-------------------------------------------------------------------
Controller
-------------------------------------------------------------------
def index():
form=SQLFORM.factory()
if form.accepts(request):
db.executesql('CALL MYLIB.MYPRCD')
response.flash = 'Stored Executed !!'
return dict(form=form)
-------------------------------------------------------------------
View
-------------------------------------------------------------------
{{extend 'layout.html'}}
<h3>Run stored procedure</h3>
<hr>
{{=form}}
-------------------------------------------------------------------
Subscribe to:
Posts (Atom)







