Example #1
0
    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)
Example #2
0
    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)
Example #3
0
 def is_empty(value):
     return stream_is_empty(value)
Example #4
0
 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 ''
Example #5
0
    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)
Example #6
0
 def is_empty(value):
     return stream_is_empty(value)
Example #7
0
 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 ''
Example #8
0
    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'})
Example #9
0
 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