Esempio n. 1
0
class ContentType(Entity):
    name = TextProperty(max_length=100)
    app_label = TextProperty(max_length=100)
    model = TextProperty(max_length=100,
                         verbose_name=_('python model class name'))
    objects = ContentTypeManager()

    class Meta:
        verbose_name = _('content type')
        verbose_name_plural = _('content types')
        kind = 'django_content_type'
        ordering = ('name', )

    def __unicode__(self):
        return self.name

    def model_class(self):
        """Returns the Python model class for this type of content."""
        from django.db import models
        return models.get_model(self.app_label, self.model)

    entity_class = model_class

    def get_object_for_this_type(self, **kwargs):
        """
        Returns an object of this type for the keyword arguments given. Basically, this is a proxy around this
        object_type's get_object() model method. The ObjectNotExist exception, if thrown, will not be caught, so code
        that calls this method should catch it.
        """
        return self.entity_class().object.get(**kwargs)

    def natural_key(self):
        return (self.app_label, self.model)
Esempio n. 2
0
class ContentType(document.Document):
    name = fields.StringField(max_length=100)
    app_label = fields.StringField(max_length=100)
    model = fields.StringField(max_length=100,
                               verbose_name=_('python model class name'),
                               unique_with='app_label')
    objects = ContentTypeManager()

    class Meta:
        verbose_name = _('content type')
        verbose_name_plural = _('content types')
        # db_table = 'django_content_type'
        # ordering = ('name',)
        # unique_together = (('app_label', 'model'),)

    def __unicode__(self):
        return self.name

    def model_class(self):
        "Returns the Python model class for this type of content."
        from django.db import models
        return models.get_model(self.app_label, self.model)

    def get_object_for_this_type(self, **kwargs):
        """
        Returns an object of this type for the keyword arguments given.
        Basically, this is a proxy around this object_type's get_object() model
        method. The ObjectNotExist exception, if thrown, will not be caught,
        so code that calls this method should catch it.
        """
        return self.model_class()._default_manager.using(
            self._state.db).get(**kwargs)

    def natural_key(self):
        return (self.app_label, self.model)
Esempio n. 3
0
class ContentType(document.Document):
	name = fields.StringField(max_length=100)
	app_label = fields.StringField(max_length=100)
	model = fields.StringField(max_length=100, verbose_name=_('python model class name'),
		unique_with='app_label')
	objects = ContentTypeManager()

	#Classe Meta é a classe da classe.
	class Meta:
		verbose_name = _('content type')
		verbose_name_plural = _('content types')

		def __unicode__(self):
			return self.name 

			
		def model_class(self):
			"""Retorna a classe Modle para esse tupo de contexto"""
			return models.get_model(self.app_label, self.model)

		def get_object_for_this_type(self, **kwargs):
			"""Retorna um objeto desse tipo para os argumentos de palavra-chave
				fornecidos. A exceção ObjectNotExist, se lançada, não será detectada,
				então o código que chama este método deve pegá-lo"""
			return self.model_class()._default_manager.using(self._state.db).get(**kwargs)


		def natural_key(self):
			return (self.app_label, self.model)
Esempio n. 4
0
class ContentType(models.Model):
    app_label = models.CharField(max_length=100)
    model = models.CharField(_('python model class name'), max_length=100)
    objects = ContentTypeManager()

    class Meta:
        app_label = _app_label
        verbose_name = _('content type')
        verbose_name_plural = _('content types')
        db_table = 'django_content_type'
        unique_together = (('app_label', 'model'), )
 def test_cache_not_shared_between_managers(self):
     with self.assertNumQueries(1):
         ContentType.objects.get_for_model(ContentType)
     with self.assertNumQueries(0):
         ContentType.objects.get_for_model(ContentType)
     other_manager = ContentTypeManager()
     other_manager.model = ContentType
     with self.assertNumQueries(1):
         other_manager.get_for_model(ContentType)
     with self.assertNumQueries(0):
         other_manager.get_for_model(ContentType)
def set_version_diff(obj, v1, v2, setname, field):
    """Lookup an object that isn't the primary one, but is part
    of the same revision set, i.e. a foreign-key related date.
    TODO: Find a better way of doing this - it is probably 
    HORRIBLY slow (although only used on the diff page, so not
    that important."""
    import reversion
    from django.contrib.contenttypes.models import ContentTypeManager
    from diff_match_patch import diff_match_patch
    dmp = diff_match_patch()
    # FIXME: As well as being gross, this is fragile because
    # it doesn't account for more than one 
    model = getattr(obj, setname).model
    ctype = ContentTypeManager().get_for_model(model)
    if not model in reversion.get_registered_models():
        raise AttributeError("Model %r is not registered as a reversion model.")
    set1 = v1.revision.version_set.filter(content_type=ctype)
    set2 = v2.revision.version_set.filter(content_type=ctype)
    setobj1 = model.objects.filter([v.object_id for v in set1])
    setobj2 = model.objects.filter([v.object_id for v in set2])
    setids1 = [v.object_id for v in set1]
    setids2 = [v.object_id for v in set2]
    added = []
    persisted = []
    deleted = []
    # NB: This assumes that if a version's object
    # is 'None' than it's not in a previous version.
    for vers in set1:
        if vers.object:
            if vers.object_id not in setids2:
                added.append(vers.object)
            else:
                persisted.append(vers.object)
    for vers in set2:
        if vers.object_id not in setids1:
            deleted.append(vers)
    out = []
    for vers in added:
        diffs = dmp.diff_main(unicode(vers.field_dict[field]), u"")
        dmp.diff_cleanupSemantic(diffs)
        out.append(dmp.diff_prettyHtml(diffs))
    for vers in persisted:
        out.append(vers.field_dict[field])
    for vers in deleted:
        diffs = dmp.diff_main(u"", unicode(vers.field_dict[field]))
        dmp.diff_cleanupSemantic(diffs)
        out.append(dmp.diff_prettyHtml(diffs))
    return u"<li>" + out.join(u"</li><li>") + u"</li>"
Esempio n. 7
0
 def test_cache_not_shared_between_managers(self):
     with self.assertNumQueries(1):
         ContentType.objects.get_for_model(ContentType)
     with self.assertNumQueries(0):
         ContentType.objects.get_for_model(ContentType)
     other_manager = ContentTypeManager()
     other_manager.model = ContentType
     with self.assertNumQueries(1):
         other_manager.get_for_model(ContentType)
     with self.assertNumQueries(0):
         other_manager.get_for_model(ContentType)
Esempio n. 8
0
class CartItem(models.Model):
    cart = models.ForeignKey(Cart, verbose_name=u'Корзина')
    price = models.DecimalField(max_digits=18,
                                decimal_places=2,
                                verbose_name=u'Стоимость единицы товара')
    quantity = models.PositiveIntegerField(verbose_name=u'Количество',
                                           default=1)

    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()

    objects = ContentTypeManager()

    class Meta:
        verbose_name = u'Элемент корзины'
        verbose_name_plural = u'Элементы корзины'
        ordering = ('cart', )

    def __unicode__(self):
        return ''

    def total_price(self):
        return self.quantity * float(self.price)

    total_price = property(total_price)

    def get_item(self):
        try:
            return self.content_type.get_object_for_this_type(
                id=self.object_id)
        except ObjectDoesNotExist:
            return None

    def set_item(self, product):
        self.content_type = ContentType.objects.get_for_model(type(product))
        self.object_id = product.pk

    product = property(get_item, set_item)
Esempio n. 9
0
class ContentType(ContentType):
    class Meta:
        proxy = True

    objects = ContentTypeManager()
Esempio n. 10
0
    from mongodbforms.documentoptions import patch_document

    class ContentTypeManager(DjangoContentTypeManager):
        def get_query_set(self):
            """Returns a new QuerySet object.  Subclasses can override this method
            to easily customize the behavior of the Manager.
            """
            return QuerySet(self.model, self.model._get_collection())

        def contribute_to_class(self, model, name):
            init_document_options(model)
            super(ContentTypeManager, self).contribute_to_class(model, name)

    def get_object_for_this_type(self, **kwargs):
        """
        Returns an object of this type for the keyword arguments given.
        Basically, this is a proxy around this object_type's get_object() model
        method. The ObjectNotExist exception, if thrown, will not be caught,
        so code that calls this method should catch it.
        """
        return self.model_class().objects.get(**kwargs)

    def model_class(self):
        return get_model_or_document(str(self.app_label), str(self.model))

    patch_document(get_object_for_this_type, ContentType, bound=False)
    patch_document(model_class, ContentType, bound=False)

    manager = ContentTypeManager()
    manager.contribute_to_class(ContentType, "objects")
Esempio n. 11
0
         init_document_options(model)
         super(ContentTypeManager, self).contribute_to_class(model, name)
         
 def get_object_for_this_type(self, **kwargs):
     """
     Returns an object of this type for the keyword arguments given.
     Basically, this is a proxy around this object_type's get_object() model
     method. The ObjectNotExist exception, if thrown, will not be caught,
     so code that calls this method should catch it.
     """
     return self.model_class().objects.get(**kwargs)
     
 def model_class(self):
     return get_model_or_document(str(self.app_label), str(self.model))
 
 patch_document(get_object_for_this_type, ContentType, bound=False)
 patch_document(model_class, ContentType, bound=False)
 
 manager = ContentTypeManager()
 manager.contribute_to_class(ContentType, 'objects')
 
 try:
     from grappelli.templatetags import grp_tags
     grp_tags.ContentType = ContentType
 except ImportError:
     pass
 
 
 
 
 
Esempio n. 12
0
         init_document_options(model)
         super(ContentTypeManager, self).contribute_to_class(model, name)
         
 def get_object_for_this_type(self, **kwargs):
     """
     Returns an object of this type for the keyword arguments given.
     Basically, this is a proxy around this object_type's get_object() model
     method. The ObjectNotExist exception, if thrown, will not be caught,
     so code that calls this method should catch it.
     """
     return self.model_class().objects.get(**kwargs)
     
 def model_class(self):
     return get_model_or_document(str(self.app_label), str(self.model))
 
 patch_document(get_object_for_this_type, ContentType, bound=False)
 patch_document(model_class, ContentType, bound=False)
 
 manager = ContentTypeManager()
 manager.contribute_to_class(ContentType, 'objects')
 
 try:
     from grappelli.templatetags import grp_tags
     grp_tags.ContentType = ContentType
 except ImportError:
     pass