Example #1
0
    def start(self, context, request, appstruct, **kw):
        appstruct.pop('_csrf_token_')
        user = request.user
        appstruct['user'] = '******'
        if user:
            appstruct['user'] = get_oid(user)

        now = datetime.datetime.now(tz=pytz.timezone('Europe/Paris'))
        appstruct['date'] = now.isoformat()
        site = get_site_folder(True, request)
        appstruct['site'] = get_oid(site)
        alert('arango', [], ["lac." + appstruct['id']], appstruct)
        #alert slack
        appstruct['date'] = to_localized_time(now, translate=True)
        text = 'Aimez-vous la nouvelle version: {new_version}\n '
        if appstruct['new_version'] == 'False':
            text += 'Pourquoi non: {explanation}\n '

        text += 'Aimeriez-vous une application mobile: {mobile_application}\n \n User: {user}\n Email: {email}\n Date: {date}'
        text = text.format(**appstruct)
        alert('slack', [], ['questionnaire'], {'text': text})
        if user and not getattr(user, 'email', ''):
            user.email = appstruct.get('email', '')

        return {}
Example #2
0
    def start(self, context, request, appstruct, **kw):
        login = appstruct['email']
        adapter = request.registry.queryMultiAdapter((context, request),
                                                     IUserLocator)
        if adapter is None:
            adapter = DefaultUserLocator(context, request)

        user = adapter.get_user_by_email(login)
        if user is not None:
            principals = find_service(user, 'principals')
            reset = principals.add_reset(user)
            reseturl = request.resource_url(reset)
            email = user.email
            site = get_site_folder(True)
            localizer = request.localizer
            mail_template = site.get_mail_template('reset_password')
            subject = mail_template['subject']
            message = mail_template['template'].format(
                person=user,
                user_title=localizer.translate(
                    _(getattr(user, 'user_title', ''))),
                reseturl=reseturl,
                lac_title=request.root.title)
            alert('email', [site.get_site_sender()], [email], {
                'subject': subject,
                'body': message
            })

        return {}
Example #3
0
    def start(self, context, request, appstruct, **kw):
        appstruct.pop('_csrf_token_')
        user = request.user
        appstruct['user'] = '******'
        if user:
            appstruct['user'] = get_oid(user)

        now = datetime.datetime.now(tz=pytz.timezone('Europe/Paris'))
        appstruct['date'] = now.isoformat()
        site = get_site_folder(True, request)
        appstruct['site'] = get_oid(site)
        alert('arango', [], ["lac."+appstruct['id']], appstruct)
        #alert slack
        appstruct['date'] = to_localized_time(
            now, translate=True)
        text = 'Aimez-vous la nouvelle version: {new_version}\n '
        if appstruct['new_version'] == 'False':
            text += 'Pourquoi non: {explanation}\n '

        text += 'Aimeriez-vous une application mobile: {mobile_application}\n \n User: {user}\n Email: {email}\n Date: {date}'
        text = text.format(**appstruct)
        alert('slack', [], ['questionnaire'], {'text': text})
        if user and not getattr(user, 'email', ''):
            user.email = appstruct.get('email', '')

        return {}
Example #4
0
    def start(self, context, request, appstruct, **kw):
        site = get_site_folder(True)
        url = request.resource_url(context, "")
        deadline_date = context.init_deadline(
            datetime.datetime.now(tz=pytz.UTC))
        localizer = request.localizer
        deadline_str = to_localized_time(deadline_date,
                                         request,
                                         format_id='defined_literal',
                                         ignore_month=True,
                                         ignore_year=True,
                                         translate=True)
        mail_template = site.get_mail_template('preregistration')
        subject = mail_template['subject']
        deadline_str = to_localized_time(deadline_date,
                                         request,
                                         format_id='defined_literal',
                                         ignore_month=True,
                                         ignore_year=True,
                                         translate=True)
        message = mail_template['template'].format(
            preregistration=context,
            user_title=localizer.translate(
                _(getattr(context, 'user_title', ''))),
            url=url,
            deadline_date=deadline_str.lower(),
            lac_title=request.root.title)
        alert('email', [site.get_site_sender()], [context.email], {
            'subject': subject,
            'body': message
        })

        request.registry.notify(
            ActivityExecuted(self, [context], get_current()))
        return {}
Example #5
0
def publish_artist(context, request=None, user=None):
    context.state = PersistentList(['published'])
    context.modified_at = datetime.datetime.now(tz=pytz.UTC)
    context.origin_oid = get_oid(context)
    site = get_site_folder(True, request)
    root = getattr(request, 'root', None) if request else getSite()
    author = getattr(context, 'author', None)
    if author and user is not author:
        alert('internal', [site], [author],
              {'kind': InternalAlertKind.moderation_alert,
               'subjects': [context]})

    original = context.original
    if original:
        replaced = original.replace_by(context)
        if replaced:
            request.registry.notify(ObjectReplaced(
                old_object=original,
                new_object=context
            ))
            author = getattr(original, 'author', None)
            if author and user is not author:
                alert('internal', [site], [author],
                      {'kind': InternalAlertKind.content_alert,
                       'subjects': [context],
                       'alert_kind': 'replaced',
                       'replaced_title': original.title})

            root.delfromproperty('artists', original)

    context.reindex()
Example #6
0
def publish_venue(context, request=None, user=None):
    context.state = PersistentList(['published'])
    context.modified_at = datetime.datetime.now(tz=pytz.UTC)
    context.origin_oid = get_oid(context)
    original = context.original
    root = getattr(request, 'root', None) if request else getSite()
    site = get_site_folder(True, request)
    author = getattr(context, 'author', None)
    if author and user is not author:
        alert('internal', [site], [author], {
            'kind': InternalAlertKind.moderation_alert,
            'subjects': [context]
        })

    if original:
        replaced = original.replace_by(context)
        if replaced:
            request.registry.notify(
                ObjectReplaced(old_object=original, new_object=context))
            author = getattr(original, 'author', None)
            if author and user is not author:
                alert(
                    'internal', [site], [author], {
                        'kind': InternalAlertKind.content_alert,
                        'subjects': [context],
                        'alert_kind': 'replaced',
                        'replaced_title': original.title
                    })

            root.delfromproperty('venues', original)

    context.reindex()
Example #7
0
    def start(self, context, request, appstruct, **kw):
        user = get_current()
        context.state = PersistentList(['published'])
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        published = [context]
        root = getSite()
        if getattr(context, '_tree', None):
            tree = getattr(context, '_tree')
            request.get_site_folder.merge_tree(tree)
            root.merge_tree(tree)

        not_published_artists = [a for a in context.artists
                                 if 'published' not in a.state]
        published.extend(not_published_artists)
        for artist in not_published_artists:
            publish_artist(artist, request, user)

        not_published_directors = [a for a in getattr(context, 'directors', [])
                                   if 'published' not in a.state]
        published.extend(not_published_directors)
        for director in not_published_directors:
            publish_artist(director, request, user)

        context.release_date = datetime.datetime.now(tz=pytz.UTC)
        context.reindex()
        author = getattr(context, 'author', None)
        if author and user is not author:
            site = get_site_folder(True, request)
            alert('internal', [site], [author],
                  {'kind': InternalAlertKind.moderation_alert,
                   'subjects': [context]})

        request.registry.notify(ActivityExecuted(
            self, published, user))
        return {}
Example #8
0
    def start(self, context, request, appstruct, **kw):
        email = appstruct.pop('email')
        newnewsletters = appstruct.pop('newsletters')
        first_name = appstruct.get('first_name')
        last_name = appstruct.get('last_name')
        random_key = gen_random_token()
        key = email
        user_data = {'first_name': first_name,
                     'last_name': last_name,
                     'email': email,
                     'id': random_key,
                     'title': first_name+' '+\
                        last_name}
        site = get_site_folder(True)
        mail_template = site.get_mail_template('newsletter_subscription')
        for newsletter in newnewsletters:
            newsletter.subscribed[key] = user_data
            url = request.resource_url(
                context, '@@userunsubscribenewsletter',
                query={'oid': get_oid(newsletter),
                       'user': key+'@@'+random_key})
            subject = mail_template['subject'].format(
                newsletter_title=newsletter.title)
            mail = mail_template['template'].format(
                first_name=first_name,
                last_name=last_name,
                newsletter_title=newsletter.title,
                unsubscribeurl=url)
            alert('email', [site.get_site_sender()], [email],
                  {'subject': subject, 'body': mail})

        return {}
Example #9
0
    def start(self, context, request, appstruct, **kw):
        newsletter = appstruct.pop('newsletter')
        user = appstruct.pop('user', None)
        if user:
            parts = user.split('@@')
            key = parts[0]
            user_id = parts[1]
            subscribed = newsletter.subscribed.get(key, None)
            if subscribed and user_id == subscribed.get('id', None):
                newsletter.subscribed.pop(key)
                first_name = subscribed.get('first_name')
                last_name = subscribed.get('last_name')
                email = subscribed.get('email')
                site = get_site_folder(True)
                mail_template = site.get_mail_template('newsletter_unsubscription')
                subject = mail_template['subject'].format(
                    newsletter_title=newsletter.title)
                mail = mail_template['template'].format(
                    first_name=first_name,
                    last_name=last_name,
                    newsletter_title=newsletter.title)
                alert('email', [site.get_site_sender()], [email],
                      {'subject': subject, 'body': mail})

        return {}
Example #10
0
    def start(self, context, request, appstruct, **kw):
        #TODO format body and subject
        user = get_current()
        author = context.author
        if author:
            if user is not author:
                site = get_site_folder(True, request)
                alert('internal', [site], [author],
                      {'kind': InternalAlertKind.moderation_alert,
                       'subjects': [context]})

            site = request.get_site_folder
            mail_template = site.get_mail_template('refusal_statement_event')
            subject = mail_template['subject'].format()
            mail = mail_template['template'].format(
                member=getattr(author, 'name', ''),
                url=request.resource_url(context, '@@index'))
            alert('email', [site.get_site_sender()], [author.email],
                  {'subject': subject, 'body': mail})

        context.state = PersistentList(['rejected'])
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        context.reindex()
        request.registry.notify(ActivityExecuted(
            self, [context], user))
        return {}
Example #11
0
    def start(self, context, request, appstruct, **kw):
        newsletter = appstruct.pop('newsletter')
        user = appstruct.pop('user', None)
        if user:
            parts = user.split('@@')
            key = parts[0]
            user_id = parts[1]
            subscribed = newsletter.subscribed.get(key, None)
            if subscribed and user_id == subscribed.get('id', None):
                newsletter.subscribed.pop(key)
                first_name = subscribed.get('first_name')
                last_name = subscribed.get('last_name')
                email = subscribed.get('email')
                site = get_site_folder(True)
                mail_template = site.get_mail_template(
                    'newsletter_unsubscription')
                subject = mail_template['subject'].format(
                    newsletter_title=newsletter.title)
                mail = mail_template['template'].format(
                    first_name=first_name,
                    last_name=last_name,
                    newsletter_title=newsletter.title)
                alert('email', [site.get_site_sender()], [email], {
                    'subject': subject,
                    'body': mail
                })

        return {}
Example #12
0
    def start(self, context, request, appstruct, **kw):
        login = appstruct['email']
        adapter = request.registry.queryMultiAdapter(
            (context, request),
            IUserLocator
            )
        if adapter is None:
            adapter = DefaultUserLocator(context, request)

        user = adapter.get_user_by_email(login)
        if user is not None:
            principals = find_service(user, 'principals')
            reset = principals.add_reset(user)
            reseturl = request.resource_url(reset)
            email = user.email
            site = get_site_folder(True)
            localizer = request.localizer
            mail_template = site.get_mail_template('reset_password')
            subject = mail_template['subject']
            message = mail_template['template'].format(
                person=user,
                user_title=localizer.translate(
                    _(getattr(user, 'user_title', ''))),
                reseturl=reseturl,
                lac_title=request.root.title)
            alert('email', [site.get_site_sender()], [email],
                  {'subject': subject, 'body': message})

        return {}
Example #13
0
def send_newsletter_content(newsletter, request):
    site = newsletter.site
    subject = getattr(newsletter, 'subject', newsletter.title)
    mail_template = newsletter.content
    sender = site.get_site_sender()
    for (key, user_data) in newsletter.subscribed.items():
        email = user_data.get('email', None)
        if email and site:
            root = site.__parent__
            first_name = user_data.get('first_name')
            last_name = user_data.get('last_name')
            url = request.resource_url(
                root, '@@userunsubscribenewsletter',
                query={'oid': get_oid(newsletter),
                       'user': key+'@@'+user_data.get('id', '')})
            mail = mail_template.format(
                first_name=first_name,
                last_name=last_name,
                newsletter_title=newsletter.title,
                unsubscribeurl=url)
            alert('email', [sender], [email],
                  {'subject': subject, 'html': mail})

    now = datetime.datetime.now(tz=pytz.UTC)
    newsletter.annotations.setdefault(
        'newsletter_history', PersistentList()).append(
        {'date': now,
         'subject': subject,
         'content': newsletter.content
        })
    newsletter.content = newsletter.get_content_template()
    if getattr(newsletter, 'recurrence', False):
        newsletter.sending_date = newsletter.get_next_sending_date(now)
Example #14
0
    def start(self, context, request, appstruct, **kw):
        site = get_site_folder(True)
        url = request.resource_url(context, "")
        deadline_date = context.init_deadline(
            datetime.datetime.now(tz=pytz.UTC))
        localizer = request.localizer
        deadline_str = to_localized_time(
            deadline_date, request,
            format_id='defined_literal', ignore_month=True,
            ignore_year=True, translate=True)
        mail_template = site.get_mail_template('preregistration')
        subject = mail_template['subject']
        deadline_str = to_localized_time(
            deadline_date, request,
            format_id='defined_literal', ignore_month=True,
            ignore_year=True, translate=True)
        message = mail_template['template'].format(
            preregistration=context,
            user_title=localizer.translate(
                _(getattr(context, 'user_title', ''))),
            url=url,
            deadline_date=deadline_str.lower(),
            lac_title=request.root.title)
        alert('email', [site.get_site_sender()], [context.email],
              {'subject': subject, 'body': message})

        request.registry.notify(ActivityExecuted(self, [context], get_current()))
        return {}
Example #15
0
    def start(self, context, request, appstruct, **kw):
        data = context.get_data(PersonSchema())
        annotations = getattr(context, 'annotations',
                              {}).get(PROCESS_HISTORY_KEY, [])
        data.update({'password': appstruct['password']})
        data = {
            key: value
            for key, value in data.items() if value is not colander.null
        }
        data.pop('title')
        structure = data.pop('structure')
        site = get_site_folder(True)
        root = getSite()
        person = Person(**data)
        principals = find_service(root, 'principals')
        name = getattr(person, 'first_name', '') + ' '\
            + getattr(person, 'last_name', '')
        users = principals['users']
        name = name_chooser(users, name=name)
        users[name] = person
        if structure:
            grant_roles(person, roles=(('CulturalAnimator', site), ))
            person.setproperty('structure', structure)
        else:
            grant_roles(person, roles=(('Member', site), ))

        grant_roles(person, roles=('Member', ))
        grant_roles(person, (('Owner', person), ))
        person.state.append('active')
        person.reindex()
        get_socket().send_pyobj(
            ('stop', 'persistent_' + str(get_oid(context))))
        root.delfromproperty('preregistrations', context)
        person.add_customeraccount()
        person.init_annotations()
        person.annotations.setdefault(PROCESS_HISTORY_KEY,
                                      PersistentList()).extend(annotations)
        request.registry.notify(ActivityExecuted(self, [person], person))
        transaction.commit()
        localizer = request.localizer
        mail_template = site.get_mail_template('subscription_statement')
        subject = mail_template['subject']
        message = mail_template['template'].format(
            person=person,
            user_title=localizer.translate(_(getattr(person, 'user_title',
                                                     ''))),
            login_url=request.resource_url(root, '@@login'),
            lac_title=request.root.title)
        alert('email', [site.get_site_sender()], [person.email], {
            'subject': subject,
            'body': message
        })
        return {'person': person}
Example #16
0
    def start(self, context, request, appstruct, **kw):
        context.state = PersistentList(['rejected'])
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        context.reindex()
        author = getattr(context, 'author', None)
        user = get_current()
        if author and user is not author:
            site = get_site_folder(True, request)
            alert('internal', [site], [author],
                  {'kind': InternalAlertKind.moderation_alert,
                   'subjects': [context]})

        request.registry.notify(ActivityExecuted(self, [context], get_current()))
        return {}
Example #17
0
    def start(self, context, request, appstruct, **kw):
        data = context.get_data(PersonSchema())
        annotations = getattr(context, 'annotations', {}).get(PROCESS_HISTORY_KEY, [])
        data.update({'password': appstruct['password']})
        data = {key: value for key, value in data.items()
                if value is not colander.null}
        data.pop('title')
        structure = data.pop('structure')
        site = get_site_folder(True)
        root = getSite()
        person = Person(**data)
        principals = find_service(root, 'principals')
        name = getattr(person, 'first_name', '') + ' '\
            + getattr(person, 'last_name', '')
        users = principals['users']
        name = name_chooser(users, name=name)
        users[name] = person
        if structure:
            grant_roles(person, roles=(('CulturalAnimator', site),))
            person.setproperty('structure', structure)
        else:
            grant_roles(person, roles=(('Member', site),))

        grant_roles(person, roles=('Member',))
        grant_roles(person, (('Owner', person),))
        person.state.append('active')
        person.reindex()
        get_socket().send_pyobj(
            ('stop',
             'persistent_' + str(get_oid(context))))
        root.delfromproperty('preregistrations', context)
        person.add_customeraccount()
        person.init_annotations()
        person.annotations.setdefault(
            PROCESS_HISTORY_KEY, PersistentList()).extend(annotations)
        request.registry.notify(ActivityExecuted(self, [person], person))
        transaction.commit()
        localizer = request.localizer
        mail_template = site.get_mail_template('subscription_statement')
        subject = mail_template['subject']
        message = mail_template['template'].format(
            person=person,
            user_title=localizer.translate(
                _(getattr(person, 'user_title', ''))),
            login_url=request.resource_url(root, '@@login'),
            lac_title=request.root.title)
        alert('email', [site.get_site_sender()], [person.email],
              {'subject': subject, 'body': message})
        return {'person': person}
Example #18
0
    def start(self, context, request, appstruct, **kw):
        preregistration = appstruct['_object_data']
        preregistration.__name__ = gen_random_token()
        root = getSite()
        root.addtoproperty('preregistrations', preregistration)
        if getattr(preregistration, 'is_cultural_animator', False) and \
           appstruct.get('structures', None):
            structure = appstruct['structures'][0]['_object_data']
            if structure:
                preregistration.setproperty('structure', structure)
        else:
            preregistration.is_cultural_animator = False

        url = request.resource_url(preregistration, "")
        deadline = DEADLINE_PREREGISTRATION * 1000
        call_id = 'persistent_' + str(get_oid(preregistration))
        push_callback_after_commit(remove_expired_preregistration,
                                   deadline,
                                   call_id,
                                   root=root,
                                   preregistration=preregistration)
        preregistration.reindex()
        transaction.commit()
        deadline_date = preregistration.get_deadline_date()
        localizer = request.localizer
        site = request.get_site_folder
        mail_template = site.get_mail_template('preregistration')
        subject = mail_template['subject']
        deadline_str = to_localized_time(deadline_date,
                                         request,
                                         format_id='defined_literal',
                                         ignore_month=True,
                                         ignore_year=True,
                                         translate=True)
        message = mail_template['template'].format(
            preregistration=preregistration,
            user_title=localizer.translate(
                _(getattr(preregistration, 'user_title', ''))),
            url=url,
            deadline_date=deadline_str.lower(),
            lac_title=request.root.title)
        alert('email', [site.get_site_sender()], [preregistration.email], {
            'subject': subject,
            'body': message
        })
        request.registry.notify(ActivityExecuted(self, [preregistration],
                                                 None))
        return {'preregistration': preregistration}
Example #19
0
    def start(self, context, request, appstruct, **kw):
        context.reject()
        context.state = PersistentList(['rejected'])
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        context.reindex()
        user = get_current()
        author = getattr(context, 'author', None)
        if author and user is not author:
            site = get_site_folder(request)
            alert('internal', [site], [author], {
                'kind': InternalAlertKind.moderation_alert,
                'subjects': [context]
            })

        request.registry.notify(ActivityExecuted(self, [context], user))
        return {}
Example #20
0
    def start(self, context, request, appstruct, **kw):
        winners = context.get_participants_by_mail(appstruct.get('winners', []))
        participants = context.get_participants_by_mail(
                                  appstruct.get('participants', []))
        context.winners = PersistentDict(winners)
        context.participants = PersistentDict(participants)
        subject_template = appstruct.pop('subject')
        mail_template = appstruct.pop('message')
        site = get_site_folder(True)
        for email, winner in winners.items():
            subject = subject_template.format()
            mail = mail_template.format(first_name=winner['first_name'],
                                        last_name=winner['last_name'])
            alert('email', [site.get_site_sender()], [email],
                  {'subject': subject, 'body': mail})

        return {}
Example #21
0
def send_newsletter_content(newsletter, request):
    site = newsletter.site
    subject = getattr(newsletter, 'subject', newsletter.title)
    mail_template = newsletter.content
    sender = site.get_site_sender()
    for (key, user_data) in newsletter.subscribed.items():
        email = user_data.get('email', None)
        if email and site:
            root = site.__parent__
            first_name = user_data.get('first_name')
            last_name = user_data.get('last_name')
            url = request.resource_url(root,
                                       '@@userunsubscribenewsletter',
                                       query={
                                           'oid':
                                           get_oid(newsletter),
                                           'user':
                                           key + '@@' +
                                           user_data.get('id', '')
                                       })
            mail = mail_template.format(first_name=first_name,
                                        last_name=last_name,
                                        newsletter_title=newsletter.title,
                                        unsubscribeurl=url)
            alert('email', [sender], [email], {
                'subject': subject,
                'html': mail
            })

    now = datetime.datetime.now(tz=pytz.UTC)
    newsletter.annotations.setdefault('newsletter_history',
                                      PersistentList()).append({
                                          'date':
                                          now,
                                          'subject':
                                          subject,
                                          'content':
                                          newsletter.content
                                      })
    newsletter.content = newsletter.get_content_template()
    if getattr(newsletter, 'recurrence', False):
        newsletter.sending_date = newsletter.get_next_sending_date(now)
Example #22
0
    def start(self, context, request, appstruct, **kw):
        winners = context.get_participants_by_mail(appstruct.get(
            'winners', []))
        participants = context.get_participants_by_mail(
            appstruct.get('participants', []))
        context.winners = PersistentDict(winners)
        context.participants = PersistentDict(participants)
        subject_template = appstruct.pop('subject')
        mail_template = appstruct.pop('message')
        site = get_site_folder(True)
        for email, winner in winners.items():
            subject = subject_template.format()
            mail = mail_template.format(first_name=winner['first_name'],
                                        last_name=winner['last_name'])
            alert('email', [site.get_site_sender()], [email], {
                'subject': subject,
                'body': mail
            })

        return {}
Example #23
0
def send_creation_mails(context, request, author):
    site = request.get_site_folder
    mail_template = site.get_mail_template('registration_confirmation')
    subject = mail_template['subject'].format()
    mail = mail_template['template'].format()
    sender = site.get_site_sender()
    # member=getattr(author, 'name', ''),
    # url=request.resource_url(cultural_event, '@@index'))
    alert('email', [sender], [author.email], {
        'subject': subject,
        'body': mail
    })
    if getattr(context, 'selling_tickets', False):
        mail_template = site.get_mail_template('selling_tickets')
        subject = mail_template['subject'].format()
        mail = mail_template['template'].format()
        alert('email', [sender], [author.email], {
            'subject': subject,
            'body': mail
        })
Example #24
0
    def start(self, context, request, appstruct, **kw):
        preregistration = appstruct['_object_data']
        preregistration.__name__ = gen_random_token()
        root = getSite()
        root.addtoproperty('preregistrations', preregistration)
        if getattr(preregistration, 'is_cultural_animator', False) and \
           appstruct.get('structures', None):
            structure = appstruct['structures'][0]['_object_data']
            if structure:
                preregistration.setproperty('structure', structure)
        else:
            preregistration.is_cultural_animator = False

        url = request.resource_url(preregistration, "")
        deadline = DEADLINE_PREREGISTRATION * 1000
        call_id = 'persistent_' + str(get_oid(preregistration))
        push_callback_after_commit(
            remove_expired_preregistration, deadline, call_id,
            root=root, preregistration=preregistration)
        preregistration.reindex()
        transaction.commit()
        deadline_date = preregistration.get_deadline_date()
        localizer = request.localizer
        site = request.get_site_folder
        mail_template = site.get_mail_template('preregistration')
        subject = mail_template['subject']
        deadline_str = to_localized_time(
            deadline_date, request,
            format_id='defined_literal', ignore_month=True,
            ignore_year=True, translate=True)
        message = mail_template['template'].format(
            preregistration=preregistration,
            user_title=localizer.translate(
                _(getattr(preregistration, 'user_title', ''))),
            url=url,
            deadline_date=deadline_str.lower(),
            lac_title=request.root.title)
        alert('email', [site.get_site_sender()], [preregistration.email],
              {'subject': subject, 'body': message})
        request.registry.notify(ActivityExecuted(self, [preregistration], None))
        return {'preregistration': preregistration}
Example #25
0
    def start(self, context, request, appstruct, **kw):
        email = appstruct.pop('email')
        key = email
        subscribed = context.subscribed.get(key, None)
        if subscribed:
            context.subscribed.pop(key)
            first_name = subscribed.get('first_name')
            last_name = subscribed.get('last_name')
            email = subscribed.get('email')
            site = get_site_folder(True)
            mail_template = site.get_mail_template('newsletter_unsubscription')
            subject = mail_template['subject'].format(
                newsletter_title=context.title)
            mail = mail_template['template'].format(
                first_name=first_name,
                last_name=last_name,
                newsletter_title=context.title)
            alert('email', [site.get_site_sender()], [email],
                  {'subject': subject, 'body': mail})

        return {}
Example #26
0
    def start(self, context, request, appstruct, **kw):
        email = appstruct.pop('email')
        first_name = appstruct.get('first_name')
        last_name = appstruct.get('last_name')
        context.participants[email] = {'first_name': first_name,
                                       'last_name': last_name,
                                       'title': first_name+' '+\
                                                last_name}

        site = get_site_folder(True)
        mail_template = site.get_mail_template('game_participation')
        subject = mail_template['subject'].format(game_title=context.title)
        mail = mail_template['template'].format(
                                    first_name=first_name,
                                    last_name=last_name,
                                    game_title=context.title,
                                    url=request.resource_url(context, '@@index'))
        alert('email', [site.get_site_sender()], [email],
              {'subject': subject, 'body': mail})
        context.reindex()
        return {}
Example #27
0
    def start(self, context, request, appstruct, **kw):
        appstruct.pop('_csrf_token_')
        site = get_site_folder(True, request)
        contacts = [c for c in getattr(site, 'contacts', [])
                    if c.get('email', None)]
        if contacts:
            subject = "Avis d'un utilisateur"
            mail = appstruct.get('improvement')
            sender = appstruct.get('email')
            alert('email', [sender], [contacts[-1].get('email')],
                  {'subject': subject, 'body': mail})

        user = request.user
        appstruct['user'] = '******'
        if user:
            appstruct['user'] = get_oid(user)

        now = datetime.datetime.now(tz=pytz.timezone('Europe/Paris'))
        appstruct['date'] = now.isoformat()
        appstruct['site'] = get_oid(site)
        alert('arango', [], ["lac."+appstruct['id']], appstruct)
        #alert slack
        appstruct['date'] = to_localized_time(
            now, translate=True)
        text = '{improvement}\n User: {user}\n URL: {url}\n Email: {email}\n Date: {date}'.format(**appstruct)
        alert('slack', [], ['improve'], {'text': text})
        if user and not getattr(user, 'email', ''):
            user.email = appstruct.get('email', '')

        return {}
Example #28
0
    def start(self, context, request, appstruct, **kw):
        subject = appstruct.get('subject')
        mail = appstruct.get('message')
        sender = appstruct.get('email')
        services = appstruct.get('services')
        alert('email', [sender], list(services),
              {'subject': subject, 'body': mail})
        appstruct.pop('_csrf_token_')
        user = request.user
        appstruct['user'] = '******'
        if user:
            appstruct['user'] = get_oid(user)

        now = datetime.datetime.now(tz=pytz.timezone('Europe/Paris'))
        appstruct['date'] = now.isoformat()
        appstruct['services'] = str(appstruct['services'])
        site = get_site_folder(True, request)
        appstruct['site'] = get_oid(site)
        alert('arango', [], ["lac.contact"], appstruct)
        #alert slack
        appstruct['date'] = to_localized_time(
            now, translate=True)
        text = 'Sujet: {subject}\n Message: {message}\n User: {user}\n Nom: {name}\n Email: {email}\n Date: {date}\n\n Service: {services}'.format(**appstruct)
        alert('slack', [], ['lac_contact'], {'text': text})
        if user and not getattr(user, 'email', ''):
            user.email = sender

        return {}
Example #29
0
    def start(self, context, request, appstruct, **kw):
        appstruct.pop('_csrf_token_')
        site = get_site_folder(True, request)
        contacts = [
            c for c in getattr(site, 'contacts', []) if c.get('email', None)
        ]
        if contacts:
            subject = "Avis d'un utilisateur"
            mail = appstruct.get('improvement')
            sender = appstruct.get('email')
            alert('email', [sender], [contacts[-1].get('email')], {
                'subject': subject,
                'body': mail
            })

        user = request.user
        appstruct['user'] = '******'
        if user:
            appstruct['user'] = get_oid(user)

        now = datetime.datetime.now(tz=pytz.timezone('Europe/Paris'))
        appstruct['date'] = now.isoformat()
        appstruct['site'] = get_oid(site)
        alert('arango', [], ["lac." + appstruct['id']], appstruct)
        #alert slack
        appstruct['date'] = to_localized_time(now, translate=True)
        text = '{improvement}\n User: {user}\n URL: {url}\n Email: {email}\n Date: {date}'.format(
            **appstruct)
        alert('slack', [], ['improve'], {'text': text})
        if user and not getattr(user, 'email', ''):
            user.email = appstruct.get('email', '')

        return {}
Example #30
0
    def start(self, context, request, appstruct, **kw):
        subject = appstruct.get('subject')
        mail = appstruct.get('message')
        sender = appstruct.get('email')
        services = appstruct.get('services')
        alert('email', [sender], list(services), {
            'subject': subject,
            'body': mail
        })
        appstruct.pop('_csrf_token_')
        user = request.user
        appstruct['user'] = '******'
        if user:
            appstruct['user'] = get_oid(user)

        now = datetime.datetime.now(tz=pytz.timezone('Europe/Paris'))
        appstruct['date'] = now.isoformat()
        appstruct['services'] = str(appstruct['services'])
        site = get_site_folder(True, request)
        appstruct['site'] = get_oid(site)
        alert('arango', [], ["lac.contact"], appstruct)
        #alert slack
        appstruct['date'] = to_localized_time(now, translate=True)
        text = 'Sujet: {subject}\n Message: {message}\n User: {user}\n Nom: {name}\n Email: {email}\n Date: {date}\n\n Service: {services}'.format(
            **appstruct)
        alert('slack', [], ['lac_contact'], {'text': text})
        if user and not getattr(user, 'email', ''):
            user.email = sender

        return {}
Example #31
0
def send_request_quotation(newadvertising, request):
    site = get_site_folder(True)
    managers = get_users_with_role(role=('AdvertisingManager', site))
    if not managers:
        managers = get_users_with_role(role=('SiteAdmin', site))

    if managers:
        localizer = request.localizer
        url = request.resource_url(newadvertising, "@@index")
        author = get_current()
        mail_template = site.get_mail_template('request_quotation')
        subject = mail_template['subject'].format(
            advertising_title=newadvertising.title)
        message = mail_template['template'].format(
            author=getattr(author, 'title', author.name),
            user_title=localizer.translate(
                _(getattr(author, 'user_title', 'The user'))),
            url=url,
            lac_title=request.root.title)
        for manager in managers:
            alert('email', [getattr(author, 'email', None)], [manager.email],
                  {'subject': subject, 'body': message})
Example #32
0
    def start(self, context, request, appstruct, **kw):
        user = get_current()
        context.state = PersistentList(['published'])
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        published = [context]
        root = getSite()
        if getattr(context, '_tree', None):
            tree = getattr(context, '_tree')
            request.get_site_folder.merge_tree(tree)
            root.merge_tree(tree)

        not_published_artists = [
            a for a in context.artists if 'published' not in a.state
        ]
        published.extend(not_published_artists)
        for artist in not_published_artists:
            publish_artist(artist, request, user)

        not_published_directors = [
            a for a in getattr(context, 'directors', [])
            if 'published' not in a.state
        ]
        published.extend(not_published_directors)
        for director in not_published_directors:
            publish_artist(director, request, user)

        context.release_date = datetime.datetime.now(tz=pytz.UTC)
        context.reindex()
        author = getattr(context, 'author', None)
        if author and user is not author:
            site = get_site_folder(True, request)
            alert('internal', [site], [author], {
                'kind': InternalAlertKind.moderation_alert,
                'subjects': [context]
            })

        request.registry.notify(ActivityExecuted(self, published, user))
        return {}
Example #33
0
    def start(self, context, request, appstruct, **kw):
        email = appstruct.pop('email')
        key = email
        subscribed = context.subscribed.get(key, None)
        if subscribed:
            context.subscribed.pop(key)
            first_name = subscribed.get('first_name')
            last_name = subscribed.get('last_name')
            email = subscribed.get('email')
            site = get_site_folder(True)
            mail_template = site.get_mail_template('newsletter_unsubscription')
            subject = mail_template['subject'].format(
                newsletter_title=context.title)
            mail = mail_template['template'].format(
                first_name=first_name,
                last_name=last_name,
                newsletter_title=context.title)
            alert('email', [site.get_site_sender()], [email], {
                'subject': subject,
                'body': mail
            })

        return {}
Example #34
0
    def start(self, context, request, appstruct, **kw):
        email = appstruct.pop('email')
        first_name = appstruct.get('first_name')
        last_name = appstruct.get('last_name')
        context.participants[email] = {'first_name': first_name,
                                       'last_name': last_name,
                                       'title': first_name+' '+\
                                                last_name}

        site = get_site_folder(True)
        mail_template = site.get_mail_template('game_participation')
        subject = mail_template['subject'].format(game_title=context.title)
        mail = mail_template['template'].format(first_name=first_name,
                                                last_name=last_name,
                                                game_title=context.title,
                                                url=request.resource_url(
                                                    context, '@@index'))
        alert('email', [site.get_site_sender()], [email], {
            'subject': subject,
            'body': mail
        })
        context.reindex()
        return {}
Example #35
0
    def start(self, context, request, appstruct, **kw):
        email = appstruct.pop('email')
        newnewsletters = appstruct.pop('newsletters')
        first_name = appstruct.get('first_name')
        last_name = appstruct.get('last_name')
        random_key = gen_random_token()
        key = email
        user_data = {'first_name': first_name,
                     'last_name': last_name,
                     'email': email,
                     'id': random_key,
                     'title': first_name+' '+\
                        last_name}
        site = get_site_folder(True)
        mail_template = site.get_mail_template('newsletter_subscription')
        for newsletter in newnewsletters:
            newsletter.subscribed[key] = user_data
            url = request.resource_url(context,
                                       '@@userunsubscribenewsletter',
                                       query={
                                           'oid': get_oid(newsletter),
                                           'user': key + '@@' + random_key
                                       })
            subject = mail_template['subject'].format(
                newsletter_title=newsletter.title)
            mail = mail_template['template'].format(
                first_name=first_name,
                last_name=last_name,
                newsletter_title=newsletter.title,
                unsubscribeurl=url)
            alert('email', [site.get_site_sender()], [email], {
                'subject': subject,
                'body': mail
            })

        return {}
Example #36
0
def send_request_quotation(newadvertising, request):
    site = get_site_folder(True)
    managers = get_users_with_role(role=('AdvertisingManager', site))
    if not managers:
        managers = get_users_with_role(role=('SiteAdmin', site))

    if managers:
        localizer = request.localizer
        url = request.resource_url(newadvertising, "@@index")
        author = get_current()
        mail_template = site.get_mail_template('request_quotation')
        subject = mail_template['subject'].format(
            advertising_title=newadvertising.title)
        message = mail_template['template'].format(
            author=getattr(author, 'title', author.name),
            user_title=localizer.translate(
                _(getattr(author, 'user_title', 'The user'))),
            url=url,
            lac_title=request.root.title)
        for manager in managers:
            alert('email', [getattr(author, 'email', None)], [manager.email], {
                'subject': subject,
                'body': message
            })
Example #37
0
    def start(self, context, request, appstruct, **kw):
        lac_catalog = find_catalog('lac')
        subscription_kind_index = lac_catalog['subscription_kind']
        now = datetime.datetime.combine(
            datetime.datetime.utcnow(),
            datetime.time(23, 59, 59, tzinfo=pytz.UTC))
        #remove old alerts
        created_before = now - datetime.timedelta(days=ALERT_DURATION)
        created_at_index = lac_catalog['created_at']
        date_query = created_at_index.lt(created_before)
        old_alerts = find_entities(interfaces=[IAlert], add_query=date_query)
        for old_alert in old_alerts:
            if old_alert.__parent__:
                old_alert.__parent__.delfromproperty('alerts', old_alert)

        #alert services
        query = subscription_kind_index.any(['subscription'])
        services = find_entities(interfaces=[IService], add_query=query)
        for service in services:
            customer = getattr(getattr(service, 'customer', None), 'user',
                               None)
            perimeter = getattr(service, 'perimeter', None)
            site = perimeter if isinstance(perimeter, SiteFolder) else None
            if not site:
                site_oid = getattr(service, 'source_site', None)
                if site_oid:
                    site = get_obj(site_oid)

            if customer and site:
                is_expired = service.is_expired()
                end_date = getattr(service, 'end_date', None)
                alert_date = (
                    end_date -
                    datetime.timedelta(days=DAYS_BEFORE_ALERT)).replace(
                        tzinfo=pytz.UTC)
                all_alerts = customer.all_alerts
                old_alerts_expired = customer.get_alerts(
                    all_alerts,
                    kind=InternalAlertKind.service_alert,
                    subject=service,
                    **{'alert_kind': 'expired'})
                old_alerts_deadline = customer.get_alerts(
                    all_alerts,
                    kind=InternalAlertKind.service_alert,
                    subject=service,
                    **{'alert_kind': 'deadline'})
                if is_expired:
                    #alert if is expired
                    if not old_alerts_expired:
                        alert(
                            'internal', [site], [customer], {
                                'kind': InternalAlertKind.service_alert,
                                'subjects': [service],
                                'alert_kind': 'expired'
                            })

                elif end_date and now >= alert_date:
                    if not old_alerts_deadline:
                        alert(
                            'internal', [site], [customer], {
                                'kind': InternalAlertKind.service_alert,
                                'subjects': [service],
                                'alert_kind': 'deadline'
                            })

        return {}
Example #38
0
    def start(self, context, request, appstruct, **kw):
        user = get_current()
        author = getattr(context, 'author', user)
        site_ids = []
        #@TODO Start
        current_site = request.get_site_folder
        sites = [current_site]
        sites.extend(current_site.get_group())
        sites = [
            s for s in sites if visible_in_site(s, context, request=request)
        ]
        #@TODO End
        # can_publish_data = can_publish_in_periodic(current_site, context)
        # can_publish = can_publish_data[0]
        # has_extraction = can_publish_data[3]
        # if can_publish or not has_extraction:
        mail_template = current_site.get_mail_template(
            'validation_confirmation')
        subject = mail_template['subject'].format()
        mail = mail_template['template'].format(
            member=getattr(author, 'name', ''),
            url=request.resource_url(context, '@@index'))
        alert('email', [current_site.get_site_sender()], [author.email], {
            'subject': subject,
            'body': mail
        })

        # elif has_extraction:
        #     mail_template = current_site.get_mail_template('validation_confirmation_date')
        #     subject = mail_template['subject'].format()
        #     mail = mail_template['template'].format(
        #                 member=getattr(author, 'name', ''),
        #                 url=request.resource_url(context, '@@index'))
        #     mailer_send(subject=subject, body=mail,
        #                 recipients=[author.email],
        #                 sender=current_site.get_site_sender())
        for site in sites:  #appstruct['sites']:
            site_ids.append(get_oid(site))
            site_services = site.get_all_services(validate=False,
                                                  delegation=False)
            if 'moderation' in site_services:
                moderations = site_services['moderation']
                for moderation in list(set(moderations)):
                    service = moderation.get_unit()
                    service.configure(context, author)
                    service.subscribe(context, author, service=moderation)

        order = update_orders(context, author)
        remove_empty_orders(author)
        is_paid = 'paid' in order.state
        submited_objects = [context]
        if is_paid:
            context.state = PersistentList(['submitted'])
            submit_cultural_event(context)
            submited_objects.extend(submit_artists(context.artists))
            submited_objects.extend(
                submit_venues([s.venue for s in context.schedules if s.venue]))
        else:
            context.state = PersistentList(['to pay'])

        context.sumited_to = PersistentList(site_ids)
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        context.reindex()
        request.registry.notify(ActivityExecuted(self, submited_objects, user))
        return {'is_paid': is_paid}
Example #39
0
    def start(self, context, request, appstruct, **kw):
        #TODO published
        user = get_current()
        root = request.root
        site = get_site_folder(True, request)
        published = [context]
        author = context.author
        if author:
            if user is not author:
                alert('internal', [site], [author],
                      {'kind': InternalAlertKind.moderation_alert,
                       'subjects': [context]})

            site = request.get_site_folder
            mail_template = site.get_mail_template('acceptance_statement_event')
            subject = mail_template['subject'].format()
            mail = mail_template['template'].format(
                member=getattr(author, 'name', ''),
                url=request.resource_url(context, '@@index'))
            alert('email', [site.get_site_sender()], [author.email],
                  {'subject': subject, 'body': mail})

        context.state = PersistentList(['published'])
        context.modified_at = datetime.datetime.now(tz=pytz.UTC)
        context.reindex()
        if getattr(context, '_tree', None):
            tree = getattr(context, '_tree')
            request.get_site_folder.merge_tree(tree)
            root.merge_tree(tree)

        not_published_artists = [a for a in context.artists
                                 if 'published' not in a.state]
        published.extend(not_published_artists)
        for artist in not_published_artists:
            publish_artist(artist, request, user)

        not_published_venues = [s.venue for s in context.schedules if s.venue
                                and 'published' not in s.venue.state]
        published.extend(not_published_venues)
        for venue in not_published_venues:
            publish_venue(venue, request, user)

        original = context.original
        if original and 'published' in original.state:
            original.state = PersistentList(['archived'])
            original.reindex()
            published.append(original)
            author = getattr(original, 'author', None)
            request.registry.notify(ObjectReplaced(
                old_object=original,
                new_object=context
            ))
            if author and user is not author:
                alert('internal', [site], [author],
                      {'kind': InternalAlertKind.content_alert,
                       'subjects': [context],
                       'alert_kind': 'replaced',
                       'replaced_title': original.title})

        request.registry.notify(ActivityExecuted(
            self, published, user))
        return {}
Example #40
0
    def start(self, context, request, appstruct, **kw):
        lac_catalog = find_catalog('lac')
        subscription_kind_index = lac_catalog['subscription_kind']
        now = datetime.datetime.combine(
            datetime.datetime.utcnow(),
            datetime.time(23, 59, 59, tzinfo=pytz.UTC))
        #remove old alerts
        created_before = now - datetime.timedelta(days=ALERT_DURATION)
        created_at_index = lac_catalog['created_at']
        date_query = created_at_index.lt(created_before)
        old_alerts = find_entities(
            interfaces=[IAlert],
            add_query=date_query)
        for old_alert in old_alerts:
            if old_alert.__parent__:
                old_alert.__parent__.delfromproperty('alerts', old_alert)

        #alert services
        query = subscription_kind_index.any(['subscription'])
        services = find_entities(
            interfaces=[IService],
            add_query=query)
        for service in services:
            customer = getattr(getattr(service, 'customer', None), 'user', None)
            perimeter = getattr(service, 'perimeter', None)
            site = perimeter if isinstance(perimeter, SiteFolder) else None
            if not site:
                site_oid = getattr(service, 'source_site', None)
                if site_oid:
                    site = get_obj(site_oid)

            if customer and site:
                is_expired = service.is_expired()
                end_date = getattr(service, 'end_date', None)
                alert_date = (end_date - datetime.timedelta(
                    days=DAYS_BEFORE_ALERT)).replace(tzinfo=pytz.UTC)
                all_alerts = customer.all_alerts
                old_alerts_expired = customer.get_alerts(
                    all_alerts,
                    kind=InternalAlertKind.service_alert,
                    subject=service, **{'alert_kind': 'expired'})
                old_alerts_deadline = customer.get_alerts(
                    all_alerts,
                    kind=InternalAlertKind.service_alert,
                    subject=service, **{'alert_kind': 'deadline'})
                if is_expired:
                    #alert if is expired
                    if not old_alerts_expired:
                        alert('internal', [site], [customer],
                              {'kind': InternalAlertKind.service_alert,
                               'subjects': [service],
                               'alert_kind': 'expired'})

                elif end_date and now >= alert_date:
                    if not old_alerts_deadline:
                        alert('internal', [site], [customer],
                              {'kind': InternalAlertKind.service_alert,
                               'subjects': [service],
                               'alert_kind': 'deadline'})

        return {}