Exemplo n.º 1
0
 def _notify_receiver(
     self,
     emitter: User,
     workspace: Workspace,
     upload_permission: UploadPermissionInContext,
     upload_permission_password_enabled: bool,
     translator: Translator,
 ) -> Message:
     logger.info(
         self,
         'preparing email from user "{}" for the upload permission on workspace "{}" to "{}"'
         .format(emitter.user_id, workspace.workspace_id,
                 upload_permission.email),
     )
     translated_subject = translator.get_translation(
         self.config.
         EMAIL__NOTIFICATION__UPLOAD_PERMISSION_TO_RECEIVER__SUBJECT)
     subject = translated_subject.format(
         website_title=self.config.WEBSITE__TITLE,
         emitter_name=emitter.display_name)
     from_header = self._get_sender(emitter)
     to_header = EmailAddress.from_rfc_email_address(
         upload_permission.email)
     html_template_file_path = (
         self.config.
         EMAIL__NOTIFICATION__UPLOAD_PERMISSION_TO_RECEIVER__TEMPLATE__HTML)
     receiver = EmailUser(user_email=upload_permission.email)
     context = {
         "emitter":
         emitter,
         "workspace":
         workspace,
         "upload_permission":
         upload_permission,
         "receiver":
         receiver,
         "upload_permission_password_enabled":
         upload_permission_password_enabled,
     }
     body_html = self._render_template(
         mako_template_filepath=html_template_file_path,
         context=context,
         translator=translator)
     message = EmailNotificationMessage(
         subject=subject,
         from_header=from_header,
         to_header=to_header,
         body_html=body_html,
         lang=translator.default_lang,
     )
     return message
Exemplo n.º 2
0
    def _notify_receiver(
        self,
        emitter: User,
        shared_content: ContentInContext,
        content_share: ContentShareInContext,
        share_password_enabled: bool,
        translator: Translator,
    ) -> Message:
        logger.info(
            self,
            'preparing email from user "{}" for the share on content "{}" to "{}"'
            .format(emitter.user_id, shared_content.content_id,
                    content_share.email),
        )
        translated_subject = translator.get_translation(
            self.config.EMAIL__NOTIFICATION__SHARE_CONTENT_TO_RECEIVER__SUBJECT
        )
        subject = translated_subject.format(
            website_title=self.config.WEBSITE__TITLE,
            content_filename=shared_content.filename,
            emitter_name=emitter.display_name,
        )
        from_header = self._get_sender(emitter)
        to_header = EmailAddress.from_rfc_email_address(content_share.email)
        username, address = email.utils.parseaddr(content_share.email)
        html_template_file_path = (
            self.config.
            EMAIL__NOTIFICATION__SHARE_CONTENT_TO_RECEIVER__TEMPLATE__HTML)
        receiver = EmailUser(user_email=content_share.email)
        context = {
            "emitter": emitter,
            "shared_content": shared_content,
            "content_share": content_share,
            "share_password_enabled": share_password_enabled,
            "receiver": receiver,
        }
        body_html = self._render_template(
            mako_template_filepath=html_template_file_path,
            context=context,
            translator=translator)

        message = EmailNotificationMessage(
            subject=subject,
            from_header=from_header,
            to_header=to_header,
            body_html=body_html,
            lang=translator.default_lang,
        )
        return message
Exemplo n.º 3
0
    def notify_new_upload(
        self,
        uploader_username: str,
        uploader_email: str,
        uploader_message: typing.Optional[str],
        workspace_in_context: WorkspaceInContext,
        uploaded_contents: typing.List[ContentInContext],
    ) -> None:
        email_sender = EmailSender(self.config, self._smtp_config,
                                   self.config.EMAIL__NOTIFICATION__ACTIVATED)
        notifiable_roles = WorkspaceApi(
            current_user=None, session=self.session,
            config=self.config).get_notifiable_roles(
                workspace_in_context.workspace, force_notify=True)

        for role in notifiable_roles:
            logger.info(
                self,
                'Generating new upload notification in workspace "{}" from "{}" to "{}"'
                .format(workspace_in_context.workspace_id, uploader_username,
                        role.user.email),
            )
            translator = Translator(app_config=self.config,
                                    default_lang=role.user.lang)
            uploader = EmailUser(username=uploader_username,
                                 user_email=uploader_email)
            message = self._notify_new_upload(
                workspace_in_context=workspace_in_context,
                receiver=role.user,
                uploader=uploader,
                translator=translator,
                uploaded_contents=uploaded_contents,
                uploader_message=uploader_message,
            )
            send_email_through(config=self.config,
                               sendmail_callable=email_sender.send_mail,
                               message=message)
Exemplo n.º 4
0
 def email_user(self) -> EmailUser:
     return EmailUser(user_email=self.content_share.email)
Exemplo n.º 5
0
 def email_user(self) -> EmailUser:
     return EmailUser(user_email=self.upload_permission.email)