Fix infinite redirection in first boot

This commit is contained in:
Sunil Mohan Adapa 2014-08-17 19:20:44 +05:30
parent f0739a18e6
commit dda4b930e0

View File

@ -1,19 +1,49 @@
import logging
#
# This file is part of Plinth.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""
Django middleware to redirect to firstboot wizard if it has not be run
yet.
"""
from django.core.urlresolvers import reverse
from django.http.response import HttpResponseRedirect
import logging
from withsqlite.withsqlite import sqlite_db
import cfg
from withsqlite.withsqlite import sqlite_db
LOGGER = logging.getLogger(__name__)
class FirstBootMiddleware:
""" Forward to firstboot page if firstboot isn't finished yet """
def process_request(self, request):
class FirstBootMiddleware(object):
"""Forward to firstboot page if firstboot isn't finished yet."""
@staticmethod
def process_request(request):
"""Handle a request as Django middleware request handler."""
# Prevent redirecting to first boot wizard in a loop by
# checking if we are already in first boot wizard.
if request.path.startswith(reverse('first_boot:index')):
return
with sqlite_db(cfg.store_file, table='firstboot') as database:
if not 'state' in database:
if 'state' not in database:
# Permanent redirect causes the browser to cache the redirect,
# preventing the user from navigating to /plinth until the
# browser is restarted.