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 {}
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 {}
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 {}
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 {}
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()
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()
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 {}
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 {}
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 {}
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 {}
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 {}
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 {}
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)
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 {}
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}
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 {}
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}
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}
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 {}
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 {}
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)
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 {}
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 })
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}
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 {}
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 {}
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 {}
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 {}
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 {}
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 {}
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})
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 {}
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 {}
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 {}
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 {}
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 })
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 {}
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}
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 {}
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 {}