コード例 #1
0
    def all(self):
        #import pdb; pdb.set_trace();
        viewer = JeevesLib.get_viewer()
        if isinstance(viewer, FNull):
            # If we don't know who the viewer is, create facets.
            elements = JeevesLib.JList2([])
            env = JeevesLib.jeevesState.pathenv.getEnv()
            for val, cond in self.get_jiter():
                popcount = 0
                for vname, (vlabel, vval) in cond.iteritems():
                    if vname not in env:
                        # vlabel = acquire_label_by_name(
                        #   self.model._meta.app_label, vname, obj=val)
                        JeevesLib.jeevesState.pathenv.push(vlabel, vval)
                        popcount += 1
                    elif env[vname] != vval:
                      break
                else:
                    elements.append(val)
                for _ in xrange(popcount):
                    JeevesLib.jeevesState.pathenv.pop()
            
        else:
            # Otherwise concretize early.
            elements = []
            env = JeevesLib.jeevesState.pathenv.getEnv()
            solverstate = JeevesLib.get_solverstate()

            for val, cond in self.get_jiter():
                # Get a list of (object, condition list).
                for vname, (vlabel, vval) in cond.iteritems():
                    # Loop through the list of conditions to see what they
                    # should actually be assigned to.
                    if vname in env:
                        # If we have already assumed the current variable,
                        # then add the element if the assumption matches
                        # the condition.
                        if env[vname] == vval:
                            elements.append(val)
                    else:
                        # If the current label matches with our policy
                        # assumptions, then we add it to the list of results.
                        label = solverstate.assignLabel(vlabel, env)
                        env[vlabel] = label
                        if label == vval:
                            elements.append(val)

        return elements
コード例 #2
0
 def all(self):
     t = JeevesLib.JList2([])
     env = JeevesLib.jeevesState.pathenv.getEnv()
     for val, cond in self.get_jiter():
         popcount = 0
         for vname, vval in cond.iteritems():
             if vname not in env:
                 v = acquire_label_by_name(self.model._meta.app_label,
                                           vname)
                 JeevesLib.jeevesState.pathenv.push(v, vval)
                 popcount += 1
             elif env[vname] != vval:
                 break
         else:
             t.append(val)
         for _ in xrange(popcount):
             JeevesLib.jeevesState.pathenv.pop()
     return t
コード例 #3
0
def papers_view(request):
    user = UserProfile.objects.get(username=request.user.username)

    papers = Paper.objects.all()
    paper_data = JeevesLib.JList2()
    for paper in papers:
        paper_versions = PaperVersion.objects.filter(
            paper=paper).order_by('-time').all()
        latest_version_title = paper_versions[
            0].title if paper_versions.__len__() > 0 else None

        paper_data.append({'paper': paper, 'latest': latest_version_title})

    return ("papers.html", {
        'papers': papers,
        'which_page': "home",
        'paper_data': paper_data,
        'name': user.name
    })
コード例 #4
0
    def all(self):
        viewer = JeevesLib.get_viewer()
        if isinstance(viewer, FNull):
            # If we don't know who the viewer is, create facets.
            elements = JeevesLib.JList2([])
            env = JeevesLib.jeevesState.pathenv.getEnv()
            for val, cond in self.get_jiter():
                popcount = 0
                for vname, vval in cond.iteritems():
                    if vname not in env:
                        vlabel = acquire_label_by_name(
                            self.model._meta.app_label, vname, obj=val)
                        JeevesLib.jeevesState.pathenv.push(vlabel, vval)
                        popcount += 1
                    elif env[vname] != vval:
                        break
                else:
                    elements.append(val)
                for _ in xrange(popcount):
                    JeevesLib.jeevesState.pathenv.pop()
            return elements
        else:
            # Otherwise concretize early.
            elements = []
            env = JeevesLib.jeevesState.pathenv.getEnv()
            solverstate = JeevesLib.get_solverstate()

            for val, cond in self.get_jiter():
                for vname, vval in cond.iteritems():
                    if vname in env:
                        # If we have already assumed the current variable,
                        # then add the element if the assumption matches
                        # the condition.
                        if env[vname] == vval:
                            elements.append(val)
                    else:
                        vlabel = acquire_label_by_name(
                            self.model._meta.app_label, vname, obj=val)
                        label = solverstate.assignLabel(vlabel, env)
                        if label == vval:
                            elements.append(val)
            return elements
コード例 #5
0
ファイル: views.py プロジェクト: wjzhwht/jeeves
def papers_view(request):
    user = UserProfile.objects.get(username=request.user.username)
    JeevesLib.set_viewer(user)

    # TODO: Figure out why we can't loop over this if we don't concretize it...
    papers = Paper.objects.all()
    paper_data = JeevesLib.JList2()
    name = user.name

    for paper in papers:
        paper_versions = PaperVersion.objects.filter(
            paper=paper).order_by('-time').all()
        latest_version_title = paper_versions[
            0].title if paper_versions.__len__() > 0 else None

        paper_data.append({'paper': paper, 'latest': latest_version_title})
    return ("papers.html", {
        'papers': papers,
        'which_page': "home",
        'paper_data': paper_data,
        'name': name
    })