Thursday, March 25, 2021

py4web tips

 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

Ma journée du 01 Décembre 2025

En ce premier jour de décembre, l'heure est venue, De conter une histoire, par les dés soutenue. Quinze dés ont roulé, offrant leur dest...