Changeset 5fc8fc0082bfa6f10d4a3a4edc64612ee737aab6
- Timestamp:
- 02/11/09 19:38:27 (3 years ago)
- Children:
- 3d3414278502ad60842ab623bcae9692a7b9ec7b
- Parents:
- 920e704d3e590918bbcc96affb46112454862f18
- git-committer:
- Frederic Lepied <frederic.lepied@…> (02/11/09 19:38:27)
- Files:
-
- 5 added
- 6 modified
-
pxe/models.py (modified) (1 diff)
-
pxe/views.py (modified) (1 diff)
-
settings.py (modified) (2 diffs)
-
tester/models.py (modified) (2 diffs)
-
tester/templates/base.html (added)
-
tester/templates/index.html (added)
-
tester/templates/log.html (added)
-
tester/templates/logs.html (added)
-
tester/templates/versions.html (added)
-
tester/views.py (modified) (4 diffs)
-
urls.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
pxe/models.py
r1f8d77d r5fc8fc0 25 25 system = models.ForeignKey(System) 26 26 boot_name = models.ForeignKey(BootName) 27 27 28 from django.contrib import admin 29 admin.site.register(System) 30 admin.site.register(MacAddress) 31 admin.site.register(BootName) 32 admin.site.register(Log) 33 28 34 # models.py ends here -
pxe/views.py
r8784ede r5fc8fc0 10 10 from django.http import HttpResponse, Http404 11 11 from django.shortcuts import get_object_or_404 12 from common import *13 from models import *12 from pxe.common import * 13 from pxe.models import * 14 14 15 15 def localboot1(request): -
settings.py
r7218e7c r5fc8fc0 28 28 TESTS_DIR = '/home/flepied/work/tests/' 29 29 TEST_SUFFIX = '.test' 30 TEST_UPLOAD_DIR = '/home/flepied/work/test s/results/'30 TEST_UPLOAD_DIR = '/home/flepied/work/test-results/' 31 31 32 32 # Local time zone for this installation. Choices can be found here: … … 95 95 'pxe', 96 96 'tester', 97 #'django.contrib.admin',97 'django.contrib.admin', 98 98 ) -
tester/models.py
r7218e7c r5fc8fc0 5 5 name = models.CharField(max_length=100) 6 6 available = models.BooleanField() 7 8 class SystemVersion(models.Model): 9 name = models.CharField(max_length=100) 7 10 8 11 class TestLog(models.Model): … … 18 21 system = models.ForeignKey(System) 19 22 test_name = models.ForeignKey(TestName) 23 warnings = models.IntegerField(default=0) 24 infos = models.IntegerField(default=0) 25 errors = models.IntegerField(default=0) 26 version = models.ForeignKey(SystemVersion, null=True) 27 28 class InfoLine(models.Model): 29 type = models.CharField(max_length=1) 30 log = models.ForeignKey(TestLog) 31 text = models.CharField(max_length=100) 32 33 from django.contrib import admin 34 admin.site.register(SystemVersion) 35 admin.site.register(TestName) 36 admin.site.register(TestLog) 37 admin.site.register(InfoLine) -
tester/views.py
r7218e7c r5fc8fc0 1 import re 1 2 from django.http import HttpResponseRedirect, HttpResponse, Http404 2 3 from django.shortcuts import render_to_response, get_object_or_404 4 from django.core.servers.basehttp import FileWrapper 3 5 from forms import UploadFileForm 4 6 from pxe.common import * … … 20 22 print 'valid', log.status 21 23 handle_uploaded_file(request.FILES['file'], log.id) 24 process_file(log) 22 25 return HttpResponse("uploaded", mimetype="text/plain") 23 26 else: … … 29 32 return render_to_response('upload.html', {'form': form}) 30 33 34 def get_filename(id): 35 return '%s/%d.log' % (settings.TEST_UPLOAD_DIR, id) 36 31 37 def handle_uploaded_file(f, id): 32 destination = open( '%s/%d.log' % (settings.TEST_UPLOAD_DIR,id), 'wb+')38 destination = open(get_filename(id), 'wb+') 33 39 for chunk in f.chunks(): 34 40 destination.write(chunk) 35 41 destination.close() 36 42 43 info_regexp = re.compile('^([IEWSVT]): (.*)') 44 45 def add_info_line(type, text, log): 46 i = InfoLine(type=type, text=text, log=log) 47 i.save() 48 return i 49 50 def 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 37 79 def next_test1(request): 38 80 mac = get_mac(request) … … 49 91 log.status = 'S' 50 92 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 96 def 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 101 def 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 106 def 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 114 def index(request): 115 versions = SystemVersion.objects.all().order_by('-id') 116 return render_to_response('index.html', {'versions': versions}) 52 117 53 118 # views.py ends here -
urls.py
r7218e7c r5fc8fc0 2 2 3 3 # Uncomment the next two lines to enable the admin: 4 #from django.contrib import admin5 #admin.autodiscover()4 from django.contrib import admin 5 admin.autodiscover() 6 6 7 7 urlpatterns = patterns('', … … 22 22 (r'^nexttest/(?P<mac>[a-fA-F0-9:-]+)/$', 'tester.views.next_test'), 23 23 24 (r'^$', 'tester.views.index'), 25 (r'^tests/(?P<verid>[0-9]+)/$', 'tester.views.logs'), 26 (r'^test/(?P<logid>[0-9]+)/$', 'tester.views.log'), 27 (r'^testcontent/(?P<logid>[0-9]+)/$', 'tester.views.content'), 28 24 29 # Uncomment the next line to enable the admin: 25 #(r'^admin/(.*)', admin.site.root),30 (r'^admin/(.*)', admin.site.root), 26 31 )
