示例#1
0
def search(request):
    repos = Repo.objects.all()
    searchtext = ""
    selectedrepo = ""
    selectedbranch = ""
    if request.GET.__contains__("searchText"):
        searchtext = request.GET["searchText"]
    if request.GET.__contains__("selectedRepo"):
        selectedrepo = request.GET["selectedRepo"]
    if request.GET.__contains__("selectedBranch"):
        selectedbranch = request.GET["selectedBranch"]

    if request.GET.__contains__("selectedRepo"):
        repo = Repo.objects.get(name__exact=selectedrepo)
        branches = Branch.objects.filter(repo=repo, enabled__exact=True).order_by("order")
    else:
        branches = []
    results = []
    if request.GET.__contains__("go"):
        repo = Repo.objects.get(name__exact=selectedrepo)
        # branch = Branch.objects.get(repo=repo, name__exact=selectedBranch)
        results = {}
        results["classes"] = doGrep(repo.location + "/unpackaged/classes", "cls", searchtext)
        results["triggers"] = doGrep(repo.location + "/unpackaged/triggers", "trigger", searchtext)
        results["pages"] = doGrep(repo.location + "/unpackaged/pages", "page", searchtext)

    data = {
        "results": results,
        "repos": repos,
        "branches": branches,
        "searchText": searchtext,
        "selectedRepo": selectedrepo,
        "selectedBranch": selectedbranch,
    }
    return render(request, "search.html", data)
示例#2
0
    def handle(self, *args, **options):

        branches = Branch.objects.filter(enabled__exact=True)
        stamp = str(int(time.time()))
        for branch in branches:
            try:
                os.chdir(branch.repo.location)
            except Exception:
                continue
            subprocess.check_call(["git", "checkout", branch.name])
            stats = {}
            stats['cls_files'], stats['cls_lines'], stats['cls_bytes'] =  code_stats(os.path.join(branch.repo.location, 'unpackaged/classes'), '.cls')
            stats['page_files'], stats['page_lines'], stats['page_bytes'] = code_stats(os.path.join(branch.repo.location, 'unpackaged/pages'), '.page')
            stats['trigger_files'], stats['trigger_lines'], stats['trigger_bytes'] = code_stats(os.path.join(branch.repo.location, 'unpackaged/triggers'), '.trigger')

            try:
                bs = BranchStats.objects.get(branch=branch)
            except Exception:
                bs = BranchStats()
            bs.branch = branch
            bs.cls_files = stats['cls_files']
            bs.cls_lines = stats['cls_lines']
            bs.cls_bytes = stats['cls_bytes']
            bs.page_files = stats['page_files']
            bs.page_lines = stats['page_lines']
            bs.page_bytes = stats['page_bytes']
            bs.trigger_files = stats['trigger_files']
            bs.trigger_lines = stats['trigger_lines']
            bs.trigger_bytes = stats['trigger_bytes']
            bs.files = bs.cls_files + bs.page_files + bs.trigger_files
            bs.lines = bs.cls_lines + bs.page_lines + bs.trigger_lines
            bs.bytes = bs.cls_bytes + bs.page_bytes + bs.trigger_bytes
            bs.save()

            #
            # process anotations
            #
            root = os.path.join(branch.repo.location, 'unpackaged')
            output = []
            outer = { 'annotations': output}
            output.extend(doGrep(os.path.join(root, 'classes'), 'cls', '@todo\|todo[: ]'))
            output.extend(doGrep(os.path.join(root, 'triggers'), 'trigger', '@todo\|todo[: ]'))
            output.extend(doGrep(os.path.join(root, 'pages'), 'page', '@todo\|todo[: ]'))
            for item in output:
                match = item['match']
                item['match'] =  match[lower(match).find('todo'):].strip()
            with open(os.path.join(branch.repo.location, '..', 'annotations_' + branch.name + '.txt'), 'w+') as f:
                f.write(json.dumps(outer, indent=4))
示例#3
0
def search(request):
    repos = Repo.objects.all()
    searchtext = ''
    selectedrepo = ''
    selectedbranch = ''
    if request.GET.__contains__('searchText'):
        searchtext = request.GET['searchText']
    if request.GET.__contains__('selectedRepo'):
        selectedrepo = request.GET['selectedRepo']
    if request.GET.__contains__('selectedBranch'):
        selectedbranch = request.GET['selectedBranch']

    if request.GET.__contains__('selectedRepo'):
        repo = Repo.objects.get(name__exact=selectedrepo)
        branches = Branch.objects.filter(repo=repo,
                                         enabled__exact=True).order_by('order')
    else:
        branches = []
    results = []
    if request.GET.__contains__('go'):
        repo = Repo.objects.get(name__exact=selectedrepo)
        # branch = Branch.objects.get(repo=repo, name__exact=selectedBranch)
        results = {}
        results['classes'] = doGrep(repo.location + '/unpackaged/classes',
                                    'cls', searchtext)
        results['triggers'] = doGrep(repo.location + '/unpackaged/triggers',
                                     'trigger', searchtext)
        results['pages'] = doGrep(repo.location + '/unpackaged/pages', 'page',
                                  searchtext)

    data = {
        'results': results,
        'repos': repos,
        'branches': branches,
        'searchText': searchtext,
        'selectedRepo': selectedrepo,
        'selectedBranch': selectedbranch
    }
    return render(request, 'search.html', data)