Example #1
0
 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)
     )
Example #2
0
 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()))
Example #3
0
    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']))
Example #4
0
    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"))
Example #5
0
    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"))
Example #6
0
 def default(self, o):
     if isinstance(o, Promise):
         return force_unicode(o)
     else:
         if callable(o):
             o = o()
         return super(LazyEncoder, self).default(o)
Example #7
0
    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)
Example #9
0
 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)
Example #10
0
 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)
Example #11
0
 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)
Example #12
0
 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)
Example #14
0
    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))
Example #15
0
 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)
Example #16
0
    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
Example #17
0
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
Example #18
0
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
Example #19
0
 def default(self, o):
     if isinstance(o, Promise):
         return force_unicode(o)
     else:
         return super(LazyJSONEncoder, self).default(o)
Example #20
0
 def default(self, o):
     if isinstance(o, Promise):
         return force_unicode(o)
     else:
         return super(LazyJSONEncoder, self).default(o)
Example #21
0
 def get_directory_name(self):
     return os.path.normpath(force_unicode(datetime.datetime.now().strftime(smart_str(CONFIGSTORE_FILE_PATH))))
Example #22
0
  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