summaryrefslogtreecommitdiffstats
path: root/askbot/views
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-01-25 20:21:21 -0500
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-01-25 20:21:21 -0500
commitfe5565bc98c7c14c9a544ab50f27dac9e32700c7 (patch)
tree6029af19f75e91bae82bd724ee0ca89841189894 /askbot/views
parenta759e17bc67a9923c0e84b84fec3684e978e6f62 (diff)
downloadaskbot-fe5565bc98c7c14c9a544ab50f27dac9e32700c7.tar.gz
askbot-fe5565bc98c7c14c9a544ab50f27dac9e32700c7.tar.bz2
askbot-fe5565bc98c7c14c9a544ab50f27dac9e32700c7.zip
finalized the SE import app and documented it, fixed some tests
Diffstat (limited to 'askbot/views')
-rw-r--r--askbot/views/writers.py24
1 files changed, 15 insertions, 9 deletions
diff --git a/askbot/views/writers.py b/askbot/views/writers.py
index 8b64eeac..a1c2b512 100644
--- a/askbot/views/writers.py
+++ b/askbot/views/writers.py
@@ -31,7 +31,7 @@ from askbot.skins.loaders import ENV
from askbot.utils.decorators import ajax_only
from askbot.utils.functions import diff_date
from askbot.templatetags import extra_filters_jinja as template_filters
-from askbot.importers.stackexchange.management import ImporterThread#todo: may change
+from askbot.importers.stackexchange import management as stackexchange#todo: may change
# used in index page
INDEX_PAGE_SIZE = 20
@@ -127,7 +127,7 @@ def __import_se_data(dump_file):
real_stdout = sys.stdout
sys.stdout = fake_stdout
- importer = ImporterThread(dump_file = dump_file.name)
+ importer = stackexchange.ImporterThread(dump_file = dump_file.name)
importer.start()
#run a loop where we'll be reading output of the
@@ -135,27 +135,30 @@ def __import_se_data(dump_file):
read_stdout = open(fake_stdout.name, 'r')
file_pos = 0
fd = read_stdout.fileno()
+ yield '<html><body><style>* {font-family: sans;} p {font-size: 12px; line-height: 16px; margin: 0; padding: 0;}</style><h1>Importing your data. This may take a few minutes...</h1>'
while importer.isAlive():
c_size = os.fstat(fd).st_size
if c_size > file_pos:
line = read_stdout.readline()
- yield line
+ yield '<p>' + line + '</p>'
file_pos = read_stdout.tell()
fake_stdout.close()
read_stdout.close()
dump_file.close()
sys.stdout = real_stdout
- yield 'done.'
+ yield '<p>Done. Please, <a href="%s">Visit Your Forum</a></p></body></html>' % reverse('index')
-@login_required
def import_data(request):
"""a view allowing the site administrator
upload stackexchange data
"""
- if not request.user.is_administrator():
- raise Http404
+ #allow to use this view to site admins
+ #or when the forum in completely empty
+ if request.user.is_anonymous() or (not request.user.is_administrator()):
+ if models.Question.objects.count() > 0:
+ raise Http404
if request.method == 'POST':
#if not request.is_ajax():
@@ -171,14 +174,17 @@ def import_data(request):
dump_storage.write(chunk)
dump_storage.flush()
- return HttpResponse(__import_se_data(dump_storage), mimetype = 'text/plain')
+ return HttpResponse(__import_se_data(dump_storage))
#yield HttpResponse(_('StackExchange import complete.'), mimetype='text/plain')
#dump_storage.close()
else:
form = forms.DumpUploadForm()
template = ENV.get_template('import_data.html')
- data = {'dump_upload_form': form}
+ data = {
+ 'dump_upload_form': form,
+ 'need_configuration': (not stackexchange.is_ready())
+ }
context = RequestContext(request, data)
return HttpResponse(template.render(context))