custom fields
[[extend 'layout.html']]
[[=form.custom['begin'] ]]
[[=form.custom['labels']['firstname'] ]]
[[=form.custom['widgets'][firstname'] ]]
[[=form.custom['labels']['lastname'] ]]
[[=form.custom['widgets']['lastname'] ]]
[[=form.custom['submit'] ]]
[[=form.custom['end'] ]]
customization du bouton submit par exemple :
form.custom['submit']['_value']= 'mysubmit'
ou bien
form.custom['submit']['_style']= 'background-color: green'
pour le style regarder dans l'inspecteur, sections syles ce qui est customisable
URL signer
il faut en mettre un peu partout
dans le controller :
from py4web.utils.url_signer import URLSigner
from .common import db, session,T,flash,unauthenticated,auth,signed_url
# important
url_signer = URLSigner(session)
appel de vue
@action('get_plantu')
@action.uses(url_signer.verify())
def get_plantu():
dans common.py
les styles et les boutons
<button class="butani" @click="alert();" >szsz</button>
pour une url
<a role="button" class="butani" href="[[=URL('index')]]" >Reset</a>
par défaut : no.css
minimaliste
la classe donne la couleur (warning pour jaune)
Database basics
voir _scaffold dans vanilla
models.py def de la base
from .common import db, Field
from pydal.validators import *
### Define your table below
#
db.define_table('state', Field('ip'), Field('devname'),Field('state'),Field('datechanged'))
#
## always commit your models to avoid problems later
#
db.commit()
utilisation dans le controller
from .common import db, session, T, cache, auth, logger, authenticated, unauthenticated, flash
@unauthenticated("index", "index.html")
def index():
user = auth.get_user()
toto=db.tables()
state=db.state
ip=state.ip
qr=ip=='91'
rs=db(qr).select().first()
en dehors ( avec le shell - a lancer dans le container of course)
from py4web import DAL, Field
from apps._scaffold import db
necessite py4web.
A tenter en inserant directement dans la database
Celery (ordonnanceur).
balbutiement
s'appuie (entre autres backends sur redis)
A lancer dans le container
(penser à nohup)
important un mode scheduler ou les taches sont lancées depuis le controleur et s'executent dans le process (ou le thread?) celery via un ou plusieurs workers
et un mode batch (appelé beat) pour les taches vraiment ordonnancées en propre.
--- As of today .
un tuto qu'on trouve sur googlee groups en mot cles py4web celery.
voir manuels py4web
probleme sur AsyncRun. bloqué.
WSGI et ALwaysdata
le mode qui fonctionne : wsgi
important :
conf du site
Chemin vers le fichier
Le chemin est relatif à la racine de votre compte et doit commencer par « / ». Par exemple : /mysite/
et placer un script py4web_wsgi.py
farm@ssh1:~/www/py4web$ cat py4web_wsgi.py dans le rep de travail
from py4web.core import wsgi
import os
password_file = os.path.abspath(os.path.join(os.path.dirname(__file__),'password.txt' ))
application = wsgi(apps_folder="apps",dashboard_mode="full",password_file=password_file)
Important : sinon pas de dashboard accessible
fichier de mot de passe aussi important. Mot de passe a configurer avec
py4web set_password
No comments:
Post a Comment