Procházet zdrojové kódy

[IMP] git repos analisys

Gogs před 7 roky
rodič
revize
7e336588b8
2 změnil soubory, kde provedl 72 přidání a 12 odebrání
  1. 3 12
      api/resources/git_resource.py
  2. 69 0
      api/utils/git_api.py

+ 3 - 12
api/resources/git_resource.py

@@ -4,8 +4,7 @@ from django.conf.urls import url
 from django.conf import settings
 from django.conf import settings
 from tastypie.resources import Resource
 from tastypie.resources import Resource
 from tastypie.utils import trailing_slash
 from tastypie.utils import trailing_slash
-from api.utils.command import list_files_and_folders
-import os
+from api.utils.git_api import get_odoo_modules_repos_names
 
 
 class GitResource(Resource):
 class GitResource(Resource):
     class Meta:
     class Meta:
@@ -23,16 +22,8 @@ class GitResource(Resource):
     def get_repositories(self, request, **kwargs):
     def get_repositories(self, request, **kwargs):
         self.method_check(request, allowed='get')
         self.method_check(request, allowed='get')
 
 
-        repos = []
-        folders = list_files_and_folders(settings.GIT_PATH)
-
-        for folder in folders.get('items', []):
-            subfolders = list_files_and_folders(os.path.join(settings.GIT_PATH, folder))
-
-            for subfolder in subfolders.get('items', []):
-                print(subfolder.replace('.git', ''))
-
-        import pdb; pdb.set_trace()
+        repos = get_odoo_modules_repos_names()
+        print(repos)
 
 
         return self.create_response(request, {
         return self.create_response(request, {
             'test': 'get repositories'
             'test': 'get repositories'

+ 69 - 0
api/utils/git_api.py

@@ -0,0 +1,69 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+from django.conf import settings
+from api.utils.command import list_files_and_folders
+from git.repo.base import Repo
+from git.repo.fun import is_git_dir
+from git.util import join_path
+
+'''
+'''
+def get_users_folders():
+    fullpath = join_path(settings.GIT_PATH)
+    folders = list_files_and_folders(fullpath)
+
+    return folders.get('items', [])
+
+'''
+'''
+def get_repos_paths():
+    users_folders = get_users_folders()
+    repos = []
+
+    for folder in users_folders:
+        fullpath = join_path(settings.GIT_PATH, folder)
+        subfolders = list_files_and_folders(fullpath)
+
+        for subfolder in subfolders.get('items', []):
+            fullpath = join_path(settings.GIT_PATH, folder, subfolder)
+
+            if not is_git_dir(fullpath):
+                continue
+
+            repos.append(fullpath)
+
+    return repos
+
+'''
+'''
+def get_odoo_modules_repos_paths():
+    repos_paths = get_repos_paths()
+    modules_paths = []
+
+    for repo_path in repos_paths:
+        r = Repo(repo_path)
+
+        try:
+            if '__openerp__.py' in [o.path for o in r.tree()]:
+                modules_paths.append(repo_path)
+        except ValueError:
+            continue
+        finally:
+            r.close()
+
+    return modules_paths
+
+'''
+'''
+def get_odoo_modules_repos_names(include_owners=False):
+    repos_paths = get_odoo_modules_repos_paths()
+    repos_names = []
+
+    for repos_path in repos_paths:
+        last_slash_index = repos_path.rindex('/')
+        last_dot_index = repos_path.rindex('.')
+
+        name = repos_path[last_slash_index + 1:last_dot_index]
+        repos_names.append(name)
+
+    return repos_names