-
5 Attachment(s)
Lianja 5 and Python
There are some significant improvements to Python integration in Lianja 5.
You can now write server-side python pages that execute in both the desktop and web.
I have also integrated package management using pip (from https://pypi.org). You can type pip commands in the Python tab of the console to install and/or manage python packages that you want to use in your Apps.
A picture says a thousand words.
Attachment 1882
You can now choose to develop a WebView renderer in Lianja/VFP, JavaScript, Python or PHP.
Attachment 1883
One click editing of WebView renderer code.
Attachment 1884
Attachment 1881
And here is the Python code. Note how you have full access to the Lianja data access classes.
Code:
<%@ Language=Python %>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
<link rel='stylesheet' href='../../library/bootstrap/css/bootstrap.min.css' type='text/css'/>
<link rel='stylesheet' href='../../library/bootstrap-3.3.4/css/bootstrap.min.css'>
<script src='../../library/jquery-1.10.2/jquery-1.10.2.min.js' type='text/javascript'></script>
<script src='../../library/bootstrap-3.3.4/js/bootstrap.min.js' type='text/javascript'></script>
<style>
.tablecaption { background: gray; font-weight: bold; color: white; text-align:center; }
</style>
</head>
<body style="margin:10px;">
<%
import Lianja
# open the southwind database
db = Lianja.openDatabase("southwind")
# open a recordset
rs = db.openRecordSet("select * from example")
# main table
print "<table class='table'>"
print "<caption class=\"tablecaption\"> Example Python Report using bootstrap</caption>"
# column headings
rs.movefirst()
print "<tr bgcolor=\"lightgray\" class=\"smallfont\">"
for j in range( rs.fcount() ):
print "<th><font color=\"white\">" + rs.fields(j).name + "</font></th>"
print "</tr>"
# Traverse the recordset and write the output into the Webview section.
for i in range( rs.reccount() ):
if ((i%2) == 0):
rowcolor = "#f1f6fe"
altcolor = "#FFFFFF"
else:
rowcolor = "#FFFFFF"
altcolor = "#f1f6fe"
print "<tr bgcolor=\"" + rowcolor + "\" color=\"darkgray\" class=\"smallfont\" valign=top>"
for j in range( rs.fcount() ):
if rs.fields(j).name in [ "LIMIT", "BALANCE", "AVAILABLE" ]:
print "<td align=right>$%.2f</td>" % rs.fields(j).value
else:
print "<td>%s</td>" % rs.fields(j).value
print "</tr>"
rs.movenext()
# end of table
print "</table>"
# Close the RecordSet
rs.close()
%>
</body>
</html>
Let's run that in the Web and see how it looks.
Attachment 1885
So as you can see Python can now be used in Web/Mobile Apps.
Enjoy.
-
Wow - this has incredible possibilities.
I can already think of several ways I can use this.
Thanks Barry!
-
Hi Barry,
I can't overstate how fantastic this is!
If was going to create an installer that included all the python files, would I need to set any type of environment settings?
Thanks
Herb
-
When you use pip from inside the python console Lianja knows where to run pip from. So no path needed.
Are you talking about desktop distribution?
-
Hi Barry,
yes. I am talking about installing the app on a new clean machine.
Thanks
Herb