Example #1
0
    def dispatch(self, request):
        if request.path not in ('/', self.login_url):
            return redirect('')

        if request.path == self.login_url:
            if request.is_somebody:
                return redirect('')
            elif request.authorization:
                if 'username' in request.authorization:
                    username = request.authorization.get('username')
                    password = request.authorization.get('password')
                    user = self.app.database_engine.execute(
                        users.select(users.c.username == username)).fetchone()
                    if user and check_pwhash(user.pw_hash, password):
                        request.session['uid'] = user.user_id
                        request.session['lt'] = time()
                        request.is_somebody = True
                        return redirect('')

            response = Response()
            response.www_authenticate.set_basic()
            response.status_code = 401
            return response

        if not request.is_admin:
            response = render_response(request,
                                       'upgrade_maintenance.html',
                                       login_url=self.login_url)
            response.status_code = 503
            return response

        if request.method == 'POST':
            open(self.lockfile, 'w').write('locked on database upgrade\n')
            mdb = ManageDatabase(request.app)
            db.session.close()  # close open sessions

            def finish():
                # this is run from the template after the upgrade finishes
                remove(self.lockfile)
                db.session.close()  # close open sessions
                self.wants_reload = True  # force application reload
                return ''  # just because I need to return something to jinja

            return render_response(request,
                                   'admin/perform_upgrade.html',
                                   live_log=mdb.cmd_upgrade(),
                                   _stream=True,
                                   finish=finish,
                                   blog_url=self.blog_url,
                                   maintenance_url=self.maintenance_url,
                                   in_progress=False)

        return render_response(request,
                               'admin/perform_upgrade.html',
                               in_progress=isfile(self.lockfile),
                               repo_ids=self.repo_ids)
Example #2
0
    def dispatch(self, request):
        if request.path not in ('/', self.login_url):
            return redirect('')

        if request.path == self.login_url:
            if request.is_somebody:
                return redirect('')
            elif request.authorization:
                if 'username' in request.authorization:
                    username = request.authorization.get('username')
                    password = request.authorization.get('password')
                    user = self.app.database_engine.execute(
                        users.select(users.c.username==username)
                    ).fetchone()
                    if user and check_pwhash(user.pw_hash, password):
                        request.session['uid'] = user.user_id
                        request.session['lt'] = time()
                        request.is_somebody = True
                        return redirect('')

            response = Response()
            response.www_authenticate.set_basic()
            response.status_code = 401
            return response

        if not request.is_admin:
            response = render_response(request, 'upgrade_maintenance.html',
                                       login_url=self.login_url)
            response.status_code = 503
            return response

        if request.method == 'POST':
            open(self.lockfile, 'w').write('locked on database upgrade\n')
            mdb = ManageDatabase(request.app)
            db.session.close()  # close open sessions
            def finish():
                # this is run from the template after the upgrade finishes
                remove(self.lockfile)
                db.session.close()  # close open sessions
                self.wants_reload = True    # force application reload
                return ''   # just because I need to return something to jinja

            return render_response(request, 'admin/perform_upgrade.html',
                                   live_log=mdb.cmd_upgrade(), _stream=True,
                                   finish=finish, blog_url=self.blog_url,
                                   maintenance_url=self.maintenance_url,
                                   in_progress=False)

        return render_response(request, 'admin/perform_upgrade.html',
                               in_progress=isfile(self.lockfile),
                               repo_ids=self.repo_ids)
Example #3
0
 def check_password(self, password):
     if self.pw_hash == '!':
         return False
     return check_pwhash(self.pw_hash, password)
Example #4
0
 def check_password(self, password):
     if self.pw_hash == '!':
         return False
     return check_pwhash(self.pw_hash, password)