Exemplo n.º 1
0
    def data_generator(self, request, data):
        """Modify the standard data generation method so that links
to date archive are generated"""
        request = djp.request
        prefix = djp.prefix
        wrapper = djp.wrapper
        date = None
        render = loader.render
        Context = loader.context_class

        for obj in data:
            content = self.object_content(djp, obj)
            dt = getattr(obj, self.date_code)
            ddate = dt.date()
            if self.split_days and (not date or date != ddate):
                urlargs = djp.kwargs.copy()
                urlargs.pop("year", None)
                urlargs.pop("month", None)
                urlargs.pop("day", None)
                content["year"] = {"url": self.yearurl(request, dt.year, **urlargs), "value": dt.year}
                content["month"] = {
                    "url": self.monthurl(request, dt.year, dt.month, **urlargs),
                    "value": to_string(MONTHS[dt.month]),
                }
                content["day"] = {"url": self.dayurl(request, dt.year, dt.month, dt.day, **urlargs), "value": dt.day}
                content["wday"] = to_string(WEEKDAYS_ABBR[dt.weekday()])
                date = ddate
            yield render(self.get_item_template(obj, wrapper), Context(content))
Exemplo n.º 2
0
    def _unwind(self):
        '''unwind the form by building bound fields and validating
if it is bound.'''
        if hasattr(self,'_data'):
            return
        self._data = data = {}
        self._cleaned_data = cleaned = {}
        self._errors = errors = {}
        rawdata = self.additional_data()
        if rawdata:
            rawdata.update(self.rawdata)
        else:
            rawdata = self.rawdata
        files = self._files
        self._fields = fields = []
        self._fields_dict = dfields = {}

        prefix = self.prefix
        self.initial = initial = self.initial
        is_bound = self.is_bound
        form_message = self.form_message

        # Loop over form fields
        for name, field in iteritems(self.base_fields):
            bfield = BoundField(self, field, name, self.prefix)
            key = bfield.html_name
            fields.append(bfield)
            dfields[name] = bfield
            field_value = None
            if is_bound:
                rawvalue = field_value = field.value_from_datadict(
                                    rawdata, files, key)
                if rawvalue not in NOTHING:
                    self.changed = True
                    data[name] = rawvalue
                try:
                    value = bfield.clean(rawvalue)
                    func_name = 'clean_' + name
                    if hasattr(self, func_name):
                        value = getattr(self, func_name)(value)
                    cleaned[name] = value
                except ValidationError as e:
                    form_message(errors, name, to_string(e))

            elif name in initial:
                data[name] = field_value = initial[name]

            bfield.value = field_value

        if is_bound and not errors:
            # Invoke the form clean method. Usefull for last minute
            # checking or cross field checking
            try:
                self.clean()
            except ValidationError as e:
                form_message(errors, '__all__', to_string(e))
                del self._cleaned_data
        else:
            del self._cleaned_data
Exemplo n.º 3
0
    def _unwind(self):
        '''unwind the form by building bound fields and validating
if it is bound.'''
        if hasattr(self, '_data'):
            return
        self._data = data = {}
        self._cleaned_data = cleaned = {}
        self._errors = errors = {}
        rawdata = self.additional_data()
        if rawdata:
            rawdata.update(self.rawdata)
        else:
            rawdata = self.rawdata
        files = self._files
        self._fields = fields = []
        self._fields_dict = dfields = {}

        prefix = self.prefix
        self.initial = initial = self.initial
        is_bound = self.is_bound
        form_message = self.form_message

        # Loop over form fields
        for name, field in iteritems(self.base_fields):
            bfield = BoundField(self, field, name, self.prefix)
            key = bfield.html_name
            fields.append(bfield)
            dfields[name] = bfield
            field_value = None
            if is_bound:
                rawvalue = field_value = field.value_from_datadict(
                    rawdata, files, key)
                if rawvalue not in NOTHING:
                    self.changed = True
                    data[name] = rawvalue
                try:
                    value = bfield.clean(rawvalue)
                    func_name = 'clean_' + name
                    if hasattr(self, func_name):
                        value = getattr(self, func_name)(value)
                    cleaned[name] = value
                except ValidationError as e:
                    form_message(errors, name, to_string(e))

            elif name in initial:
                data[name] = field_value = initial[name]

            bfield.value = field_value

        if is_bound and not errors:
            # Invoke the form clean method. Usefull for last minute
            # checking or cross field checking
            try:
                self.clean()
            except ValidationError as e:
                form_message(errors, '__all__', to_string(e))
                del self._cleaned_data
        else:
            del self._cleaned_data
Exemplo n.º 4
0
def nicerepr(val,
             nd=None,
             none_value=NONE_VALUE,
             dateformat=None,
             timeformat=None,
             settings=None,
             **kwargs):
    '''Prettify a value to be displayed in html.

:parameter val: value to prettify.
:parameter nd: numerical accuracy for floating point numbers.
'''
    if val is None:
        return NONE_VALUE
    elif is_safe(val):
        return val
    elif isinstance(val, date):
        return smart_time(val, dateformat, timeformat, settings)
    elif isinstance(val, bool):
        if val:
            return with_icon('true')
        else:
            return with_icon('false')
    elif hasattr(val, '_meta'):
        return val._meta.name
    else:
        val = to_string(val)
        try:
            return significant_format(val, n=nd)
        except ValueError:
            if val.startswith('http://') or val.startswith('https://'):
                val = mark_safe('<a href="{0}">{0}</a>'.format(val))
            return val
Exemplo n.º 5
0
 def on_submit(self, commit):
     if commit:
         text = self.cleaned_data.get('text')
         if text:
             user = self.request.user
             msg = json.dumps({'user': to_string(user), 'message': text})
             self.request.appmodel.publish('chat', msg)
     return True
Exemplo n.º 6
0
 def values(self, bfield):
     '''Generator of values in select'''
     for o in self.all(bfield):
         if isinstance(o, Widget):
             v = o.attr('value')
         else:
             v = to_string(o[0])
         yield v
Exemplo n.º 7
0
 def values(self, bfield):
     '''Generator of values in select'''
     for o in self.all(bfield):
         if isinstance(o, Widget):
             v = o.attr('value')
         else:
             v = to_string(o[0])
         yield v
Exemplo n.º 8
0
    def __init__(self, offset):
        if isinstance(offset, timedelta):
            self.__offset = offset
            offset = self.__offset.seconds // 60
        else:
            self.__offset = timedelta(minutes=offset)

        sign = offset < 0 and "-" or "+"
        self.__name = to_string("%s%02d%02d" % (sign, abs(offset) / 60.0, abs(offset) % 60))
Exemplo n.º 9
0
 def _all_choices(self, bfield, selected):
     if bfield:
         choices = bfield.field.choices
         for opt in choices.all(bfield, html=True):
             if not isinstance(opt, Widget):
                 opt = Widget('option', opt[1], value=to_string(opt[0]))
             if opt.attr('value') in selected:
                 opt.addAttr('selected', 'selected')
             yield opt
Exemplo n.º 10
0
 def tohtml(self, text):
     if not text:
         return ''
     mkp = markups.get(self.markup)
     if mkp:
         handler = mkp.get('handler')
         text = handler(text)
         text = loader.mark_safe(to_string(text))
     return text
Exemplo n.º 11
0
 def on_submit(self, commit):
     if commit:
         text = self.cleaned_data.get('text')
         if text:
             user = self.request.user
             msg = json.dumps({'user': to_string(user),
                               'message': text})
             self.request.appmodel.publish('chat', msg)
     return True
Exemplo n.º 12
0
 def tohtml(self, text):
     if not text:
         return ''
     mkp = markups.get(self.markup)
     if mkp:
         handler = mkp.get('handler')
         text = handler(text)
         text = loader.mark_safe(to_string(text))
     return text
Exemplo n.º 13
0
 def _all_choices(self, bfield, selected):
     if bfield:
         choices = bfield.field.choices
         for opt in choices.all(bfield, html=True):
             if not isinstance(opt, Widget):
                 opt = Widget('option', opt[1], value=to_string(opt[0]))
             if opt.attr('value') in selected:
                 opt.addAttr('selected', 'selected')
             yield opt
Exemplo n.º 14
0
 def render(self, request, content=None, **kwargs):
     instance = self.get_object(request, content)
     if instance:
         request = request.for_model(instance=instance, name=self.view)
         if request:
             return request.render(**kwargs)
         else:
             return to_string(instance)
     else:
         return ''
Exemplo n.º 15
0
    def __init__(self, offset):
        if isinstance(offset, timedelta):
            self.__offset = offset
            offset = self.__offset.seconds // 60
        else:
            self.__offset = timedelta(minutes=offset)

        sign = offset < 0 and '-' or '+'
        self.__name = to_string("%s%02d%02d" %
                                (sign, abs(offset) / 60., abs(offset) % 60))
Exemplo n.º 16
0
 def render(self, request, content=None, **kwargs):
     instance = self.get_object(request, content)
     if instance:
         request = request.for_model(instance=instance, name=self.view)
         if request:
             return request.render(**kwargs)
         else:
             return to_string(instance)
     else:
         return ''
Exemplo n.º 17
0
 def _clean_simple(self, value, bfield):
     '''Invoked by :meth:`clean` if :attr:`model` is not defined.'''
     ch = set(self.values(bfield))
     values = value if self.multiple else (value, )
     if not isinstance(values, (list, tuple)):
         raise ValidationError('Critical error. {0} is not a list'\
                               .format(values))
     for v in values:
         v = to_string(v)
         if v not in ch:
             raise ValidationError('%s is not a valid choice' % v)
     return value
Exemplo n.º 18
0
 def _clean_simple(self, value, bfield):
     '''Invoked by :meth:`clean` if :attr:`model` is not defined.'''
     ch = set(self.values(bfield))
     values = value if self.multiple else (value,)
     if not isinstance(values, (list, tuple)):
         raise ValidationError('Critical error. {0} is not a list'\
                               .format(values))
     for v in values:
         v = to_string(v)
         if v not in ch:
             raise ValidationError('%s is not a valid choice' % v)
     return value
Exemplo n.º 19
0
    def data_generator(self, request, data):
        '''Modify the standard data generation method so that links
to date archive are generated'''
        request = djp.request
        prefix = djp.prefix
        wrapper = djp.wrapper
        date = None
        render = loader.render
        Context = loader.context_class

        for obj in data:
            content = self.object_content(djp, obj)
            dt = getattr(obj, self.date_code)
            ddate = dt.date()
            if self.split_days and (not date or date != ddate):
                urlargs = djp.kwargs.copy()
                urlargs.pop('year', None)
                urlargs.pop('month', None)
                urlargs.pop('day', None)
                content['year'] = {
                    'url': self.yearurl(request, dt.year, **urlargs),
                    'value': dt.year
                }
                content['month'] = {
                    'url': self.monthurl(request, dt.year, dt.month,
                                         **urlargs),
                    'value': to_string(MONTHS[dt.month])
                }
                content['day'] = {
                    'url':
                    self.dayurl(request, dt.year, dt.month, dt.day, **urlargs),
                    'value':
                    dt.day
                }
                content['wday'] = to_string(WEEKDAYS_ABBR[dt.weekday()])
                date = ddate
            yield render(self.get_item_template(obj, wrapper),
                         Context(content))
Exemplo n.º 20
0
 def set_value(self, val, widget):
     # Set the value. We use the widget bound field to do that
     bfield = widget.internal.get('bfield', None)
     if bfield:
         val = bfield.field.choices.html_value(val)
     multiple = bool(widget.attr('multiple'))
     if val:
         if not multiple:
             val = (val,)
         selected = tuple((to_string(v) for v in val))
     else:
         selected = ()
     if selected and multiple:
         widget.add(self._all_ordered_choices(bfield, selected))
     else:
         widget.add(self._all_choices(bfield, selected))
Exemplo n.º 21
0
 def set_value(self, val, widget):
     # Set the value. We use the widget bound field to do that
     bfield = widget.internal.get('bfield', None)
     if bfield:
         val = bfield.field.choices.html_value(val)
     multiple = bool(widget.attr('multiple'))
     if val:
         if not multiple:
             val = (val, )
         selected = tuple((to_string(v) for v in val))
     else:
         selected = ()
     if selected and multiple:
         widget.add(self._all_ordered_choices(bfield, selected))
     else:
         widget.add(self._all_choices(bfield, selected))
Exemplo n.º 22
0
 def _clean(self, value, bfield):
     try:
         value = to_string(value)
     except:
         raise ValidationError()
     if self.toslug:
         value = slugify(value, self.toslug)
     if self.char_transform:
         if self.char_transform == 'u':
             value = value.upper()
         else:
             value = value.lower()
     if self.required and not value:
         raise ValidationError(
                 self.validation_error.format(bfield.name,value))
     return value
Exemplo n.º 23
0
 def _clean(self, value, bfield):
     try:
         value = to_string(value)
     except:
         raise ValidationError()
     if self.toslug:
         value = slugify(value, self.toslug)
     if self.char_transform:
         if self.char_transform == 'u':
             value = value.upper()
         else:
             value = value.lower()
     if self.required and not value:
         raise ValidationError(
             self.validation_error.format(bfield.name, value))
     return value
Exemplo n.º 24
0
    def _unwind(self):
        if hasattr(self,'_forms'):
            return
        related_form = self.related_form
        if related_form is None:
            raise ValueError('Related form not specified')
        self.prefix = '{0}_{1}_'.format(related_form.prefix or '', self.name)
        errors = self._errors = {}
        forms = self._forms = []
        is_bound = self.is_bound
        nf = '{0}{1}'.format(self.prefix, self.NUMBER_OF_FORMS_CODE)
        instances = []
        if is_bound:
            if nf not in related_form.rawdata:
                raise ValidationError(\
                    'Could not find number of "{0}" forms'.format(self.name))
            num_forms = int(related_form.rawdata[nf])
        else:
            related = related_form.instance
            num_forms = 0
            if related is not None and related.id:
                if self.instances_from_related:
                    instances = self.instances_from_related(related)
                else:
                    instances = self.mapper.filter(\
                                    **{self.related_name:related})
                instances = list(instances)
                num_forms = self.extra_length + len(instances)
            num_forms = max(num_forms, self.initial_length)
        self.num_forms = HiddenInput(name=nf, value=num_forms)

        for idx,instance in zip_longest(range(num_forms),instances):
            f = self.get_form(self.prefix, idx, instance)
            if f is not None:
                forms.append(f)
                errors.update(f.errors)

        if is_bound and not errors and self.clean:
            try:
                self.clean(self)
            except ValidationError as e:
                self.form.add_error(to_string(e))
Exemplo n.º 25
0
    def _unwind(self):
        if hasattr(self, "_forms"):
            return
        related_form = self.related_form
        if related_form is None:
            raise ValueError("Related form not specified")
        self.prefix = "{0}_{1}_".format(related_form.prefix or "", self.name)
        errors = self._errors = {}
        forms = self._forms = []
        is_bound = self.is_bound
        nf = "{0}{1}".format(self.prefix, self.NUMBER_OF_FORMS_CODE)
        instances = []
        if is_bound:
            if nf not in related_form.rawdata:
                raise ValidationError('Could not find number of "{0}" forms'.format(self.name))
            num_forms = int(related_form.rawdata[nf])
        else:
            related = related_form.instance
            num_forms = 0
            if related is not None and related.id:
                if self.instances_from_related:
                    instances = self.instances_from_related(related)
                else:
                    instances = self.mapper.filter(**{self.related_name: related})
                instances = list(instances)
                num_forms = self.extra_length + len(instances)
            num_forms = max(num_forms, self.initial_length)
        self.num_forms = HiddenInput(name=nf, value=num_forms)

        for idx, instance in zip_longest(range(num_forms), instances):
            f = self.get_form(self.prefix, idx, instance)
            if f is not None:
                forms.append(f)
                errors.update(f.errors)

        if is_bound and not errors and self.clean:
            try:
                self.clean(self)
            except ValidationError as e:
                self.form.add_error(to_string(e))
Exemplo n.º 26
0
 def __unicode__(self):
     return to_string(self.__class__.__name__)
Exemplo n.º 27
0
 def __lt__(self, other):
     if isinstance(other,self.__class__):
         return to_string(self) < to_string(other)
     else:
         raise TypeError('Cannot compare {0} with {1}'.format(self,other))
Exemplo n.º 28
0
 def __unicode__(self):
     return to_string(self.tocss())
Exemplo n.º 29
0
 def tzname(self, dt):
     try:
         return to_string(time.tzname[self._isdst(dt)],
                          DEFAULT_LOCALE_ENCODING)
     except UnicodeDecodeError:
         return None
Exemplo n.º 30
0
 def __repr__(self):
     return to_string(self._tzname)
Exemplo n.º 31
0
 def title(self, request):
     m = request.urlargs["month"]
     m = self.appmodel.get_month_number(m)
     return to_string(MONTHS[m])
Exemplo n.º 32
0
 def test_force_str(self):
     ts = b'test string'
     self.assertEqual(to_string(ts), 'test string')
Exemplo n.º 33
0
 def get_month_value(self, month):
     return to_string(MONTHS_3.get(month))
Exemplo n.º 34
0
 def title(self, request):
     m = request.urlargs['month']
     m = self.appmodel.get_month_number(m)
     return to_string(MONTHS[m])
Exemplo n.º 35
0
 def get_month_value(self, month):
     return to_string(MONTHS_3.get(month))
Exemplo n.º 36
0
 def __repr__(self):
     return to_string(self._tzname)
Exemplo n.º 37
0
def format(value, format_string):
    "Convenience function"
    df = DateFormat(value)
    return to_string(df.format(format_string))
Exemplo n.º 38
0
 def pieces(self, formatstr):
     for i, piece in enumerate(re_formatchars.split(to_string(formatstr))):
         if i % 2:
             yield to_string(getattr(self, piece)())
         elif piece:
             yield re_escaped.sub(r'\1', piece)
Exemplo n.º 39
0
 def tzname(self, dt):
     try:
         return to_string(time.tzname[self._isdst(dt)], DEFAULT_LOCALE_ENCODING)
     except UnicodeDecodeError:
         return None
Exemplo n.º 40
0
 def test_force_str(self):
     ts = b'test string'
     self.assertEqual(to_string(ts), 'test string')
Exemplo n.º 41
0
 def __lt__(self, other):
     if isinstance(other, self.__class__):
         return to_string(self) < to_string(other)
     else:
         raise TypeError("Cannot compare {0} with {1}".format(self, other))