(r'^job/$', 'ais.djais.views.jobs_index'),
(r'^job/(?P<jobid>[A-Z0-9]+)/$', 'ais.djais.views.job_detail'),
(r'^job/(?P<jobid>[A-Z0-9]+)/download$', 'ais.djais.views.job_get'),
+ (r'^job/(?P<jobid>[A-Z0-9]+)/log$', 'ais.djais.views.job_log'),
(r'^source/$', 'ais.djais.views.sources_index'),
(r'^source/stats$', 'ais.djais.views.sources_stats'),
(r'^news/(?P<page>\d*)$', 'ais.djais.views.news'),
extension = os.path.splitext(job.friendly_filename)[-1]
return HttpResponseRedirect('/job_result/%s%s/%s' % (job.id, extension, job.friendly_filename))
+
+@http_authenticate(auth, 'ais')
+def job_log(request, jobid):
+ job = get_object_or_404(Job, id=jobid)
+ if job.user != request.user:
+ return HttpResponseForbidden('403 Forbidden')
+ log = u''
+ try:
+ log = file(RESULT_DIR+unicode(jobid)+'.log').read()
+ except IOError, err:
+ if err.errno != 2: # No such file
+ raise
+ return render_to_response('job.html', {'job': job, 'log': log}, RequestContext(request))
+
+
@http_authenticate(auth, 'ais')
def users(request):
users = User.objects.order_by('name')