def add_fields(self, form, index): super(RecursiveInlineFormSet, self).add_fields(form, index) # get the primary key and it's options hidden_pk_field = form.fields[self._pk_field.name] options = hidden_pk_field.queryset.model._meta # the only fields that must show is the primary key form._meta.fields = [self._pk_field.name] widget_attrs = {} # show the link widget if the item allready exists if hidden_pk_field.initial is not None: widget_attrs['url'] = reverse('admin:%s_%s_change' % (options.app_label, options.object_name.lower()), args=[hidden_pk_field.initial]) widget_attrs['label'] = 'Edit %s' % force_unicode(options.verbose_name) # if the parent model exists but the item doesn't show the add button elif self.instance.pk is not None: url = reverse('admin:%s_%s_add' % (options.app_label, options.object_name.lower())) widget_attrs['url'] = '%s?%s=%s' % (url, self.fk.name, self.instance.pk) widget_attrs['label'] = 'Add %s' % force_unicode(options.verbose_name) widget_attrs['popup'] = True # if the parent model does not exist use an empty link widget. else: widget_attrs['url'] = None widget_attrs['label'] = '' # turn the primary key into a field that displays a fieldset with a link form.fields[self._pk_field.name] = IntegerField(hidden_pk_field.queryset, initial=hidden_pk_field.initial, required=False, widget=self.PRIMARY_KEY_WIDGET(attrs=widget_attrs) )
def test_translation(self): """Test if texts are translated.""" from django.utils.translation import override, force_unicode from synchro import call_synchronize msg_en = force_unicode(call_synchronize()) with override('pl'): self.assertNotEqual(msg_en, force_unicode(call_synchronize()))
def test_horoscope_english(self): translation.activate('en') request = self._request() data = self._render(request) self.assertEqual(data['context']['error_birthdate'], True) request.user.birthdate = datetime.date(1990, 1, 1) request.user.save() data = self._render(request) self.assertEqual(translation.force_unicode(data['context']['horoscope_source_url']), providers.get_provider('en').get_source_url()) self.assertEqual(translation.force_unicode(data['context']['horoscope_sign']), translation.force_unicode(models.HOROSCOPE_SIGNS_DICT['aquarius']))
def response_add(self, request, obj, post_url_continue='../%s/'): """ Determines the HttpResponse for the add_view stage. """ opts = obj._meta pk_value = obj._get_pk_val() msg = "Item(s) were added successfully." # Here, we distinguish between different save types by checking for # the presence of keys in request.POST. if request.POST.has_key("_continue"): self.message_user(request, msg + ' ' + _("You may edit it again below.")) if request.POST.has_key("_popup"): post_url_continue += "?_popup=1" return HttpResponseRedirect(post_url_continue % pk_value) if request.POST.has_key("_popup"): return HttpResponse( '<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");' '</script>' % (escape(pk_value), escape(obj))) elif request.POST.has_key("_addanother"): self.message_user( request, msg + ' ' + (_("You may add another %s below.") % force_unicode(opts.verbose_name))) return HttpResponseRedirect(request.path) else: self.message_user(request, msg) return HttpResponseRedirect(reverse("admin:todo_item_changelist"))
def response_add(self, request, obj, post_url_continue='../%s/'): """ Determines the HttpResponse for the add_view stage. """ opts = obj._meta pk_value = obj._get_pk_val() msg = "Item(s) were added successfully." # Here, we distinguish between different save types by checking for # the presence of keys in request.POST. if request.POST.has_key("_continue"): self.message_user(request, msg + ' ' + _("You may edit it again below.")) if request.POST.has_key("_popup"): post_url_continue += "?_popup=1" return HttpResponseRedirect(post_url_continue % pk_value) if request.POST.has_key("_popup"): return HttpResponse( '<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");' '</script>' % (escape(pk_value), escape(obj))) elif request.POST.has_key("_addanother"): self.message_user(request, msg + ' ' + (_("You may add another %s below.") % force_unicode(opts.verbose_name))) return HttpResponseRedirect(request.path) else: self.message_user(request, msg) return HttpResponseRedirect(reverse("admin:todo_item_changelist"))
def default(self, o): if isinstance(o, Promise): return force_unicode(o) else: if callable(o): o = o() return super(LazyEncoder, self).default(o)
def default(self, o): if isinstance(o, Promise): return force_unicode(o) # elif isinstance(o, datetime.datetime): # d = datetime_safe.new_datetime(o) # return d.strftime("%s %s" % (self.DATE_FORMAT, self.TIME_FORMAT)) return DateTimeAwareJSONEncoder.default(self, o)
def default(self, obj): if isinstance(o, Promise): return force_unicode(o) if isinstance(obj, Model): return self.handle_model(obj) return super(ModelJSONEncoder, self).default(obj)
def default(self, o): if isinstance(o, ValuesQuerySet): return list(o) elif isinstance(o, QuerySet): return list(o.values()) elif isinstance(o, Promise): return force_unicode(o) return super(EnhancedJSONEncoder, self).default(o)
def default(self, o): if isinstance(o, Promise): return force_unicode(o) if isinstance(o, datetime): return o.strftime('%Y-%m-%dT%H:%M:%S') if isinstance(o, date): return o.strftime('%Y-%m-%d') else: return super(JSONEncoder, self).default(o)
def test_translation(self): """Test if texts are translated.""" from django.utils.translation import override, force_unicode from synchro import call_synchronize languages = ('en', 'pl', 'de', 'es', 'fr') messages = set() for lang in languages: with override(lang): messages.add(force_unicode(call_synchronize())) self.assertEqual(len(messages), len(languages), 'Some language is missing.')
def default(self, obj): if isinstance(obj, Promise): return force_unicode(o) elif isinstance(obj, Model): return self.handle_model(obj) elif isinstance(obj, datetime.datetime): return self.handle_datetime(obj) else: return self.handle_obj(obj) return super(ModelJSONEncoder, self).default(obj)
def add_fields(self, form, index): super(RecursiveInlineFormSet, self).add_fields(form, index) # get the primary key and it's options hidden_pk_field = form.fields[self._pk_field.name] options = hidden_pk_field.queryset.model._meta # the only fields that must show is the primary key form._meta.fields = [self._pk_field.name] widget_attrs = {} # show the link widget if the item allready exists if hidden_pk_field.initial is not None: widget_attrs['url'] = reverse( 'admin:%s_%s_change' % (options.app_label, options.object_name.lower()), args=[hidden_pk_field.initial]) widget_attrs['label'] = 'Edit %s' % force_unicode( options.verbose_name) # if the parent model exists but the item doesn't show the add button elif self.instance.pk is not None: url = reverse('admin:%s_%s_add' % (options.app_label, options.object_name.lower())) widget_attrs['url'] = '%s?%s=%s' % (url, self.fk.name, self.instance.pk) widget_attrs['label'] = 'Add %s' % force_unicode( options.verbose_name) widget_attrs['popup'] = True # if the parent model does not exist use an empty link widget. else: widget_attrs['url'] = None widget_attrs['label'] = '' # turn the primary key into a field that displays a fieldset with a link form.fields[self._pk_field.name] = IntegerField( hidden_pk_field.queryset, initial=hidden_pk_field.initial, required=False, widget=self.PRIMARY_KEY_WIDGET(attrs=widget_attrs))
def default(self, o): if isinstance(o, Promise): return force_unicode(o) elif isinstance(o, datetime): return o.strftime("%Y-%m-%dT%H:%M:%S") elif isinstance(o, date): return o.strftime("%Y-%m-%d") elif isinstance(o, models.Model): if hasattr(o, 'natural_key'): return o.natural_key() else: return force_unicode(o.pk) elif isinstance(o, models.query.QuerySet): return map(attrgetter('pk'), o) elif isinstance(o, set): return list(o) elif isinstance(o, SerializibleHandlerResult): return o.get_serializible_value() else: return super(CustomJSONEncoder, self).default(o)
def test_horoscope_slovenian(self): translation.activate('sl') request = self._request() data, rendered = self._render(request) try: self.assertEqual(data['context']['error_birthdate'], True) except KeyError: print data, rendered raise # TODO: Go over all signs request.user.birthdate = datetime.date(1990, 1, 1) request.user.save() data, rendered = self._render(request) try: self.assertEqual(translation.force_unicode(data['context']['horoscope_source_url']), providers.get_provider('sl').get_source_url()) self.assertEqual(translation.force_unicode(data['context']['horoscope_sign']), translation.force_unicode(models.HOROSCOPE_SIGNS_DICT['aquarius'])) except KeyError: print data, rendered raise
def resolve_promise(o): if isinstance(o, dict): for k, v in o.items(): o[k] = resolve_promise(v) elif isinstance(o, (list, tuple)): o = [resolve_promise(x) for x in o] elif isinstance(o, Promise): try: o = force_unicode(o) except: # Item could be a lazy tuple or list try: o = [resolve_promise(x) for x in o] except: raise Exception('Unable to resolve lazy object %s' % o) elif callable(o): o = o() return o
def default(self, o): if isinstance(o, Promise): return force_unicode(o) else: return super(LazyJSONEncoder, self).default(o)
def get_directory_name(self): return os.path.normpath(force_unicode(datetime.datetime.now().strftime(smart_str(CONFIGSTORE_FILE_PATH))))
def default(self, obj): """Tests the input object, obj, to encode as JSON.""" #logging.info("Json obj: %s", obj) if hasattr(obj, '__json__'): return getattr(obj, '__json__')() if isinstance(obj, db.GqlQuery): return list(obj) elif isinstance(obj, db.Model): output = {} for field in obj.__dict__: #logging.info(field) if self.include: if not field in self.include: continue if field.startswith('_') or field in self.exclude: continue try: output[field] = getattr(obj, field) #logging.info("Name: %s",field) #pass#output[field] = unicode(getattr(obj, field)) except TypeError: logging.error("Json error: %s", obj) pass #logging.info("...VS...") properties = obj.properties().items() for field, value in properties: #logging.info(field) if self.include: if not field in self.include: continue if field.startswith('_') or field in self.exclude: continue try: output[field] = getattr(obj, field) except TypeError: logging.error("Json error: %s", obj) pass return output elif isinstance(obj, datetime.datetime): try: output = datetime.datetime.strftime(obj,"%Y-%m-%dT%H:%M:%S") except TypeError: logging.error("Json error: %s", obj) pass return output elif isinstance(obj, datetime.date): try: output = datetime.datetime.strftime(obj,"%Y-%m-%d") except TypeError: logging.error("Json error: %s", obj) pass return output elif isinstance(obj, time.struct_time): try: output = list(obj) except TypeError: logging.error("Json error: %s", obj) pass return output elif isinstance(obj, users.User): output = {} methods = ['nickname', 'email', 'auth_domain'] for method in methods: output[method] = getattr(obj, method)() try: return output except TypeError: logging.error("Json error: %s", obj) pass elif isinstance(obj, Promise): logging.info("force_unicode: %s", obj) return force_unicode(obj) # else: # return super(LazyEncoder, self).default(obj) elif isinstance(obj, blobstore.BlobInfo): try: output = str(obj) except TypeError: logging.error("Json error: BlobInfo") pass return output try: results = json.JSONEncoder.default(self, obj) except TypeError: pass return results