Пример #1
0
    def filter_date(self, today, date, query, fieldname="created_at"):
        if date is None:
            return query

        if isinstance(date, tuple):
            first_date = date[0] and template_localtime(datetime.strptime(date[0], '%Y-%m-%d'))
            last_date = date[1] and template_localtime(datetime.strptime(date[1], '%Y-%m-%d'))
            if first_date and last_date:
                if first_date > last_date:
                    first_date, last_date = last_date, first_date
                kwargs = {"%s__range" % fieldname: (first_date, last_date)}
            elif first_date:
                kwargs = {"%s__gte" % fieldname: first_date}
            elif last_date:
                kwargs = {"%s__lte" % fieldname: last_date}
            else:
                return query
            return query.filter(**kwargs)

        elif date.endswith('_week'):
            if date.startswith('previous_'):
                last_date = today - timedelta(days=today.weekday())
                first_date = last_date - timedelta(days=7)
            else:
                first_date = today - timedelta(days=today.weekday())
                last_date = today
            kwargs = {"%s__range" % fieldname: (first_date, last_date)}
            return query.filter(**kwargs)

        elif date.endswith('_month'):
            year = today.year
            month = today.month
            if date.startswith('previous_'):
                if month == 1:
                    month = 12
                    year -= 1
                else:
                    month -= 1
            kwargs = {
                "%s__year" % fieldname: year,
                "%s__month" % fieldname: month,
            }
            return query.filter(**kwargs)

        elif date.endswith('_year'):
            year = today.year
            month = today.month
            if date.startswith('previous_'):
                year -= 1
            kwargs = {
                "%s__year" % fieldname: year,
            }
            return query.filter(**kwargs)

        return query
Пример #2
0
def display_for_field(value, field):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon
    from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE

    if field.flatchoices:
        return dict(field.flatchoices).get(value, EMPTY_CHANGELIST_VALUE)
    # NullBooleanField needs special-case null-handling, so it comes
    # before the general null test.
    elif isinstance(field, models.BooleanField) or isinstance(field, models.NullBooleanField):
        return _boolean_icon(value)
    elif value is None:
        return EMPTY_CHANGELIST_VALUE
    elif isinstance(field, models.DateTimeField):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(field, (models.DateField, models.TimeField)):
        return formats.localize(value)
    elif isinstance(field, models.DecimalField):
        return formats.number_format(value, field.decimal_places)
    elif isinstance(field, models.FloatField):
        return formats.number_format(value)
    elif isinstance(field, models.FileField) and value:
        return mark_safe('<a href="%s">%s</a>' % (
            conditional_escape(value.url),
            conditional_escape(value),
        ))
    else:
        return smart_text(value)
Пример #3
0
    def default(self, o):
        # See "Date Time String Format" in the ECMA-262 specification.
        if isinstance(o, datetime.datetime):
            t = template_localtime(o, settings.USE_TZ)
            r = t.strftime('%Y-%m-%d %H:%M:%S')
            return r

        elif isinstance(o, datetime.date):
            return o.isoformat()

        elif isinstance(o, datetime.time):
            # if is_aware(o):
            #    raise ValueError("JSON can't represent timezone-aware times.")
            r = o.isoformat()
            if o.microsecond:
                r = r[:12]
            return r

        elif hasattr(o, 'to_dict'):
            return o.to_dict()

        elif isinstance(o, QuerySet):
            return list(o)

        else:
            try:
                return super(JSONEncoder, self).default(o)
            except:
                return str(o)
Пример #4
0
 def _reversion_revisionform_view(self, request, version, template_name, extra_context=None):
     # Check that database transactions are supported.
     if not connection.features.uses_savepoints:
         raise ImproperlyConfigured("Cannot use VersionAdmin with a database that does not support savepoints.")
     # Run the view.
     try:
         with transaction.atomic(using=version.db):
             # Revert the revision.
             version.revision.revert(delete=True)
             # Run the normal changeform view.
             with self.create_revision(request):
                 response = self.changeform_view(request, version.object_id, request.path, extra_context)
                 # Decide on whether the keep the changes.
                 if request.method == "POST" and response.status_code == 302:
                     set_comment(_("Reverted to previous version, saved on %(datetime)s") % {
                         "datetime": localize(template_localtime(version.revision.date_created)),
                     })
                 else:
                     response.template_name = template_name  # Set the template name to the correct template.
                     response.render()  # Eagerly render the response, so it's using the latest version.
                     raise _RollBackRevisionView(response)  # Raise exception to undo the transaction and revision.
     except RevertError as ex:
         opts = self.model._meta
         messages.error(request, force_text(ex))
         return redirect("{}:{}_{}_changelist".format(self.admin_site.name, opts.app_label, opts.model_name))
     except _RollBackRevisionView as ex:
         return ex.response
     return response
Пример #5
0
def jinja_date_filter(d, fmt = "%d/%b/%y %I:%M%p"):
	if not d:
		return ''
	d = timezone.template_localtime(d)
	
	if fmt == '%s':
		return calendar.timegm(d.utctimetuple())
	return d.strftime(fmt)
Пример #6
0
def timerange(occurrence, arg=None):
    default_fmt = settings.TIME_FORMAT
    tf = formats.time_format
    try:
        tf(occurrence.start, 'a')
    except AttributeError:
        tf = time_format
    start = template_localtime(occurrence.start)
    end = template_localtime(occurrence.end)
    try:
        start_ampm = tf(start, 'a')
        end_ampm = tf(end, 'a')
        if start_ampm == end_ampm:
            return "{0}–{1}".format(tf(start, 'g'), tf(end, default_fmt))
        else:
            return "{0}–{1}".format(tf(start, default_fmt), tf(end, default_fmt))
    except AttributeError:
        return ''
Пример #7
0
 def summary(self, obj):
     return format_html('<h3><a href="{}">#{} &mdash; {}: {}</a></h3><p><strong>Created: {} | Location: {}</strong></p><p style="font-weight: normal;">{}</p>',
                     reverse('admin:vincent_incidentreport_change', args=[obj.pk]),
                     obj.pk,
                     obj.get_scope_display(),
                     obj.get_nature_display(),
                     template_localtime(obj.created).strftime("%-I:%M:%S %p, %b %-d"),
                     obj.polling_location,
                     truncatewords(obj.description, 60))
Пример #8
0
 def _raw_to_verbose(self, raw):
     verbose = raw
     if isinstance(raw, bool):
         verbose = raw and ugettext('yes') or ugettext('no')
     elif isinstance(raw, datetime.datetime):
         verbose = formats.localize(timezone.template_localtime(raw))
     elif isinstance(raw, (datetime.date, datetime.time)):
         verbose = formats.localize(raw)
     return verbose
Пример #9
0
 def render(self, context):
     try:
         output = self.filter_expression.resolve(context)
         output = template_localtime(output, use_tz=context.use_tz)
         output = localize(output, use_l10n=context.use_l10n)
         output = force_unicode(output)
     except UnicodeDecodeError:
         return ''
     except Exception, e:
         if not hasattr(e, 'django_template_source'):
             e.django_template_source = self.source
         raise
Пример #10
0
def render_value_in_context(value, context):
    """
    Converts any value to a string to become part of a rendered template. This
    means escaping, if required, and conversion to a string. If value is a
    string, it's expected to already be translated.
    """
    value = template_localtime(value, use_tz=context.use_tz)
    value = localize(value, use_l10n=context.use_l10n)
    value = force_text(value)
    if context.autoescape:
        return conditional_escape(value)
    else:
        return value
Пример #11
0
 def format_column(self, item, field_name, value):
     if value is None:
         return self.empty_value_display
     elif isinstance(value, datetime.datetime):
         return formats.localize(timezone.template_localtime(value))
     elif isinstance(value, (datetime.date, datetime.time)):
         return formats.localize(value)
     elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
         return formats.number_format(value)
     elif isinstance(value, (list, tuple)):
         return ', '.join(force_text(v) for v in value)
     else:
         return force_text(value)
Пример #12
0
def accept_terms(request):
    vendor = Vendor.get_or_create_vendor(request)
    if vendor.terms_accepted is None:
        vendor.terms_accepted = timezone.now()
        vendor.save(update_fields=("terms_accepted",))

    result = timezone.template_localtime(vendor.terms_accepted)
    result = localize(result)

    return HttpResponse(json.dumps({
        "result": "ok",
        "time": result,
    }), "application/json")
Пример #13
0
def daterange(occurrences, arg=None):
    default_fmt = arg or settings.DATE_FORMAT
    df = format
    first = template_localtime(occurrences[0].start)
    last = template_localtime(occurrences[-1].start)

    try:
        if len(occurrences) == 1:
            return df(first, default_fmt)
        else:
            first_month = df(first, 'F')
            last_month = df(last, 'F')
            if len(occurrences) > 2:
                delim = "–"
            else:
                delim = " & "
            if first_month == last_month:
                return "{0}{1}{2}".format(df(first, default_fmt), delim, df(last, 'j'))
            else:
                return "{0}{1}{2}".format(df(first, default_fmt), delim, df(last, default_fmt))
    except AttributeError:
        return ''
Пример #14
0
def render_value_in_context(value, context):
    """
    Converts any value to a string to become part of a rendered template. This
    means escaping, if required, and conversion to a unicode object. If value
    is a string, it is expected to have already been translated.
    """
    value = template_localtime(value, use_tz=context.use_tz)
    value = localize(value, use_l10n=context.use_l10n)
    value = force_text(value)
    if (context.autoescape and not isinstance(value, SafeData)) or isinstance(value, EscapeData):
        return escape(value)
    else:
        return value
Пример #15
0
 def _get_verbose_value(self, raw, field_or_method, obj, **kwargs):
     if hasattr(field_or_method, 'humanized') and field_or_method.humanized:
         return field_or_method.humanized(raw, obj, **kwargs)
     elif hasattr(field_or_method, 'choices') and field_or_method.choices:
         return getattr(obj, 'get_{}_display'.format(field_or_method.attname))()
     if isinstance(raw, bool):
         return raw and ugettext('Yes') or ugettext('No')
     elif isinstance(raw, datetime.datetime):
         return formats.localize(timezone.template_localtime(raw))
     elif isinstance(raw, (datetime.date, datetime.time)):
         return formats.localize(raw)
     else:
         return raw
Пример #16
0
 def resolve(self, context, ignore_failures=False):
     if isinstance(self.var, Variable):
         try:
             obj = self.var.resolve(context)
         except VariableDoesNotExist:
             if ignore_failures:
                 obj = None
             else:
                 string_if_invalid = context.template.engine.string_if_invalid
                 if string_if_invalid:
                     if '%s' in string_if_invalid:
                         return string_if_invalid % self.var
                     else:
                         return string_if_invalid
                 else:
                     obj = string_if_invalid
     else:
         obj = self.var
     escape_isnt_last_filter = True
     for func, args in self.filters:
         arg_vals = []
         for lookup, arg in args:
             if not lookup:
                 arg_vals.append(mark_safe(arg))
             else:
                 arg_vals.append(arg.resolve(context))
         if getattr(func, 'expects_localtime', False):
             obj = template_localtime(obj, context.use_tz)
         if getattr(func, 'needs_autoescape', False):
             new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
         else:
             new_obj = func(obj, *arg_vals)
         if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
             obj = mark_safe(new_obj)
         elif isinstance(obj, EscapeData):
             with warnings.catch_warnings():
                 # Ignore mark_for_escaping deprecation as this will be
                 # removed in Django 2.0.
                 warnings.simplefilter('ignore', category=RemovedInDjango20Warning)
                 obj = mark_for_escaping(new_obj)
                 escape_isnt_last_filter = False
         else:
             obj = new_obj
     if not escape_isnt_last_filter:
         warnings.warn(
             "escape isn't the last filter in %s and will be applied "
             "immediately in Django 2.0 so the output may change."
             % [func.__name__ for func, _ in self.filters],
             RemovedInDjango20Warning, stacklevel=2
         )
     return obj
Пример #17
0
 def _get_model_field_verbose_value(self, obj, field):
     humanize_method_name = 'get_%s_humanized' % field.attname
     if hasattr(getattr(obj, humanize_method_name, None), '__call__'):
         return getattr(obj, humanize_method_name)()
     val = self._get_model_field_raw_value(obj, field)
     if isinstance(val, bool):
         val = val and _('Yes') or _('No')
     elif field.choices:
         val = getattr(obj, 'get_%s_display' % field.attname)()
     elif isinstance(val, datetime.datetime):
         return formats.localize(timezone.template_localtime(val))
     elif isinstance(val, (datetime.date, datetime.time)):
         return formats.localize(val)
     return val
Пример #18
0
def render_value_in_context(value, context):
    """
    Convert any value to a string to become part of a rendered template. This
    means escaping, if required, and conversion to a string. If value is a
    string, it's expected to already be translated.
    """
    value = template_localtime(value, use_tz=context.use_tz)
    value = localize(value, use_l10n=context.use_l10n)
    if context.autoescape:
        if not issubclass(type(value), str):
            value = str(value)
        return conditional_escape(value)
    else:
        return str(value)
Пример #19
0
 def _get_model_field_verbose_value(self, obj, field):
     humanize_method_name = 'get_%s_humanized' % field.attname
     if hasattr(getattr(obj, humanize_method_name, None), '__call__'):
         return getattr(obj, humanize_method_name)()
     val = self._get_model_field_raw_value(obj, field)
     if isinstance(val, bool):
         val = val and _('Yes') or _('No')
     elif field.choices:
         val = getattr(obj, 'get_%s_display' % field.attname)()
     elif isinstance(val, datetime.datetime):
         return formats.localize(timezone.template_localtime(val))
     elif isinstance(val, (datetime.date, datetime.time)):
         return formats.localize(val)
     return val
Пример #20
0
 def _get_verbose_value(self, raw, field_or_method, obj, **kwargs):
     if hasattr(field_or_method, 'humanized') and field_or_method.humanized:
         return field_or_method.humanized(raw, obj, **kwargs)
     elif hasattr(field_or_method, 'choices') and field_or_method.choices:
         return getattr(obj,
                        'get_{}_display'.format(field_or_method.attname))()
     if isinstance(raw, bool):
         return raw and ugettext('Yes') or ugettext('No')
     elif isinstance(raw, datetime.datetime):
         return formats.localize(timezone.template_localtime(raw))
     elif isinstance(raw, (datetime.date, datetime.time)):
         return formats.localize(raw)
     else:
         return raw
Пример #21
0
def accept_terms(request, event_slug):
    event = get_object_or_404(Event, slug=event_slug)
    vendor = Vendor.get_or_create_vendor(request, event)
    if vendor.terms_accepted is None:
        vendor.terms_accepted = timezone.now()
        vendor.save(update_fields=("terms_accepted",))

    result = timezone.template_localtime(vendor.terms_accepted)
    result = localize(result)

    return HttpResponse(json.dumps({
        "result": "ok",
        "time": result,
    }), "application/json")
Пример #22
0
def render_value_in_context(value, context):
    """
    Converts any value to a string to become part of a rendered template. This
    means escaping, if required, and conversion to a unicode object. If value
    is a string, it is expected to have already been translated.
    """
    value = template_localtime(value, use_tz=context.use_tz)
    value = localize(value, use_l10n=context.use_l10n)
    value = force_text(value)
    if ((context.autoescape and not isinstance(value, SafeData)) or
            isinstance(value, EscapeData)):
        return conditional_escape(value)
    else:
        return value
Пример #23
0
def readical(filename, room):
    temp_dir = os.path.dirname(os.path.dirname(__file__))
    temp_dir = os.path.join(temp_dir, "webuntis", "temp")
    file_path = os.path.join(temp_dir, filename)

    icsfile = open(file_path, 'rb')
    print('Lese Datei')
    gcal = Calendar.from_ical(icsfile.read())

    time_last_change = None
    icallist = []
    writedb = False

    # Schreibe alle Werte in eine Liste -> schließe Datei
    print('Suche nach neuen Einträgen')
    for event in gcal.walk('vevent'):
        #  print(timezone.template_localtime(monday[0].dtstart, use_tz='Europe/Berlin'))
        start = timezone.template_localtime(event.get('dtstart').dt,
                                            use_tz='Europe/Berlin')
        summary = event.get('summary')
        end = event.get('dtend').dt
        icallist.append(Icalevent(start, end, summary))

    icsfile.close()

    # Überprüfe ob eine Änderung vorliegt
    for i in icallist:
        if searchevents(room, i.dtstart, i.dtend, i.dtsummary):
            # lösche Datenbank einträge und beende Überprüfung
            print('Neuer Eintrag gefunden')
            Event.objects.filter(room=room).delete()
            writedb = True
            break

    # Wenn eine Änderung ansteht ...
    if writedb:
        for i in icallist:
            # Wenn die Daten der vorherigen Woche in der Datenbank liegen bleiben soll, muss die Abfrage noch
            # den Zeitraum überprüfen
            time_last_change = eventsave(room, i.dtstart, i.dtend, i.dtsummary)
            # print("Folgender Eintrag wurde gespeichert:")
            # print(i)

        del icallist
        print('Neue Einträge wurden geschrieben')
        room.dtchanged = time_last_change
        room.save()
    else:
        print('Es gibt keine Neuigkeiten')
Пример #24
0
 def _reversion_revisionform_view(self,
                                  request,
                                  version,
                                  template_name,
                                  extra_context=None):
     # Check that database transactions are supported.
     if not connection.features.uses_savepoints:
         raise ImproperlyConfigured(
             "Cannot use VersionAdmin with a database that does not support savepoints."
         )
     # Run the view.
     try:
         with transaction.atomic(using=version.db):
             # Revert the revision.
             version.revision.revert(delete=True)
             # Run the normal changeform view.
             with self.create_revision(request):
                 response = self.changeform_view(request, version.object_id,
                                                 request.path,
                                                 extra_context)
                 # Decide on whether the keep the changes.
                 if request.method == "POST" and response.status_code == 302:
                     set_comment(
                         _("Reverted to previous version, saved on %(datetime)s"
                           ) % {
                               "datetime":
                               localize(
                                   template_localtime(
                                       version.revision.date_created)),
                           })
                 else:
                     response.template_name = template_name  # Set the template name to the correct template.
                     response.render(
                     )  # Eagerly render the response, so it's using the latest version.
                     raise _RollBackRevisionView(
                         response
                     )  # Raise exception to undo the transaction and revision.
     except RevertError as ex:
         opts = self.model._meta
         messages.error(request, force_text(ex))
         return redirect("{}:{}_{}_changelist".format(
             self.admin_site.name, opts.app_label, opts.model_name))
     except _RollBackRevisionView as ex:
         return ex.response
     # It was reverted to a previous version. Return to the change view.
     opts = self.model._meta
     return redirect(
         "{}:{}_{}_change".format(self.admin_site.name, opts.app_label,
                                  opts.model_name), int(version.object_id))
Пример #25
0
def display_for_value(value, empty_value_display, boolean=False):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon

    if boolean:
        return _boolean_icon(value)
    elif value is None:
        return empty_value_display
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
        return formats.number_format(value)
    else:
        return smart_text(value)
Пример #26
0
def fast_render_value_in_context(value, context):
    value = template_localtime(value, use_tz=context.use_tz)
    value = localize(value, use_l10n=context.use_l10n)
    value = force_text(value)

    # We know that `str` type is never safe data, and also the
    # most common type to pass through here. Making a type()
    # comparison *before* the isinstance call skips that
    # slow call in many cases.
    if ((context.autoescape and
         (type(value) == str or not isinstance(value, SafeData)))
            or isinstance(value, EscapeData)):
        return conditional_escape(value)
    else:
        return value
Пример #27
0
def display_for_value(value, boolean=False):
    if value is None:
        return ''
    if isinstance(value, bool):
        if value == True:
            return 'X'
        return ''
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
        return formats.number_format(value)
    else:
        return perform_substitutions(smart_text(value))
Пример #28
0
def date(value, arg, use_l10n=True):
    value = template_localtime(value)
    if value in (None, ''):
        return ''
    if arg is None:
        arg = settings.DATE_FORMAT
    if arg == 'timestamp':
        return str(int(time.mktime(value.timetuple())))
    try:
        return formats.date_format(value, arg, use_l10n=use_l10n)
    except AttributeError:
        try:
            return date_format(value, arg)
        except AttributeError:
            return ''
Пример #29
0
def display_for_value(value, empty_value_display, boolean=False):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon

    if boolean:
        return _boolean_icon(value)
    elif value is None:
        return empty_value_display
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
        return formats.number_format(value)
    else:
        return smart_text(value)
Пример #30
0
def fast_render_value_in_context(value, context):
    value = template_localtime(value, use_tz=context.use_tz)
    value = localize(value, use_l10n=context.use_l10n)
    value = force_text(value)

    # We know that `str` type is never safe data, and also the
    # most common type to pass through here. Making a type()
    # comparison *before* the isinstance call skips that
    # slow call in many cases.
    if ((context.autoescape and
        (type(value) == str or not isinstance(value, SafeData))) or
            isinstance(value, EscapeData)):
        return conditional_escape(value)
    else:
        return value
Пример #31
0
def format_datetime(dt, lang='fi'):
    dt = timezone.template_localtime(dt)
    if lang == 'fi':
        # 1.1.2017 klo 12:00
        dt_format = r'j.n.Y \k\l\o G:i'
    elif lang == 'sv':
        # 1.1.2017 kl. 12:00
        dt_format = r'j.n.Y \k\l\. G:i'
    elif lang == 'en':
        # 1 Jan 2017 at 12:00
        dt_format = r'j M Y \a\t G:i'
    else:
        raise NotificationTemplateException(f"format_datetime received unknown language '{lang}'")

    return date_format(dt, dt_format)
Пример #32
0
def login_form_content(request):

    form = CustomLoginForm()
    keep_me = KeepMeLoggedIn()

    if request.user.is_authenticated:
        try:
            customer = Customer.objects.get(user=request.user.id)
            order = Order.objects.get(customer=customer,
                                      transaction_status=False)

        except ObjectDoesNotExist:
            customer = ""
            order = ""

        try:
            likes = MainProductDatabase.objects.filter(
                likes=request.user).count()
        except ObjectDoesNotExist:
            likes = ""

    else:
        _, order, _ = order_cart(request)
        likes = ""

    product_of_the_day = MainProductDatabase.objects.filter(
        product_of_the_day=True).order_by("-product_of_the_day_added")

    if len(product_of_the_day) >= 1:
        product_of_the_day = product_of_the_day[0]
        localtime = timezone.template_localtime(
            product_of_the_day.product_of_the_day_added)
        product_of_the_day.product_of_the_day_added = localtime
        product_of_the_day.save()
    else:
        product_of_the_day_db = (
            ProductOfTheDayDB.objects.all().order_by("-date_start").first())
        if product_of_the_day_db:

            product_of_the_day = product_of_the_day_db.product

    return {
        "login_form": form,
        "keep_me": keep_me,
        "order": order,
        "likes": likes,
        "product_of_the_day": product_of_the_day,
    }
Пример #33
0
 def render(self, context):
     try:
         output = self.filter_expression.resolve(context)
         output = template_localtime(output, use_tz=context.use_tz)
         output = localize(output, use_l10n=context.use_l10n)
         output = force_unicode(output)
     except UnicodeDecodeError:
         return ''
     except Exception as e:
         if not hasattr(e, 'django_template_source'):
             e.django_template_source = self.source
         raise
     if (context.autoescape and not isinstance(output, SafeData)) or isinstance(output, EscapeData):
         return escape(output)
     else:
         return output
Пример #34
0
def display_for_value(value, boolean=False):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon
    from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE

    if boolean:
        return _boolean_icon(value)
    elif value is None:
        return EMPTY_CHANGELIST_VALUE
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
        return formats.number_format(value)
    else:
        return smart_text(value)
Пример #35
0
def display_for_value(value, boolean=False):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon
    from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE

    if boolean:
        return _boolean_icon(value)
    elif value is None:
        return EMPTY_CHANGELIST_VALUE
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
        return formats.number_format(value)
    else:
        return smart_text(value)
Пример #36
0
def format_geolocation_text(geolocation):
    lat = str(geolocation.geo.y)
    lng = str(geolocation.geo.x)
    accuracy = ""
    if geolocation.accuracy:
        accuracy = ", accuracy: " + str(geolocation.accuracy) + "m"
    timestamp = ", reported at: " + formats.localize(
        timezone.template_localtime(geolocation.reported_at))
    url = OSM_URL.format(lat=lat, lng=lng)
    return "<a href='%s'>%s, %s</a>%s%s" % (
        url,
        lat,
        lng,
        accuracy,
        timestamp,
    )
Пример #37
0
def display_for_value(value, empty_value_display, boolean=False):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon

    if boolean:
        return _boolean_icon(value)
    elif value is None:
        return empty_value_display
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, (int, decimal.Decimal, float)):
        return formats.number_format(value)
    elif isinstance(value, (list, tuple)):
        return ', '.join(str(v) for v in value)
    else:
        return str(value)
Пример #38
0
def debug_variable_node_render(self, context):
    """
    Like DebugVariableNode.render, but doesn't catch UnicodeDecodeError.
    """
    try:
        output = self.filter_expression.resolve(context)
        output = template_localtime(output, use_tz=context.use_tz)
        output = localize(output, use_l10n=context.use_l10n)
        output = force_text(output)
    except Exception as e:
        if not hasattr(e, "django_template_source"):
            e.django_template_source = self.source
        raise
    if (context.autoescape and not isinstance(output, SafeData)) or isinstance(output, EscapeData):  # nopep8
        return escape(output)
    else:
        return output
Пример #39
0
def datetime_renderer(value, field):
    """
    Localize and format the specified date.

    :param value: The value to process.
    :type value: datetime.date or datetime.time or datetime.datetime
    :param field: The model field instance
    :type field: django.db.models.fields.Field
    :rtype: unicode

    """
    if isinstance(value, datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (date, time)):
        return formats.localize(value)
    else:
        return value
Пример #40
0
def display_for_value(value, empty_value_display, boolean=False):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon

    if boolean:
        return _boolean_icon(value)
    elif value is None:
        return empty_value_display
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, (int, decimal.Decimal, float)):
        return formats.number_format(value)
    elif isinstance(value, (list, tuple)):
        return ', '.join(str(v) for v in value)
    else:
        return str(value)
Пример #41
0
def datetime_renderer(value, field):
    """
    Localize and format the specified date.

    :param value: The value to process.
    :type value: datetime.date or datetime.time or datetime.datetime
    :param field: The model field instance
    :type field: django.db.models.fields.Field
    :rtype: unicode

    """
    if isinstance(value, datetime):
        # django ticket #23466 Removing seconds from locale formats
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (date, time)):
        return ":".join((formats.localize(value)).split(":")[:2])
    else:
        return ":".join(value.split(":")[:2])
Пример #42
0
def datetime_renderer(value, field):
    """
    Localize and format the specified date.

    :param value: The value to process.
    :type value: datetime.date or datetime.time or datetime.datetime
    :param field: The model field instance
    :type field: django.db.models.fields.Field
    :rtype: unicode

    """
    if isinstance(value, datetime):
        # django ticket #23466 Removing seconds from locale formats
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (date, time)):
        return ":".join((formats.localize(value)).split(":")[:2])
    else:
        return ":".join(value.split(":")[:2])
Пример #43
0
 def _dict(self):
     exclude = ['operator_id', 'creator_id', 'created', 'modified']
     opts = self._meta
     data = {}
     keys = [f.attname for f in opts.fields]
     for f in chain(opts.many_to_many):
         if self.pk is None:
             data[f.name] = []
         else:
             data[f.name] = list(f.value_from_object(
                 self).values_list('pk', flat=True))
     original = {k: self.__dict__.get(k) for k in keys if k not in exclude}
     data.update(**original)
     for key, value in data.items():
         if isinstance(value, timezone.datetime):
             value = formats.localize(timezone.template_localtime(value))
         data.update(**{key: value})
     return data
Пример #44
0
 def render(self, context):
     try:
         output = self.filter_expression.resolve(context)
         output = template_localtime(output, use_tz=context.use_tz)
         output = localize(output, use_l10n=context.use_l10n)
         output = force_unicode(output)
     except UnicodeDecodeError:
         return ''
     except Exception as e:
         if not hasattr(e, 'django_template_source'):
             e.django_template_source = self.source
         raise
     if (context.autoescape
             and not isinstance(output, SafeData)) or isinstance(
                 output, EscapeData):
         return escape(output)
     else:
         return output
Пример #45
0
def display_for_value(value, boolean=False):  # pragma: no cover
    """ Added for compatibility with django 1.4, copied from django trunk.
    """
    from django.contrib.admin.templatetags.admin_list import _boolean_icon
    # from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE

    if boolean:
        return _boolean_icon(value)
    elif value is None:
        # return EMPTY_CHANGELIST_VALUE
        return get_empty_value_display()
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
        return formats.number_format(value)
    else:
        return smart_text(value)
Пример #46
0
def initial():
    now = timezone.datetime.now(tz=tz)
    previous_requests = deque(get_recent_requests(minutes=num_minutes))
    if previous_requests:
        first_req_dt = timezone.template_localtime(
            previous_requests[0].datetime)
        all_seconds = [
            first_req_dt + datetime.timedelta(seconds=x)
            for x in range(0, (now - first_req_dt).seconds)
        ]
        for t in all_seconds:
            X.append(t)
            current_requests = deque()
            while previous_requests and previous_requests[0].datetime < t:
                current_requests.appendleft(previous_requests.popleft())
            update_ys(current_requests)
    else:
        X.append(now)
        for Y in Ys.values():
            Y.append(0)
Пример #47
0
def display_for_field(value, field):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon
    from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE

    if field.flatchoices:
        return dict(field.flatchoices).get(value, EMPTY_CHANGELIST_VALUE)
    # NullBooleanField needs special-case null-handling, so it comes
    # before the general null test.
    elif isinstance(field, models.BooleanField) or isinstance(field, models.NullBooleanField):
        return _boolean_icon(value)
    elif value is None:
        return EMPTY_CHANGELIST_VALUE
    elif isinstance(field, models.DateTimeField):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(field, (models.DateField, models.TimeField)):
        return formats.localize(value)
    elif isinstance(field, models.DecimalField):
        return formats.number_format(value, field.decimal_places)
    elif isinstance(field, models.FloatField):
        return formats.number_format(value)
    else:
        return smart_text(value)
Пример #48
0
 def resolve(self, context, ignore_failures=False):
     if isinstance(self.var, Variable):
         try:
             obj = self.var.resolve(context)
         except VariableDoesNotExist:
             if ignore_failures:
                 obj = None
             else:
                 if settings.TEMPLATE_STRING_IF_INVALID:
                     global invalid_var_format_string
                     if invalid_var_format_string is None:
                         invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID
                     if invalid_var_format_string:
                         return settings.TEMPLATE_STRING_IF_INVALID % self.var
                     return settings.TEMPLATE_STRING_IF_INVALID
                 else:
                     obj = settings.TEMPLATE_STRING_IF_INVALID
     else:
         obj = self.var
     for func, args in self.filters:
         arg_vals = []
         for lookup, arg in args:
             if not lookup:
                 arg_vals.append(mark_safe(arg))
             else:
                 arg_vals.append(arg.resolve(context))
         if getattr(func, 'expects_localtime', False):
             obj = template_localtime(obj, context.use_tz)
         if getattr(func, 'needs_autoescape', False):
             new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
         else:
             new_obj = func(obj, *arg_vals)
         if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
             obj = mark_safe(new_obj)
         elif isinstance(obj, EscapeData):
             obj = mark_for_escaping(new_obj)
         else:
             obj = new_obj
     return obj
Пример #49
0
 def toDict(self,withParent=True):
     '''
     将当前评论转换成字典,以便转换为json传输
     '''
     result={
         "id":self.id,
         "shown":self.shown,
         "read":self.read,
         "nickname":self.nickname,
         "website":self.website,
         "email":self.email,
         "datetime":template_localtime(self.datetime).strftime("%Y-%m-%d,%H-%M-%S"),
         "message":self.message,
         "byOwner":self.byOwner,
         "parent":None,
         "article":self.article.id
     }
     if self.parent_id is not None and withParent:
         result.update({
             "parent":self.parent.toDict(withParent=False)
         })
     return result
Пример #50
0
    def resolve(self, context, ignore_failures=False):
        if isinstance(self.var, Variable):
            try:
                obj = self.var.resolve(context)
            except VariableDoesNotExist:
                if ignore_failures:
                    obj = None
                else:
                    string_if_invalid = context.template.engine.string_if_invalid
                    if string_if_invalid:
                        if '%s' in string_if_invalid:
                            return string_if_invalid % self.var
                        else:
                            return string_if_invalid
                    else:
                        obj = string_if_invalid
        else:
            obj = self.var
        # 链式执行所有过滤器
        for func, args in self.filters:
            arg_vals = []
            for lookup, arg in args:
                if not lookup:
                    arg_vals.append(mark_safe(arg))
                else:
                    arg_vals.append(arg.resolve(context))
            if getattr(func, 'expects_localtime', False):
                obj = template_localtime(obj, context.use_tz)
            if getattr(func, 'needs_autoescape', False):
                new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
            else:
                new_obj = func(obj, *arg_vals)

            # 下面这句保证了有 is_safe=True 的对象输出不用 mark_safe 二选一即可
            if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
                obj = mark_safe(new_obj)
            else:
                obj = new_obj
        return obj
Пример #51
0
def semantic_display_for_value(value, empty_value_display, boolean=False):
    from .templatetags.semantic_admin_list import _semantic_boolean_icon

    # BEGIN CUSTOMIZATION
    if boolean:
        return _semantic_boolean_icon(value)
    # END CUSTOMIZATION

    elif value is None:
        return empty_value_display
    elif isinstance(value, bool):
        return str(value)
    elif isinstance(value, datetime.datetime):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(value, (datetime.date, datetime.time)):
        return formats.localize(value)
    elif isinstance(value, (int, decimal.Decimal, float)):
        return formats.number_format(value)
    elif isinstance(value, (list, tuple)):
        return ", ".join(str(v) for v in value)
    else:
        return str(value)
Пример #52
0
 def resolve(self, context, ignore_failures=False):
     if isinstance(self.var, Variable):
         try:
             obj = self.var.resolve(context)
         except VariableDoesNotExist:
             if ignore_failures:
                 obj = None
             else:
                 if settings.TEMPLATE_STRING_IF_INVALID:
                     global invalid_var_format_string
                     if invalid_var_format_string is None:
                         invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID
                     if invalid_var_format_string:
                         return settings.TEMPLATE_STRING_IF_INVALID % self.var
                     return settings.TEMPLATE_STRING_IF_INVALID
                 else:
                     obj = settings.TEMPLATE_STRING_IF_INVALID
     else:
         obj = self.var
     for func, args in self.filters:
         arg_vals = []
         for lookup, arg in args:
             if not lookup:
                 arg_vals.append(mark_safe(arg))
             else:
                 arg_vals.append(arg.resolve(context))
         if getattr(func, 'expects_localtime', False):
             obj = template_localtime(obj, context.use_tz)
         if getattr(func, 'needs_autoescape', False):
             new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
         else:
             new_obj = func(obj, *arg_vals)
         if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
             obj = mark_safe(new_obj)
         elif isinstance(obj, EscapeData):
             obj = mark_for_escaping(new_obj)
         else:
             obj = new_obj
     return obj
Пример #53
0
def display_for_field(value, field, html=True, only_date=True):
    if getattr(field, 'flatchoices', None):
        if html and field.name == 'color' and value:
            return make_color_icon(value)
        return dict(field.flatchoices).get(value, '')
    elif html and (isinstance(field, (
            models.BooleanField, models.NullBooleanField))):
        return make_boolean_icon(value)
    elif isinstance(field, (models.BooleanField, models.NullBooleanField)):
        boolchoice = {False: "否", True: "是"}
        return boolchoice.get(value)
    elif value is None:
        return ""
    elif isinstance(field, models.DecimalField):
        return formats.number_format(value, field.decimal_places)
    elif isinstance(field, (models.IntegerField, models.FloatField)):
        return formats.number_format(value)
    elif isinstance(field, models.ForeignKey) and value:
        rel_obj = field.related_model.objects.get(pk=value)
        if html and COLOR_FK_FIELD and isinstance(rel_obj, program):
            text_color = rel_obj.color
            if not text_color:
                text_color = 'text-info'
            safe_value = format_html(
                '<span class="text-{}">{}</span>', text_color, rel_obj.text)
            return safe_value
        return force_text(rel_obj)
    elif isinstance(field, models.TextField) and value:
        return force_text(value)
    elif isinstance(field, models.DateTimeField):
        if only_date:
            return formats.date_format(value)
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(field, (models.DateField, models.TimeField)):
        return formats.localize(value)
    elif isinstance(field, models.FileField) and value:
        return format_html('<a href="{}">{}</a>', value.url, value)
    else:
        return display_for_value(value)
Пример #54
0
 def resolve(self, context, ignore_failures=False):
     if isinstance(self.var, Variable):
         try:
             obj = self.var.resolve(context)
         except VariableDoesNotExist:
             if ignore_failures:
                 obj = None
             else:
                 string_if_invalid = context.engine.string_if_invalid
                 if string_if_invalid:
                     if '%s' in string_if_invalid:
                         return string_if_invalid % self.var
                     else:
                         return string_if_invalid
                 else:
                     obj = string_if_invalid
     else:
         obj = self.var
     for func, args in self.filters:
         arg_vals = []
         for lookup, arg in args:
             if not lookup:
                 arg_vals.append(mark_safe(arg))
             else:
                 arg_vals.append(arg.resolve(context))
         if getattr(func, 'expects_localtime', False):
             obj = template_localtime(obj, context.use_tz)
         if getattr(func, 'needs_autoescape', False):
             new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
         else:
             new_obj = func(obj, *arg_vals)
         if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
             obj = mark_safe(new_obj)
         elif isinstance(obj, EscapeData):
             obj = mark_for_escaping(new_obj)
         else:
             obj = new_obj
     return obj
Пример #55
0
def display_for_field(value, field, empty_value_display):
    from django.contrib.admin.templatetags.admin_list import _boolean_icon

    if getattr(field, 'flatchoices', None):
        return dict(field.flatchoices).get(value, empty_value_display)
    # NullBooleanField needs special-case null-handling, so it comes
    # before the general null test.
    elif isinstance(field, models.BooleanField) or isinstance(field, models.NullBooleanField):
        return _boolean_icon(value)
    elif value is None:
        return empty_value_display
    elif isinstance(field, models.DateTimeField):
        return formats.localize(timezone.template_localtime(value))
    elif isinstance(field, (models.DateField, models.TimeField)):
        return formats.localize(value)
    elif isinstance(field, models.DecimalField):
        return formats.number_format(value, field.decimal_places)
    elif isinstance(field, (models.IntegerField, models.FloatField)):
        return formats.number_format(value)
    elif isinstance(field, models.FileField) and value:
        return format_html('<a href="{}">{}</a>', value.url, value)
    else:
        return display_for_value(value, empty_value_display)
Пример #56
0
def environment(**kwargs):
    """
    Add some utility functions to the Jinja2 environment
    """
    env = Environment(**kwargs)
    env.filters.update({
        'add_class': add_class,
        'attr': set_attr,
        'widget_type': widget_type,
    })
    env.globals.update({
        'basename': basename,
        'linebreaksbr': linebreaksbr,
        'localtime': lambda x: template_localtime(x).strftime('%Y-%m-%d %H:%M:%S'),
        'md5': lambda x: md5(x).hexdigest(),
        'now': now,
        'paginate': paginate,
        'qs': qs,
        'static': staticfiles_storage.url,
        'timedelta': timedelta,
        'url': reverse,
    })
    return env
Пример #57
0
 def _reversion_revisionform_view(self,
                                  request,
                                  version,
                                  template_name,
                                  extra_context=None):
     try:
         with transaction.atomic(using=version.db):
             # Revert the revision.
             version.revision.revert(delete=True)
             # Run the normal changeform view.
             with self.create_revision(request):
                 response = self.changeform_view(request, version.object_id,
                                                 request.path,
                                                 extra_context)
                 # Decide on whether the keep the changes.
                 if request.method == "POST" and response.status_code == 302:
                     set_comment(
                         _("Reverted to previous version, saved on %(datetime)s"
                           ) % {
                               "datetime":
                               localize(
                                   template_localtime(
                                       version.revision.date_created)),
                           })
                 else:
                     response.template_name = template_name  # Set the template name to the correct template.
                     response.render(
                     )  # Eagerly render the response, so it's using the latest version.
                     raise _RollBackRevisionView  # Raise an exception to undo the transaction and the revision.
     except RevertError as ex:
         opts = self.model._meta
         messages.error(request, force_text(ex))
         return redirect("{}:{}_{}_changelist".format(
             self.admin_site.name, opts.app_label, opts.model_name))
     except _RollBackRevisionView:
         pass
     return response
Пример #58
0
 def resolve(self, context, ignore_failures=False):
     if self.is_var:
         try:
             obj = self.var.resolve(context)
         except VariableDoesNotExist:
             if ignore_failures:
                 obj = None
             else:
                 string_if_invalid = context.template.engine.string_if_invalid
                 if string_if_invalid:
                     if "%s" in string_if_invalid:
                         return string_if_invalid % self.var
                     else:
                         return string_if_invalid
                 else:
                     obj = string_if_invalid
     else:
         obj = self.var
     for func, args in self.filters:
         arg_vals = []
         for lookup, arg in args:
             if not lookup:
                 arg_vals.append(mark_safe(arg))
             else:
                 arg_vals.append(arg.resolve(context))
         if getattr(func, "expects_localtime", False):
             obj = template_localtime(obj, context.use_tz)
         if getattr(func, "needs_autoescape", False):
             new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
         else:
             new_obj = func(obj, *arg_vals)
         if getattr(func, "is_safe", False) and isinstance(obj, SafeData):
             obj = mark_safe(new_obj)
         else:
             obj = new_obj
     return obj