コード例 #1
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_cinema_review = find_related_cinema_review(self.context)
        related_cinema_review = [a for a in related_cinema_review]
        reviews_bodies = []
        for obj in related_cinema_review:
            object_values = {
                'object':
                obj,
                'current_user':
                user,
                'state':
                get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])
            }
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            reviews_bodies.append(body)

        values = {
            'object':
            self.context,
            'reviews_bodies':
            reviews_bodies,
            'state':
            get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body'],
            'sync_operation':
            'address_coordinates_synchronizing',
            'url':
            self.request.resource_url(self.context,
                                      '@@culturaleventmanagement'),
            'get_oid':
            get_oid
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result.update(self.requirements)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #2
0
ファイル: see_account.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        sites = self.context.sites
        result_sitesbody = []
        for obj in sites:
            object_values = {'object': obj}
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            result_sitesbody.append(body)

        services = self.context.services
        result_servicesbody = []
        for obj in services:
            object_values = {'object': obj,
                             'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            result_servicesbody.append(body)

        result_ordersbody = []
        for obj in self.context.orders:
            object_values = {'object': obj,
                             'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            result_ordersbody.append(body)

        values = {'navbar_body': navbars['navbar_body'],
                  'row_len_services': math.ceil(len(services)/4),
                  'row_len_sites': math.ceil(len(sites)/6),
                  'services': result_servicesbody,
                  'orders': result_ordersbody,
                  'sites': result_sitesbody}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #3
0
ファイル: see_artist.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_contents, len_contents = self.get_related_contents(user)
        values = {
            'object': self.context,
            'state': get_states_mapping(user, self.context,
                                        self.context.state[0]),
            'related_contents': related_contents,
            'len_contents': len_contents,
            'navbar_body': navbars['navbar_body'],
            'actions_bodies': navbars['body_actions'],
            'footer_body': navbars['footer_body'],
            'get_oid': get_oid,
            'is_portalmanager': has_role(user=user, role=('PortalManager', ))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #4
0
ファイル: see_artist.py プロジェクト: ecreall/lagendacommun
    def get_related_contents(self, user):
        interfaces = get_subinterfaces(IBaseReview)
        interfaces.extend([ICulturalEvent, IFilmSynopses])
        objects = find_entities(
            user=user,
            interfaces=interfaces,
            metadata_filter={'states': ['published']},
            contribution_filter={'artists_ids': [self.context]},
            include_site=True,
            sort_on='release_date',
            reverse=True)
        batch = Batch([o for o in objects], self.request,
                      default_size=core.BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        result_body = []
        for obj in batch:
            render_dict = {'object': obj,
                           'current_user': user,
                           'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body,
                  'batch': batch}
        contents_body = self.content(
            args=values,
            template=self.related_contents_template)['body']
        return ((result_body and contents_body) or None), len_result
コード例 #5
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        site = get_site_folder(True)
        add_participants_view = False
        if not any(s in ('editable', 'rejected', 'submitted', 'prepublished')
                   for s in self.context.state):
            add_participants_view = has_any_roles(roles=(('GameResponsible',
                                                          site), 'Admin'))

        values = {
            'object':
            self.context,
            'state':
            get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body'],
            'add_participants_view':
            add_participants_view
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #6
0
ファイル: see_venue.py プロジェクト: ecreall/lagendacommun
    def get_related_contents(self, user, interface):
        lac_catalog = find_catalog('lac')
        venue_index = lac_catalog['object_venue']
        query = venue_index.any([self.context.get_id()])
        objects = find_entities(
            user=user,
            interfaces=[interface],
            metadata_filter={'states': ['published']},
            add_query=query,
            include_site=True)
        batch = Batch(objects, self.request,
                      default_size=core.BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"+str(interface.__name__)
        len_result = batch.seqlen
        result_body = []
        for obj in batch:
            render_dict = {'object': obj,
                           'current_user': user,
                           'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body,
                  'batch': batch}
        contents_body = self.content(
            args=values,
            template=self.related_events_template)['body']
        return ((result_body and contents_body) or None), len_result
コード例 #7
0
    def get_related_contents(self, user, interface):
        lac_catalog = find_catalog('lac')
        venue_index = lac_catalog['object_venue']
        query = venue_index.any([self.context.get_id()])
        objects = find_entities(user=user,
                                interfaces=[interface],
                                metadata_filter={'states': ['published']},
                                add_query=query,
                                include_site=True)
        batch = Batch(objects,
                      self.request,
                      default_size=core.BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents" + str(interface.__name__)
        len_result = batch.seqlen
        result_body = []
        for obj in batch:
            render_dict = {
                'object':
                obj,
                'current_user':
                user,
                'state':
                get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])
            }
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body, 'batch': batch}
        contents_body = self.content(
            args=values, template=self.related_events_template)['body']
        return ((result_body and contents_body) or None), len_result
コード例 #8
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        site = get_site_folder(True, self.request)
        diff_marker = "#diff"
        values = {
            'object': self.context,
            'state': get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body': navbars['navbar_body'],
            'services_body': navbars['services_body'],
            'footer_body': navbars['footer_body'],
            'is_portalmanager': has_role(user=user, role=('PortalManager',)),
            'tree_diff': json.dumps(
                tree_diff(site.tree, self.context.tree, diff_marker)),
            'diff_marker': diff_marker
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result.update(self.requirements)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #9
0
ファイル: see_artist.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_contents, len_contents = self.get_related_contents(user)
        values = {
            'object': self.context,
            'state': get_states_mapping(user, self.context,
                                        self.context.state[0]),
            'related_contents': related_contents,
            'len_contents': len_contents,
            'navbar_body': navbars['navbar_body'],
            'actions_bodies': navbars['body_actions'],
            'footer_body': navbars['footer_body'],
            'get_oid': get_oid,
            'is_portalmanager': has_role(user=user, role=('PortalManager',))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #10
0
ファイル: see_artist.py プロジェクト: ecreall/lagendacommun
    def get_related_contents(self, user):
        interfaces = get_subinterfaces(IBaseReview)
        interfaces.extend([ICulturalEvent, IFilmSynopses])
        objects = find_entities(
            user=user,
            interfaces=interfaces,
            metadata_filter={'states': ['published']},
            contribution_filter={'artists_ids': [self.context]},
            include_site=True,
            sort_on='release_date',
            reverse=True)
        batch = Batch([o for o in objects],
                      self.request,
                      default_size=core.BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        result_body = []
        for obj in batch:
            render_dict = {
                'object':
                obj,
                'current_user':
                user,
                'state':
                get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])
            }
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body, 'batch': batch}
        contents_body = self.content(
            args=values, template=self.related_contents_template)['body']
        return ((result_body and contents_body) or None), len_result
コード例 #11
0
    def update(self):
        self.execute(None)
        user = get_current()
        filter_form, filter_data = self._add_filter(user)
        content_types = ['cultural_event', 'venue', 'artist']
        args = {'metadata_filter': {'content_types': content_types}}
        args = merge_with_filter_view(self, args)
        args['request'] = self.request
        if not args.get('metadata_filter', {}).get('content_types', []):
            metadata_filter = args.get('metadata_filter', {})
            metadata_filter['content_types'] = content_types
            args['metadata_filter'] = metadata_filter

        args['metadata_filter']['states'] = ['published']
        objects = find_entities(user=user,
                                sort_on='object_title', reverse=False,
                                include_site=True,
                                **args)
        url = self.request.resource_url(self.context, 'allduplicates')

        def condition(obj):
            """Batch condition"""
            return obj.get_duplicates()

        batch = ConditionalBatch(
            condition, objects, self.request,
            url=url,
            default_size=15)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = _(CONTENTS_MESSAGES[index],
                       mapping={'nember': len_result})
        filter_data['filter_message'] = self.title
        filter_body = self.filter_instance.get_body(filter_data)
        result_body = []
        for obj in batch:
            render_dict = {'object': obj,
                           'current_user': user,
                           'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=render_dict,
                                template=obj.templates['duplicates'])['body']
            result_body.append(body)

        result = {}
        values = {'bodies': result_body,
                  'batch': batch,
                  'filter_body': filter_body}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        result['css_links'] = filter_form['css_links']
        result['js_links'] = filter_form['js_links']
        return result
コード例 #12
0
ファイル: search.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        user = get_current()
        validated = getattr(self, 'validated', {})
        posted = self.request.POST or self.request.GET or {}
        posted = posted.copy()
        clear_posted = False
        if not validated:
            if posted:
                clear_posted = True
                searcinstance = SearchView(self.context, self.request,
                                           filter_result=True)
                if searcinstance.validated:
                    validated = searcinstance.validated

        objects = find_entities(
            user=user,
            sort_on='release_date', reverse=True,
            include_site=True,
            **validated)
        url = self.request.resource_url(
            self.context, self.request.view_name, query=posted)
        batch = Batch(objects, self.request,
                      default_size=core.BATCH_DEFAULT_SIZE,
                      url=url)
        #clear posted values: See usermenu panel
        if clear_posted:
            if self.request.POST:
                self.request.POST.clear()
            elif self.request.GET:
                self.request.GET.clear()

        batch.target = "#results_contents"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = _(CONTENTS_MESSAGES[index],
                       mapping={'nember': len_result})
        result_body = []
        for obj in batch:
            render_dict = {'object': obj,
                           'current_user': user,
                           'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        result = {}
        values = {'bodies': result_body,
                  'batch': batch}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #13
0
    def update(self):
        self.execute(None)
        user = get_current()
        filter_form, filter_data = self._add_filter(user)
        content_types = list(core.SEARCHABLE_CONTENTS.keys())
        args = {'metadata_filter': {'content_types': content_types}}
        args = merge_with_filter_view(self, args)
        args['request'] = self.request
        objects = find_entities(user=user,
                                sort_on='release_date',
                                reverse=True,
                                include_site=True,
                                **args)
        url = self.request.resource_url(self.context, 'contentstomoderate')
        batch = Batch(objects,
                      self.request,
                      url=url,
                      default_size=core.BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = _(CONTENTS_MESSAGES[index],
                       mapping={'nember': len_result})
        filter_data['filter_message'] = self.title
        filter_body = self.filter_instance.get_body(filter_data)
        result_body = []
        for obj in batch:
            render_dict = {
                'object':
                obj,
                'current_user':
                user,
                'state':
                get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])
            }
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        result = {}
        values = {
            'bodies': result_body,
            'batch': batch,
            'filter_body': filter_body
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        result['css_links'] = filter_form['css_links']
        result['js_links'] = filter_form['js_links']
        return result
コード例 #14
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_cinema_review = find_related_cinema_review(self.context)
        related_cinema_review = [a for a in related_cinema_review]
        reviews_bodies = []
        for obj in related_cinema_review:
            object_values = {'object': obj,
                             'current_user': user,
                             'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            reviews_bodies.append(body)

        values = {
            'object': self.context,
            'reviews_bodies': reviews_bodies,
            'state': get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body': navbars['navbar_body'],
            'sync_operation': 'address_coordinates_synchronizing',
            'url': self.request.resource_url(self.context,
                                             '@@culturaleventmanagement'),
            'get_oid': get_oid
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result.update(self.requirements)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #15
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_schedules, len_schedules = self.get_related_contents(
            user, IFilmSchedule)
        related_events, len_events = self.get_related_contents(
            user, ICulturalEvent)
        values = {
            'object':
            self.context,
            'state':
            get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'sync_operation':
            'venue_address_coordinates_synchronizing',
            'url':
            self.request.resource_url(self.context,
                                      '@@culturaleventmanagement'),
            'related_events':
            related_events,
            'related_schedules':
            related_schedules,
            'len_schedules':
            len_schedules,
            'len_events':
            len_events,
            'navbar_body':
            navbars['navbar_body'],
            'actions_bodies':
            navbars['body_actions'],
            'footer_body':
            navbars['footer_body'],
            'get_oid':
            get_oid,
            'is_portalmanager':
            has_role(user=user, role=('PortalManager', ))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #16
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_film_schedules = find_related_film_schedules(self.context)
        related_film_schedules = [a for a in related_film_schedules]
        films_body = ''
        if related_film_schedules:
            films_folder = generate_search_smart_folder(
                'fil schedules',
                ('city_classification', 'venue_classification'))
            films_body = films_folder.classifications.render(
                related_film_schedules, self.request, films_folder)

        site = get_site_folder(True, self.request)
        diff_marker = "#diff"
        values = {
            'object':
            self.context,
            'films_body':
            films_body,
            'state':
            get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body'],
            'footer_body':
            navbars['footer_body'],
            'services_body':
            navbars['services_body'],
            'is_portalmanager':
            has_role(user=user, role=('PortalManager', )),
            'tree_diff':
            json.dumps(tree_diff(site.tree, self.context.tree, diff_marker)),
            'diff_marker':
            diff_marker
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result.update(self.requirements)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #17
0
ファイル: see_group.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        user = self.context
        current_user = get_current()
        objects = self.context.members
        batch = Batch(objects, self.request, default_size=BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        result_body = []
        result = {}
        for obj in batch:
            object_values = {
                'object': obj,
                'current_user': current_user,
                'state': None
            }
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body, 'length': len_result, 'batch': batch}
        contents_body = self.content(
            args=values, template=SearchResultView.template)['body']

        values = {
            'contents': (result_body and contents_body) or None,
            'proposals':
            None,
            'user':
            self.context,
            'state':
            get_states_mapping(current_user, user,
                               getattr(user, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body']
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #18
0
    def update(self):
        self.execute(None)
        user = get_current()
        filter_form, filter_data = self._add_filter(user)
        content_types = list(core.SEARCHABLE_CONTENTS.keys())
        args = {'metadata_filter': {'content_types': content_types}}
        args = merge_with_filter_view(self, args)
        args['request'] = self.request
        objects = find_entities(user=user,
                                sort_on='release_date', reverse=True,
                                include_site=True,
                                **args)
        url = self.request.resource_url(self.context, 'contentstomoderate')
        batch = Batch(objects, self.request,
                      url=url,
                      default_size=core.BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = _(CONTENTS_MESSAGES[index],
                       mapping={'nember': len_result})
        filter_data['filter_message'] = self.title
        filter_body = self.filter_instance.get_body(filter_data)
        result_body = []
        for obj in batch:
            render_dict = {'object': obj,
                           'current_user': user,
                           'state': get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])}
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        result = {}
        values = {'bodies': result_body,
                  'batch': batch,
                  'filter_body': filter_body}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        result['css_links'] = filter_form['css_links']
        result['js_links'] = filter_form['js_links']
        return result
コード例 #19
0
ファイル: see_group.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        user = self.context
        current_user = get_current()
        objects = self.context.members
        batch = Batch(objects, self.request, default_size=BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        result_body = []
        result = {}
        for obj in batch:
            object_values = {'object': obj,
                             'current_user': current_user,
                             'state': None
                             }
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body,
                  'length': len_result,
                  'batch': batch
                  }
        contents_body = self.content(args=values,
                                     template=SearchResultView.template)['body']

        values = {'contents': (result_body and contents_body) or None,
                  'proposals': None,
                  'user': self.context,
                  'state': get_states_mapping(current_user, user,
                                getattr(user, 'state_or_none', [None])[0]),
                  'navbar_body': navbars['navbar_body']}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #20
0
    def update(self):
        user = get_current()
        services = user.get_all_services(context=self.context,
                                         validate=False,
                                         delegation=False)
        sites = [get_obj(s) for s in getattr(self.context, 'sumited_to', [])]
        for site in sites:
            site_services = site.get_all_services(context=self.context,
                                                  validate=True,
                                                  delegation=False)
            if 'moderation' in site_services:
                moderations = site_services['moderation']
                if 'moderation' in services:
                    services['moderation'].extend(moderations)
                else:
                    services['moderation'] = list(moderations)

                services['moderation'] = list(set(services['moderation']))

        result_servicesbody = {}
        for service in services:
            result_servicesbody[service] = []
            for obj in services[service]:
                object_values = {
                    'object':
                    obj,
                    'state':
                    get_states_mapping(
                        user, obj,
                        getattr(obj, 'state_or_none', [None])[0])
                }
                body = self.content(args=object_values,
                                    template=obj.templates['default'])['body']
                result_servicesbody[service].append(body)

        result = {}
        #TDOD generation du formulaire de payment
        values = {'services': result_servicesbody, 'math': math}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #21
0
ファイル: pay_review.py プロジェクト: ecreall/lagendacommun
    def update(self):
        user = get_current()
        services = user.get_all_services(
            context=self.context,
            validate=False,
            delegation=False)
        sites = [get_obj(s) for s in getattr(self.context, 'sumited_to', [])]
        for site in sites:
            site_services = site.get_all_services(context=self.context,
                                                  validate=True,
                                                  delegation=False)
            if 'moderation' in site_services:
                moderations = site_services['moderation']
                if 'moderation' in services:
                    services['moderation'].extend(moderations)
                else:
                    services['moderation'] = list(moderations)

                services['moderation'] = list(set(
                    services['moderation']))

        result_servicesbody = {}
        for service in services:
            result_servicesbody[service] = []
            for obj in services[service]:
                object_values = {'object': obj,
                                 'state': get_states_mapping(user, obj,
                                    getattr(obj, 'state_or_none', [None])[0])}
                body = self.content(args=object_values,
                                    template=obj.templates['default'])['body']
                result_servicesbody[service].append(body)

        result = {}
        #TDOD generation du formulaire de payment
        values = {'services': result_servicesbody,
                  'math': math}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #22
0
ファイル: see_venue.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_schedules, len_schedules = self.get_related_contents(
            user, IFilmSchedule)
        related_events, len_events = self.get_related_contents(
            user, ICulturalEvent)
        values = {
            'object': self.context,
            'state': get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'sync_operation': 'venue_address_coordinates_synchronizing',
            'url': self.request.resource_url(self.context,
                                             '@@culturaleventmanagement'),
            'related_events': related_events,
            'related_schedules': related_schedules,
            'len_schedules': len_schedules,
            'len_events': len_events,
            'navbar_body': navbars['navbar_body'],
            'actions_bodies': navbars['body_actions'],
            'footer_body': navbars['footer_body'],
            'get_oid': get_oid,
            'is_portalmanager': has_role(user=user, role=('PortalManager',))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #23
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        related_film_schedules = find_related_film_schedules(self.context)
        related_film_schedules = [a for a in related_film_schedules]
        films_body = ''
        if related_film_schedules:
            films_folder = generate_search_smart_folder('fil schedules',
                                                 ('city_classification',
                                                  'venue_classification'))
            films_body = films_folder.classifications.render(
                related_film_schedules, self.request, films_folder)

        values = {
            'object': self.context,
            'films_body': films_body,

            'state': get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body': navbars['navbar_body'],
            'services_body': navbars['services_body'],
            'footer_body': navbars['footer_body'],
            'is_portalmanager': has_role(user=user, role=('PortalManager',))
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #24
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        values = {
            'object': self.context,
            'state': get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body': navbars['navbar_body']
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #25
0
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        result = {}
        user = get_current()
        site = get_site_folder(True, self.request)
        diff_marker = "#diff"
        values = {
            'object':
            self.context,
            'state':
            get_states_mapping(
                user, self.context,
                getattr(self.context, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body'],
            'footer_body':
            navbars['footer_body'],
            'is_portalmanager':
            has_role(user=user, role=('PortalManager', )),
            'tree_diff':
            json.dumps(tree_diff(site.tree, self.context.tree, diff_marker)),
            'diff_marker':
            diff_marker
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result.update(self.requirements)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #26
0
ファイル: see_person.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        user = self.context
        current_user = get_current()
        objects = []
        is_current_user = current_user is user
        if is_current_user:
            objects = [
                o for o in getattr(user, 'all_contributions', [])
                if 'archived' not in o.state
            ]

        else:
            objects = [
                o for o in getattr(user, 'all_contributions', [])
                if 'archived' not in o.state and can_access(current_user, o)
            ]

        objects = sorted(
            objects,
            key=lambda e: getattr(e, 'release_date', e.modified_at),
            reverse=True)
        batch = Batch(objects, self.request, default_size=BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        result_body = []
        result = {}
        for obj in batch:
            object_values = {'object': obj,
                             'current_user': current_user,
                             'state': is_current_user and \
                                      get_states_mapping(current_user, obj,
                                            getattr(obj, 'state_or_none', [None])[0]) or \
                                      None
                             }
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body, 'length': len_result, 'batch': batch}
        contents_body = self.content(
            args=values, template=SearchResultView.template)['body']
        values = {
            'contents': (result_body and contents_body) or None,
            'proposals':
            None,
            'user':
            self.context,
            'state':
            get_states_mapping(current_user, user,
                               getattr(user, 'state_or_none', [None])[0]),
            'navbar_body':
            navbars['navbar_body'],
            'footer_body':
            navbars['footer_body'],
            'admin':
            has_role(role=('Admin', )),
            'is_portal_manager':
            has_role(role=('PortalManager', )),
            'len_contents':
            len_result
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #27
0
 def resolve_state(self, args, info):
     request = get_current_request()
     state = get_states_mapping(
         request.user, self,
         getattr(self, 'state_or_none', [None])[0])
     return request.localizer.translate(state)
コード例 #28
0
ファイル: search.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        user = get_current()
        validated = getattr(self, 'validated', {})
        posted = self.request.POST or self.request.GET or {}
        posted = posted.copy()
        clear_posted = False
        if not validated:
            if posted:
                clear_posted = True
                searcinstance = SearchView(self.context,
                                           self.request,
                                           filter_result=True)
                if searcinstance.validated:
                    validated = searcinstance.validated

        objects = find_entities(user=user,
                                sort_on='release_date',
                                reverse=True,
                                include_site=True,
                                **validated)
        url = self.request.resource_url(self.context,
                                        self.request.view_name,
                                        query=posted)
        batch = Batch(objects,
                      self.request,
                      default_size=core.BATCH_DEFAULT_SIZE,
                      url=url)
        #clear posted values: See usermenu panel
        if clear_posted:
            if self.request.POST:
                self.request.POST.clear()
            elif self.request.GET:
                self.request.GET.clear()

        batch.target = "#results_contents"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = _(CONTENTS_MESSAGES[index],
                       mapping={'nember': len_result})
        result_body = []
        for obj in batch:
            render_dict = {
                'object':
                obj,
                'current_user':
                user,
                'state':
                get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])
            }
            body = self.content(args=render_dict,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        result = {}
        values = {'bodies': result_body, 'batch': batch}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        return result
コード例 #29
0
ファイル: alert.py プロジェクト: ecreall/lagendacommun
 def get_subject_state(self, subject, user):
     return get_states_mapping(
         user, subject,
         getattr(subject, 'state_or_none', [None])[0])
コード例 #30
0
 def get_subject_state(self, subject, user):
     return get_states_mapping(user, subject,
                               getattr(subject, 'state_or_none', [None])[0])
コード例 #31
0
    def update(self):
        result = {}
        user = get_current()
        folderid = self.params('folderid')
        try:
            folder = get_obj(int(folderid))
        except:
            folder = None
        # if not valid folderid
        if folderid is None or folder is None:
            error = ViewError()
            error.principalmessage = _(
                "Access to the requested folder has been denied")
            error.causes = [_("Folder not valid")]
            message = error.render_message(self.request)
            item = self.adapt_item('', self.viewid)
            item['messages'] = {error.type: [message]}
            result['coordinates'] = {self.coordinates: [item]}
            return result

        # if permission denied
        if folder and not can_access(user, folder):
            error = ViewError()
            error.principalmessage = _(
                "Access to the requested folder has been denied")
            error.causes = [_("Permission denied")]
            message = error.render_message(self.request)
            item = self.adapt_item('', self.viewid)
            item['messages'] = {error.type: [message]}
            result['coordinates'] = {self.coordinates: [item]}
            return result

        classifications = [
            CLASSIFICATIONS[fid]
            for fid in getattr(folder, 'classifications', [])
        ]
        classifications.reverse()
        source_class = None
        for classification in classifications:
            source_class = classification(source_class)

        setattr(self, 'filter_instance', None)
        filter_body = None
        filter_form, filter_data = self._add_filter(folder, user)
        # calling self._add_filter will set self.filter_instance or not
        template_type = getattr(folder, 'view_type', 'default')
        if template_type == 'bloc':
            self.container_css_class = 'home folder-bloc'
            self.wrapper_template = 'lac:views/admin_process/templates/folder_blocs_view_wrapper.pt'

        args = merge_with_filter_view(self, {})
        objects = get_folder_content(folder, user, **args)
        len_result = len(objects)
        self.breadcrumb = self.content(
            args={
                'lineage': folder.folder_lineage,
                'nember': len_result
            },
            template=self.breadcrumb_template)['body']
        self.title = '/'.join([f.title for f in folder.folder_lineage])
        if getattr(self, 'filter_instance', None) is not None:
            filter_data['filter_message'] = self.breadcrumb
            filter_body = getattr(self,
                                  'filter_instance').get_body(filter_data)

        if source_class is None:
            url = self.request.resource_url(self.context,
                                            'open',
                                            query={'folderid': folderid})
            batch = Batch(objects,
                          self.request,
                          url=url,
                          default_size=BATCH_DEFAULT_SIZE)
            batch.target = "#results"
            result_body = []
            for obj in batch:
                object_values = {
                    'object':
                    obj,
                    'current_user':
                    user,
                    'state':
                    get_states_mapping(
                        user, obj,
                        getattr(obj, 'state_or_none', [None])[0])
                }
                body = self.content(
                    args=object_values,
                    template=obj.templates[template_type])['body']
                result_body.append(body)

            values = {
                'bodies': result_body,
                'batch': batch,
                'filter_body': filter_body,
                'row_len': math.ceil(len_result / 2)
            }
            template = self.templates.get(template_type, 'default')
            body = self.content(args=values, template=template)['body']
        else:

            body = source_class.render(objects,
                                       self.request,
                                       folder,
                                       filter_body=filter_body,
                                       validated=getattr(
                                           self.filter_instance, 'validated',
                                           {}),
                                       template_type=template_type)

        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        result = merge_dicts(self.requirements_copy, result)
        if filter_form:
            result['css_links'] = filter_form['css_links']
            result['js_links'] = filter_form['js_links']

        return result
コード例 #32
0
    def update(self):
        self.execute(None)
        user = get_current()
        filter_form, filter_data = self._add_filter(user)
        content_types = ['cultural_event', 'venue', 'artist']
        args = {'metadata_filter': {'content_types': content_types}}
        args = merge_with_filter_view(self, args)
        args['request'] = self.request
        if not args.get('metadata_filter', {}).get('content_types', []):
            metadata_filter = args.get('metadata_filter', {})
            metadata_filter['content_types'] = content_types
            args['metadata_filter'] = metadata_filter

        args['metadata_filter']['states'] = ['published']
        objects = find_entities(user=user,
                                sort_on='object_title',
                                reverse=False,
                                include_site=True,
                                **args)
        url = self.request.resource_url(self.context, 'allduplicates')

        def condition(obj):
            """Batch condition"""
            return obj.get_duplicates()

        batch = ConditionalBatch(condition,
                                 objects,
                                 self.request,
                                 url=url,
                                 default_size=15)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        index = str(len_result)
        if len_result > 1:
            index = '*'

        self.title = _(CONTENTS_MESSAGES[index],
                       mapping={'nember': len_result})
        filter_data['filter_message'] = self.title
        filter_body = self.filter_instance.get_body(filter_data)
        result_body = []
        for obj in batch:
            render_dict = {
                'object':
                obj,
                'current_user':
                user,
                'state':
                get_states_mapping(user, obj,
                                   getattr(obj, 'state_or_none', [None])[0])
            }
            body = self.content(args=render_dict,
                                template=obj.templates['duplicates'])['body']
            result_body.append(body)

        result = {}
        values = {
            'bodies': result_body,
            'batch': batch,
            'filter_body': filter_body
        }
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        result['coordinates'] = {self.coordinates: [item]}
        result['css_links'] = filter_form['css_links']
        result['js_links'] = filter_form['js_links']
        return result
コード例 #33
0
ファイル: see_person.py プロジェクト: ecreall/lagendacommun
    def update(self):
        self.execute(None)
        try:
            navbars = generate_navbars(self, self.context, self.request)
        except ObjectRemovedException:
            return HTTPFound(self.request.resource_url(getSite(), ''))

        user = self.context
        current_user = get_current()
        objects = []
        is_current_user = current_user is user
        if is_current_user:
            objects = [o for o in getattr(user, 'all_contributions', [])
                       if 'archived' not in o.state]

        else:
            objects = [o for o in getattr(user, 'all_contributions', [])
                       if 'archived' not in o.state and
                       can_access(current_user, o)]

        objects = sorted(
            objects,
            key=lambda e: getattr(e, 'release_date', e.modified_at),
            reverse=True)
        batch = Batch(objects, self.request, default_size=BATCH_DEFAULT_SIZE)
        batch.target = "#results_contents"
        len_result = batch.seqlen
        result_body = []
        result = {}
        for obj in batch:
            object_values = {'object': obj,
                             'current_user': current_user,
                             'state': is_current_user and \
                                      get_states_mapping(current_user, obj,
                                            getattr(obj, 'state_or_none', [None])[0]) or \
                                      None
                             }
            body = self.content(args=object_values,
                                template=obj.templates['default'])['body']
            result_body.append(body)

        values = {'bodies': result_body,
                  'length': len_result,
                  'batch': batch
                  }
        contents_body = self.content(args=values,
                                     template=SearchResultView.template)['body']
        values = {'contents': (result_body and contents_body) or None,
                  'proposals': None,
                  'user': self.context,
                  'state': get_states_mapping(current_user, user,
                                getattr(user, 'state_or_none', [None])[0]),
                  'navbar_body': navbars['navbar_body'],
                  'footer_body': navbars['footer_body'],
                  'admin': has_role(role=('Admin',)),
                  'is_portal_manager': has_role(role=('PortalManager',)),
                  'len_contents': len_result}
        body = self.content(args=values, template=self.template)['body']
        item = self.adapt_item(body, self.viewid)
        item['messages'] = navbars['messages']
        item['isactive'] = navbars['isactive']
        result.update(navbars['resources'])
        result['coordinates'] = {self.coordinates: [item]}
        return result