Exemplo n.º 1
0
    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 {}
Exemplo n.º 2
0
    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 {}
Exemplo n.º 3
0
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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
    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}}
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
 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
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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}}
Exemplo n.º 13
0
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)
Exemplo n.º 14
0
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)
Exemplo n.º 15
0
    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
        }
Exemplo n.º 16
0
    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
Exemplo n.º 17
0
    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}
Exemplo n.º 18
0
    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
Exemplo n.º 19
0
    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 {}
Exemplo n.º 20
0
 def init_title(self):
     self.title = 'Answer: {question} {date}'.format(
         question=getattr(self.question, 'title', ''),
         date=to_localized_time(self.created_at, translate=True))