Skip to content

Commit

Permalink
Add new ImagePathDataType datatype and use it in slide edit
Browse files Browse the repository at this point in the history
  • Loading branch information
Henry Obein committed Jun 18, 2010
1 parent 79c6f56 commit ac53025
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 13 deletions.
21 changes: 20 additions & 1 deletion datatypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.

# Import from itools
from itools.datatypes import Integer, Enumerate, String
from itools.datatypes import Integer, Enumerate, String, PathDataType
from itools.uri import get_reference
from itools.web import get_context

# Import from ikaaro
from ikaaro.file import Image
from ikaaro.registry import get_document_types


Expand Down Expand Up @@ -104,3 +106,20 @@ def get_options(cls):

options.sort(key=lambda x: x['value'])
return options



class ImagePathDataType(PathDataType):

@staticmethod
def is_valid(value):
here = get_context().resource
try:
ref = get_reference(value)
if not ref.scheme:
resource = here.get_resource(ref.path, soft=True)
if resource and isinstance(resource, Image):
return True
except Exception, e:
return False
return False
6 changes: 3 additions & 3 deletions slides.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
from ikaaro.webpage import WebPage

# Import from itws
from datatypes import PositiveIntegerNotNull
from datatypes import PositiveIntegerNotNull, ImagePathDataType
from resources import ManageViewAware
from slides_views import SlideShow_Edit, Slide_Edit, Tag_SlideView, Slide_View
from slides_views import SlideShow_ManageView, SlideTemplateType
Expand All @@ -64,7 +64,7 @@ def get_metadata_schema(cls):
state=String(default='public'),
long_title=Unicode,
# Image of the slide
image=String,
image=ImagePathDataType,
# Slide template type
template_type=SlideTemplateType(default=''),
# Slide title href
Expand Down Expand Up @@ -205,7 +205,7 @@ def get_metadata_schema(cls):
return merge_dicts(ResourcesOrderedContainer.get_metadata_schema(),
long_title=Unicode,
# Image of the slideshow
image=String,
image=ImagePathDataType,
# TOC width
toc_nb_col=PositiveIntegerNotNull(default=2),
# Slide template type
Expand Down
16 changes: 7 additions & 9 deletions slides_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
from ikaaro.webpage import HTMLEditView

# Import from itws
from datatypes import PositiveIntegerNotNull
from datatypes import PositiveIntegerNotNull, ImagePathDataType
from tags import TagsAware_Edit, TagItem_View
from views import ProxyContainerNewInstance

Expand Down Expand Up @@ -100,7 +100,8 @@ def get_schema(self, resource, context):
return merge_dicts(HTMLEditView.get_schema(self, resource, context),
TagsAware_Edit.get_schema(self, resource, context),
long_title=Unicode, href=String,
image=String, template_type=SlideTemplateType)
image=ImagePathDataType,
template_type=SlideTemplateType)


def get_widgets(self, resource, context):
Expand Down Expand Up @@ -136,9 +137,7 @@ def action(self, resource, context, form):
long_title = form['long_title']
resource.set_property('long_title', long_title, language=language)
# Image to appear on slide view
image = form['image']
if image:
resource.set_property('image', image)
resource.set_property('image', form['image'])
href = form['href']
if href:
resource.set_property('href', href)
Expand All @@ -152,7 +151,8 @@ def action(self, resource, context, form):
class SlideShow_Edit(DBResource_Edit):

schema = merge_dicts(DBResource_Edit.schema, long_title=Unicode,
image=String, toc_nb_col=PositiveIntegerNotNull,
image=ImagePathDataType,
toc_nb_col=PositiveIntegerNotNull,
template_type=SlideTemplateType)

widgets = [title_widget, TextWidget('long_title', title=MSG(u'Long title'),
Expand All @@ -179,9 +179,7 @@ def action(self, resource, context, form):
long_title = form['long_title']
resource.set_property('long_title', long_title, language=language)
# Image to appear on slide view
image = form['image']
if image:
resource.set_property('image', image)
resource.set_property('image', form['image'])
# Toc width
resource.set_property('toc_nb_col', form['toc_nb_col'])
# Template layout
Expand Down

0 comments on commit ac53025

Please sign in to comment.