Show
Ignore:
Timestamp:
02/11/09 19:38:27 (3 years ago)
Author:
Frederic Lepied <frederic.lepied@…>
Children:
3d3414278502ad60842ab623bcae9692a7b9ec7b
Parents:
920e704d3e590918bbcc96affb46112454862f18
git-committer:
Frederic Lepied <frederic.lepied@…> (02/11/09 19:38:27)
Message:

- activated admin interface by default.
- put in place a mini web site to navigate through the tests reports.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • tester/views.py

    r7218e7c r5fc8fc0  
     1import re 
    12from django.http import HttpResponseRedirect, HttpResponse, Http404 
    23from django.shortcuts import render_to_response, get_object_or_404 
     4from django.core.servers.basehttp import FileWrapper 
    35from forms import UploadFileForm 
    46from pxe.common import * 
     
    2022            print 'valid', log.status 
    2123            handle_uploaded_file(request.FILES['file'], log.id) 
     24            process_file(log) 
    2225            return HttpResponse("uploaded", mimetype="text/plain") 
    2326        else: 
     
    2932    return render_to_response('upload.html', {'form': form}) 
    3033 
     34def get_filename(id): 
     35    return '%s/%d.log' % (settings.TEST_UPLOAD_DIR, id) 
     36 
    3137def handle_uploaded_file(f, id): 
    32     destination = open('%s/%d.log' % (settings.TEST_UPLOAD_DIR, id), 'wb+') 
     38    destination = open(get_filename(id), 'wb+') 
    3339    for chunk in f.chunks(): 
    3440        destination.write(chunk) 
    3541    destination.close() 
    3642 
     43info_regexp = re.compile('^([IEWSVT]): (.*)') 
     44 
     45def add_info_line(type, text, log): 
     46    i = InfoLine(type=type, text=text, log=log) 
     47    i.save() 
     48    return i 
     49 
     50def process_file(log): 
     51    info = 0 
     52    error = 0 
     53    warning = 0 
     54    for line in open(get_filename(log.id)).readlines(): 
     55        res = info_regexp.search(line) 
     56        if res: 
     57            if res.group(1) == 'I': 
     58                info = info + 1 
     59                add_info_line(res.group(1), res.group(2), log) 
     60            elif res.group(1) == 'E': 
     61                error = error + 1 
     62                add_info_line(res.group(1), res.group(2), log) 
     63            elif res.group(1) == 'W': 
     64                warning = warning + 1 
     65                add_info_line(res.group(1), res.group(2), log) 
     66            elif res.group(1) == 'V': 
     67                version = res.group(2) 
     68                try: 
     69                    v = SystemVersion.objects.get(name=version) 
     70                except SystemVersion.DoesNotExist: 
     71                    v = SystemVersion(name=version) 
     72                    v.save() 
     73                log.version = v 
     74    log.warnings = warning 
     75    log.infos = info 
     76    log.errors = error 
     77    log.save() 
     78     
    3779def next_test1(request): 
    3880    mac = get_mac(request) 
     
    4991        log.status = 'S' 
    5092        log.save() 
    51     return render_to_response(name + settings.TEST_SUFFIX, {'testname', name}) 
     93    print "%s (%s) -> %s" % (s.name, mac, name) 
     94    return render_to_response(name + settings.TEST_SUFFIX, {'testname': name, 'system': s.name}) 
     95 
     96def logs(request, verid): 
     97    version = get_object_or_404(SystemVersion, id=verid) 
     98    logs = TestLog.objects.filter(version=version).order_by('-date') 
     99    return render_to_response('logs.html', {'logs': logs, 'version': version})     
     100 
     101def log(request, logid): 
     102    log = get_object_or_404(TestLog, id=logid) 
     103    infos = InfoLine.objects.filter(log=log).order_by('id') 
     104    return render_to_response('log.html', {'log': log, 'infos': infos})     
     105 
     106def content(request, logid): 
     107    log = get_object_or_404(TestLog, id=logid) 
     108    filename = get_filename(log.id) 
     109    wrapper = FileWrapper(file(filename)) 
     110    response = HttpResponse(wrapper, content_type='text/plain') 
     111    response['Content-Length'] = os.path.getsize(filename) 
     112    return response 
     113 
     114def index(request): 
     115    versions = SystemVersion.objects.all().order_by('-id') 
     116    return render_to_response('index.html', {'versions': versions})     
    52117     
    53118# views.py ends here