Casos de uso

  • Crear un objeto que contenga referencias
  • Pasar una referencia de un modelo a otro
  • Cambiar el orden de los atributos mostrados en la lista
  • Cambiar el nombre de los atributos mostrados en la lista
  • Cambiar el atributo principal de la clase 'ide' por otro
  • Formateando atributos en la lista

Crear un objeto que contenga referencias

En este ejemplo se muestra como el objeto Province posee una referencia al objeto Country a través del atributo Province.country

from storm.locals import *
from country import Country

class Province (object):

    __storm_table__ = "states"

    id = Int(primary = True)
    name = Unicode()
    country_id = Int()
    country = Reference(country_id, Country.id)

Pasar una referencia de un modelo a otro

Varias veces necesitaremos interactuar datos de un modelo con otro. Veamos un ejemplo:

from book.manager import BookManager
from book.gui import BookGUI
from library.manager import LibraryManager
from library.gui import LibraryGUI

book_mgr = BookManager(store, reset)
library_mgr = LibraryManager(store, reset)

books_gui = BookGUI(manager = book_mgr)
# here is passed by reference 'books_gui' to 'library_gui'
library_gui = LibraryGUI(manager = library_mgr, managers = [books_gui])

Cambiar el orden de los atributos mostrados en la lista

En el archivo gui.py, solamente al cambiar el orden en que son definidos los atributos de la lista, ya se verán reflejados los cambios en la tabla.

class PersonsGUI( BaseGUI ):

    def __init__(self, manager, managers = []):
        BaseGUI.__init__(self, manager, managers)

        [...]

        self.addTableColumn(u'#', Person.id)
        self.addTableColumn(u'Name', Person.name)
        self.addTableColumn(u'Last name', Person.last_name)
        self.addTableColumn(u'E-mail', Person.email)

        self._start_operations()

Cambiar el nombre de los atributos mostrados en la lista

Solamente renombrando las claves en la llamada a la función 'addTableColumn', ya se reflejarán los cambios en la tabla.

...
self.addTableColumn(u'#', Person.id)
self.addTableColumn(u'ChangeMe', Person.name)
...

Cambiar el atributo principal de la clase 'id' por otro

Por defecto siempre se usa el atributo id para identificar a los objetos en la base de datos.

Veamos un ejemplo de como cambiar el atributo id por isbn en el caso de un libro:

# clase con attributo 'ide'
class Book (object):

    id = Int(primary = True)

# clase con atributo cambiado 'isbn'
class Book (object):

    isbn = Unicode(primary = True)

Formateando atributos en la lista

Algunas veces necesitaremos dar formato a los atributos mostrados en la lista.

Veamos un ejemplo de como: dar el formato 'dd/mm/yyyy' a la columna fecha agregar el signo '$' a la columna 'monto'

def fnParseDate(self, row, value):
    return value.strftime("%d/%m/%Y")

def fnParseAmount(self, row, value):
    return "$ %8.2f" % value

# usando la opción 'fnParse'
self.addTableColumn(u'Date', InvoiceRow.date, fnParse=self.fnParseDate) # type date
self.addTableColumn(u'Supplier', InvoiceRow.supplier) # type unicode
self.addTableColumn(u'Amount', InvoiceRow.amount, fnParse=self.fnParse) # type float

¿Como centramos una columna? - 'C' para centrar - 'L' para izquierda - 'R' para derecha

# usando la opción 'alignment'
self.addTableColumn(u'Amount', InvoiceRow.amount, alignment='C')

Ir a > Inicio | Ir a > Instalación | Ir a > Como empezar | Ir a > Casos de uso | Ir a > Aplicaciones de ejemplo