Exemple #1
0
class ProductTranslation(TranslatedFieldsModel):
    master = models.ForeignKey(
        Product,
        on_delete=models.CASCADE,
        related_name='translations',
        null=True,
    )
    caption = HTMLField(
        verbose_name=_("Caption"),
        blank=True,
        null=True,
        configuration='CKEDITOR_SETTINGS_CAPTION',
        help_text=_(
            "Short description used in the catalog's list view of products."),
    ),
    description = HTMLField(
        verbose_name=_("Description"),
        configuration='CKEDITOR_SETTINGS_DESCRIPTION',
        blank=True,
        help_text=_(
            "Full description used in the catalog's detail view of Smart Cards."
        ),
    ),

    class Meta:
        unique_together = [('language_code', 'master')]
Exemple #2
0
class PersonBiographyPluginModel(CMSPlugin):
    """
    Stores a reference to a PersonBiography. This is used so a given
    PersonBiography can be referenced by 0 or more PersonBiographyPlugins.
    """
    person = models.ForeignKey(PersonBiography)
    short_description = HTMLField(
        blank=True,
        help_text=
        "If specified, this text will replace the person's normal description."
    )
    event_description = HTMLField(
        blank=True,
        help_text=
        "If specified, this text will appear after the person's normal description."
    )

    class Meta:
        ordering = ('person', )

    def __unicode__(self):
        return unicode(self.person)

    def copy_relations(self, oldinstance):
        self.person = oldinstance.person
Exemple #3
0
class City(models.Model):
    country = models.ForeignKey(Country)
    delivery_method = models.ManyToManyField(DeliveryMethod)
    name = models.CharField(_('name of city'), max_length=128)
    points_title = models.CharField(_('points title'),
                                    max_length=1128,
                                    blank=True,
                                    null=True)
    points = HTMLField(_('points'), blank=True)
    courier_title = models.CharField(_('courier title'),
                                     max_length=1128,
                                     blank=True,
                                     null=True)
    courier = HTMLField(_('courier'), blank=True)
    postal_title = models.CharField(_('postal title'),
                                    max_length=1128,
                                    blank=True,
                                    null=True)
    postal = HTMLField(_('postal'), blank=True)

    def __unicode__(self):
        return u'%s' % self.name

    class Meta:
        ordering = ['country', 'name']
        verbose_name = _('city')
        verbose_name_plural = _('cities')
Exemple #4
0
class DCLBannerItemPluginModel(CMSPlugin):
    content = HTMLField()
    banner_text = HTMLField(
        blank=True,
        null=True,
        max_length=100,
        help_text='Optional text to be shown as banner in other half.',
    )
    banner_image = FilerImageField(
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        help_text='Optional image to be used in the banner in other half.')
    TEXT_DIRECTIONS = (('left', 'Left'), ('right', 'Right'))
    text_direction = models.CharField(
        choices=TEXT_DIRECTIONS,
        max_length=10,
        default=True,
        help_text='The alignment of text in the section')

    def get_extra_classes(self):
        extra_classes = ''
        if self.text_direction == 'left':
            extra_classes = 'flex-row-rev'
        return extra_classes
Exemple #5
0
class StockModelPlugin(CMSPlugin):
    text_left = HTMLField(max_length=255,
                          default='',
                          verbose_name='Текст слева')
    text_right = HTMLField(max_length=255,
                           default='',
                           verbose_name='Текст справа')
    url = models.CharField(max_length=255, null=True, verbose_name='Ссылка')
    color = ColorField(default='#FF0000', verbose_name='Цвет фона справа')
    image = models.ImageField(upload_to=get_file_path,
                              null=True,
                              blank=True,
                              verbose_name=_('Картинка'))

    added = models.DateTimeField(auto_now=False,
                                 auto_now_add=True,
                                 verbose_name='Добавлена')

    def rgba(self):
        hex_value = self.color.lstrip('#')
        lv = len(hex_value)
        rgba_value = tuple(
            int(hex_value[i:i + lv // 3], 16) for i in range(0, lv, lv // 3))
        return rgba_value

    def image_src(self):
        try:
            return self.image.url
        except ValueError:
            return None
class Event(models.Model):
    name = models.CharField(
        help_text=_("For reference, such as \"Spring 2, 2010\""),
        max_length=255
    )
    event_date = models.DateField(default=date.today)
    pel_due_date = models.DateField(default=date.today)
    bgs_due_date = models.DateField(default=date.today)
    oog_p = models.BooleanField(_("Out of game event"), default=False)
    bgs_p = models.BooleanField(_("Allow Between Game Skills"), default=True)
    notes = HTMLField(blank=True, default='')
    summary = HTMLField(blank=True, default='')

    def __str__(self):
        return "{} - {}".format(
                self.name,
                self.event_date.strftime("%m-%d-%Y")
            )

    @classmethod
    def previous_event(cls):
        try:
            return cls.objects.filter(event_date__lt=date.today())\
                .order_by('-event_date').first()
        except cls.DoesNotExist:
            return None

    @classmethod
    def next_event(cls):
        try:
            return cls.objects.filter(event_date__gt=date.today())\
                .order_by('event_date').first()
        except cls.DoesNotExist:
            return None

    @property
    def previous(self):
        try:
            return type(self).objects.filter(event_date__lt=self.event_date)\
                .order_by('-event_date').first()
        except self.DoesNotExist:
            return None

    @property
    def next(self):
        try:
            return type(self).objects.filter(event_date__gt=self.event_date)\
                .order_by('-event_date').first()
        except self.DoesNotExist:
            return None

    def get_absolute_url(self):
        """
        Return the absolute URL.

        This is the canonical URL to show the detail page
        for an Event.
        """
        return reverse('events:event_detail', kwargs={'pk': self.pk})
class Residence(models.Model):
    city = models.ForeignKey(City, on_delete=models.CASCADE)
    residence_name = models.CharField(max_length=100)
    description = HTMLField(blank=False)
    note = HTMLField(blank=True)

    def __str__(self):
        return "%s, %s" % (self.residence_name, self.city)
Exemple #8
0
class Faculty(TranslatableModel):
    #region           -----Translation-----
    translations = TranslatedFields(
        description=HTMLField(blank=True,
                              default="",
                              verbose_name=_("Description")),
        title=CharField(max_length=100,
                        blank=False,
                        default="",
                        unique=True,
                        verbose_name=_("Title")),
        council_of_employers=HTMLField(blank=False,
                                       verbose_name=_("Council of employers")))
    #endregion

    #region           -----Information-----
    emblem = ImageField(upload_to="faculties/emblems",
                        blank=False,
                        verbose_name=_("Emblem"),
                        default="")
    #endregion

    #region            -----Relation-----
    scientific_society = ForeignKey(ScientificSociety,
                                    blank=True,
                                    null=True,
                                    on_delete=SET_NULL,
                                    verbose_name=_("Scientific Societies"),
                                    related_name="scientific_society")
    gallery = ForeignKey(Gallery,
                         blank=True,
                         null=True,
                         on_delete=SET_NULL,
                         verbose_name=_("Gallery"),
                         related_name="faculties")
    staff = ManyToManyField("StaffFaculty", verbose_name=_("Staff"))

    #endregion

    #region            -----Metadata-----
    class Meta(object):
        verbose_name_plural = _("Faculties")
        verbose_name = _("Faculty")

    #endregion

    #region         -----Internal Methods-----
    def get_absolute_url(self) -> str:
        """@return link to model"""
        return reverse('faculty', kwargs={'faculty_id': self.pk})

    def searching_fields(self) -> List[str]:
        """@return translated fields"""
        return ["translations__title", "translations__description"]

    def __str__(self) -> str:
        """@return title of faculty"""
        return self.title
Exemple #9
0
class ContentColumn(CMSPlugin):
    main_content = HTMLField(blank=True)
    aligned_content = HTMLField(blank=True)
    extra_classes = models.CharField(
        blank=True,
        max_length=200,
    )

    def __str__(self):
        return "Column"
Exemple #10
0
class SofaModel(Product):
    sofa_type = models.CharField(
        _("Sofa Type"),
        choices=[(t, t) for t in (_('Straight'), _('Corner'), _('2 seat'),
                                  _('3 seat'), _('Sofabed'), _('Chair'))],
        max_length=9,
    )
    multilingual = TranslatedFields(
        description=HTMLField(
            verbose_name=_("Description"),
            configuration='CKEDITOR_SETTINGS_DESCRIPTION',
            blank=True,
            help_text=
            _("Full description used in the catalog's detail view of Smart Cards."
              ),
        ),
        caption=HTMLField(
            verbose_name=_("Caption"),
            configuration='CKEDITOR_SETTINGS_DESCRIPTION',
            blank=True,
            help_text=
            _("Full description used in the catalog's detail view of Smart Cards."
              ),
        ),
    )
    # other fields to map the specification sheet

    default_manager = ProductManager()

    lookup_fields = ('product_name__icontains', )

    def get_price(self, request):
        aggregate = self.variants.aggregate(models.Min('unit_price'))
        return Money(aggregate['unit_price__min'])

    def is_in_cart(self, cart, watched=False, **kwargs):
        try:
            product_code = kwargs['product_code']
        except KeyError:
            return
        cart_item_qs = CartItem.objects.filter(cart=cart, product=self)
        for cart_item in cart_item_qs:
            if cart_item.product_code == product_code:
                return cart_item

    def get_product_variant(self, **kwargs):
        try:
            product_code = kwargs.get('product_code')
            #added new model for the whole product list
            id_var = ProductList.objects.get(product_code=product_code).id
            return self.variants.get(product_code=id_var)
        except SofaVariant.DoesNotExist as e:
            raise SofaModel.DoesNotExist(e)
Exemple #11
0
class SmartCardTranslation(TranslatedFieldsModel):
    master = models.ForeignKey(SmartCard, related_name='translations',
        null=True)
    caption = HTMLField(verbose_name=_("Caption"),
        configuration='CKEDITOR_SETTINGS_CAPTION',
        help_text=_("Short description used in the catalog's list view of products."))
    description = HTMLField(verbose_name=_("Description"),
        configuration='CKEDITOR_SETTINGS_DESCRIPTION',
        help_text=_("Description for the list view of products."))

    class Meta:
        unique_together = [('language_code', 'master')]
Exemple #12
0
class Carousel(models.Model):
    name = models.CharField(max_length=100,
                            help_text='A friendly name for your setup')
    storyOne = models.ForeignKey(
        Story,
        related_name="storyone_set",
        help_text='Second Slide will come from this story')
    captionOne = models.CharField(max_length=100,
                                  help_text='For headline override')
    storyTwo = models.ForeignKey(
        Story,
        related_name="storytwo_set",
        help_text='Third Slide will come from this story')
    captionTwo = models.CharField(max_length=100,
                                  help_text='For headline override')
    storyThree = models.ForeignKey(
        Story,
        related_name="storythree_set",
        help_text='First Slide will come from this story')
    captionThree = models.CharField(max_length=100,
                                    help_text='For headline override')
    storyFour = models.ForeignKey(
        Story,
        null=True,
        blank=True,
        related_name="storyfour_set",
        help_text='(Optional) - Fourth Slide will come from this story')
    captionFour = models.CharField(max_length=100,
                                   null=True,
                                   blank=True,
                                   help_text='For headline override')
    publish_date = models.DateTimeField(
        help_text="This is the publication date of your Carousel.")
    is_live = models.BooleanField()
    preview = models.BooleanField()
    published_objects = models.Manager()  #PublishedObjectsManager()
    css = HTMLField(null=True,
                    blank=True,
                    help_text='If left blank, it will be provided for you.')
    js = HTMLField(null=True,
                   blank=True,
                   help_text='If left blank, it will be provided for you.')

    class Meta:
        ordering = ['-publish_date']
        verbose_name_plural = "Carousels"

    @property
    def unified_date(self):
        return self.publish_date

    def __str__(self):
        return "%s" % (self.name)
Exemple #13
0
class About(BaseModel):
    name = models.CharField(max_length=255)
    designation = models.CharField(max_length=255, null=True, blank=True)
    image = models.ImageField(blank=True)
    education = HTMLField(null=True, blank=True)
    biography = HTMLField(null=True, blank=True)
    linkedIn = models.URLField(null=True, blank=True)
    email = models.CharField(null=True, blank=True, max_length=255)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = "Abouts"
Exemple #14
0
class MetaAttributes(PageExtension, IconMixin):
    image = FilerImageField(blank=True, null=True)

    lead = HTMLField(
        max_length=256,
        blank=True,
        null=True,
        help_text='Short description of the page. Used by the step list plugin.'
    )

    description = HTMLField(blank=True, null=True)

    class Meta:
        verbose_name = 'Meta Attributes'
        verbose_name_plural = 'Meta Attributes'
Exemple #15
0
class Torneo(models.Model):
    class Meta:
        app_label = 'torneos'

    t_id = models.AutoField(primary_key=True)
    title = models.CharField(blank=False, max_length=50)
    slug = models.SlugField(max_length=50)
    short_description = models.CharField(blank=False, max_length=200)
    image = models.ImageField(blank=False)
    long_description = HTMLField(blank=False)
    end_date = models.DateTimeField('end date', blank=False)
    prizes = HTMLField(blank=True)
    first_prize = models.CharField(blank=True, max_length=50)
    evaluation = HTMLField(blank=False)
    data = HTMLField(blank=False)
    recruiting = models.BooleanField()

    upload_storage = FileSystemStorage(location=s.BASE_DIR,
                                       base_url='/uploads')
    public_leaderboard_file = models.FileField(upload_to=s.BASE_DIR +
                                               '/torneos/leaderboard/public',
                                               storage=upload_storage)
    private_leaderboard_file = models.FileField(upload_to=s.BASE_DIR +
                                                '/torneos/leaderboard/private',
                                                storage=upload_storage)

    # Custom object manager
    objects = TorneoManager()

    questions = models.ManyToManyField("torneos.RegistrationQuestion",
                                       blank=True)

    @models.permalink
    def get_absolute_url(self):
        return ('torneos_detail_slug', (), {
            'torneo_id': self.t_id,
            'slug': self.slug
        })

    def __str__(self):
        return u''.join((self.title, '')).encode('utf-8').strip()

    def is_user_registered(self, user):
        """Return true if the given user has an **active**
		registration for this competition, else return false"""
        if user.is_anonymous():
            return False
        return self.registration_set.filter(user=user.pk, active=True).exists()
Exemple #16
0
class Lampe(models.Model):
    nom = models.CharField(max_length=30)
    hauteur = models.PositiveIntegerField(blank=True, null=True)
    largeur_socle = models.PositiveIntegerField(blank=True, null=True)
    diametre = models.PositiveIntegerField(blank=True, null=True)
    materiaux = models.CharField(blank=True, null=True, max_length=100)
    ampoule = models.CharField(blank=True, null=True, max_length=100)
    cable = models.CharField(blank=True, null=True, max_length=100)
    electrification = models.CharField(blank=True, null=True, max_length=100)
    description = HTMLField(blank=True, null=True)
    groupe = models.ManyToManyField(Groupe, related_name='lampes')
    localisation = models.ForeignKey(Localisation,
                                     related_name='localisation',
                                     blank=True,
                                     null=True)
    slug = models.SlugField(
        u'slug',
        blank=False,
        default='',
        help_text=u'mettre un slug unique pour cette lampe',
        max_length=64,
    )

    def __str__(self):
        return self.nom

    def get_absolute_url(self):
        return reverse('galerieapp:LampeDetailView',
                       kwargs={
                           'slug': self.slug,
                       })
Exemple #17
0
class ScientificSociety(TranslatableModel):
    #region           -----Translation-----
    translations = TranslatedFields(
        description=HTMLField(verbose_name=_("Description"),
                              blank=False,
                              default=""),
        sub_title=CharField(verbose_name=_("Sub title"),
                            max_length=400,
                            blank=False,
                            default=""))
    #endregion

    #region           -----Information-----
    phone = CharField(max_length=20,
                      blank=False,
                      verbose_name=_("Phone number"))
    emails = MultiEmailField()
    #endregion

    #region            -----Relations-----
    staff = ManyToManyField("StaffCathedra", verbose_name=_("Staff"))

    #endregion

    #region            -----Metadata-----
    class Meta(object):
        verbose_name_plural = _("Scientific Societies")
        verbose_name = _("Scientific Society")

    #endregion

    def __str__(self) -> str:
        return self.sub_title
Exemple #18
0
class PresidencyURL(BaseModel, TranslatableModel):
    translations = TranslatedFields(
        name=models.CharField(
            _('name'),
            max_length=100,
            null=True,
        ),
        description=HTMLField(_('description'), ),
    )
    url = models.URLField(
        _('url'),
        max_length=200,
    )
    order = models.PositiveIntegerField(
        _('order'),
        default=0,
    )

    objects = PresidencyURLQueryset.as_manager()

    def __str__(self):
        return '{} ({})'.format(
            self.name,
            self.url,
        )

    class Meta:
        ordering = ('order', )
        verbose_name = _('presidency url')
        verbose_name_plural = _('presidency urls')
        permissions = (('view_presidency_url',
                        _('Can view presidency urls')), )
class Folder(CMSPlugin):
    layout = models.CharField(
        blank=True,
        default='',
        max_length=60,
        verbose_name=_('layout'),
    )
    title = models.CharField(max_length=255,
                             verbose_name=_('title'),
                             default='',
                             blank=True)
    summary = HTMLField(verbose_name=_('summary'), default='', blank=True)
    folder = FilerFolderField(
        verbose_name=_('select folder'),
        blank=True,
        null=True,
        on_delete=models.SET_NULL,
        related_name='+',
    )
    order_by = models.CharField(
        max_length=60,
        verbose_name=_('order by'),
        null=True,
        blank=True,
    )
    open_in_new_window = models.BooleanField(
        default=False, verbose_name=_('Open in new window'))

    def __str__(self):
        return self.title
class Counter(CMSPlugin):
    body = models.CharField(_('Title'), max_length=255, null=True, blank=True)
    counter = models.CharField(_('counter'), max_length=255)
    image = FilerImageField(
        verbose_name=_('Image'),
        blank=True,
        null=True,
        on_delete=models.SET_NULL,
        related_name='+',
    )
    icon = Icon(verbose_name=_('Icon'), null=True, blank=True)
    prefix = models.CharField(_('prefix'),
                              max_length=255,
                              null=True,
                              blank=True)
    suffix = models.CharField(_('suffix'),
                              max_length=255,
                              null=True,
                              blank=True)
    content = HTMLField(verbose_name=_('Content'), default='', blank=True)
    layout = models.CharField(blank=True,
                              default='',
                              max_length=60,
                              verbose_name=_('layout'))

    def __str__(self):
        return str(self.pk)
Exemple #21
0
class Post(models.Model):
    class Meta:
        ordering = ["-added"]
        verbose_name = 'Новость'
        verbose_name_plural = 'Публикации'

    title = models.CharField(max_length=255, verbose_name='Название новости')
    category = models.CharField(max_length=10,
                                choices=Categories.as_choices(),
                                default='normal',
                                verbose_name='Категория')
    content = HTMLField(null=True, blank=True, verbose_name='Содержание')
    added = models.DateTimeField(auto_now=False,
                                 auto_now_add=True,
                                 verbose_name='Добавлена')
    updated = models.DateTimeField(auto_now=True,
                                   auto_now_add=False,
                                   verbose_name='Изменена')
    image = models.ImageField(null=True, blank=True, verbose_name='Картинка')
    status = models.BooleanField(default=True, verbose_name='Активен')

    objects = PostManager()

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return "/news/{id}".format(id=self.id)
Exemple #22
0
class SmartCard(Product):
    # common product fields
    unit_price = MoneyField(_("Unit price"), decimal_places=3,
        help_text=_("Net price for this product"))

    # product properties
    CARD_TYPE = (2 * ('{}{}'.format(s, t),)
                 for t in ('SD', 'SDXC', 'SDHC', 'SDHC II') for s in ('', 'micro '))
    card_type = models.CharField(_("Card Type"), choices=CARD_TYPE, max_length=15)
    SPEED = ((str(s), "{} MB/s".format(s)) for s in (4, 20, 30, 40, 48, 80, 95, 280))
    speed = models.CharField(_("Transfer Speed"), choices=SPEED, max_length=8)
    product_code = models.CharField(_("Product code"), max_length=255, unique=True)
    storage = models.PositiveIntegerField(_("Storage Capacity"),
        help_text=_("Storage capacity in GB"))
    multilingual = TranslatedFields(description=HTMLField(verbose_name=_("Description"),
        configuration='CKEDITOR_SETTINGS_DESCRIPTION',
        help_text=_("Full description used in the catalog's detail view of Smart Cards.")))

    class Meta:
        verbose_name = _("Smart Card")
        verbose_name_plural = _("Smart Cards")

    def get_price(self, request):
        return self.unit_price

    def get_product_variant(self, extra):
        """
        SmartCards do not have flavors, they are the product.
        """
        return self
class Gallery(TranslatableModel):
    #region           -----Translation-----
    translations = TranslatedFields(description=HTMLField(
        verbose_name=_("Description"), blank=True, null=True),
                                    title=CharField(verbose_name=_("Title"),
                                                    max_length=100,
                                                    blank=False))

    #endregion

    #region            -----Metadata-----
    class Meta(object):
        verbose_name_plural = _("Galleries")
        verbose_name = _("Gallery")

    #endregion

    #region         -----Internal Methods-----
    def searching_fields(self) -> List[str]:
        """@return translated fields"""
        return ["translations__description", "translations__title"]

    def _images(self) -> Html:
        """@return related images"""
        return render_related_images(images=self.images.all())

    def __str__(self) -> str:
        """@return gallery title"""
        return self.title

    #endregion

    #region          -----Rename Methods-----
    _images.short_description = _("Images")
class MaterialBaseNode(TranslatableModel):
    #region           -----Information-----
    translations = TranslatedFields(
        local_title=CharField(verbose_name=_("Local title"),
                              help_text=_("""Additional field with local name 
    for best admin usage experience. Will be filled 
    from title field, if  field empty."""),
                              max_length=100,
                              blank=True,
                              null=True),
        content=HTMLField(verbose_name=_("Content"), blank=False, default=""),
        title=CharField(verbose_name=_("Title"), max_length=100))

    #endregion

    #region            -----Metadata-----
    class Meta(object):
        verbose_name_plural = _("Material-technical bases")
        verbose_name = _("Material-technical base")

    #endregion

    #region         -----Internal Methods-----
    def searching_fields(self) -> List[str]:
        """@return translated fields"""
        return ["translations__title"]

    def __str__(self) -> str:
        """@return local title of node"""
        return f"{self.local_title}"
Exemple #25
0
class UngleichCustomerItem(CMSPlugin):
    image = FilerImageField(null=True,
                            blank=True,
                            related_name="customer_item_image",
                            on_delete=models.SET_NULL)
    url = models.URLField(max_length=300, default="", blank=True)
    description = HTMLField()
Exemple #26
0
class Team(models.Model):
    profile = models.OneToOneField(UserProfile, on_delete=models.CASCADE,null=True)
    rank = models.IntegerField(default=1)
    description = HTMLField(null=True,blank=True)

    def __str__(self):
        return f'{self.profile.first_name} {self.profile.last_name}'
Exemple #27
0
class Service(CMSPlugin):
    menu_text = models.CharField(max_length=100, default="", blank=True)
    title = models.CharField(max_length=200)
    sub_title = HTMLField()

    def __str__(self):
        return self.title
Exemple #28
0
class Image(models.Model):
    banniere_name = models.ForeignKey(Banniere, on_delete=models.CASCADE)
    photo = models.ImageField(upload_to='accueil')
    description = HTMLField(blank=True)

    def __str__(self):
        return "%s %s" % (self.photo, self.banniere_name)
Exemple #29
0
class FAQ(models.Model):

    category = models.ForeignKey(FAQCategory,
                                 null=True,
                                 verbose_name=_('Category'))

    question = models.CharField(_('Question'), max_length=200)
    answer = HTMLField(_('Answer'), help_text=_('Answer the question.'))

    # This defines the order number on the FAQ page
    orderNum = models.PositiveIntegerField(
        _('Order number'),
        help_text=
        _('This number specifies the order in which the questions will be shown on the FAQ page.'
          ),
        default=0)

    draft = models.BooleanField(
        _('Draft status'),
        default=False,
        help_text=_('Check this box to prevent publication.'))

    creationDate = models.DateTimeField(_('Creation date'), auto_now_add=True)
    modifiedDate = models.DateTimeField(_('Last modified date'), auto_now=True)

    def __str__(self):
        return '%s: %s' % (_('FAQ'), self.question)

    class Meta:
        verbose_name = _('FAQ')
        verbose_name_plural = _('FAQs')
        ordering = ('orderNum', )
Exemple #30
0
class LUT_DeliveryPoint(MPTTModel, TranslatableModel):
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
    translations = TranslatedFields(
        short_name=models.CharField(_("Short name"), max_length=50, default=EMPTY_STRING),
        description=HTMLField(_("Description"), configuration='CKEDITOR_SETTINGS_MODEL2', blank=True,
                              default=EMPTY_STRING),
    )
    is_active = models.BooleanField(_("Active"), default=True)
    customer_responsible = models.ForeignKey(
        'Customer', verbose_name=_("Customer responsible"),
        help_text=_("Invoices are sent to this customer who is responsible for collecting the payments."),
        blank=True, null=True, default=None)
    inform_customer_responsible = models.BooleanField(_("Inform the group of orders placed by its members"), default=False)
    transport = ModelMoneyField(
        _("Delivery point shipping cost"),
        # help_text=_("This amount is added once for groups with entitled customer or at each customer for open groups."),
        default=DECIMAL_ZERO, blank=True, max_digits=5, decimal_places=2,
        validators=[MinValueValidator(0)])
    min_transport = ModelMoneyField(
        _("Minium order amount for free shipping cost"),
        # help_text=_("This is the minimum order amount to avoid shipping cost."),
        default=DECIMAL_ZERO, blank=True, max_digits=5, decimal_places=2,
        validators=[MinValueValidator(0)])

    objects = LUT_DeliveryPointManager()

    def __str__(self):
        if self.customer_responsible is not None:
            return "[{}]".format(self.customer_responsible.short_basket_name)
        else:
            return self.safe_translation_getter('short_name', any_language=True, default=EMPTY_STRING)

    class Meta:
        verbose_name = _("Delivery point")
        verbose_name_plural = _("Deliveries points")