예제 #1
0
class Photo(models.Model):
    album = models.ForeignKey(Album, related_name='photos')
    name = models.CharField(max_length=50)
    position = PositionField(collection='album', default=0)

    def __unicode__(self):
        return self.name
예제 #2
0
class Subscription(Trashable):
    """
    A user's (:model:`django.contrib.auth.User`) subscription of a certain List
    (:model:`ideaList.List`)
    """
    user = models.ForeignKey(User,
                             on_delete=models.CASCADE,
                             related_name='subscriptions')
    list = models.ForeignKey(List,
                             on_delete=models.CASCADE,
                             related_name='subscriptions')
    position = PositionField(collection='user', default=-1)

    class Meta:
        ordering = ['position']
        unique_together = (('user', 'list'), )

    def as_dict(self, lst=None):
        if lst is None:
            lst = self.list.as_dict()
        return {
            'id': self.id,
            'user_id': self.user_id,
            'list': lst,
            'position': self.position
        }

    def __unicode__(self):
        val = self.user.first_name + ": " + self.list.name
        if self.trashed_at:
            val += " (trashed)"
        return val
예제 #3
0
class Task(models.Model):
    """
    Base class for lessons/exercises - ordered items within a sub-unit
    """
    sub_unit = models.ForeignKey(SubUnit)
    title = models.CharField(max_length=100)
    position = PositionField(collection='sub_unit', parent_link='task_ptr')
예제 #4
0
class Item(models.Model):
    list = models.ForeignKey('list', related_name='items', db_index=True)
    name = models.CharField(max_length=50)
    position = PositionField(unique_for_field='list')

    def __unicode__(self):
        return self.name
예제 #5
0
class QueueItem(models.Model):
    objects = QueueItemQuerySet().as_manager()
    banner = models.ForeignKey('banners.Banner',
                               on_delete=models.CASCADE,
                               related_name='queue')
    phone_number = models.CharField(_('phone'),
                                    validators=[phone_regex_validator],
                                    max_length=17)

    status = enum.EnumField(QueueItemStatus, default=QueueItemStatus.QUEUED)
    source = enum.EnumField(QueueItemSource, default=QueueItemSource.TWILIO)
    telegram_chat_id = models.BigIntegerField(
        null=True, blank=True, validators=[MinValueValidator(0)])
    past = models.BooleanField(null=False, default=False)
    position = PositionField(collection=('banner', 'past'))

    processing_started_at = models.DateTimeField(null=True, blank=True)
    processing_ended_at = models.DateTimeField(null=True, blank=True)
    waiting_time_estimation = models.DurationField(null=True, blank=True)

    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        ordering = ('position', )
        base_manager_name = 'objects'

    def __str__(self):
        return self.phone_number
예제 #6
0
class Node(models.Model):
    parent = models.ForeignKey('self', related_name='children', blank=True, null=True)
    name = models.CharField(max_length=50)
    position = PositionField(collection='parent')

    def __unicode__(self):
       return self.name
예제 #7
0
class Ingredient(models.Model):
    amount = models.FloatField(null=True,
                               blank=True,
                               verbose_name=_('Ingredient|amount'))
    unit = models.ForeignKey(Unit, null=True, blank=True)
    recipe = models.ForeignKey(Recipe)
    food = models.ForeignKey(Food)
    order_index = PositionField(blank=True,
                                null=True,
                                unique_for_field="direction")
    direction = models.ForeignKey(Direction,
                                  related_name='ingredients',
                                  null=True,
                                  blank=True)

    def __init__(self, *args, **kwargs):
        super(Ingredient, self).__init__(*args, **kwargs)

    def formatted_food(self):
        if self.food.name_plural != None and self.food.name_plural != '' and (
                self.amount != 1):
            food_str = self.food.name_plural
        else:
            food_str = self.food.name
        return food_str

    def __str__(self):
        return self.formatted_food()

    class Meta:
        ordering = ["direction", "order_index", "id"]
        verbose_name = _('Ingredient')
        verbose_name_plural = _('Ingredients')
예제 #8
0
class Item(models.Model):
    list = models.ForeignKey('list', related_name='items', db_index=True, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
    position = PositionField(collection='list')
    updated = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.name
예제 #9
0
class MigrationTest(models.Model):
    name = models.CharField(max_length=80)
    age = models.IntegerField(null=True, blank=True)
    favorite_color = models.CharField(max_length=255, null=True, blank=True)
    position = PositionField(collection=('name', 'age'))

    def __unicode__(self):
        return self.name
예제 #10
0
class GenericThing(models.Model):
    name = models.CharField(max_length=80)
    object_id = models.PositiveIntegerField()
    content_type = models.ForeignKey(ContentType)
    content_object = generic.GenericForeignKey()
    position = PositionField(collection=('object_id', 'content_type'))

    def __unicode__(self):
        return self.name
예제 #11
0
class UserDashlet(models.Model):
    """ One dashlet for one user
    """
    user_dashboard = models.ForeignKey(UserDashboard)
    dashlet_name = models.CharField(max_length=255)
    position = PositionField(collection='user_dashboard')
    deleted = models.BooleanField(default=False)

    class Meta:
        ordering = ('position',)
예제 #12
0
class ProductCategory(models.Model):
    product = models.ForeignKey(Product)
    category = models.ForeignKey(Category)
    position = PositionField(collection='category')

    class Meta(object):
        unique_together = ('product', 'category')

    def __unicode__(self):
        return u"%s in %s" % (self.product, self.category)
예제 #13
0
class Ingredient(models.Model):
    text = models.CharField(max_length=100, blank=False)
    recipe = models.ForeignKey(Recipe, related_name='ingredients')
    position = PositionField(collection='recipe')

    class Meta:
        ordering = ['position']

    def __str__(self):
        return self.text
예제 #14
0
class RelationArticleSite(models.Model):
    child = models.ForeignKey('cms.Article')
    parent = models.ForeignKey('cms.Site')
    position = PositionField(collection='parent')
    main = models.BooleanField(default=False)

    class Meta:
        app_label = 'cms'
        ordering = ['-id']
        unique_together = ("child", "parent")
예제 #15
0
class Request(models.Model):

    request_body = models.TextField()
    position = PositionField()

    class Meta:
        ordering = (
            '-id',
            'position',
        )
예제 #16
0
class Slide(models.Model):
    name = models.CharField(max_length=200, verbose_name=_("name"))
    image = models.ImageField(upload_to="slideshow", verbose_name=_("image"))
    link = models.URLField()
    text = models.TextField(verbose_name=_("text"))
    position = PositionField()

    created = models.DateTimeField(null=True, blank=True, auto_now_add=True)
    modified = models.DateTimeField(null=True, blank=True, auto_now=True)

    class Meta:
        ordering = ('position', '-created', '-modified')
예제 #17
0
class Attachment(models.Model):

    content_type = models.ForeignKey('contenttypes.ContentType', on_delete=models.CASCADE)
    object_id = models.CharField(max_length=128)
    content_object = GenericForeignKey('content_type', 'object_id')

    field_name = models.CharField(max_length=256, null=True, blank=True)

    file_obj = models.FileField(_("file"), upload_to=upload_path)
    original_filename = models.CharField(_("original filename"), max_length=255, blank=True, null=True)

    # for internal use...

    owner = models.ForeignKey(
        getattr(settings, 'AUTH_USER_MODEL', 'auth.User'),
        related_name='owned_%(class)ss', on_delete=models.SET_NULL,
        null=True, blank=True, verbose_name=_('owner'),
    )

    uuid = models.UUIDField()

    position = PositionField(_("order"), default=-1, collection=('object_id', 'content_type'))

    timestamp = models.DateTimeField(default=timezone.now)

    objects = AttachmentManager()

    class Meta:
        verbose_name = _('attachment')
        verbose_name_plural = _('attachments')
        unique_together = ['content_type', 'object_id', 'uuid']
        ordering = ['-timestamp', 'position']

    def __str__(self):
        if self.original_filename:
            return self.original_filename
        return str(self.file_obj.name)

    def get_absolute_url(self):
        return self.file_obj.url

    def as_file(self):
        class AttachmentFile(File):
            uuid = str(self.uuid)

        return AttachmentFile(self.file_obj, self.original_filename)

    def delete(self, *args, **kwargs):
        if self.file_obj and self.file_obj.storage.exists(self.file_obj.name):
            self.file_obj.delete()

        super(Attachment, self).delete(*args, **kwargs)
예제 #18
0
파일: models.py 프로젝트: visadb/ideaList
class Plaque(Trashable):
    """
    Model for testing interaction of Trashable and PositionField
    """
    text = models.CharField(max_length=200)
    user = models.ForeignKey(User)
    position = PositionField(collection='user')

    class Meta:
        ordering = ['position']

    def __unicode__(self):
        return self.text
예제 #19
0
class Step(models.Model):
    text = models.TextField(blank=False)
    image = models.ImageField(upload_to="images/recipe/",
                              null=True,
                              blank=True)
    recipe = models.ForeignKey(Recipe, related_name='steps')
    position = PositionField(collection='recipe')

    class Meta:
        ordering = ['position']

    def __str__(self):
        return "(%s) %s" % (self.position, self.text)
예제 #20
0
class Answer(AnswerAbstract):
    question = models.ForeignKey(Question)
    order = PositionField(collection="question")

    class Meta:
        ordering = ('order', )

    @property
    def letter(self):
        if self.question.type == "True/False":
            return self.answer[0]
        else:
            return chr(self.order + 65)
예제 #21
0
class Category(CommonAbstractModel):
    title = models.CharField(max_length=255)
    slug = AutoSlugField(editable=True, populate_from='title')
    order = PositionField(collection='parent')
    parent = models.ForeignKey('self', blank=True, null=True)
    description = models.TextField(blank=True, default='')

    class Meta:
        ordering = ['title']
        verbose_name = 'Category'
        verbose_name_plural = 'Categories'

    def __unicode__(self):
        return u'%s' % self.title
예제 #22
0
class Enlace(models.Model):
    lista = models.ForeignKey('ListEnlace',
                              on_delete=models.CASCADE,
                              null=True,
                              blank=True)
    grupo = models.ForeignKey(GrupoEnlace)
    titulo = models.CharField(max_length=255)
    enlace = models.URLField()
    posicion = PositionField(default=0, collection='lista')

    def __str__(self):
        return self.titulo

    class Meta:
        ordering = ['grupo', 'posicion']
예제 #23
0
class AdditionalInfo(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)
    content = models.TextField()
    order = PositionField()
    contentType = models.CharField(max_length=4,
                                   choices=(('HTML', 'HTML'), ('TEXT',
                                                               'Plain Text')),
                                   default='HTML')
    live = models.BooleanField(default=False)

    class Meta:
        ordering = ['order']

    def __unicode__(self):
        return self.name
예제 #24
0
class Distribucion(models.Model):
    lista = models.ForeignKey('ListDistribucion',
                              on_delete=models.CASCADE,
                              null=True,
                              blank=True)
    titulo = models.CharField(max_length=150)
    mujer = models.PositiveIntegerField()
    hombre = models.PositiveIntegerField()
    posicion = PositionField(default=0, collection='lista')

    class Meta:
        ordering = ['posicion']

    def __str__(self):
        return "{0} (M={1} - H={2})".format(self.titulo, self.mujer,
                                            self.hombre)
예제 #25
0
class Language(CommonAbstractModel):
    name = models.CharField(max_length=255, unique=True)
    code = models.CharField(max_length=10, unique=True)
    display_name = models.CharField(max_length=255, blank=True, default='')
    order = PositionField()

    class Meta:
        ordering = ['order']

    @property
    def title(self):
        if self.display_name:
            return self.display_name
        return self.name

    def __unicode__(self):
        return u'%s' % self.name
예제 #26
0
class Interval(models.Model):
  def __str__(self):
    return self.project.project_name + ": " + self.description[:50] + " (" + str(self.id) + ")"
  project = models.ForeignKey(Project, related_name='intervals', on_delete=models.CASCADE, null=True, blank=True)
  project_name = models.CharField(null=True, blank=True, max_length=50)
  start = models.DateTimeField(default=timezone.now, null=True, blank=True)
  end = models.DateTimeField(null=True, blank=True)
  total = models.DurationField(default=timedelta, blank=True)
  description = models.TextField(blank=True)
  work_day = models.DateTimeField(default=timezone.now, null=True, blank=True)
  included = models.BooleanField(default=True, blank=True)
  position = PositionField(collection="project", default=0)
  paid = models.BooleanField(default=False, blank=True)
  created_at = models.DateTimeField(default=timezone.now)
  updated_at = models.DateTimeField(auto_now=True)

  class Meta:
    ordering = ('position',)
예제 #27
0
class SectionTemplate(models.Model):

    name = models.CharField(max_length=255)
    issue_template = models.ForeignKey(IssueTemplate,
                                       related_name='section_templates')
    position = PositionField(collection='issue_template',
                             blank=True)
    categories = models.ManyToManyField(Category,
                                        related_name='section_templates',
                                        blank=True)
    content_types = models.ManyToManyField(ContentType,
                                           blank=True)

    def __unicode__(self):
        return self.name

    class Meta:
        ordering = ('issue_template', 'position')
        index_together = ['issue_template', 'position']
예제 #28
0
class FormElement(models.Model):
    workflow = models.ForeignKey(Workflow, on_delete=models.CASCADE)
    caption = models.CharField(max_length=200)
    hint = models.CharField(max_length=500, blank=True)
    AVAILABLE_ELEMENT_TYPES = (('text_input', 'Text Input'), ('number_input',
                                                              'Number Input'),
                               ('date_input', 'Date Input'), ('time_input',
                                                              'Time Input'),
                               ('date_time_input',
                                'Date Time Input'), ('text_area', 'Text Area'))
    element_type = models.CharField(max_length=50,
                                    choices=AVAILABLE_ELEMENT_TYPES)
    position = PositionField(collection='workflow')

    class Meta(object):
        ordering = ['position']

    def __str__(self):
        return self.caption
예제 #29
0
class Direction(models.Model):
    """
    A direction is a step in a recipe's preparation and each recipe can have
    multiple directions but obviously, each direction only applies to one
    recipe.
    """
    text = models.TextField(blank=True)
    recipe = models.ForeignKey(Recipe, related_name='directions')
    order = PositionField(blank=True, null=True, unique_for_field='recipe')

    objects = DirectionManager()

    def __unicode__(self):
        ret = self.text[:40]
        if len(self.text) > 40:
            ret += "..."
        return ret

    class Meta:
        ordering = ['order', 'id']
예제 #30
0
class GalleryImage(models.Model):
    gallery = models.ForeignKey(FilerGallery, related_name="images")
    image = FilerImageField(related_name="imagesss")
    active = models.BooleanField(_('Active'), default=True)
    pub_date = models.DateTimeField(default=datetime.now)
    ordering = PositionField(collection='gallery')

    class Meta:
        ordering = ['ordering']
        verbose_name = _('Gallery Image')
        verbose_name_plural = _('Gallery Images')

    def __unicode__(self):
        """Return the FilerImage name"""
        return u"%s" % self.image

    def save(self, *args, **kwargs):
        if not self.pk:
            self.pub_date = self.image.date_taken
        super(GalleryImage, self).save(*args, **kwargs)