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)
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))
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)