Example #1
0
def money(decimal):
    if decimal == "":
        return ""
    if type(decimal) is str:
        decimal = Decimal(decimal)
    locale.setlocale(locale.LC_ALL, (to_locale(get_language()), "utf-8"))
    return locale.currency(decimal, True, True)
Example #2
0
    def _media(self):

        js = ["js/bootstrap-datetimepicker.js"]

        language = get_supported_language(get_language())
        if language != 'en':
            js.append("js/locales/bootstrap-datetimepicker.%s.js" % language)

        return widgets.Media(css={'all': ('css/datetimepicker.css', )}, js=js)
    def to_local(self):
        """
This method have to be called on every request call, because adapt the datetime format to the user.
!!! It work only if USE_L10N is set TRUE and localize middleware is active.!!!
otherwise get_format use the server format.
"""
        pattern = re.compile(r'(?<!\w)(' + '|'.join(dateConversiontoJavascript.keys()) + r')\b')
        self.format = get_format('DATETIME_INPUT_FORMATS')[0]
        if hasattr(self, 'widgets') and self.widgets[0]:
            self.widgets[0].format = self.format
        self.option = (pattern.sub(lambda x: dateConversiontoJavascript[x.group()], self.format),) + self.option[1:]
        self.language = get_language()
 def to_local(self):
     """
     This method have to be called on every request call, because adapt the datetime format to the user.
     !!! It work only if USE_L10N is set TRUE and localize middleware is active.!!!
     otherwise get_format use the server format.
     """
     pattern = re.compile(r'(?<!\w)(' + '|'.join(dateConversiontoJavascript.keys()) + r')\b')
     self.format = get_format('TIME_INPUT_FORMATS')[0]
     if hasattr(self, 'widgets') and self.widgets[0]:
         self.widgets[0].format = self.format
     self.option = (pattern.sub(lambda x: dateConversiontoJavascript[x.group()], self.format),) + self.option[1:]
     self.language = get_language()
Example #5
0
    def __init__(self, attrs=None, options=None, usel10n=None, bootstrap_version=None):

        if bootstrap_version in [2,3]:
            self.bootstrap_version = bootstrap_version
        else:
            # default 2 to mantain support to old implemetation of django-datetime-widget
            self.bootstrap_version = 2

        if attrs is None:
            attrs = {'readonly': ''}

        self.options = options

        self.is_localized = False
        self.format = None

        # We want to have a Javascript style date format specifier in the options dictionary and we
        # want a Python style date format specifier as a member variable for parsing the date string
        # from the form data
        if usel10n is True:
            # If we're doing localisation, get the local Python date format and convert it to
            # Javascript data format for the options dictionary
            self.is_localized = True

            # Get format from django format system
            self.format = get_format(self.format_name)[0]

            # Convert Python format specifier to Javascript format specifier
            self.options['format'] = toJavascript_re.sub(
                lambda x: dateConversiontoJavascript[x.group()],
                self.format
                )

            # Set the local language
            self.options['language'] = get_supported_language(get_language())

        else:

            # If we're not doing localisation, get the Javascript date format provided by the user,
            # with a default, and convert it to a Python data format for later string parsing
            format = self.options['format']
            self.format = toPython_re.sub(
                lambda x: dateConversiontoPython[x.group()],
                format
                )

        super(PickerWidgetMixin, self).__init__(attrs, format=self.format)

        final_attrs = self.build_attrs(attrs)
        self.id = final_attrs.get('id', uuid.uuid4().hex)
Example #6
0
    def __init__(self, attrs=None, options=None, usel10n=None):

        if attrs is None:
            attrs = {}

        self.options = options
        self.options['language'] = get_language().split('-')[0]

        # We're not doing localisation, get the Javascript date format provided by the user,
        # with a default, and convert it to a Python data format for later string parsing
        date_format = self.options['format']
        self.format = DATE_FORMAT_TO_PYTHON_REGEX.sub(
            lambda x: DATE_FORMAT_JS_PY_MAPPING[x.group()], date_format)

        super(PickerWidgetMixin, self).__init__(attrs, format=self.format)
Example #7
0
    def _media(self):

        js = ["js/bootstrap-datetimepicker.js"]

        #language = self.options.get('language', 'en')
        language = get_supported_language(get_language())
        self.options['language'] = language

        if language != 'en':
            js.append("js/locales/bootstrap-datetimepicker.%s.js" % language)

        self.options['format'] = toJavascript_re.sub(
            lambda x: dateConversiontoJavascript[x.group()],
            get_format(self.format_name)[0])

        return widgets.Media(css={'all': ('css/datetimepicker.css', )}, js=js)
    def __init__(self, attrs=None, options=None, usel10n=None, bootstrap_version=None):

        if bootstrap_version in [2,3]:
            self.bootstrap_version = bootstrap_version
        else:
            # default 2 to mantain support to old implemetation of django-datetime-widget
            self.bootstrap_version = 2

        if attrs is None:
            attrs = {'readonly': ''}

        self.options = options

        self.is_localized = False
        self.format = None

        # We want to have a Javascript style date format specifier in the options dictionary and we
        # want a Python style date format specifier as a member variable for parsing the date string
        # from the form data
        if usel10n is True:
            # If we're doing localisation, get the local Python date format and convert it to
            # Javascript data format for the options dictionary
            self.is_localized = True

            # Get format from django format system
            self.format = get_format(self.format_name)[0]

            # Convert Python format specifier to Javascript format specifier
            self.options['format'] = toJavascript_re.sub(
                lambda x: dateConversiontoJavascript[x.group()],
                self.format
                )

            # Set the local language
            self.options['language'] = get_supported_language(get_language())

        else:

            # If we're not doing localisation, get the Javascript date format provided by the user,
            # with a default, and convert it to a Python data format for later string parsing
            format = self.options['format']
            self.format = toPython_re.sub(
                lambda x: dateConversiontoPython[x.group()],
                format
                )

        super(PickerWidgetMixin, self).__init__(attrs, format=self.format)
Example #9
0
    def __init__(self, project, year, month, start_date, end_date, make_link):
        super(FieldHTMLCalendar, self).__init__(
            locale=(to_locale(get_language()), "utf-8")
        )
        self.project = project
        self.year = year
        self.month = month
        self.today = date.today()
        self.make_link = make_link

        plans = (
            DailyPlan.objects.filter(
                jobsite__project=project, day__lt=end_date, day__gt=start_date
            )
            .values("day")
            .annotate(plans=Count("day"))
        )

        self.plans = dict([(p["day"], p["plans"]) for p in plans])
Example #10
0
    def options(self):
        options = GLOBAL_OPTIONS.copy()
        options.update(self.custom_options)

        #Overrides options lang with django discover lang system
        if options['django_lang'] == True:
            options['lang'] = get_language()

        if self.allow_file_upload:
            options['fileUpload'] = reverse_lazy(
                'redactor_upload_file',
                kwargs={'upload_to': self.upload_to}
            )
        if self.allow_image_upload:
            options['imageUpload'] = reverse_lazy(
                'redactor_upload_image',
                kwargs={'upload_to': self.upload_to}
            )
        return options
Example #11
0
def ubrdecimal(number, max_significant=4, min_significant=2):

    if number == "" or number is None:
        return ""

    if type(number) is str:
        number = Decimal(number)

    number = round(number, max_significant)

    lang = get_language()
    radix = get_format("DECIMAL_SEPARATOR", lang, use_l10n=True)
    grouping = get_format("NUMBER_GROUPING", lang, use_l10n=True)
    thousand_sep = get_format("THOUSAND_SEPARATOR", lang, use_l10n=True)

    # sign
    sign = ""
    str_number = "{:f}".format(number)
    if str_number[0] == "-":
        sign = "-"
        str_number = str_number[1:]

    # decimal part
    if "." in str_number:
        int_part, dec_part = str_number.split(".")
        dec_part = dec_part.rstrip("0").ljust(min_significant, "0")
    else:
        int_part, dec_part = str_number, ""

    if dec_part:
        dec_part = radix + dec_part

    # grouping
    int_part_gd = ""
    for cnt, digit in enumerate(int_part[::-1]):
        if cnt and not cnt % grouping:
            int_part_gd += thousand_sep[::-1]
        int_part_gd += digit
    int_part = int_part_gd[::-1]

    return sign + int_part + dec_part
Example #12
0
    def _media(self):

        js = ["js/bootstrap-datetimepicker.js"]

        #language = self.options.get('language', 'en')
        language = get_supported_language(get_language())
        self.options['language'] = language

        if language != 'en':
            js.append("js/locales/bootstrap-datetimepicker.%s.js" % language)

        self.options['format'] = toJavascript_re.sub(
            lambda x: dateConversiontoJavascript[x.group()],
            get_format(self.format_name)[0]
        )

        return widgets.Media(
            css={
                'all': ('css/datetimepicker.css',)
                },
            js=js
            )
Example #13
0
    def render(self, name, value, attrs=None, renderer=None):
        final_attrs = self.build_attrs(attrs)
        rendered_widget = super(PickerWidgetMixin,
                                self).render(name, value, final_attrs,
                                             renderer)

        language = get_supported_language(get_language())
        self.options['language'] = language

        if self.usel10n or not self.format:
            self.format = get_format(self.format_name)[0]
            self.options['format'] = toJavascript_re.sub(
                lambda x: dateConversiontoJavascript[x.group()], self.format)

        #if not set, autoclose have to be true.
        self.options.setdefault('autoclose', True)

        # Build javascript options out of python dictionary
        options_list = []
        for key, value in iter(self.options.items()):
            options_list.append("%s: %s" % (key, quote(key, value)))

        js_options = ",\n".join(options_list)

        # Use provided id or generate hex to avoid collisions in document
        id = final_attrs.get('id', uuid.uuid4().hex)

        clearBtn = quote('clearBtn', self.options.get('clearBtn',
                                                      'true')) == 'true'

        return mark_safe(
            BOOTSTRAP_INPUT_TEMPLATE[self.bootstrap_version] %
            dict(id=id,
                 rendered_widget=rendered_widget,
                 clear_button=CLEAR_BTN_TEMPLATE[self.bootstrap_version]
                 if clearBtn else "",
                 glyphicon=self.glyphicon,
                 options=js_options))
Example #14
0
    def _media(self):

        js = (
            'redactor/jquery.redactor.init.js',
            'redactor/redactor{0}.js'.format('' if settings.DEBUG else '.min'),
            # Loads proper lang js
            'redactor/langs/{0}.js'.format(get_language() if self.options['django_lang'] else GLOBAL_OPTIONS.get('lang', 'en')),
        )

        if 'plugins' in self.options:
            plugins = self.options.get('plugins')
            for plugin in plugins:
                js = js + (
                    'redactor/plugins/{0}.js'.format(plugin),
                )

        css = {
            'all': (
                'redactor/css/redactor.css',
                'redactor/css/django_admin.css',
            )
        }
        return forms.Media(css=css, js=js)