Пример #1
0
    def render_items(self, field, key, value, REQUEST):
        # need to deal with single item selects
        if not is_sequence(value):
            value = [value]

        items = field.get_value('items')
        css_class = field.get_value('css_class')
        extra_item = field.get_value('extra_item')
        field_html_id = field.generate_field_html_id(key)
        index = 0
        rendered_items = []
        for item in items:
            index += 1
            if is_sequence(item):
                item_text, item_value = item
            else:
                item_text = item
                item_value = item

            if item_value in value:
                rendered_item = self.render_selected_item(
                    item_text, item_value, key, css_class, extra_item,
                    field_html_id + str(index))
            else:
                rendered_item = self.render_item(item_text, item_value, key,
                                                 css_class, extra_item,
                                                 field_html_id + str(index))

            rendered_items.append(rendered_item)

        return rendered_items
Пример #2
0
    def render_items(self, field, key, value, REQUEST):

        # get items
        items = field.get_value('items')

        # check if we want to select first item
        if not value and field.get_value('first_item') and len(items) > 0:
            if is_sequence(items[0]):
                text, value = items[0]
            else:
                value = items[0]

        css_class = field.get_value('css_class')
        extra_item = field.get_value('extra_item')

        field_html_id = None
        if not extra_item or not id_value_re.search(extra_item):
            field_html_id = field.generate_field_html_id(key)

        # if we run into multiple items with same value, we select the
        # first one only (for now, may be able to fix this better later)
        selected_found = 0
        rendered_items = []
        index = 0
        for item in items:
            index += 1
            if is_sequence(item):
                item_text, item_value = item
            else:
                item_text = item
                item_value = item

            item_id = field_html_id and field_html_id + str(index) or None
            if item_value == value and not selected_found:
                rendered_item = self.render_selected_item(item_text,
                                                          item_value,
                                                          key,
                                                          css_class,
                                                          extra_item,
                                                          item_id)
                selected_found = 1
            else:
                rendered_item = self.render_item(item_text,
                                                 item_value,
                                                 key,
                                                 css_class,
                                                 extra_item,
                                                 item_id)

            rendered_items.append(rendered_item)

        return rendered_items
Пример #3
0
 def render_hidden(self, field, key, value, REQUEST):
     if value is None:
         return ''
     if is_sequence(value):
         value = '\n'.join(value)
     # reuse method from base class
     return Widget.render_hidden(self, field, key, value, REQUEST)
Пример #4
0
 def render_hidden(self, field, key, value, REQUEST):
     if value is None:
         return ''
     if is_sequence(value):
         value = '\n'.join(value)
     # reuse method from base class
     return Widget.render_hidden(self,field,key, value, REQUEST)
Пример #5
0
    def render_items_view(self, field, value):
        if not is_sequence(value):
            value = [value]

        items = field.get_value('items')
        d = {}
        for item in items:
            if is_sequence(item):
                item_text, item_value = item
            else:
                item_text = item
                item_value = item
            d[item_value] = item_text
        result = []
        for e in value:
            result.append(d[e])
        return result
Пример #6
0
    def render_items_view(self, field, value):
        if not is_sequence(value):
            value = [value]

        items = field.get_value('items')
        d = {}
        for item in items:
            if is_sequence(item):
                item_text, item_value = item
            else:
                item_text = item
                item_value = item
            d[item_value] = item_text
        result = []
        for e in value:
            result.append(d[e])
        return result
Пример #7
0
    def render_items(self, field, key, value, REQUEST):

        # get items
        items = field.get_value('items')

        # check if we want to select first item
        if not value and field.get_value('first_item') and len(items) > 0:
            if is_sequence(items[0]):
                text, value = items[0]
            else:
                value = items[0]

        css_class = field.get_value('css_class')
        extra_item = field.get_value('extra_item')

        field_html_id = None
        if not extra_item or not id_value_re.search(extra_item):
            field_html_id = field.generate_field_html_id(key)

        # if we run into multiple items with same value, we select the
        # first one only (for now, may be able to fix this better later)
        selected_found = 0
        rendered_items = []
        index = 0
        for item in items:
            index += 1
            if is_sequence(item):
                item_text, item_value = item
            else:
                item_text = item
                item_value = item

            item_id = field_html_id and field_html_id + str(index) or None
            if item_value == value and not selected_found:
                rendered_item = self.render_selected_item(
                    item_text, item_value, key, css_class, extra_item, item_id)
                selected_found = 1
            else:
                rendered_item = self.render_item(item_text, item_value, key,
                                                 css_class, extra_item,
                                                 item_id)

            rendered_items.append(rendered_item)

        return rendered_items
Пример #8
0
 def render_hidden(self, field, key, value, REQUEST):
     if value is not None and not is_sequence(value):
         value = [value]
     # reuse method from base class
     render_item_hidden = Widget.render_hidden
     result = []
     for v in value:
         result.append(render_item_hidden(self, field, key, v, REQUEST))
     return ''.join(result)
Пример #9
0
 def render_hidden(self, field, key, value, REQUEST):
     if value is not None and not is_sequence(value):
         value = [value]
     # reuse method from base class
     render_item_hidden = Widget.render_hidden
     result = []
     for v in value:
         result.append(render_item_hidden(self, field, key, v, REQUEST))
     return ''.join(result)
Пример #10
0
    def render_items(self, field, key, value, REQUEST):
        # need to deal with single item selects
        if not is_sequence(value):
            value = [value]

        items = field.get_value('items')
        css_class = field.get_value('css_class')
        extra_item = field.get_value('extra_item')
        field_html_id = field.generate_field_html_id(key)
        index = 0
        rendered_items = []
        for item in items:
            index += 1
            if is_sequence(item):
                item_text, item_value = item
            else:
                item_text = item
                item_value = item

            if item_value in value:
                rendered_item = self.render_selected_item(item_text,
                                                          item_value,
                                                          key,
                                                          css_class,
                                                          extra_item,
                                                          field_html_id+str(index))
            else:
                rendered_item = self.render_item(item_text,
                                                 item_value,
                                                 key,
                                                 css_class,
                                                 extra_item,
                                                 field_html_id+str(index))

            rendered_items.append(rendered_item)

        return rendered_items
Пример #11
0
 def render_view(self, field, value):
     if value is None or value == '':
         # check for empty string too, for situations
         # where no default value is set.
         return ''
     items = field.get_value('items')
     for item in items:
         if is_sequence(item):
             item_text, item_value = item
         else:
             item_text = item
             item_value = item
         if value == item_value:
             return render_value(item_text)
     raise KeyError("Wrong item value [[%s]]" % (value, ))
Пример #12
0
 def render_view(self, field, value):
     if value is None or value == '':
         # check for empty string too, for situations
         # where no default value is set.
         return ''
     items = field.get_value('items')
     for item in items:
         if is_sequence(item):
             item_text, item_value = item
         else:
             item_text = item
             item_value = item
         if value == item_value:
             return render_value(item_text)
     raise KeyError("Wrong item value [[%s]]" % (value,))
Пример #13
0
 def render(self, field, key, value, REQUEST):
     if is_sequence(value):
         value = string.join(value, "\n")
     return TextAreaWidget.render(self, field, key, value, REQUEST)
Пример #14
0
 def render(self, field, key, value, REQUEST):
     if is_sequence(value):
         value = string.join(value, "\n")
     return TextAreaWidget.render(self, field, key, value, REQUEST)