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
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)
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)
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
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)
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 ''
def summary(self, obj): return format_html('<h3><a href="{}">#{} — {}: {}</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))
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
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
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
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)
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")
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 ''
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
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
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
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
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)
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")
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
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')
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))
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)
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
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))
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 ''
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)
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, }
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
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)
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, )
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)
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
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
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])
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
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
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)
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)
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)
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
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
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
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)
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)
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
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)
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
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
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