Beispiel #1
0
 def colData_run(self, ds):
     if ds.runResult == runexamples.models.Example.RunResult.PASSED:
         icon = '<span class="text-success">' + octicon("check") + '</span>'
         text = "passed"
     elif ds.runResult == runexamples.models.Example.RunResult.TIMEDOUT:
         icon = '<span class="text-danger">' + octicon("stop") + '</span>'
         text = "timed out"
     elif ds.runResult == runexamples.models.Example.RunResult.FAILED:
         icon = '<span class="text-danger">' + octicon("stop") + '</span>'
         text = "failed"
     else:
         icon = ""
         text = ""
     url = django.urls.reverse(
         'base:textFieldFromDB',
         args=["runexamples", "Example", ds.id, "runOutput"])
     ret = '%s&nbsp;<a href="%s">%s</a>' % (icon, url, text)
     # valgrind
     if ds.valgrinds.filter(programType__startswith="example_").count() > 0:
         ret += '''<div class="dropdown">
             <button class="btn btn-secondary btn-xs" type="button" data-toggle="dropdown">valgrind {}</button>
             <div class="dropdown-menu">'''.format(octicon("triangle-down"))
         for vg in ds.valgrinds.filter(programType__startswith="example_"):
             valgrindNrErrors = runexamples.models.Valgrind.objects.get(
                 id=vg.id).errors.all().count()
             ret+='<a class="dropdown-item text-{}" href="{}">{}{}</a>'.\
               format("success" if valgrindNrErrors==0 else "danger",
                      django.urls.reverse('runexamples:valgrind', args=[vg.id]),
                      vg.programType[len("example_"):],
                      '&nbsp;<span class="badge badge-danger">%d</span>&nbsp;errors'%(valgrindNrErrors) if valgrindNrErrors>0 else "")
         ret += '</div></div>'
     return ret
Beispiel #2
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context["navbar"] = {
         "home": False,
         "download": False,
         "videos": False,
         "sourcecode": False,
         "buildsystem": False,
     }
     if not self.request.user.is_authenticated:
         # nobody is logged in -> use dummy avatar
         userAvatarEle = octicon("person", height="21")
     else:
         import allauth
         # someone is logged in
         try:
             # get avatar from social account (github)
             avatarUrl = allauth.socialaccount.models.SocialAccount.objects.get(
                 user=self.request.user).get_avatar_url()
             userAvatarEle = '<img height="21em" src="' + avatarUrl + '"/>'
         except allauth.socialaccount.models.SocialAccount.DoesNotExist:
             # its not a social account (github) -> use dummy avatar
             userAvatarEle = octicon("person", height="21")
     context['userAvatarEle'] = userAvatarEle
     return context
Beispiel #3
0
 def colData_dataset(self, ds):
     if ds.result == runexamples.models.CompareResult.Result.FILENOTINCUR:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;[file not in cur]'
     if ds.result == runexamples.models.CompareResult.Result.FILENOTINREF:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;[file not in ref]'
     return ds.dataset
Beispiel #4
0
 def colData_result(self, ds):
     url = django.urls.reverse(
         'base:textFieldFromDB',
         args=["runexamples", "XMLOutput", ds.id, "resultOutput"])
     if ds.resultOK:
         return '<span class="text-success">' + octicon(
             "check") + '</span>&nbsp;<a href="%s">passed</a>' % (url)
     else:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;<a href="%s">failed</a>' % (url)
Beispiel #5
0
 def colData_dep(self, ds):
     if ds.deprecatedNr is not None and ds.deprecatedNr > 0:
         url = django.urls.reverse(
             'base:textFieldFromDB',
             args=["runexamples", "Example", ds.id, "runOutput"])
         return octicon("alert")+'&nbsp;<a href="%s"><span class="badge badge-secondary">%d</span> found</a></td>'%\
           (url, ds.deprecatedNr)
     else:
         return '<span class="text-success">' + octicon(
             "check") + '</span>&nbsp;none'
Beispiel #6
0
 def colData_doc(self, ds):
     if ds.docOK is None:
         return ""
     url = django.urls.reverse('base:textFieldFromDB',
                               args=["builds", "Tool", ds.id, "docOutput"])
     if ds.docOK:
         return '<span class="text-success">' + octicon(
             "check") + '</span>&nbsp;<a href="%s">passed</a>' % (url)
     else:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;<a href="%s">failed</a>' % (url)
Beispiel #7
0
 def colData_xmlOut(self, ds):
     nrAll = ds.xmlOutputs.count()
     if nrAll == 0:
         return ""
     nrFailed = ds.xmlOutputs.filterFailed().count()
     if nrFailed == 0:
         icon = '<span class="text-success">' + octicon("check") + '</span>'
         text = "valid"
         nr = nrAll
     else:
         icon = '<span class="text-danger">' + octicon("stop") + '</span>'
         text = "failed"
         nr = nrFailed
     url = django.urls.reverse('runexamples:xmloutput', args=[ds.id])
     return '%s&nbsp;<a href="%s">%s<span class="badge badge-secondary">%d</span></a>' % (
         icon, url, text, nr)
Beispiel #8
0
 def colData_kind(self, ds):
     return base.helper.tooltip(
     '''<span class="dropdown">
     <button class="btn btn-secondary btn-xs" type="button" data-toggle="dropdown">
       supp&nbsp;{}
     </button>
     <pre class="dropdown-menu" style="padding-left: 0.5em; padding-right: 0.5em;">{}</pre>
   </span><br/>'''.format(octicon("triangle-down"), ds.suppressionRawText)+\
       self.vertText(ds.kind, True, 24), "runexamples/ValgrindError: id=%s"%(ds.id))
Beispiel #9
0
 def colData_ref(self, ds):
     refUrl = django.urls.reverse('runexamples:compareresult', args=[ds.id])
     updateUrl = django.urls.reverse(
         'runexamples:ref_update',
         args=[urllib.parse.quote(ds.exampleName, safe="")])
     dsStatic = self.getStaticDS(ds)
     checked = 'checked="checked"' if dsStatic is not None and dsStatic.update else ""
     refCheckbox='<span class="float-right">[<input type="checkbox" onClick="changeRefUpdate($(this), \'%s\', \'%s\');" %s/>]</span>'%\
                 (updateUrl, ds.exampleName, checked) \
                 if self.isCurrent and self.allowedUser and self.run.buildType=="linux64-dailydebug" else ""
     if ds.resultFiles.count() == 0:
         ret='<span class="float-left"><span class="text-warning">%s</span>&nbsp;no reference</span>%s'%\
             (octicon("alert"), refCheckbox)
     elif ds.resultsFailed == 0:
         ret='<span class="float-left"><span class="text-success">%s</span>&nbsp;<a href="%s">passed '\
             '</a></span>'%(octicon("check"), refUrl)
     else:
         ret='<span class="float-left"><span class="text-danger">%s</span>&nbsp;<a href="%s">failed '\
             '<span class="badge badge-secondary">%d</span></a></span>%s'%\
             (octicon("stop"), refUrl, ds.resultsFailed, refCheckbox)
     return ret
Beispiel #10
0
 def get_context_data(self, **kwargs):
     import allauth
     context = super().get_context_data(**kwargs)
     context["navbar"]["buildsystem"] = True
     if not self.request.user.is_authenticated:
         # nobody is logged in -> use large dummy avatar; no social user available
         userLargeAvatarEle = octicon("person", height="125")
         socialUser = None
     else:
         try:
             # get large avatar from social account (github); set social user varible
             socialUser = allauth.socialaccount.models.SocialAccount.objects.get(
                 user=self.request.user)
             avatarUrl = socialUser.get_avatar_url()
             userLargeAvatarEle = '<img height="125em" src="' + avatarUrl + '"/>'
         except allauth.socialaccount.models.SocialAccount.DoesNotExist:
             # its not a social account (github) -> use large dummy avatar; no social user available
             socialUser = None
             userLargeAvatarEle = octicon("person", height="125")
     context[
         "clientID"] = allauth.socialaccount.models.SocialApp.objects.get(
             provider="github").client_id
     context["userLargeAvatarEle"] = userLargeAvatarEle
     context["socialUser"] = socialUser
     context[
         "githubAccessTokenDummy"] = "<not shown for security reasons>" if self.gh.getAccessToken(
         ) else None
     context["githubUserInMbsimenv"] = self.gh.getUserInMbsimenvOrg(
         base.helper.GithubCache.viewTimeout)
     sessionDBObj = list(
         django.contrib.sessions.models.Session.objects.filter(
             session_key=self.request.session.session_key))
     if len(sessionDBObj) > 0:
         context["session"] = {}
         context["session"]["id"] = sessionDBObj[0].session_key
         context["session"]["data"] = sessionDBObj[0].get_decoded()
         context["session"]["expire"] = sessionDBObj[0].expire_date
     return context
Beispiel #11
0
 def colData_guiTest(self, ds):
     ret = ""
     url = django.urls.reverse(
         'base:textFieldFromDB',
         args=["runexamples", "Example", ds.id, "guiTestOpenmbvOutput"])
     vis = "visible" if ds.guiTestOpenmbvOK is not None else "hidden"
     ok = "success" if ds.guiTestOpenmbvOK == runexamples.models.Example.GUITestResult.PASSED else (
         "warning" if ds.guiTestOpenmbvOK == runexamples.models.Example.
         GUITestResult.TIMEDOUT or ds.willFail else "danger")
     img = django.templatetags.static.static("base/openmbv.svg")
     ret+='<a href="%s"><button type="button" style="visibility:%s;" class="btn btn-%s btn-xs">'%(url, vis, ok)+\
            '<img src="%s" alt="ombv"/></button></a>&nbsp;'%(img)
     url = django.urls.reverse(
         'base:textFieldFromDB',
         args=["runexamples", "Example", ds.id, "guiTestHdf5serieOutput"])
     vis = "visible" if ds.guiTestHdf5serieOK is not None else "hidden"
     ok = "success" if ds.guiTestHdf5serieOK == runexamples.models.Example.GUITestResult.PASSED else (
         "warning" if ds.guiTestHdf5serieOK == runexamples.models.Example.
         GUITestResult.TIMEDOUT or ds.willFail else "danger")
     img = django.templatetags.static.static("base/h5plotserie.svg")
     ret+='<a href="%s"><button type="button" style="visibility:%s;" class="btn btn-%s btn-xs">'%(url, vis, ok)+\
            '<img src="%s" alt="h5p"/></button></a>&nbsp;'%(img)
     url = django.urls.reverse(
         'base:textFieldFromDB',
         args=["runexamples", "Example", ds.id, "guiTestMbsimguiOutput"])
     vis = "visible" if ds.guiTestMbsimguiOK is not None else "hidden"
     ok = "success" if ds.guiTestMbsimguiOK == runexamples.models.Example.GUITestResult.PASSED else (
         "warning" if ds.guiTestMbsimguiOK == runexamples.models.Example.
         GUITestResult.TIMEDOUT or ds.willFail else "danger")
     img = django.templatetags.static.static("base/mbsimgui.svg")
     ret+='<a href="%s"><button type="button" style="visibility:%s;" class="btn btn-%s btn-xs">'%(url, vis, ok)+\
            '<img src="%s" alt="gui"/></button></a>'%(img)
     # valgrind
     if ds.valgrinds.filter(programType__startswith="guitest_").count() > 0:
         ret += '''<div class="dropdown">
             <button class="btn btn-secondary btn-xs" type="button" data-toggle="dropdown">valgrind {}</button>
             <div class="dropdown-menu">'''.format(octicon("triangle-down"))
         for vg in ds.valgrinds.filter(programType__startswith="guitest_"):
             valgrindNrErrors = runexamples.models.Valgrind.objects.get(
                 id=vg.id).errors.all().count()
             ret+='<a class="dropdown-item text-{}" href="{}">{}{}</a>'.\
               format("success" if valgrindNrErrors==0 else "danger",
                      django.urls.reverse('runexamples:valgrind', args=[vg.id]),
                      vg.programType[len("guitest_"):],
                      '&nbsp;<span class="badge badge-danger">%d</span>&nbsp;errors'%(valgrindNrErrors) if valgrindNrErrors>0 else "")
         ret += '</div></div>'
     return ret
Beispiel #12
0
 def colData_result(self, ds):
     if ds.result==runexamples.models.CompareResult.Result.FILENOTINCUR or ds.result==runexamples.models.CompareResult.Result.FILENOTINREF or \
        ds.result==runexamples.models.CompareResult.Result.DATASETNOTINCUR or ds.result==runexamples.models.CompareResult.Result.DATASETNOTINREF:
         return ''
     if ds.result == runexamples.models.CompareResult.Result.LABELNOTINCUR:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;[label not in cur]'
     if ds.result == runexamples.models.CompareResult.Result.LABELNOTINREF:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;[label not in ref]'
     if ds.result == runexamples.models.CompareResult.Result.LABELDIFFER:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;[label differ]'
     if ds.result == runexamples.models.CompareResult.Result.LABELMISSING:
         return '<span class="text-danger">' + octicon(
             "stop") + '</span>&nbsp;[label missing]'
     if ds.result == runexamples.models.CompareResult.Result.PASSED:
         return '<span class="text-success">' + octicon(
             "check") + '</span>&nbsp;passed'
     url = django.urls.reverse('runexamples:differenceplot', args=[ds.id])
     return '<span class="text-danger">' + octicon(
         "stop") + '</span>&nbsp;<a href="%s">failed</a>' % (url)
Beispiel #13
0
 def colData_mbsimBranch(self, ds):
     return '<a href="https://github.com/mbsim-env/mbsim/tree/'+ds.mbsimBranch+'">'\
            '<span class="badge badge-primary">'+octicon("git-branch")+'&nbsp;'+ds.mbsimBranch+'</span></a>'
Beispiel #14
0
 def colData_remove(self, ds):
     tooltip = "service/%s: id=%d" % (self.model, ds.id)
     return base.helper.tooltip(\
       '<button class="btn btn-secondary btn-xs" onclick="deleteBranchCombination($(this), \'{}\');" type="button">{}</button>'.\
       format(django.urls.reverse('service:db_deletebranchcombi', args=[self.model, ds.id]), octicon("diff-removed")), tooltip)