Source code for mg.orga.roll.models
# MG_GPL_HEADER_BEGIN
# 
# This file is part of Media Gallery, GNU GPLv2.
# 
# Media Gallery is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
# 
# Media Gallery is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with Media Gallery; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# 
# MG_GPL_HEADER_END
__author__ = "Media Gallery contributors <mg@lists.ssji.net>"
__copyright__ = "(c) 2010"
__credits__ = ["Dimitri Refauvelet", "Nicolas Pouillon"]
from django.db import models
from mg.core.element.models import Element
__all__ = ['Roll']
class Roll(models.Model):
[docs]    children = models.ManyToManyField(Element)
    name = models.CharField(max_length = 32)
    slug = models.SlugField(max_length = 16)
    def append(self, elem):
        """
        Appends an element to the Roll
        :param elem: Element to add to this roll
        """
        self.children.add(elem)
    def remove(self, elem):
        """
        Removes an element form the Roll
        :param elem: Element to remove from this roll
        """
        self.children.remove(elem)
    def get_random_element(self):
        try:
            return self.children.order_by("?")[0]
        except:
            return None
    def theme(self):
        return self.theme_set.all()[0]
    def __unicode__(self):
        return u"%s"%(self.name)