Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

Picture plugin: small improvements #1468

Merged
merged 3 commits into from Oct 9, 2012
@@ -1,36 +1,51 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
+from django.core.exceptions import ValidationError
from cms.models import CMSPlugin, Page
from os.path import basename
class Picture(CMSPlugin):
"""
- A Picture with or without a link
+ A Picture with or without a link.
"""
- CENTER = "center"
LEFT = "left"
RIGHT = "right"
- FLOAT_CHOICES = ((CENTER, _("center")),
- (LEFT, _("left")),
+ CENTER = "center"
+ FLOAT_CHOICES = ((LEFT, _("left")),
(RIGHT, _("right")),
+ (CENTER, _("center")),
)
-
-
+
image = models.ImageField(_("image"), upload_to=CMSPlugin.get_media_path)
- url = models.CharField(_("link"), max_length=255, blank=True, null=True, help_text=_("if present image will be clickable"))
- page_link = models.ForeignKey(Page, verbose_name=_("page"), null=True, blank=True, help_text=_("if present image will be clickable"))
- alt = models.CharField(_("alternate text"), max_length=255, blank=True, null=True, help_text=_("textual description of the image"))
- longdesc = models.CharField(_("long description"), max_length=255, blank=True, null=True, help_text=_("additional description of the image"))
- float = models.CharField(_("side"), max_length=10, blank=True, null=True, choices=FLOAT_CHOICES)
-
+ url = models.CharField(_("link"), max_length=255, blank=True, null=True,
+ help_text=_("If present, clicking on image will take user to link."))
+ page_link = models.ForeignKey(Page, verbose_name=_("page"), null=True,
+ blank=True, help_text=_("If present, clicking on image will take user \
+ to specified page."))
+ alt = models.CharField(_("alternate text"), max_length=255, blank=True,
+ null=True, help_text=_("Specifies an alternate text for an image, if \
+ the image cannot be displayed.<br />Is also used by search engines to \
+ classify the image."))
+ longdesc = models.CharField(_("long description"), max_length=255,
+ blank=True, null=True, help_text=_("When user hovers above picture,\
+ this text will appear in a popup."))
+ float = models.CharField(_("side"), max_length=10, blank=True, null=True,
+ choices=FLOAT_CHOICES, help_text=_("Move image left, right or center."))
+
def __unicode__(self):
if self.alt:
return self.alt[:40]
elif self.image:
- # added if, because it raised attribute error when file wasn't defined
+ # added if, because it raised attribute error when file wasn't
+ # defined.
try:
return u"%s" % basename(self.image.path)
except:
pass
return "<empty>"
+
+ def clean(self):
+ if self.url and self.page_link:
+ raise ValidationError(
+ _("You can enter a Link or a Page, but not both."))
Oops, something went wrong.