Bien

1 view
Skip to first unread message

Alejandro (dialelo)

unread,
Nov 17, 2011, 7:22:46 PM11/17/11
to Mutualismo
Los bienes son los objetos materiales que un usuario presta, regala o
dona a la comunidad. De ellos se almacenarían las siguientes
características comunes:

Nombre
Categoría
Descripción
Foto/s
Etiquetas:: Serían un complemento a la categoría para catalogar los
bienes
Disponibilidad
- Disponible
- Reservado
- Ocupado

y distinguimos tres tipos de bienes:

- Prestable:: Se ofrece prestado durante cierto tiempo
- Duración del préstamo:: (¿Máximo de tiempo que se ofrece
prestado?)
- Regalable:: El usuario lo regala
- Comunitario:: El dueño original lo dona a la comunidad y pasa a ser
comunitario. Está asociado a la persona que lo tiene en cada momento,
se responsabiliza del objeto hasta que otra persona lo solicita,
momento en el que pasa a estar asociado a la otra persona.

Alejandro (dialelo)

unread,
Nov 25, 2011, 10:03:22 AM11/25/11
to Mutualismo
La clase base para Good y Service sería Trade:

Trade:
name = CharField
description = CharField
category = Category
tags = TagField

# Good sería la clase base para los bienes

Good(Trade):
state = Choice(Available, Reserved, Not available)

# Loan representaría un préstamo, propongo poner
# un campo opcional para especificar el tiempo
# máximo que lo prestas.

Loan(Good):
max_time = CharField

# Gift representaría un regalo, si communal es
# verdadero es un bien comunitario. No desaparece
# de la red cuando pasa de un usuario a otro.

Gift(Good):
communal = BooleanField


On Nov 18, 1:22 am, "Alejandro (dialelo)" <alejandroogo...@gmail.com>
wrote:

Alejandro (dialelo)

unread,
Dec 12, 2011, 5:24:23 PM12/12/11
to Mutualismo
Hay mucho de qué hablar así que vamos por partes. Después de trabajar
con Óscar en los modelos hemos hecho
algunas modificaciones. La clase ``Trade`` es ahora abstracta,
mantiene la información global que tiene un
intercambio en la red. Puede ser una oferta o demanda, bien o
servicio.

---
class Trade(models.Model):    """    Represents an object or action
which can be part of a trade within our network.     """    name      
 = models.CharField(_('name'), max_length=124)    description =
models.TextField(_('description'))    # XXX Are we going to allow
uncategorized trades?     category    = models.ForeignKey(Category)   
owner       = models.ForeignKey(BaseUser)    tags        =
TaggableManager()
    class Meta:        abstract = True            def
__unicode__(self):        return u'%s' % self.name---

Nos hemos dado cuenta de que hay que diferenciar entre ofertas y
demandas a nivel de modelos ya que ``Trade`` es
muy poco específico y el objetivo de ambos tipos de intercambio es
diferente. En una oferta (``TradeOffer``) tendríamos
un parámetro que controle su visibilidad (para hacerla invisible
cuando dejan de estar activas). ¿Qué os parece si
hacemos abstracta esta clase también? Nunca la vamos a instanciar
directamente ya que una oferta tiene que ser o bien
o servicio.

---class TradeOffer(Trade):    """    Represents a trade that is
offered by its owner.    """    # XXX Maybe we should include a field
to control the trade's visibility.    #     This way, when the user
gives it to somebody else or it's no longer    #     available can be
'erased' changing this field to False.    visible =
models.BooleanField(_('visible'), default=True)
class Meta:
abstract = True
---

Esta es la clase que representa un préstamo, tiene tres estados y
quizá deberíamos dar la posibilidad de especificar
el tiempo máximo durante el que se presta.

---class Loan(TradeOffer):
    """
    Represents a good that is available for loan.
    """
    STATUS_CHOICES = (
        (1, _('Available')),
        (2, _('Reserved')),
        (3, _('Not available')),
    )
    status = models.IntegerField(_('status'), choices =
STATUS_CHOICES, default = 1)
    # XXX: Are we going to specify time ranges for loans? Could be
optional

    class Meta:
        verbose_name = _('loan')
        verbose_name_plural = _('loans')
---

A continuación la clase que representa un regalo, está la posibilidad
de marcarlo como "comunitario", lo que
haría que el bien fuera pasando de dueño en dueño pero sin pasar a ser
invisible, es decir, que se quedara
en la red.

---
class Gift(TradeOffer):
    """
    Represents a good that is gifted by its owner.
    """
    # XXX A gift can pass from non-communal to communal, but not the
other way!
    communal  = models.BooleanField(_('communal'))
    available = models.BooleanField(_('available'))

    class Meta:
        verbose_name = _('gift')
        verbose_name_plural = _('gifts')
---

En cuanto a las demandas, concreta la clase ``Trade`` (información
general) y hemos pensado en la opción de
especificar (opcionalmente) el tipo de lo que se está demandando para
filtrar mejor las sugerencias.

---class TradeDemand(Trade):    # XXX very provisional.    TYPE_CHOICE
= (        (0, _('All')),        (1, _('Service')),        (2, _('Good
for loan')),        (3, _('Good for gift')),        (4, _('Communal
good')),    )    trade_type = models.IntegerField(_('type'), choices =
TYPE_CHOICE, default = 1)    # TODO field for specifying if the demand
is still being required.---

Perdón por hacer tan largo este email pero es donde estamos
discutiendo ``Trade`` así que no tenía remedio.
On Nov 25, 4:03 pm, "Alejandro (dialelo)" <alejandroogo...@gmail.com>
wrote:

Alejandro Gómez

unread,
Dec 12, 2011, 5:25:26 PM12/12/11
to Mutualismo
Ya que el formato no se conserva haced un pull del repositorio, he copiado y pegado las clases del fichero models.py. 

# Alejandro



2011/12/12 Alejandro (dialelo) <alejand...@gmail.com>
Reply all
Reply to author
Forward
0 new messages