Beispiel #1
0
 def default_header_ordered_column_format(self, column_number, column_name,
                                          header_label):
     header_label = HTML(header_label, HTML.tag("span", class_="marker"))
     if column_name == "_numbered":
         column_name = "numbered"
     class_name = "c%s ordering %s %s" % (column_number, self.order_dir,
                                          column_name)
     return HTML.tag("td", header_label, class_=class_name)
Beispiel #2
0
 def default_header_column_format(self, column_number, column_name,
                                  header_label):
     if column_name == "_numbered":
         column_name = "numbered"
     if column_name in self.exclude_ordering:
         class_name = "c%s %s" % (column_number, column_name)
         return HTML.tag("td", header_label, class_=class_name)
     else:
         header_label = HTML(header_label, HTML.tag("span",
                                                    class_="marker"))
         class_name = "c%s ordering %s" % (column_number, column_name)
         return HTML.tag("td", header_label, class_=class_name)
Beispiel #3
0
 def make_columns(self, i, record):
     columns = []
     for col_num, column in enumerate(self.columns):
         if column in self.column_formats:
             r = self.column_formats[column](col_num + 1,
                                             self.calc_row_no(i, column),
                                             record)
         else:
             r = self.default_column_format(col_num + 1,
                                            self.calc_row_no(i, column),
                                            record, column)
         columns.append(r)
     return HTML(*columns)
 def default_header_ordered_column_format(self, column_number, column_name,
                                          header_label):
     """Override of the ObjectGrid to use <th> and to add an icon
     that represents the sort order for the column.
     """
     icon_direction = self.order_dir == 'asc' and 'up' or 'down'
     icon_class = 'icon-chevron-%s' % icon_direction
     icon_tag = HTML.tag("i", class_=icon_class)
     header_label = HTML(header_label, " ", icon_tag)
     if column_name == "_numbered":
         column_name = "numbered"
     class_name = "c%s ordering %s %s" % (column_number, self.order_dir,
                                          column_name)
     return HTML.tag("th", header_label, class_=class_name)
 def default_header_column_format(self, column_number, column_name,
                                  header_label):
     """Override of the ObjectGrid to use <th> for header columns
     """
     if column_name == "_numbered":
         column_name = "numbered"
     if column_name in self.exclude_ordering:
         class_name = "c%s %s" % (column_number, column_name)
         return HTML.tag("th", header_label, class_=class_name)
     else:
         header_label = HTML(header_label, HTML.tag("span",
                                                    class_="marker"))
         class_name = "c%s ordering %s" % (column_number, column_name)
         return HTML.tag("th", header_label, class_=class_name)
Beispiel #6
0
 def tidy_value(cls, value):
     # objeto exposto
     if isinstance(value, ExposedObject):
         name = getattr(value, 'nome', getattr(value, 'descricao', False))
         ref = cls.tidy_label(value.__class__.__name__) + \
             (" %s" % unicode(value.id)) + \
             (u"" if not name else (u": %s" % name))
         uri = getattr(value, 'uri', False)
         return link_to_if(uri, ref, uri)
     # listas
     elif isinstance(value, Iterable) and \
             not isinstance(value, basestring) and \
             not isinstance(value, dict):
         return ul(cls.tidy_value(item) for item in value)
     # dicionarios
     elif isinstance(value, dict):
         return HTML.dl(HTML(*[
             HTML(*[HTML.dt(cls.tidy_label(k)), HTML.dd(cls.tidy_value(v))])
                 for k, v in value.items()]
         ))
     # datas
     elif isinstance(value, date):
         return value.strftime(u"%d/%m/%Y")
     # decimais (em geral, valores moeda)
     elif isinstance(value, Decimal):
         return u"R$ "+locale.format(u"%.02f",value, grouping=True, monetary=True)
     # booleanos
     elif isinstance(value, bool):
         return u"Verdadeiro" if value else u"Falso"
     # strings longas
     elif isinstance(value, unicode) and len(value) > 140:
         return format_paragraphs(value, preserve_lines=True)
     # caso geral
     else:
         uri = getattr(value, 'uri', False)
         return link_to_if(uri, value, uri)
Beispiel #7
0
 def __html__(self):
     """ renders the grid """
     records = []
     #first render headers record
     headers = self.make_headers()
     r = self.default_header_record_format(headers)
     records.append(r)
     # now lets render the actual item grid
     for i, record in enumerate(self.itemlist):
         columns = self.make_columns(i, record)
         if hasattr(self, 'custom_record_format'):
             r = self.custom_record_format(i + 1, record, columns)
         else:
             r = self.default_record_format(i + 1, record, columns)
         records.append(r)
     return HTML(*records)
Beispiel #8
0
    def error_flashes(self, name=None, **attrs):
        """
        Renders errors as Foundation flash messages.

        If no errors present returns an empty string.

        `name` : errors for name. If **None** all errors will be rendered.
        """
        if name is None:
            errors = self.all_errors()
        else:
            errors = self.errors_for(name)
        content = [
            HTML.div(error, class_='alert-box alert', **attrs)
            for error in errors
        ]
        return HTML(*content)
Beispiel #9
0
    def error_small(self, name, cols=None, **attrs):
        """
        Renders the specified error next to a Foundation form control

        `name` : errors for name.
        """
        errors = self.errors_for(name)
        if not errors:
            return ''
        content = []
        for error in errors:
            content.append(HTML(error))
            content.append(tags.BR)
        content = content[:-1]
        attrs = css_add_class(attrs, 'error')
        if cols:
            attrs = css_add_class(attrs, 'small-%d' % cols)
        return HTML.tag('small', *content, **attrs)
 def __html__(self):
     """Override of the ObjectGrid to use a <thead> so that bootstrap
     renders the styles correctly
     """
     records = []
     # first render headers record
     headers = self.make_headers()
     r = self.default_header_record_format(headers)
     # Wrap the headers in a thead
     records.append(HTML.tag('thead', r))
     # now lets render the actual item grid
     for i, record in enumerate(self.itemlist):
         columns = self.make_columns(i, record)
         if hasattr(self, 'custom_record_format'):
             r = self.custom_record_format(i + 1, record, columns)
         else:
             r = self.default_record_format(i + 1, record, columns)
         records.append(r)
     return HTML(*records)
Beispiel #11
0
    def make_headers(self):
        header_columns = []

        for i, column in enumerate(self.columns):
            # let"s generate header column contents
            label_text = ""
            if column in self.labels:
                label_text = self.labels[column]
            else:
                label_text = column.replace("_", " ").title()
            # handle non clickable columns
            if column in self.exclude_ordering:
                header = self.default_header_column_format(
                    i + 1, column, label_text)
            # handle clickable columns
            else:
                header = self.generate_header_link(i + 1, column, label_text)
            header_columns.append(header)
        return HTML(*header_columns)