Exemple #1
0
def _get_default_select(spec):
    def init_select(view, data):
        sorting = view.sorting()
        if sorting is None:
            sorting = tuple([(k.id(), pytis.data.DESCENDANT) for k in data.key()
                             if view.field(k.id()) is not None])
        success, select_count = pytis.form.db_operation(data.select, sort=sorting, reuse=False)
        if not success:
            pytis.util.log(pytis.util.EVENT, 'Selhání databázové operace')
            return None
        return select_count
    resolver = pytis.util.resolver()
    try:
        view = resolver.get(spec, 'view_spec')
    except:
        pytis.util.log(pytis.util.OPERATIONAL, "Nepodařilo se vytvořit view_spec")
        return None
    from pytis.extensions import data_object
    try:
        data = data_object(spec)
    except:
        pytis.util.log(pytis.util.OPERATIONAL, "Nepodařilo se vytvořit datový objekt")
        return None
    data = data_object(spec)
    select_count = init_select(view, data)
    if select_count:
        print "Default select pro specifikaci %s vrací %s řádků" % (spec, select_count,)
        data.fetchone()
Exemple #2
0
    def __init__(self, name, callback=None, transaction=None):
        """Inicializuj instanci.

        Argumenty:

          name -- určuje název specifikace datového objektu pro resolver.

          callback -- pokud není None, bude daná funkce volána při každé změně
            v datovém objektu.  Jde o funkci jednoho argumentu, kterým je
            (aktualizovaná) instance 'DBConfig'.

        """
        key = (name, transaction)
        try:
            data = DBConfig._data_object_cache[key]
        except KeyError:
            from pytis.extensions import data_object
            data = data_object(name)
            if data is not None:
                DBConfig._data_object_cache[key] = data
        self._data = data
        self._transaction = transaction
        def lfunction():
            data.select(transaction=transaction)
            self._row = data.fetchone()
            data.close()
        with_lock(self._data_object_lock, lfunction)
        self._key = [self._row[c.id()] for c in data.key()]
        if callback:
            self._callback = callback
            self._data.add_callback_on_change(self._on_change)
Exemple #3
0
    def __init__(self, spec, columns, condition=None, sort=(),
                 show_headers=True, klass=None,
                 **attrs):
        """Vytvoř tabulku, jejíž obsah je získán z databázového objektu.

        Argumenty:

        spec -- název specifikace
        columns -- seznam sloupců, které se použijí v HTML tabulce
        condition -- podmínka odpovídající argumentu volání
                     pytis.data.select()
        sort -- řazení odpovídající argumentu volání pytis.data.select()
        show_headers -- pokud je True, zobrazí se záhlaví sloupců, na základě
                        'label' z jednotlivých políček
        klass -- None nebo funkce jednoho argumentu, kterým je řádek tabulky
                 a která vrací None nebo odpovídající styl
        attrs -- atributy pro HyperText.TABLE
        
        Vrací instanci HyperText.TABLE.
        
        """
        self._spec = spec
        self._columns = columns
        self._condition = condition
        self._sort = sort
        self._view = pytis.util.resolver().get(self._spec, 'view_spec')
        self._data = data_object(self._spec)
        self._fields = self._get_fields()
        self._klass = klass
        self._table = TABLE(**attrs)
        if show_headers:
            self._headers = self._get_headers()
            self._append_headers()
Exemple #4
0
def _get_default_select(spec):
    def init_select(view, data):
        sorting = view.sorting()
        if sorting is None:
            sorting = tuple([(k.id(), pytis.data.DESCENDANT)
                             for k in data.key()
                             if view.field(k.id()) is not None])
        success, select_count = pytis.form.db_operation(data.select,
                                                        sort=sorting,
                                                        reuse=False)
        if not success:
            pytis.util.log(pytis.util.EVENT, 'Selhání databázové operace')
            return None
        return select_count

    resolver = pytis.util.resolver()
    try:
        view = resolver.get(spec, 'view_spec')
    except:
        pytis.util.log(pytis.util.OPERATIONAL,
                       "Nepodařilo se vytvořit view_spec")
        return None
    from pytis.extensions import data_object
    try:
        data = data_object(spec)
    except:
        pytis.util.log(pytis.util.OPERATIONAL,
                       "Nepodařilo se vytvořit datový objekt")
        return None
    data = data_object(spec)
    select_count = init_select(view, data)
    if select_count:
        print "Default select pro specifikaci %s vrací %s řádků" % (
            spec,
            select_count,
        )
        data.fetchone()
Exemple #5
0
def form_validate(spec, prefill):
    # Sestavíme datový objekt
    data = data_object(spec)
    if not data:
        return None, None
    failed = []
    row = []
    for c in data.columns():
        if c.id() in prefill:
            value, error = c.type().validate(prefill[c.id()])
            if error:
                failed.append(c.id())
                continue
            else:
                row.append((c.id(), value))
    if len(failed) > 0:
        return None, failed
    else:
        return pytis.data.Row(row), None
Exemple #6
0
def form_validate(spec, prefill):
    # Sestavíme datový objekt
    data = data_object(spec)
    if not data:
        return None, None
    failed = []
    row = []
    for c in data.columns():
        if c.id() in prefill:
            value, error = c.type().validate(prefill[c.id()])
            if error:
                failed.append(c.id())
                continue
            else:
                row.append((c.id(), value))
    if len(failed) > 0:
        return None, failed
    else:
        return pytis.data.Row(row), None
Exemple #7
0
    def __init__(self,
                 spec,
                 columns,
                 condition=None,
                 sort=(),
                 show_headers=True,
                 klass=None,
                 **attrs):
        """Vytvoř tabulku, jejíž obsah je získán z databázového objektu.

        Argumenty:

        spec -- název specifikace
        columns -- seznam sloupců, které se použijí v HTML tabulce
        condition -- podmínka odpovídající argumentu volání
                     pytis.data.select()
        sort -- řazení odpovídající argumentu volání pytis.data.select()
        show_headers -- pokud je True, zobrazí se záhlaví sloupců, na základě
                        'label' z jednotlivých políček
        klass -- None nebo funkce jednoho argumentu, kterým je řádek tabulky
                 a která vrací None nebo odpovídající styl
        attrs -- atributy pro HyperText.TABLE
        
        Vrací instanci HyperText.TABLE.
        
        """
        self._spec = spec
        self._columns = columns
        self._condition = condition
        self._sort = sort
        self._view = pytis.util.resolver().get(self._spec, 'view_spec')
        self._data = data_object(self._spec)
        self._fields = self._get_fields()
        self._klass = klass
        self._table = TABLE(**attrs)
        if show_headers:
            self._headers = self._get_headers()
            self._append_headers()