Jam.py (web framework): Difference between revisions

Content deleted Content added
mNo edit summary
WP:LINKs: WP:Disambiguate, update-standardizes, underscore > space, needless-WP:PIPE > WP:NOPIPE. Cut needless whitespace character carriage returns, between MOS:HEADings and text: to standardize, aid work via small screens.
 
(33 intermediate revisions by 9 users not shown)
Line 2:
{{Infobox software
| name = Jam.py
| screenshot = File:Screenshot from 2024-05-23 09-42-54.png
| caption = Screenshot of Parameters, with the visual form editor being used to create an application
| author = Andrew Yushev
| released = {{Start date and age|2015|07|01}}
| latest release version = {{wikidata|property|reference|edit|P348}}
| latest release date = {{start date and age|{{wikidata|qualifier|P348|P577}}}}
| genre = [[Web framework]]
| license = [[BSD licenses#3-clause |BSD 3-clause]]
| websiterepo = https://jampyapplicationbuildergithub.com/jam-py-v5/
| programming language = [[Python (programming language)|Python]], [[JavaScript (programming language)|JavaScript]]
| repo = https://github.com/jam-py/jam-py
| platform = [[Cross-platform software|Cross-platform]]
| programming language = [[Python (programming language)|Python]], [[JavaScript (programming language)|JavaScript]]
| website = {{URL|jampyapplicationbuilder.com}}
| platform = [[Cross-platform]]
| author = Andrew Yushev
}}
'''Jam.py''' is [[freeWeb and open source|free and open-sourceframework]] providing [[Low-code development platform|low-code]] and [[WebNo-code frameworkdevelopment platform|"no-code]], full [[solution stack"]] [[Webrapid Serverapplication Gateway Interface|WSGIdevelopment]] using [[rapidWeb applicationServer developmentGateway Interface]] framework(WSGI), for the [[programming language]]s [[JavaScript]] and [[Python (programming language)|Python]] programming language.<ref>{{Cite web |url=https://wiki.python.org/moin/WebFrameworks/ |title=WebFrameworks - Python Wiki|website=wiki.pythonPython Wiki.org}}</ref> It is [[free and open-source software]] released under a [[BSD licenses#3-clause|BSD 3-clause]] license.
'''Jam.py''' is a [[Low-code development platform]] for database-driven business [[web application]]s, based on [[DRY principle]], with emphasis on [[Create, read, update and delete|CRUD]].
 
Jam.py version 5.x is a [[Single-page application|single-page]], [[Event-driven architecture|event driven]] [[low-code development platform]] for [[database]]-driven business [[web application]]s, based on the [[don't repeat yourself]] (DRY) principle, with emphasis on [[create, read, update and delete]] (CRUD). It is designed to automatically create [[JavaScript]] [[HTML form|web forms]] from the underlying database tables, although a form can be created manually if required. The existing database tables can be imported into Jam.py to create the forms and reports. Database views are unsupported for import.
Jam.py is [[free and open source|free and open-source]] [[Low-code development platform|low-code]] [[Web framework|"full stack"]] [[Web Server Gateway Interface|WSGI]] [[rapid application development]] framework for the [[JavaScript]] and [[Python (programming language)|Python]] programming language.<ref>{{Cite web|url=https://wiki.python.org/moin/WebFrameworks/|title=WebFrameworks - Python Wiki|website=wiki.python.org}}</ref>
''The server component runs on any computer with Python 2.6 or later.''<ref>{{cite web | url=https://www.linux-magazine.com/Issues/2020/241/Jam.py | title=Building a database front end with Jam.py | work=www.linux-magazine.com, p.50 | accessdate=30 November 2020}}</ref>
 
It offersprovides a built-in web server, [[Graphicalgraphical user interface builder|GUI Builder]] (named Application Builder), and database access forincluding third-party databases.
 
Jam.py version 7.x supports routing within the [[Single-page application|single-page]]. Uniform resource locator ([[URL]]) mapping is unsupported.
 
== Features ==
* Singlev5.x is a single distribution which runs with both Python 2.56+ and 3.x
* v7.x runs with Python >3.6, and is using dependencies installed automatically
* Can run as a standalone web development server or be used with any web server which supports [[WSGI]]
* Built-in [[Graphical user interface builder|GUI Builderbuilder]] callednamed Application Builder
* Support for [[JSON]] client data (for Representational State Transfer ([[REST]]) and [[JavaScript]] clients)
* Support for popular databases [[Oracle Database]], [[Microsoft SQL Server]], [[PostgreSQL]], [[SQLite]], [[MySQL]], [[Firebird (database server)]], SQLCipher<ref>{{cite web |title=SQLCipher |url=https://github.com/sqlcipher |website=GitHub |language=en}}</ref><ref group=Note>{{Cite web|url=https://jamjampy-pydocs.comreadthedocs.io/docsen/latest/admin/project/database.html|title=Database — Jam.py documentation|website=jam-py.com}}</ref>
* Extensible [[authentication]] mechanisms and [[role-based access control]]
* [[Internationalization]] support
* [[jQuery]] for [[Ajax (programming)|Ajax]] and [[user interface|UI]]
* [[Template engine (web)|Template language]]
* [[OpenDocument|Reports Templates]] based on [[LibreOffice]]
* Files upload and camera capturing
* Optimistic locking
 
==Distinctive Example features==
The following code adds a form button and when clicked will show a message and
send the asynchronous request to the server, hiding the message after response.
 
=== Built-in application builder ===
Server Module ([[Python (programming language)|Python]]):
All [[Software development|development]], [[Software maintenance|maintenance]] and remote database administration can be performed via Builder interface. The most distinctive feature is the Client and Server Module. The Server Module enables the Python code for business logic, executed as a [[server-side]] session. The Client Module executes the JavaScript code within a browser. It is possible to exchange data between the two.
<syntaxhighlight lang="python">
<ref>[https://www.linux-magazine.com/Issues/2020/241/Jam.py Building a database front end with Jam.py]</ref>
import time
 
def calculate(item, params1, param2):
Application Builder is strongly influenced by [[Delphi (software)|Delphi]] visual designer.<ref>[https://www.webprecis.com/best-frameworks-for-web-design Best Frameworks for Web Design]</ref>
time.sleep(5)
 
return params1 + param2
=== Application builder client module ===
This JavaScript [["Hello, World!" program]] code displays a simple web page when visited:
 
<syntaxhighlight lang="javascript">
task.create_menu($("#menu"), $("#content"), {
splash_screen: '<h1 class="text-center">Hello World!</h1>',
view_first: true
});
</syntaxhighlight>
 
Client Module ([[JavaScript]]):
The above code resides in Task/Client Module(s) within the Application Builder. The task function can be accessed globally.
 
=== Application builder server module ===
The Python libraries can be imported within the Task/Server Module(s):
 
<syntaxhighlight lang="python">
import timesmtplib
function on_edit_form_created(item) {
 
let calc_btn = item.add_edit_button('Calculate');
def send_email():
calc_btn.click(function() {
# code that sends email
let mess = item.message('Calculation in progress!', {close_on_escape: false, margin: 20, text_center: true});
item.server('calculate', [100, 200], function(result) {
item.hide_message(mess);
});
});
}
</syntaxhighlight>
 
The above code imports smtplib library, which might be used to send emails. The defined functions can be accessed globally.
 
=== Database migrations ===
Jam.py supports database [[Data migration|migration]] and data import from one supported database to another.
The below code in the Task/Server Module will import data from SQLite to application database:
 
<syntaxhighlight lang="python">
== PythonAnywhere ==
from jam.db.db_modules import SQLITE
 
def on_created(task):
[[PythonAnywhere]] Python 3.7 deployment is supported<ref group=Note>{{Cite web|url=https://github.com/pythonanywhere/help_pages/blob/master/articles/Jampy.md|title=pythonanywhere/help_pages|website=GitHub|date=11 October 2021}}</ref>
task.copy_database(SQLITE, "demo.sqlite")
</syntaxhighlight>
 
Limits:
== Awards ==
* The SQLite database cannot be imported into the application database which has [[foreign key]]s.<ref>[https://jampyapplicationbuilder.com/docs/how_to/how_to_migrate_to_another_database.html How to migrate to another database]</ref>
* 2015. 10 Best Frameworks for Web Design<ref>{{cite web | url=https://www.webprecis.com/best-frameworks-for-web-design/ | title=10 Best Frameworks for Web Design | work=webprecis.com | date=11 March 2015 | accessdate=11 March 2015}}</ref>
 
* 2016. 35 Best HTML5 and CSS3 Responsive Frameworks<ref>{{cite web | url=https://devrix.com/tutorial/35-best-html5-and-css3-responsive-frameworks/ | title=35 Best HTML5 and CSS3 Responsive Frameworks | work=devrix.com | accessdate=29 August 2016}}</ref>
== PythonAnywhere ==
[[PythonAnywhere]] Python 3.7x deployment is supported<ref group=Note>{{Cite web |url=https://github.com/pythonanywhere/help_pages/blob/master/articles/Jampy.md |title=pythonanywhere/help_pages |website=GitHub |date=11 October 2021}}</ref>
 
==Notes==
Line 74 ⟶ 100:
* [[Django (web framework)]]
* [[Comparison of server-side web frameworks|Comparison of web frameworks]]
* [[List of low-code development platforms]]
 
{{Clear}}
 
== External links ==
* {{Official website|jam-pyjampyapplicationbuilder.com}}
* {{GitHub|jam-py-v5}}
 
{{Python (programming language)}}
Line 84 ⟶ 110:
{{Web frameworks}}
 
[[Category:2015 software]]
{{Improve categories|date=June 2020}}
 
[[Category:Free software programmed in Python]]
[[Category:Python (programming language) web frameworks]]
[[Category:Low Code Application Platform]]
<!-- Hidden categories below -->
[[Category:Articles with example JavaScript code]]