def get_field(self, name): # Captcha if name == 'captcha': return Captcha_Field(persistent=False) # Terms of service if name == 'tos': # 1. Check the terms-of-service have been filled config_register = self.resource.get_resource('config/register') tos = config_register.get_value('tos') if tos is None: return None tos = tos.get_body() if tos is None: return None tos = tos.get_content_elements() if stream_is_empty(tos): return None # 2. Ok return self.tos # Standard return self._resource_class.get_field(name)
def is_empty(value): return stream_is_empty(value)
def GET(self, resource, context): stream = resource.get_html_field_body_stream('index') stream = list(stream) return stream if not stream_is_empty(stream) else ''
def is_allowed_to_view_folder(self, user, resource): stream = resource.get_html_field_body_stream('index') if stream_is_empty(stream): return False return self.is_allowed_to_view(user, resource)
def update_20101116(self): from itws.bar import BoxNavigation site_root = self.get_site_root() languages = site_root.get_property('website_languages') # Get informations old_name = self.name #long_title = self.get_property('long_title') #image = self.get_property('image') #toc_nb_col = self.get_property('toc_nb_col') #template_type = self.get_property('template_type') title = {} for lang in languages: title[lang] = self.get_property('title', language=lang) # Copy resources files = self.parent.make_resource('%s_migration_files' % old_name, Folder) path = files.get_abspath() for resource in self.traverse_resources(): if resource.name == self.name: continue if resource.class_id in ('slide', 'slides-ordered-table'): continue resource.parent.copy_resource(resource.name, '%s/%s' % (path, resource.name)) ordered_slides = list(self.get_ordered_names()) # Get slides slides = [] for slide in self.get_resources(): if slide.class_id != 'slide': continue kw = {'name': slide.name, 'state': slide.get_property('state')} for key in ['long_title', 'image', 'href', 'tags', 'subject', 'template_type']: kw[key] = slide.get_property(key) kw['html'] = {} for lang in languages: handler = slide.get_handler(language=lang) html = handler.get_body().get_content_elements() kw['html'][lang] = list(html) for key in ['title', 'subject']: kw[key] = {} for lang in languages: kw[key][lang] = slide.get_property(key, language=lang) slides.append(kw) # Del resource self.parent.del_resource(old_name, ref_action='force') # Create a section section = self.parent.make_resource(old_name, Section, state='public', add_boxes=False) for lang in languages: section.set_property('title', title[lang], language=lang) for i, slide in enumerate(slides): # Add html html = section.make_resource(slide['name'], WebPage, state=slide['state'], tags=slide['tags'], display_title=True) at_least_one_lang = False for lang in languages: if stream_is_empty(slide['html'][lang]) is False: at_least_one_lang = True for lang in languages: html.set_property('thumbnail', slide['image'], language=lang) handler = html.get_handler(language=lang) img = '<img src="%s/;download"/>' % slide['image'] if slide['href']: img = "<a href='%s'>%s</a>" % (slide['href'], img) data = None if at_least_one_lang: # Do not erase ... if stream_is_empty(slide['html'][lang]) is False: data = list(XMLParser(img)) + slide['html'][lang] else: data = list(XMLParser(img)) if data: handler.set_body(data) for key in ['title', 'subject']: html.set_property(key, slide[key][lang], language=lang) # Order slides table = section.get_resource('order-section') for name in ordered_slides: table.add_new_record({'name': name}) # End for resource in files.traverse_resources(): if resource.name == files.name: continue new_name = '../%s/%s' % (self.name, resource.name) resource.parent.move_resource(resource.name, new_name) # Delete files files = self.parent.del_resource('%s_migration_files' % old_name) # Add specific NavigationBox which display only ordered resources repository = site_root.get_repository() box = repository.make_resource('%s-slideshow-tree' % section.name, BoxNavigation) box.set_property('limit_to_current_folder', True) box.set_property('limit_to_ordered_resources', True) box.set_workflow_state('public') table = section.get_order_table_sidebar() table.add_new_record({'name': '%s-slideshow-tree' % section.name}) # populate the section with a feed box which display 5 slides container_path = site_root.get_pathto(section) box = section.make_resource('feed', BoxFeed, state='public', container_path=container_path, display_title=False, feed_class_id='webpage', count=5, view='/ui/feed_views/Tag_item_viewbox.xml') table = section.get_order_table_contentbar() table.add_new_record({'name': 'feed'})
def update_20101115(self): # XXX To test # XXX Check CSS old_name = self.name languages = self.get_site_root().get_property('website_languages') # Get list of addresses of addresses folder addresses = [] for address in self.get_resources(): if address.class_id == 'address': kw = {'name': address.name} for key in ['address', 'latitude', 'longitude', 'width', 'height', 'zoom', 'render']: kw[key] = address.get_property(key) # state kw['state'] = address.get_workflow_state() kw['html'] = {} for lang in languages: handler = address.get_handler(language=lang) html = handler.get_body().events kw['html'][lang] = list(html) addresses.append(kw) # Delete addresses folder self.parent.del_resource(old_name, ref_action='force') # Create a section section = self.parent.make_resource(old_name, Section, add_boxes=False) # AddressFolder was not workflow aware, to not break acl # make section public section.set_workflow_state('public') # Content bar: Get order table table = section.get_resource('order-contentbar') # Add addresses into section cmp_fn = lambda x,y: cmp(x['name'], y['name']) for i, address in enumerate(sorted(addresses, cmp=cmp_fn)): # Add html name_html = 'html-map-%s' % i html = section.make_resource(name_html, HTMLContent, state='public', display_title=False) for lang in languages: if stream_is_empty(address['html'][lang]): continue handler = html.get_handler(language=lang) handler.events = address['html'][lang] handler.set_changed() table.add_new_record({'name': name_html}) # Add map name_map = 'map-box-%s' % i amap = section.make_resource(name_map, MapBox, state='public') for key in ['address', 'latitude', 'longitude', 'width', 'height', 'zoom', 'render', 'state']: amap.set_property(key, address[key]) # Do not display the title on section view amap.set_property('display_title', False) table.add_new_record({'name': name_map}) # Side bar: Restore boxes (take them from site root) # because AdresseFolder could not customized the sidebar table = section.get_site_root().get_resource('ws-data/order-sidebar') handler = table.handler section_table = section.get_resource('order-sidebar') for record in handler.get_records_in_order(): name = handler.get_record_value(record, 'name') try: section_table.add_new_record({'name': record.name}) except UniqueError: pass