def start(self, context, request, appstruct, **kw): root = request.root url = request.resource_url(context, "") deadline_date = context.init_deadline( datetime.datetime.now(tz=pytz.UTC)) deadline_str = to_localized_time(deadline_date, request, translate=True) mail_template = root.get_mail_template( 'preregistration', getattr(context, 'locale', root.locale)) email_data = get_user_data(context, 'recipient', request) subject = mail_template['subject'].format(novaideo_title=root.title) deadline_str = to_localized_time(deadline_date, request, translate=True) message = mail_template['template'].format( url=url, deadline_date=deadline_str.lower(), novaideo_title=root.title, **email_data) alert('email', [root.get_site_sender()], [context.email], subject=subject, body=message) request.registry.notify( ActivityExecuted(self, [context], get_current())) return {}
def start(self, context, request, appstruct, **kw): root = request.root url = request.resource_url(context, "") deadline_date = context.init_deadline( datetime.datetime.now(tz=pytz.UTC)) deadline_str = to_localized_time( deadline_date, request, translate=True) mail_template = root.get_mail_template( 'preregistration', getattr(context, 'locale', root.locale)) email_data = get_user_data(context, 'recipient', request) subject = mail_template['subject'].format( novaideo_title=root.title) deadline_str = to_localized_time( deadline_date, request, translate=True) message = mail_template['template'].format( url=url, deadline_date=deadline_str.lower(), novaideo_title=root.title, **email_data) alert('email', [root.get_site_sender()], [context.email], subject=subject, body=message) request.registry.notify(ActivityExecuted( self, [context], get_current())) return {}
def get_ballot_alert_data( context, request, root, electors): alert_data = get_entity_data(context, 'subject', request) moderators_str = "" for index, elector in enumerate(electors): elector_data = get_user_data( elector, 'subject', request) elector_data['subject_email'] = elector.email elector_data['index'] = str(index+1) moderator_str = MODERATOR_DATA.format( **elector_data) moderators_str += "\n" + moderator_str alert_data['moderators'] = moderators_str alert_data['url_terms_of_use'] = request.resource_url( root.terms_of_use, '@@index') alert_data['url_moderation_rules'] = request.resource_url( root.moderation_rules, '@@index') duration = getattr(root, 'duration_moderation_vote', 7) date_end = datetime.datetime.now() + \ datetime.timedelta(days=duration) alert_data['date_end_vote'] = to_localized_time( date_end, request, translate=True) alert_data['duration'] = duration alert_data['novaideo_title'] = root.title return alert_data
def update(self): self.execute(None) user = self.context root = getSite() notes = [{ 'date': to_localized_time(date, self.request, translate=True), 'user': get_obj(value[0]), 'content': get_obj(value[1]), 'note': value[2], } for date, value in user._notes.items()] len_result = len(notes) index = str(len_result) if len_result > 1: index = '*' self.title = _(CONTENTS_MESSAGES[index], mapping={'nember': len_result}) values = { 'notes': notes, 'member': self.context, 'time_constant': getattr(root, 'time_constant', 6), 'length': len_result, 'score': getattr(user, 'confidence_index', 0) } result = {} body = self.content(args=values, template=self.template)['body'] item = self.adapt_item(body, self.viewid) result['coordinates'] = {self.coordinates: [item]} return result
def to_localized_time(self, date, date_from=None, date_only=False, format_id='digital', ignore_month=False, ignore_year=False, add_day_name=False, ignore_tz=False): if not date: return '' if not ignore_tz and isinstance(date, datetime.datetime): date = date.replace(tzinfo=pytz.UTC) date = date.astimezone(self.request.get_time_zone) return to_localized_time(date, request=self.request, date_from=date_from, date_only=date_only, format_id=format_id, ignore_month=ignore_month, ignore_year=ignore_year, add_day_name=add_day_name, translate=True)
def to_localized(date_str): """To localized date""" date = datetime.datetime.strptime( date_str, date_format) return to_localized_time( date, self.request, date_only=True, ignore_month=ignore_month, ignore_day=ignore_day, force_ignore=True, translate=True)
def to_localized(date_str): """To localized date""" date = datetime.datetime.strptime(date_str, date_format) return to_localized_time(date, self.request, date_only=True, ignore_month=ignore_month, ignore_day=ignore_day, force_ignore=True, translate=True)
def default_data(self): localizer = self.request.localizer user = get_current() time = to_localized_time(datetime.datetime.now( tz=pytz.UTC), translate=True) title = localizer.translate(_('Idea by'))+' '+\ getattr(user, 'title', user.name)+' '+\ localizer.translate(_('the'))+' '+\ time challenge = getattr(self.context, 'challenge', '') if challenge and not challenge.can_add_content: challenge = '' return {'new_idea': {'title': title, 'challenge': challenge}}
def redirect(self, context, request, **kw): root = getSite() user = kw.get('user', None) user_title = getattr(user, 'title', user.name) now = datetime.datetime.now() date = to_localized_time(now, request=request, translate=True) file_name = 'Alerts_Extraction_{user}_{date}_{app}'.format( date=date, user=user_title, app=root.title) file_name = name_normalizer(file_name.replace(' ', '-')) csv_file = kw.get('file', '') response = request.response response.content_type = 'application/vnd.ms-excel;charset=windows-1252' response.content_disposition = 'inline; filename="{file_name}.csv"'.format( file_name=file_name) response.app_iter = FileIter(csv_file) return response
def redirect(self, context, request, **kw): root = getSite() user = kw.get('user', None) user_title = getattr(user, 'title', user.name) now = datetime.datetime.now() date = to_localized_time(now, request=request, translate=True) file_name = 'Alerts_Extraction_{user}_{date}_{app}'.format( date=date, user=user_title, app=root.title) file_name = name_normalizer(file_name.replace(' ', '-')) csv_file = kw.get('file', '') response = request.response response.content_type = 'application/vnd.ms-excel;charset=windows-1252' response.content_disposition = 'inline; filename="{file_name}.csv"'.format( file_name=file_name) response.app_iter = FileIter(csv_file) return response
def to_localized_time( self, date, date_from=None, date_only=False, format_id='digital', ignore_month=False, ignore_year=False, add_day_name=False): if not date: return '' if isinstance(date, datetime.datetime): date = date.replace(tzinfo=pytz.UTC) date = date.astimezone(self.request.get_time_zone) return to_localized_time( date, request=self.request, date_from=date_from, date_only=date_only, format_id=format_id, ignore_month=ignore_month, ignore_year=ignore_year, add_day_name=add_day_name, translate=True)
def default_data(self): localizer = self.request.localizer user = get_current() time = to_localized_time( datetime.datetime.now( tz=self.request.get_time_zone), translate=True) title = localizer.translate(_('Idea by'))+' '+\ getattr(user, 'title', user.name)+' '+\ localizer.translate(_('the'))+' '+\ time challenge = getattr(self.context, 'challenge', '') if challenge and not challenge.can_add_content: challenge = '' return {'new_idea': {'title': title, 'challenge': challenge}}
def accept_preregistration(request, preregistration, root): preregistration.init_deadline(datetime.datetime.now(tz=pytz.UTC)) if getattr(preregistration, 'email', ''): deadline_date = preregistration.get_deadline_date() locale = my_locale_negotiator(request) url = request.resource_url(preregistration, "") mail_template = root.get_mail_template( 'preregistration', getattr(preregistration, 'locale', locale)) email_data = get_user_data(preregistration, 'recipient', request) subject = mail_template['subject'].format( novaideo_title=root.title) deadline_str = to_localized_time( deadline_date, request, translate=True) message = mail_template['template'].format( url=url, deadline_date=deadline_str.lower(), novaideo_title=root.title, **email_data ) alert('email', [root.get_site_sender()], [preregistration.email], subject=subject, body=message)
def accept_preregistration(request, preregistration, root): preregistration.init_deadline(datetime.datetime.now(tz=pytz.UTC)) if getattr(preregistration, 'email', ''): deadline_date = preregistration.get_deadline_date() locale = my_locale_negotiator(request) url = request.resource_url(preregistration, "") mail_template = root.get_mail_template( 'preregistration', getattr(preregistration, 'locale', locale)) email_data = get_user_data(preregistration, 'recipient', request) subject = mail_template['subject'].format(novaideo_title=root.title) deadline_str = to_localized_time(deadline_date, request, translate=True) message = mail_template['template'].format( url=url, deadline_date=deadline_str.lower(), novaideo_title=root.title, **email_data) alert('email', [root.get_site_sender()], [preregistration.email], subject=subject, body=message)
def start(self, context, request, appstruct, **kw): user = context localizer = request.localizer new_alerts = getattr(user, 'alerts', []) old_alerts = getattr(user, 'old_alerts', []) alerts = [] for obj in itertools.chain(new_alerts, old_alerts): render_dict = {'object': obj, 'current_user': user} alert = { 'content': renderers.render(obj.templates['default'], render_dict, request).replace('\n', ''), 'created_at': to_localized_time(obj.created_at, request, translate=True) } alerts.append(alert) attributes_to_extract = ['created_at', 'content'] csv_file = StringIO() fieldnames = [] for attr in attributes_to_extract: fieldnames.append( localizer.translate(EXTRACTION_ATTR[attr]['title'])) writer = csv.DictWriter(csv_file, fieldnames=fieldnames, dialect='excel', delimiter=';') writer.writeheader() registry = request.registry for obj in alerts: writer.writerow( dict([(localizer.translate(EXTRACTION_ATTR[attr]['title']), obj.get(attr)) for attr in attributes_to_extract])) csv_file.seek(0) return { 'file': BytesIO(csv_file.read().encode('windows-1252', 'replace')), 'user': user }
def redirect(self, context, request, **kw): filter_ = kw.get('filter', None) keywords = [] if filter_: keywords = list( filter_.get('metadata_filter', {}).get('keywords', [])) keywords = '-'.join(keywords) user = kw.get('user', None) user_title = getattr(user, 'title', user.name) now = datetime.datetime.now() date = to_localized_time(now, request=request, translate=True) file_name = 'Extraction_{keywords}_{date}_{user}'.format( keywords=keywords, date=date, user=user_title) file_name = file_name.replace(' ', '-') csv_file = kw.get('file', '') response = request.response response.content_type = 'application/vnd.ms-excel;charset=windows-1252' response.content_disposition = 'inline; filename="{file_name}.csv"'.format( file_name=file_name) response.app_iter = FileIter(csv_file) return response
def start(self, context, request, appstruct, **kw): user = context localizer = request.localizer new_alerts = getattr(user, 'alerts', []) old_alerts = getattr(user, 'old_alerts', []) alerts = [] for obj in itertools.chain(new_alerts, old_alerts): render_dict = { 'object': obj, 'current_user': user } alert = { 'content': renderers.render( obj.templates['default'], render_dict, request).replace('\n', ''), 'created_at': to_localized_time(obj.created_at, request, translate=True) } alerts.append(alert) attributes_to_extract = ['created_at', 'content'] csv_file = StringIO() fieldnames = [] for attr in attributes_to_extract: fieldnames.append( localizer.translate(EXTRACTION_ATTR[attr]['title'])) writer = csv.DictWriter( csv_file, fieldnames=fieldnames, dialect='excel', delimiter=';') writer.writeheader() registry = request.registry for obj in alerts: writer.writerow( dict([(localizer.translate(EXTRACTION_ATTR[attr]['title']), obj.get(attr)) for attr in attributes_to_extract])) csv_file.seek(0) return {'file': BytesIO(csv_file.read().encode('windows-1252', 'replace')), 'user': user}
def redirect(self, context, request, **kw): filter_ = kw.get('filter', None) keywords = [] if filter_: keywords = list(filter_.get( 'metadata_filter', {}).get( 'keywords', [])) keywords = '-'.join(keywords) user = kw.get('user', None) user_title = getattr(user, 'title', user.name) now = datetime.datetime.now() date = to_localized_time(now, request=request, translate=True) file_name = 'Extraction_{keywords}_{date}_{user}'.format( keywords=keywords, date=date, user=user_title) file_name = file_name.replace(' ', '-') csv_file = kw.get('file', '') response = request.response response.content_type = 'application/vnd.ms-excel;charset=windows-1252' response.content_disposition = 'inline; filename="{file_name}.csv"'.format( file_name=file_name) response.app_iter = FileIter(csv_file) return response
def start(self, context, request, appstruct, **kw): root = getSite() moderators = self.process.execution_context.get_involved_collection( 'electors') alert('internal', [root], moderators, internal_kind=InternalAlertKind.moderation_alert, subjects=[context], alert_kind='moderate_report') subject_data = get_entity_data(context, 'subject', request) subject_data.update(get_user_data(context, 'subject', request)) duration = getattr(root, 'duration_moderation_vote', 7) date_end = datetime.datetime.now() + \ datetime.timedelta(days=duration) date_end_vote = to_localized_time(date_end, request, translate=True) subject_data['url_moderation_rules'] = request.resource_url( root.moderation_rules, '@@index') for moderator in [a for a in moderators if getattr(a, 'email', '')]: mail_template = root.get_mail_template('moderate_report', moderator.user_locale) subject = mail_template['subject'].format( novaideo_title=root.title) email_data = get_user_data(moderator, 'recipient', request) email_data.update(subject_data) message = mail_template['template'].format( novaideo_title=root.title, subject_email=getattr(context, 'email', ''), date_end_vote=date_end_vote, duration=duration, **email_data) alert('email', [root.get_site_sender()], [moderator.email], subject=subject, body=message) request.registry.notify( ActivityExecuted(self, [context], get_current())) return {}
def init_title(self): self.title = 'Answer: {question} {date}'.format( question=getattr(self.question, 'title', ''), date=to_localized_time(self.created_at, translate=True))