def update(self): user = get_current() filter_form, filter_data = self._add_filter(user) args = merge_with_filter_view(self, {}) args['request'] = self.request filters = [ { 'metadata_filter': { 'states': ['published'], 'interfaces': [IAnswer] } }, ] # Answer is non a searchable element # we need add it to the args dict args['interfaces'] = [IAnswer] objects = find_entities(filters=filters, user=user, intersect=self._get_answers(user), **args) objects, sort_body = sort_view_objects(self, objects, ['answer'], user, 'nbsupport') url = self.request.resource_url(self.context, self.name) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results-answers" len_answers = batch.seqlen index = str(len_answers) if len_answers <= 1 else '*' if not self.parent: self.title = _(CONTENTS_MESSAGES[index], mapping={'number': len_answers}) elif index != '*': self.title = _('The answer') filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs(self.request, batch, user) if filter_form: result = merge_dicts( { 'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) values = { 'bodies': result_body, 'batch': batch, 'empty_message': self.empty_message, 'empty_icon': self.empty_icon, 'filter_body': filter_body, 'sort_body': sort_body, 'view': self } body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) item['isactive'] = True result['coordinates'] = {self.coordinates: [item]} return result
def update(self): body = '' result = {} if self.isactive or self.params('on_demand') == 'load': user = get_current() filter_form, filter_data = self._add_filter(user) default_content = [self.content_type] validated = self._get_validated({ 'metadata_filter': {'content_types': default_content, 'states': ['active', 'published']}, }, user) args = {} args = merge_with_filter_view(self, args) args['request'] = self.request objects = find_entities( user=user, filters=[validated], **args) objects, sort_body = sort_view_objects( self, objects, [self.content_type], user) url = self.request.resource_url( self.context, '', query={'view_content_id': self.content_id}) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) self.title = _(self.title, mapping={'nb': batch.seqlen}) batch.target = "#results-" + self.content_id filter_instance = getattr(self, 'filter_instance', None) filter_body = None if filter_instance: filter_data['filter_message'] = self.title filter_body = filter_instance.get_body(filter_data) result_body, result = render_listing_objs( self.request, batch, user, display_state=getattr(self, 'display_state', True)) values = {'bodies': result_body, 'batch': batch, 'empty_message': self.empty_message, 'empty_icon': self.empty_icon, 'filter_body': filter_body, 'filter_class': self.filter_class, 'sort_body': sort_body, 'view': self} if filter_form: result = merge_dicts( {'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) item['isactive'] = self.isactive result['coordinates'] = {self.coordinates: [item]} return result
def update(self): body = '' result = {} if self.isactive or self.params('on_demand') == 'load': user = get_current() filter_form, filter_data = self._add_filter(user) default_content = [self.content_type] validated = self._get_validated({ 'metadata_filter': {'content_types': default_content, 'states': ['active', 'published']}, }, user) args = {} args = merge_with_filter_view(self, args) args['request'] = self.request objects = find_entities( user=user, filters=[validated], **args) objects, sort_body = sort_view_objects( self, objects, [self.content_type], user) url = self.request.resource_url( self.context, '', query={'view_content_id': self.content_id}) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) self.title = _(self.title, mapping={'nb': batch.seqlen}) batch.target = "#results-" + self.content_id filter_instance = getattr(self, 'filter_instance', None) filter_body = None if filter_instance: filter_data['filter_message'] = self.title filter_body = filter_instance.get_body(filter_data) result_body, result = render_listing_objs( self.request, batch, user, display_state=getattr(self, 'display_state', True)) values = {'bodies': result_body, 'batch': batch, 'empty_message': self.empty_message, 'empty_icon': self.empty_icon, 'filter_body': filter_body, 'filter_class': self.filter_class, 'sort_body': sort_body, 'view': self} if filter_form: result = merge_dicts( {'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) item['isactive'] = self.isactive result['coordinates'] = {self.coordinates: [item]} return result
def update(self): user = get_current() validated = getattr(self, 'validated', {}) not_validated = True if not validated else False posted = self.request.POST or self.request.GET or {} posted = posted.copy() executed = not not_validated if not_validated: formviewinstance = SearchView(self.context, self.request) formviewinstance.postedform = posted validated = formviewinstance.calculate_posted_filter() executed = getattr(formviewinstance, 'executed', False) if not executed or self.params('filter_result'): default_content = [key[0] for key in get_default_searchable_content(self.request)] default_content.remove("person") default_content.remove("event") if 'question' in default_content: default_content.remove("question") filter_ = { 'metadata_filter': {'content_types': default_content} } validated = merge_with_filter_view(self, {}) validated['request'] = self.request validated['filters'] = [filter_] objects = find_entities( user=user, **validated) # content_types = validated.get('metadata_filter', {}).get('content_types', ['all']) # objects, sort_body = sort_view_objects( # self, objects, content_types, user) url = self.request.resource_url( self.context, self.request.view_name, query=posted) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results" len_result = batch.seqlen index = str(len_result) if len_result > 1: index = '*' self.title = _(CONTENTS_MESSAGES[index], mapping={'number': len_result}) result_body, result = render_listing_objs( self.request, batch, user) values = {'bodies': result_body, 'batch': batch} # 'sort_body': sort_body} body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
def update(self): self.execute(None) user = get_current() is_manager = has_role(user=user, role=('PortalManager', )) filters = [ {'metadata_filter': { 'content_types': ['person'] }} ] filter_form, filter_data = self._add_filter(user, is_manager) args = merge_with_filter_view(self, {}) args['request'] = self.request objects = find_entities( user=user, filters=filters, **args) objects, sort_body = sort_view_objects( self, objects, ['person'], user) url = self.request.resource_url(self.context, self.name) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results_users" len_result = batch.seqlen index = str(len_result) if len_result > 1: index = '*' self.title = self._get_title( index=index, len_result=len_result, user=user) filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs( self.request, batch, user) novaideo_catalog = find_catalog('novaideo') last_connection_index = novaideo_catalog['last_connection'] current_date = datetime.datetime.combine( datetime.datetime.now(), datetime.time(0, 0, 0, tzinfo=pytz.UTC)) inactive_users = find_users( last_connection_index, current_date, (INACTIVITY_DURATION, None)) if filter_form: result = merge_dicts( {'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) values = {'bodies': result_body, 'batch': batch, 'is_manager': is_manager, 'inactivity_duration': INACTIVITY_DURATION, 'inactive_users': inactive_users.__len__(), 'filter_body': filter_body, 'sort_body': sort_body} body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
def update(self): user = get_current() validated = getattr(self, 'validated', {}) not_validated = True if not validated else False posted = self.request.POST or self.request.GET or {} posted = posted.copy() executed = not not_validated if not_validated: formviewinstance = SearchView(self.context, self.request) formviewinstance.postedform = posted validated = formviewinstance.calculate_posted_filter() executed = getattr(formviewinstance, 'executed', False) if not executed or self.params('filter_result'): default_content = [key[0] for key in get_default_searchable_content(self.request)] default_content.remove("person") if 'question' in default_content: default_content.remove("question") filter_ = { 'metadata_filter': {'content_types': default_content} } validated = merge_with_filter_view(self, {}) validated['request'] = self.request validated['filters'] = [filter_] objects = find_entities( user=user, **validated) # content_types = validated.get('metadata_filter', {}).get('content_types', ['all']) # objects, sort_body = sort_view_objects( # self, objects, content_types, user) url = self.request.resource_url( self.context, self.request.view_name, query=posted) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results" len_result = batch.seqlen index = str(len_result) if len_result > 1: index = '*' self.title = _(CONTENTS_MESSAGES[index], mapping={'number': len_result}) result_body, result = render_listing_objs( self.request, batch, user) values = {'bodies': result_body, 'batch': batch} # 'sort_body': sort_body} body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
def update(self): self.execute(None) user = get_current() filter_form, filter_data = self._add_filter(user) args = merge_with_filter_view(self, {}) args['request'] = self.request objects = find_entities(user=user, intersect=self._get_content_ids(user), include_archived=self.include_archived, **args) objects, sort_body = sort_view_objects(self, objects, self.content_types, user, intersect=getattr( self, 'sorts', None)) url = self.request.resource_url(self.context, self.name) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results_contents" len_result = batch.seqlen index = str(len_result) if len_result > 1: index = '*' self.title = self._get_title(index=index, len_result=len_result, user=user) filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs(self.request, batch, user, display_state=getattr( self, 'display_state', True)) if filter_form: result = merge_dicts( { 'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) values = { 'bodies': result_body, 'batch': batch, 'filter_body': filter_body, 'sort_body': sort_body } body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
def update(self): current_date = datetime.datetime.combine( datetime.datetime.now(), datetime.time(0, 0, 0, tzinfo=pytz.UTC)) alert_date_min = current_date - datetime.timedelta( days=INACTIVITY_DURATION) user = get_current() filters = [{ 'metadata_filter': { 'content_types': ['person'], 'states': ['active'] }, 'temporal_filter': { 'negation': True, 'connected_date': { 'connected_before': None, 'connected_after': alert_date_min } } }] filter_form, filter_data = self._add_filter(user, alert_date_min) args = merge_with_filter_view(self, {}) args['request'] = self.request objects = find_entities(user=user, sort_on='last_connection', filters=filters, **args) url = self.request.resource_url(self.context, self.name) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results_users" len_result = batch.seqlen index = str(len_result) if len_result > 1: index = '*' self.title = self._get_title(index=index, len_result=len_result, user=user) filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs(self.request, batch, user) 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
def update(self): self.execute(None) user = get_current() filter_form, filter_data = self._add_filter(user) filters = [{ 'metadata_filter': { 'negation': True, 'states': ['examined'] } }, { 'metadata_filter': { 'content_types': ['idea'], 'states': ['published'] } }] args = {} args = merge_with_filter_view(self, args) args['request'] = self.request objects = find_entities(user=user, filters=filters, **args) objects, sort_body = sort_view_objects(self, objects, ['idea'], user, 'nbsupport') url = self.request.resource_url(self.context, 'seeideastoexamine') batch = Batch(objects, self.request, url=url, default_size=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={'number': len_result}) filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs(self.request, batch, user) if filter_form: result = merge_dicts( { 'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) values = { 'bodies': result_body, 'batch': batch, 'filter_body': filter_body, 'sort_body': sort_body } body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
def update(self): self.execute(None) user = get_current() filter_form, filter_data = self._add_filter(user) filters = [ {'metadata_filter': { 'negation': True, 'states': ['examined'] }}, {'metadata_filter': { 'content_types': ['idea'], 'states': ['published'] }} ] args = {} args = merge_with_filter_view(self, args) args['request'] = self.request objects = find_entities(user=user, filters=filters, **args) objects, sort_body = sort_view_objects( self, objects, ['idea'], user, 'nbsupport') url = self.request.resource_url(self.context, 'seeideastoexamine') batch = Batch(objects, self.request, url=url, default_size=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={'number': len_result}) filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs( self.request, batch, user) if filter_form: result = merge_dicts( {'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) values = {'bodies': result_body, 'batch': batch, 'filter_body': filter_body, 'sort_body': sort_body } body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
def update(self): current_date = datetime.datetime.combine( datetime.datetime.now(), datetime.time(0, 0, 0, tzinfo=pytz.UTC)) alert_date_min = current_date - datetime.timedelta( days=INACTIVITY_DURATION) user = get_current() filters = [ {'metadata_filter': { 'content_types': ['person'], 'states': ['active'] }, 'temporal_filter': { 'negation': True, 'connected_date': { 'connected_before': None, 'connected_after': alert_date_min } }} ] filter_form, filter_data = self._add_filter(user, alert_date_min) args = merge_with_filter_view(self, {}) args['request'] = self.request objects = find_entities( user=user, sort_on='last_connection', filters=filters, **args) url = self.request.resource_url(self.context, self.name) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results_users" len_result = batch.seqlen index = str(len_result) if len_result > 1: index = '*' self.title = self._get_title( index=index, len_result=len_result, user=user) filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs( self.request, batch, user) 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
def update(self): self.execute(None) user = get_current() is_manager = has_role(user=user, role=('PortalManager', )) filters = [{'metadata_filter': {'content_types': ['person']}}] filter_form, filter_data = self._add_filter(user, is_manager) args = merge_with_filter_view(self, {}) args['request'] = self.request objects = find_entities(user=user, filters=filters, **args) objects, sort_body = sort_view_objects(self, objects, ['person'], user) url = self.request.resource_url(self.context, self.name) batch = Batch(objects, self.request, url=url, default_size=BATCH_DEFAULT_SIZE) batch.target = "#results_users" len_result = batch.seqlen index = str(len_result) if len_result > 1: index = '*' self.title = self._get_title(index=index, len_result=len_result, user=user) filter_data['filter_message'] = self.title filter_body = self.filter_instance.get_body(filter_data) result_body, result = render_listing_objs(self.request, batch, user) novaideo_catalog = find_catalog('novaideo') last_connection_index = novaideo_catalog['last_connection'] current_date = datetime.datetime.combine( datetime.datetime.now(), datetime.time(0, 0, 0, tzinfo=pytz.UTC)) inactive_users = find_users(last_connection_index, current_date, (INACTIVITY_DURATION, None)) if filter_form: result = merge_dicts( { 'css_links': filter_form['css_links'], 'js_links': filter_form['js_links'] }, result) values = { 'bodies': result_body, 'batch': batch, 'is_manager': is_manager, 'inactivity_duration': INACTIVITY_DURATION, 'inactive_users': inactive_users.__len__(), 'filter_body': filter_body, 'sort_body': sort_body } body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
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 # calling self._add_filter will set self.filter_instance or not template_type = getattr(folder, 'view_type', 'default') if template_type == 'bloc': self.wrapper_template = 'novaideo:views/smart_folder_management/templates/folder_blocs_view_wrapper.pt' filter_body = None filter_form, filter_data = self._add_filter(folder, user) args = merge_with_filter_view(self, {}) objects = get_folder_content(folder, user, **args) objects, sort_body = sort_view_objects( self, objects, ['proposal', 'idea', 'amendment', 'file', 'person'], user) len_result = len(objects) self.breadcrumb = self.content( args={'number': len_result}, template=self.breadcrumb_template)['body'] 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) 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: body = render_listing_obj( self.request, obj, user, view_type=template_type) if body: result_body.append(body) values = { 'bodies': result_body, 'batch': batch, 'filter_body': filter_body, 'sort_body': sort_body, 'row_len': math.ceil(len_result/2) } template = self.templates.get(template_type, 'default') body = self.content(args=values, template=template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} if filter_form: result['css_links'] = filter_form['css_links'] result['js_links'] = filter_form['js_links'] return result