def _reset(self):
        """
        Manages submissions to the password reset form.
        """
        log.debug('Form validated successfully')
        try:
            u = meta.session.query(User).filter_by(
                email=self.form_result['email']).one()
        except:
            log.debug('Invalid email address somehow')
            c.message = _('We do not have an account with that email address')
            return self.index(get=True)

        # If that worked, then we send the user an email with a temporary URL
        # they can use to have our system generate a new password for them.
        log.debug('Sending activation email')

        email = Email('password_reset')
        password_reset_data = PasswordReset.create_for_user(u)
        meta.session.add(password_reset_data)
        meta.session.commit()

        recipient = u.email
        password_reset_url = 'http://' + config[
            'debexpo.sitename'] + url.current(
                action='actually_reset_password',
                id=password_reset_data.temporary_auth_key)
        email.send([recipient], password_reset_url=password_reset_url)

        # FIXME: This should be a HTTP redirect
        return render('/password_recover/_reset.mako')
Beispiel #2
0
    def _reset(self):
        """
        Manages submissions to the password reset form.
        """
        log.debug('Form validated successfully')
        try:
            u = meta.session.query(User).filter_by(email=self.form_result['email']).one()
        except:
            log.debug('Invalid email address somehow')
            c.message = _('We do not have an account with that email address')
            return self.index(get=True)

        # If that worked, then we send the user an email with a temporary URL
        # they can use to have our system generate a new password for them.
        log.debug('Sending activation email')

        email = Email('password_reset')
        password_reset_data = PasswordReset.create_for_user(u)
        meta.session.add(password_reset_data)
        meta.session.commit()

        recipient = u.email
        password_reset_url = 'http://' + config['debexpo.sitename'] + url.current(
            action='actually_reset_password', id=password_reset_data.temporary_auth_key)
        email.send([recipient], password_reset_url=password_reset_url)

        # FIXME: This should be a HTTP redirect
        return render('/password_recover/_reset.mako')
Beispiel #3
0
    def _comment_submit(self, packagename):
        """
        Comment submission.

        ``packagename``
            Package name to look at.
        """
        log.debug("Comment form validation successful")

        if 'user_id' not in session:
            log.debug('Requires authentication')
            session['path_before_login'] = request.path_info
            session.save()
            redirect(url('login'))

        package = self._get_package(packagename)

        status = constants.PACKAGE_COMMENT_STATUS_NOT_UPLOADED

        if self.form_result['status']:
            status = constants.PACKAGE_COMMENT_STATUS_UPLOADED

        comment = PackageComment(
            user_id=session['user_id'],
            package_version_id=self.form_result['package_version'],
            text=self.form_result['text'],
            time=datetime.now(),
            outcome=self.form_result['outcome'],
            status=status)

        meta.session.add(comment)
        meta.session.commit()

        subscribers = meta.session.query(PackageSubscription).filter_by(
            package=packagename).filter(PackageSubscription.level <= constants.
                                        SUBSCRIPTION_LEVEL_COMMENTS).all()

        user = meta.session.query(User).filter_by(id=session['user_id']).one()
        if len(subscribers) > 0:

            email = Email('comment_posted')
            email.send([s.user.email for s in subscribers],
                       package=packagename,
                       comment=self.form_result['text'],
                       user=user)

        version = package = meta.session.query(PackageVersion).filter_by(
            id=self.form_result['package_version']).first()

        data = version.publish_data
        data['author_email'] = user.email
        data['author_name'] = user.name
        data['content'] = comment.text
        data['outcome'] = comment.outcome

        publish(topic="package.comment", msg=data)

        redirect(url('package', packagename=packagename))
Beispiel #4
0
    def _comment_submit(self, packagename):
        """
        Comment submission.

        ``packagename``
            Package name to look at.
        """
        log.debug("Comment form validation successful")

        if 'user_id' not in session:
            log.debug('Requires authentication')
            session['path_before_login'] = request.path_info
            session.save()
            redirect(url('login'))

        package = self._get_package(packagename)

        status = constants.PACKAGE_COMMENT_STATUS_NOT_UPLOADED

        if self.form_result['status']:
            status = constants.PACKAGE_COMMENT_STATUS_UPLOADED

        comment = PackageComment(user_id=session['user_id'],
            package_version_id=self.form_result['package_version'],
            text=self.form_result['text'],
            time=datetime.now(),
            outcome=self.form_result['outcome'],
            status=status)

        meta.session.add(comment)
        meta.session.commit()

        subscribers = meta.session.query(PackageSubscription).filter_by(
            package=packagename).filter(
            PackageSubscription.level <= constants.SUBSCRIPTION_LEVEL_COMMENTS).all()

        user = meta.session.query(User).filter_by(id=session['user_id']).one()
        if len(subscribers) > 0:

            email = Email('comment_posted')
            email.send([s.user.email for s in subscribers], package=packagename,
                comment=self.form_result['text'], user=user)

        version = package = meta.session.query(PackageVersion).filter_by(id=self.form_result['package_version']).first()

        data = version.publish_data
        data['author_email'] = user.email
        data['author_name'] = user.name
        data['content'] = comment.text
        data['outcome'] = comment.outcome

        publish(topic="package.comment", msg=data)

        redirect(url('package', packagename=packagename))
Beispiel #5
0
    def _comment_submit(self, packagename):
        """
        Comment submission.

        ``packagename``
            Package name to look at.
        """
        log.debug("Comment form validation successful")

        if "user_id" not in session:
            log.debug("Requires authentication")
            session["path_before_login"] = request.path_info
            session.save()
            redirect(url("login"))

        package = self._get_package(packagename)

        status = constants.PACKAGE_COMMENT_STATUS_NOT_UPLOADED

        if self.form_result["status"]:
            status = constants.PACKAGE_COMMENT_STATUS_UPLOADED

        comment = PackageComment(
            user_id=session["user_id"],
            package_version_id=self.form_result["package_version"],
            text=self.form_result["text"],
            time=datetime.now(),
            outcome=self.form_result["outcome"],
            status=status,
        )

        meta.session.add(comment)
        meta.session.commit()

        subscribers = (
            meta.session.query(PackageSubscription)
            .filter_by(package=packagename)
            .filter(PackageSubscription.level <= constants.SUBSCRIPTION_LEVEL_COMMENTS)
            .all()
        )

        if len(subscribers) > 0:
            user = meta.session.query(User).filter_by(id=session["user_id"]).one()

            email = Email("comment_posted")
            email.send(
                [s.user.email for s in subscribers], package=packagename, comment=self.form_result["text"], user=user
            )

        redirect(url("package", packagename=packagename))
Beispiel #6
0
    def _send_activate_email(self, key, recipient):
        """
        Sends an activation email to the potential new user.

        ``key``
            Activation key that's already stored in the database.

        ``recipient``
            Email address to send to.
        """
        log.debug('Sending activation email')
        email = Email('register_activate')
        url = 'http://' + request.host + h.url_for(action='activate', id=key)
        email.send([recipient], activate_url=url)
Beispiel #7
0
    def _send_activate_email(self, key, recipient):
        """
        Sends an activation email to the potential new user.

        ``key``
            Activation key that's already stored in the database.

        ``recipient``
            Email address to send to.
        """
        log.debug('Sending activation email')
        email = Email('register_activate')
        activate_url = 'http://' + config['debexpo.sitename'] + url.current(action='activate', id=key)
        email.send([recipient], activate_url=activate_url)
Beispiel #8
0
    def test_send_mail(self):
        """
        Send mail to changes list.
        """
        log.debug('Sending mail to changes list')

        if not pylons.config.get('debexpo.changes_list', None):
            return

        if pylons.config['debexpo.changes_list'] == '':
            return

        email = Email('changes_list')
        to = pylons.config['debexpo.changes_list']
        email.send([to], changes=self.changes,
                changes_contents=self.changes_contents.decode('ascii', 'ignore'),
                dest=self.changes.get_pool_path())
Beispiel #9
0
    def test_send_mail(self):
        """
        Send mail to changes list.
        """
        log.debug('Sending mail to changes list')

        if not config.get('debexpo.changes_list', None):
            return

        if config['debexpo.changes_list'] == '':
            return

        email = Email('changes_list')
        to = config['debexpo.changes_list']
        email.send([to], changes=self.changes,
                changes_contents=self.changes_contents.decode('ascii', 'ignore'),
                dest=self.changes.get_pool_path())
Beispiel #10
0
    def comment(self, packagename):
        """
        Comment submission.

        ``packagename``
            Package name to look at.
        """
        package = self._get_package(packagename)
        if not isinstance(package, Package):
            return package

        status = constants.PACKAGE_COMMENT_STATUS_NOT_UPLOADED
        if "status" in request.POST and request.POST["status"]:
            status = constants.PACKAGE_COMMENT_STATUS_UPLOADED

        comment = PackageComment(
            user_id=session["user_id"],
            package_version_id=request.POST["package_version"],
            text=request.POST["text"],
            time=datetime.now(),
            outcome=request.POST["outcome"],
            status=status,
        )

        meta.session.save(comment)
        meta.session.commit()

        subscribers = (
            meta.session.query(PackageSubscription)
            .filter_by(package=packagename)
            .filter(PackageSubscription.level <= constants.SUBSCRIPTION_LEVEL_COMMENTS)
            .all()
        )

        if len(subscribers) > 0:
            user = meta.session.query(User).filter_by(id=session["user_id"]).one()

            email = Email("comment_posted")
            email.send(
                [s.user.email for s in subscribers], package=packagename, comment=request.POST["text"], user=user
            )

        return h.rails.redirect_to("package", packagename=packagename)
Beispiel #11
0
    def comment(self, packagename):
        """
        Comment submission.

        ``packagename``
            Package name to look at.
        """
        package = self._get_package(packagename)
        if not isinstance(package, Package):
            return package

        status = constants.PACKAGE_COMMENT_STATUS_NOT_UPLOADED
        if 'status' in request.POST and request.POST['status']:
            status = constants.PACKAGE_COMMENT_STATUS_UPLOADED

        comment = PackageComment(
            user_id=session['user_id'],
            package_version_id=request.POST['package_version'],
            text=request.POST['text'],
            time=datetime.now(),
            outcome=request.POST['outcome'],
            status=status)

        meta.session.save(comment)
        meta.session.commit()

        subscribers = meta.session.query(PackageSubscription).filter_by(package=packagename).filter(\
            PackageSubscription.level <= constants.SUBSCRIPTION_LEVEL_COMMENTS).all()

        if len(subscribers) > 0:
            user = meta.session.query(User).filter_by(
                id=session['user_id']).one()

            email = Email('comment_posted')
            email.send([s.user.email for s in subscribers],
                       package=packagename,
                       comment=request.POST['text'],
                       user=user)

        return h.rails.redirect_to('package', packagename=packagename)