Beispiel #1
0
def ru_strftime(date, format="%d.%m.%Y", inflected_day=False, preposition=False):
    """
    Russian strftime, formats date with given format.

    Value is a date (supports datetime.date and datetime.datetime),
    parameter is a format (string). For explainings about format,
    see documentation for original strftime:
    http://docs.python.org/lib/module-time.html

    Examples::
        {{ some_date|ru_strftime:"%d %B %Y, %A" }}
    """
    try:
        uformat = pseudo_unicode(format, encoding, u"%d.%m.%Y")
        ures = dt.ru_strftime(uformat,
                              date,
                              inflected=True,
                              inflected_day=inflected_day,
                              preposition=preposition)
        res = pseudo_str(ures, encoding)
    except Exception, err:
        # because filter must die silently
        try:
            default_date = date.strftime(format)
        except Exception:
            default_date = str(date)
        res = default_value % {'error': err, 'value': default_date}
Beispiel #2
0
def ru_strftime(date, format="%d.%m.%Y", inflected_day=False, preposition=False):
    """
    Russian strftime, formats date with given format.

    Value is a date (supports datetime.date and datetime.datetime),
    parameter is a format (string). For explainings about format,
    see documentation for original strftime:
    http://docs.python.org/lib/module-time.html

    Examples::
        {{ some_date|ru_strftime:"%d %B %Y, %A" }}
    """
    try:
        uformat = pseudo_unicode(format, encoding, u"%d.%m.%Y")
        ures = dt.ru_strftime(uformat,
                              date,
                              inflected=True,
                              inflected_day=inflected_day,
                              preposition=preposition)
        res = pseudo_str(ures, encoding)
    except Exception, err:
        # because filter must die silently
        try:
            default_date = date.strftime(format)
        except Exception:
            default_date = str(date)
        res = default_value % {'error': err, 'value': default_date}
Beispiel #3
0
def sum_string(amount, gender, items):
    """
    in_words and choose_plural in a one flask
    Makes in-words representation of value with
    choosing correct form of noun.

    First parameter is an amount of objects. Second is a
    gender (MALE, FEMALE, NEUTER). Third is a variants
    of forms for object name.

    Examples::
        {% sum_string some_int MALE "пример,примера,примеров" %}
        {% sum_string some_other_int FEMALE "задача,задачи,задач" %}
    """
    try:
        if isinstance(items, basestring):
            uitems = pseudo_unicode(items, encoding, default_uvalue)
        else:
            uitems = [pseudo_unicode(i, encoding, default_uvalue) for i in items]
        ures = numeral.sum_string(amount, getattr(numeral, str(gender), None), uitems)
        res = pseudo_str(
                ures,
                encoding,
                default_value
            )
    except Exception, err:
        # because tag's renderer must die silently
        res = default_value % {'error': err, 'value': str(amount)}
Beispiel #4
0
def get_plural(amount, variants):
    """
    Get proper form for plural and it value.

    Value is a amount, parameters are forms of noun.
    Forms are variants for 1, 2, 5 nouns. It may be tuple
    of elements, or string where variants separates each other
    by comma. You can append 'absence variant' after all over variants

    Examples::
        {{ some_int|get_plural:"пример,примера,примеров,нет примеров" }}
    """
    try:
        if isinstance(variants, basestring):
            uvariants = pseudo_unicode(variants, encoding, default_value)
        else:
            uvariants = [pseudo_unicode(v, encoding, default_uvalue) for v in variants]
        ures = numeral._get_plural_legacy(amount, uvariants)
        res = pseudo_str(
            ures,
            encoding,
            default_value
            )
    except Exception, err:
        # because filter must die silently
        try:
            default_variant = variants
        except Exception:
            default_variant = ""
        res = default_value % {'error': err, 'value': default_variant}
Beispiel #5
0
def distance_of_time(from_time, accuracy=1):
    """
    Display distance of time from current time.

    Parameter is an accuracy level (deafult is 1).
    Value must be numeral (i.e. time.time() result) or
    datetime.datetime (i.e. datetime.datetime.now()
    result).

    Examples::
        {{ some_time|distance_of_time }}
        {{ some_dtime|distance_of_time:2 }}
    """
    try:
        ures = dt.distance_of_time_in_words(from_time, accuracy)
        res = pseudo_str(
                ures,
                encoding,
                default_value)
    except Exception, err:
        # because filter must die silently
        try:
            default_distance = "%s seconds" % str(int(time.time() - from_time))
        except Exception:
            default_distance = ""
        res = default_value % {'error': err, 'value': default_distance}
def sum_string(amount, gender, items):
    """
    in_words and choose_plural in a one flask
    Makes in-words representation of value with
    choosing correct form of noun.

    First parameter is an amount of objects. Second is a
    gender (MALE, FEMALE, NEUTER). Third is a variants
    of forms for object name.

    Examples::
        {% sum_string some_int MALE "пример,примера,примеров" %}
        {% sum_string some_other_int FEMALE "задача,задачи,задач" %}
    """
    try:
        if isinstance(items, basestring):
            uitems = pseudo_unicode(items, encoding, default_uvalue)
        else:
            uitems = [
                pseudo_unicode(i, encoding, default_uvalue) for i in items
            ]
        ures = numeral.sum_string(amount, getattr(numeral, str(gender), None),
                                  uitems)
        res = pseudo_str(ures, encoding, default_value)
    except Exception, err:
        # because tag's renderer must die silently
        res = default_value % {'error': err, 'value': str(amount)}
Beispiel #7
0
def choose_plural_amount(amount, variants):
    """
    Choose proper form for plural.

    Value is a amount, parameters are forms of noun.
    Forms are variants for 1, 2, 5 nouns. It may be tuple
    of elements, or string where variants separates each other
    by comma.

    Examples::
        {{ some_int|choose_plural:"пример,примера,примеров" }}
    """
    try:
        if isinstance(variants, basestring):
            uvariants = pseudo_unicode(variants, encoding, default_value)
        else:
            uvariants = [pseudo_unicode(v, encoding, default_uvalue) for v in variants]
        ures = numeral.choose_plural_amount(amount, uvariants)
        res = pseudo_str(
                ures,
                encoding,
                default_value
                )
    except Exception, err:
        # because filter must die silently
        try:
            default_variant = variants
        except Exception:
            default_variant = ""
        res = default_value % {'error': err, 'value': default_variant}
def get_plural(amount, variants):
    """
    Get proper form for plural and it value.

    Value is a amount, parameters are forms of noun.
    Forms are variants for 1, 2, 5 nouns. It may be tuple
    of elements, or string where variants separates each other
    by comma. You can append 'absence variant' after all over variants

    Examples::
        {{ some_int|get_plural:"пример,примера,примеров,нет примеров" }}
    """
    try:
        if isinstance(variants, basestring):
            uvariants = pseudo_unicode(variants, encoding, default_value)
        else:
            uvariants = [
                pseudo_unicode(v, encoding, default_uvalue) for v in variants
            ]
        ures = numeral._get_plural_legacy(amount, uvariants)
        res = pseudo_str(ures, encoding, default_value)
    except Exception, err:
        # because filter must die silently
        try:
            default_variant = variants
        except Exception:
            default_variant = ""
        res = default_value % {'error': err, 'value': default_variant}
Beispiel #9
0
def distance_of_time(from_time, accuracy=1):
    """
    Display distance of time from current time.

    Parameter is an accuracy level (deafult is 1).
    Value must be numeral (i.e. time.time() result) or
    datetime.datetime (i.e. datetime.datetime.now()
    result).

    Examples::
        {{ some_time|distance_of_time }}
        {{ some_dtime|distance_of_time:2 }}
    """
    try:
        ures = dt.distance_of_time_in_words(from_time, accuracy)
        res = pseudo_str(
                ures,
                encoding,
                default_value)
    except Exception, err:
        # because filter must die silently
        try:
            default_distance = "%s seconds" % str(int(time.time() - from_time))
        except Exception:
            default_distance = ""
        res = default_value % {'error': err, 'value': default_distance}
def detranslify(stext):
    """Detranslify russian text"""
    try:
        ures = translit.detranslify(stext)
        res = pseudo_str(ures, encoding, default_uvalue)
    except Exception, err:
        # because filter must die silently
        res = default_value % {'error': err, 'value': stext}
Beispiel #11
0
def rubles(amount, zero_for_kopeck=False):
    """Converts float value to in-words representation (for money)"""
    try:
        ures = numeral.rubles(amount, zero_for_kopeck)
        res = pseudo_str(ures, encoding, default_value)
    except Exception, err:
        # because filter must die silently
        res = default_value % {"error": err, "value": str(amount)}
Beispiel #12
0
def detranslify(stext):
    """Detranslify russian text"""
    try:
        ures = translit.detranslify(stext)
        res = pseudo_str(ures, encoding, default_uvalue)
    except Exception, err:
        # because filter must die silently
        res = default_value % {"error": err, "value": stext}
def rubles(amount, zero_for_kopeck=False):
    """Converts float value to in-words representation (for money)"""
    try:
        ures = numeral.rubles(amount, zero_for_kopeck)
        res = pseudo_str(ures, encoding, default_value)
    except Exception, err:
        # because filter must die silently
        res = default_value % {'error': err, 'value': str(amount)}
Beispiel #14
0
 def testPseudoStr(self):
     """
     Unit-tests for pytils.templatetags.pseudo_str
     """
     # in django unicode-branch either str() must return unicode
     # this test depends on Django unicode awareness
     if tt.unicode_aware:
         self.assertEquals(tt.pseudo_str(u'тест', 'utf-8'), u'тест')
         self.assertEquals(tt.pseudo_str(u'тест', 'utf-8'), u'тест')
         self.assertEquals(tt.pseudo_str('тест', 'utf-8'), '')
         self.assertEquals(tt.pseudo_str('тест', 'utf-8', u'опа'), u'опа')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii'), u'тест')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii', 'опа'), u'тест')
     else:
         self.assertEquals(tt.pseudo_str(u'тест', 'utf-8'), 'тест')
         self.assertEquals(tt.pseudo_str('тест', 'utf-8'), '')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii'), '')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii', 'опа'), 'опа')
         self.assertRaises(UnicodeEncodeError, tt.pseudo_str, u'тест', 'ascii', None)
Beispiel #15
0
 def testPseudoStr(self):
     """
     Unit-tests for pytils.templatetags.pseudo_str
     """
     # in django unicode-branch either str() must return unicode
     # this test depends on Django unicode awareness
     if tt.unicode_aware:
         self.assertEquals(tt.pseudo_str(u'тест', 'utf-8'), u'тест')
         self.assertEquals(tt.pseudo_str(u'тест', 'utf-8'), u'тест')
         self.assertEquals(tt.pseudo_str('тест', 'utf-8'), '')
         self.assertEquals(tt.pseudo_str('тест', 'utf-8', u'опа'), u'опа')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii'), u'тест')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii', 'опа'), u'тест')
     else:
         self.assertEquals(tt.pseudo_str(u'тест', 'utf-8'), 'тест')
         self.assertEquals(tt.pseudo_str('тест', 'utf-8'), '')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii'), '')
         self.assertEquals(tt.pseudo_str(u'тест', 'ascii', 'опа'), 'опа')
         self.assertRaises(UnicodeEncodeError, tt.pseudo_str, u'тест', 'ascii', None)
Beispiel #16
0
def in_words(amount, gender=None):
    """
    In-words representation of amount.

    Parameter is a gender: MALE, FEMALE or NEUTER

    Examples::
        {{ some_int|in_words }}
        {{ some_other_int|in_words:FEMALE }}
    """
    try:
        ures = numeral.in_words(amount, getattr(numeral, str(gender), None))
        res = pseudo_str(ures, encoding, default_value)
    except Exception, err:
        # because filter must die silently
        res = default_value % {"error": err, "value": str(amount)}
def in_words(amount, gender=None):
    """
    In-words representation of amount.

    Parameter is a gender: MALE, FEMALE or NEUTER

    Examples::
        {{ some_int|in_words }}
        {{ some_other_int|in_words:FEMALE }}
    """
    try:
        ures = numeral.in_words(amount, getattr(numeral, str(gender), None))
        res = pseudo_str(ures, encoding, default_value)
    except Exception, err:
        # because filter must die silently
        res = default_value % {'error': err, 'value': str(amount)}
Beispiel #18
0
def ru_strftime_month(date, format="%B", inflected_day=False, preposition=False):
    """
    Cover for ru_strftime from pytils. Differences: inflected=False and another format by default
    """
    try:
        uformat = pseudo_unicode(format, encoding, u"%d.%m.%Y")
        ures = dt.ru_strftime(uformat,
                              date,
                              inflected=False,
                              inflected_day=inflected_day,
                              preposition=preposition)
        res = pseudo_str(ures, encoding)
    except Exception, err:
        # because filter must die silently
        try:
            default_distance = "%s seconds" % str(int(time.time() - from_time))
        except Exception:
            default_distance = ""
        res = default_value % {'error': err, 'value': default_distance}
Beispiel #19
0
def in_words_ordinal(amount, gender=None):
    """
    In-words representation of amount (ordinal numbers).

    Parameter is a gender: MALE (default), FEMALE or NEUTER

    Examples::
        {{ some_int|in_words_ordinal }}
        {{ some_other_int|in_words_ordinal:FEMALE }}
    """
    try:
        ures = numeral.in_words_ordinal(amount, getattr(numeral, str(gender), None))
        res = pseudo_str(
                ures,
                encoding,
                default_value
            )
    except Exception, err:
        # because filter must die silently
        res = default_value % {'error': err, 'value': str(amount)}
Beispiel #20
0
def pstr(ustr):
    """
    Provide/Pseudo unicode
    """
    return pseudo_str(ustr, encoding, None)
Beispiel #21
0
def pstr(ustr):
    """
    Provide/Pseudo unicode
    """
    return pseudo_str(ustr, encoding, None)