コード例 #1
0
    def create_filter_report(filter_, period, startdate, enddate, destdir,
                             npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = IRC.get_filter_items(filter_, startdate, enddate,
                                         identities_db)
            if (items == None): return

        if not isinstance(items, (list)):
            items = [items]

        fn = os.path.join(destdir, filter_.get_filename(IRC()))
        createJSON(items, fn)

        for item in items:
            # item_name = "'"+ item+ "'"
            logging.info(item)

            filter_item = Filter(filter_.get_name(), item)

            evol_data = IRC.get_evolutionary_data(period, startdate, enddate,
                                                  identities_db, filter_item)
            fn = os.path.join(destdir,
                              filter_item.get_evolutionary_filename(IRC()))
            createJSON(
                completePeriodIds(evol_data, period, startdate, enddate), fn)

            agg = IRC.get_agg_data(period, startdate, enddate, identities_db,
                                   filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(IRC()))
            createJSON(agg, fn)
コード例 #2
0
ファイル: MLS.py プロジェクト: jsmanrique/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = MLS.get_filter_items(filter_, startdate, enddate, identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        items_files = [item.replace('/', '_').replace("<","__").replace(">","___")
            for item in items]

        fn = os.path.join(destdir, filter_.get_filename(MLS()))
        createJSON(items_files, fn)

        if filter_name in ("domain", "company", "repository"):
            items_list = {'name' : [], 'sent_365' : [], 'senders_365' : []}
        else:
            items_list = items

        for item in items :
            item_name = "'"+ item+ "'"
            logging.info (item_name)
            filter_item = Filter(filter_.get_name(), item)

            evol_data = MLS.get_evolutionary_data(period, startdate, enddate, 
                                                  identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(MLS()))
            createJSON(evol_data, fn)

            agg = MLS.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(MLS()))
            createJSON(agg, fn)

            if filter_name in ("domain", "company", "repository"):
                items_list['name'].append(item.replace('/', '_').replace("<","__").replace(">","___"))
                items_list['sent_365'].append(agg['sent_365'])
                items_list['senders_365'].append(agg['senders_365'])

            top_senders = MLS.get_top_data(startdate, enddate, identities_db, filter_item, npeople, False)
            createJSON(top_senders, destdir+"/"+filter_item.get_top_filename(MLS()))

        fn = os.path.join(destdir, filter_.get_filename(MLS()))
        createJSON(items_list, fn)

        if (filter_name == "company"):
            ds = MLS
            if False:
                summary = MLS.get_filter_summary(
                    filter_, period, startdate, enddate,
                    identities_db, 10, self.db.projects_db
                    )
                createJSON (summary,
                            destdir + "/" + filter_.get_summary_filename(MLS))
            # Perform ages study, if it is specified in Report
            MLS.ages_study_com (items, period, startdate, enddate, destdir)
コード例 #3
0
ファイル: QAForums.py プロジェクト: VizGrimoire/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items =  QAForums.get_filter_items(filter_, startdate, enddate, identities_db)
            if items == None:
                return
            items = items['name']
  
        filter_name = filter_.get_name()

        if not isinstance(items, list):
            items = [items]

        file_items = []
        for item in items:
            if re.compile("^\..*").match(item) is not None: item = "_"+item
            file_items.append(item)

        fn = os.path.join(destdir, filter_.get_filename(QAForums()))
        createJSON(file_items, fn)
        for item in items:
            logging.info(item)
            filter_item = Filter(filter_.get_name(), item)

            evol_data = QAForums.get_evolutionary_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(QAForums()))
            createJSON(completePeriodIds(evol_data, period, startdate, enddate), fn)

            agg = QAForums.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(QAForums()))
            createJSON(agg, fn)
コード例 #4
0
ファイル: IRC.py プロジェクト: VizGrimoire/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = IRC.get_filter_items(filter_, startdate, enddate, identities_db)
            if (items == None): return

        if not isinstance(items, (list)):
            items = [items]

        fn = os.path.join(destdir, filter_.get_filename(IRC()))
        createJSON(items, fn)

        for item in items :
            # item_name = "'"+ item+ "'"
            logging.info (item)

            filter_item = Filter(filter_.get_name(), item)

            evol_data = IRC.get_evolutionary_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(IRC()))
            createJSON(completePeriodIds(evol_data, period, startdate, enddate), fn)

            agg = IRC.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(IRC()))
            createJSON(agg, fn)
コード例 #5
0
ファイル: ITS.py プロジェクト: jgbarah/GrimoireLib
    def create_filter_report(cls, filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = cls.get_filter_items(filter_, startdate, enddate, identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        fn = os.path.join(destdir, filter_.get_filename(cls()))
        createJSON(items, fn)

        if filter_name in ("domain", "company", "repository"):
            items_list = {'name' : [], 'closed_365' : [], 'closers_365' : []}
        else:
            items_list = items

        for item in items :
            item_name = "'"+ item+ "'"
            logging.info (item_name)
            filter_item = Filter(filter_name, item)

            evol_data = cls.get_evolutionary_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(cls()))
            createJSON(evol_data, fn)

            agg = cls.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(cls()))
            createJSON(agg, fn)

            if filter_name in ["domain", "company", "repository"]:
                items_list['name'].append(item.replace('/', '_'))
                items_list['closed_365'].append(agg['closed_365'])
                items_list['closers_365'].append(agg['closers_365'])

            if filter_name in ["company","domain","repository"]:
                top = cls.get_top_data(startdate, enddate, identities_db, filter_item, npeople)
                fn = os.path.join(destdir, filter_item.get_top_filename(cls()))
                createJSON(top, fn)

        fn = os.path.join(destdir, filter_.get_filename(cls()))
        createJSON(items_list, fn)

        if (filter_name == "company"):
            ds = ITS
            summary = cls.get_filter_summary(
                filter_, period, startdate, enddate,
                identities_db, 10
                )
            createJSON (summary,
                        destdir + "/" + filter_.get_summary_filename(cls))

            # Perform ages study, if it is specified in Report
            cls.ages_study_com (items, period, startdate, enddate, destdir)
コード例 #6
0
ファイル: ITS.py プロジェクト: acs/GrimoireLib
    def create_filter_report(cls, filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = cls.get_filter_items(filter_, startdate, enddate, identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        fn = os.path.join(destdir, filter_.get_filename(cls()))
        createJSON(items, fn)

        if filter_name in ("domain", "company", "repository"):
            items_list = {'name' : [], 'closed_365' : [], 'closers_365' : []}
        else:
            items_list = items

        for item in items :
            item_name = "'"+ item+ "'"
            logging.info (item_name)
            filter_item = Filter(filter_name, item)

            evol_data = cls.get_evolutionary_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(cls()))
            createJSON(evol_data, fn)

            agg = cls.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(cls()))
            createJSON(agg, fn)

            if filter_name in ["domain", "company", "repository"]:
                items_list['name'].append(item.replace('/', '_'))
                items_list['closed_365'].append(agg['closed_365'])
                items_list['closers_365'].append(agg['closers_365'])

            if filter_name in ["company","domain","repository"]:
                top = cls.get_top_data(startdate, enddate, identities_db, filter_item, npeople)
                fn = os.path.join(destdir, filter_item.get_top_filename(cls()))
                createJSON(top, fn)

        fn = os.path.join(destdir, filter_.get_filename(cls()))
        createJSON(items_list, fn)

        if (filter_name == "company"):
            ds = ITS
            #summary = cls.get_filter_summary(
            #    filter_, period, startdate, enddate,
            #    identities_db, 10
            #    )
            #createJSON (summary,
            #            destdir + "/" + filter_.get_summary_filename(cls))

            # Perform ages study, if it is specified in Report
            cls.ages_study_com (items, period, startdate, enddate, destdir)
コード例 #7
0
ファイル: SCR.py プロジェクト: jgbarah/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir,
                             npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = SCR.get_filter_items(filter_, startdate, enddate,
                                         identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        # Include metrics to sort in javascript.
        items_list = {
            "name": [],
            "review_time_days_median": [],
            "submitted": []
        }

        for item in items:
            item_file = item.replace("/", "_")
            items_list["name"].append(item_file)

            logging.info(item)
            filter_item = Filter(filter_name, item)

            evol = SCR.get_evolutionary_data(period, startdate, enddate,
                                             identities_db, filter_item)
            fn = os.path.join(destdir,
                              filter_item.get_evolutionary_filename(SCR()))
            createJSON(evol, fn)

            # Static
            agg = SCR.get_agg_data(period, startdate, enddate, identities_db,
                                   filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(SCR()))
            createJSON(agg, fn)

            if 'submitted' in agg:
                items_list["submitted"].append(agg["submitted"])
            else:
                items_list["submitted"].append("NA")
            if 'review_time_days_median' in agg:
                items_list["review_time_days_median"].append(
                    agg['review_time_days_median'])
            else:
                items_list["review_time_days_median"].append("NA")

        fn = os.path.join(destdir, filter_.get_filename(SCR()))
        createJSON(items_list, fn)

        SCR.create_filter_report_top(filter_, period, startdate, enddate,
                                     destdir, npeople, identities_db)
コード例 #8
0
ファイル: EventsDS.py プロジェクト: jgbarah/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir,
                             npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = EventsDS.get_filter_items(filter_, startdate, enddate,
                                              identities_db)
        if (items == None): return

        filter_name = filter_.get_name()
        items = items['name']

        if not isinstance(items, list):
            items = [items]

        file_items = []
        for item in items:
            if re.compile("^\..*").match(item) is not None: item = "_" + item
            file_items.append(item)

        fn = os.path.join(destdir, filter_.get_filename(EventsDS()))
        createJSON(file_items, fn)

        if filter_name in ("repository"):
            items_list = {'name': [], 'events_365': [], 'rsvps_365': []}
        else:
            items_list = items

        for item in items:
            logging.info(item)
            filter_item = Filter(filter_.get_name(), item)

            evol_data = EventsDS.get_evolutionary_data(period, startdate,
                                                       enddate, identities_db,
                                                       filter_item)
            fn = os.path.join(
                destdir, filter_item.get_evolutionary_filename(EventsDS()))
            createJSON(
                completePeriodIds(evol_data, period, startdate, enddate), fn)

            agg = EventsDS.get_agg_data(period, startdate, enddate,
                                        identities_db, filter_item)
            fn = os.path.join(destdir,
                              filter_item.get_static_filename(EventsDS()))
            createJSON(agg, fn)

            if filter_name in ("repository"):
                items_list['name'].append(item.replace('/', '_'))
                items_list['events_365'].append(agg['events_365'])
                items_list['rsvps_365'].append(agg['rsvps_365'])

        EventsDS.create_filter_report_top(filter_, period, startdate, enddate,
                                          destdir, npeople, identities_db)

        fn = os.path.join(destdir, filter_.get_filename(EventsDS()))
        createJSON(items_list, fn)
コード例 #9
0
ファイル: EventsDS.py プロジェクト: jgbarah/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = EventsDS.get_filter_items(filter_, startdate, enddate, identities_db)
        if (items == None): return

        filter_name = filter_.get_name()
        items = items['name']

        if not isinstance(items, list):
            items = [items]

        file_items = []
        for item in items:
            if re.compile("^\..*").match(item) is not None: item = "_"+item
            file_items.append(item)

        fn = os.path.join(destdir, filter_.get_filename(EventsDS()))
        createJSON(file_items, fn)

        if filter_name in ("repository"):
            items_list = {'name' : [], 'events_365' : [], 'rsvps_365' : []}
        else:
            items_list = items

        for item in items:
            logging.info(item)
            filter_item = Filter(filter_.get_name(), item)

            evol_data = EventsDS.get_evolutionary_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(EventsDS()))
            createJSON(completePeriodIds(evol_data, period, startdate, enddate), fn)

            agg = EventsDS.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(EventsDS()))
            createJSON(agg, fn)

            if filter_name in ("repository"):
                items_list['name'].append(item.replace('/', '_'))
                items_list['events_365'].append(agg['events_365'])
                items_list['rsvps_365'].append(agg['rsvps_365'])

        EventsDS.create_filter_report_top(filter_, period, startdate, enddate, destdir, npeople, identities_db)

        fn = os.path.join(destdir, filter_.get_filename(EventsDS()))
        createJSON(items_list, fn)
コード例 #10
0
    def create_filter_report(filter_, period, startdate, enddate, destdir,
                             npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = SCM.get_filter_items(filter_, startdate, enddate,
                                         identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        fn = os.path.join(destdir, filter_.get_filename(SCM()))
        escaped_items = [i.replace('/', '_') for i in items]
        logging.info("D1")
        createJSON(escaped_items, fn)

        for item in items:
            item_name = "'" + item + "'"
            logging.info(item_name)
            filter_item = Filter(filter_name, item)

            evol_data = SCM.get_evolutionary_data(period, startdate, enddate,
                                                  identities_db, filter_item)
            fn = os.path.join(destdir,
                              filter_item.get_evolutionary_filename(SCM()))
            createJSON(evol_data, fn)

            agg = SCM.get_agg_data(period, startdate, enddate, identities_db,
                                   filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(SCM()))
            createJSON(agg, fn)

        SCM.create_filter_report_top(filter_, period, startdate, enddate,
                                     destdir, npeople, identities_db)

        if (filter_name == "company"):
            ds = SCM
            #summary =  SCM.get_filter_summary(filter_, period, startdate, enddate, identities_db, 10)
            #createJSON (summary, destdir+"/"+ filter_.get_summary_filename(SCM))
            # Perform ages study, if it is specified in Report
            SCM.ages_study_com(items, period, startdate, enddate, destdir)
コード例 #11
0
ファイル: SCR.py プロジェクト: VizGrimoire/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = SCR.get_filter_items(filter_, startdate, enddate, identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        # Include metrics to sort in javascript.
        items_list = {"name":[],"review_time_days_median":[],"submitted":[]}

        for item in items :
            item_file = item.replace("/","_")
            items_list["name"].append(item_file)

            logging.info (item)
            filter_item = Filter(filter_name, item)

            evol = SCR.get_evolutionary_data(period, startdate, enddate,
                                               identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(SCR()))
            createJSON(evol, fn)

            # Static
            agg = SCR.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(SCR()))
            createJSON(agg, fn)

            if 'submitted' in agg:
                items_list["submitted"].append(agg["submitted"])
            else: items_list["submitted"].append("NA")
            if 'review_time_days_median' in agg:
                items_list["review_time_days_median"].append(agg['review_time_days_median'])
            else: items_list["review_time_days_median"].append("NA")

        fn = os.path.join(destdir, filter_.get_filename(SCR()))
        createJSON(items_list, fn)

        SCR.create_filter_report_top(filter_, period, startdate, enddate, destdir, npeople, identities_db)
コード例 #12
0
ファイル: QAForums.py プロジェクト: jgbarah/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir,
                             npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = QAForums.get_filter_items(filter_, startdate, enddate,
                                              identities_db)
            if items == None:
                return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, list):
            items = [items]

        file_items = []
        for item in items:
            if re.compile("^\..*").match(item) is not None: item = "_" + item
            file_items.append(item)

        fn = os.path.join(destdir, filter_.get_filename(QAForums()))
        createJSON(file_items, fn)
        for item in items:
            logging.info(item)
            filter_item = Filter(filter_.get_name(), item)

            evol_data = QAForums.get_evolutionary_data(period, startdate,
                                                       enddate, identities_db,
                                                       filter_item)
            fn = os.path.join(
                destdir, filter_item.get_evolutionary_filename(QAForums()))
            createJSON(
                completePeriodIds(evol_data, period, startdate, enddate), fn)

            agg = QAForums.get_agg_data(period, startdate, enddate,
                                        identities_db, filter_item)
            fn = os.path.join(destdir,
                              filter_item.get_static_filename(QAForums()))
            createJSON(agg, fn)
コード例 #13
0
ファイル: SCM.py プロジェクト: VizGrimoire/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir, npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = SCM.get_filter_items(filter_, startdate, enddate, identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        fn = os.path.join(destdir, filter_.get_filename(SCM()))
        escaped_items = [i.replace('/','_') for i in items]
        logging.info("D1")
        createJSON(escaped_items, fn)

        for item in items :
            item_name = "'"+ item+ "'"
            logging.info (item_name)
            filter_item = Filter(filter_name, item)

            evol_data = SCM.get_evolutionary_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_evolutionary_filename(SCM()))
            createJSON(evol_data, fn)

            agg = SCM.get_agg_data(period, startdate, enddate, identities_db, filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(SCM()))
            createJSON(agg, fn)

        SCM.create_filter_report_top(filter_, period, startdate, enddate, destdir, npeople, identities_db)

        if (filter_name == "company"):
            ds = SCM
            #summary =  SCM.get_filter_summary(filter_, period, startdate, enddate, identities_db, 10)
            #createJSON (summary, destdir+"/"+ filter_.get_summary_filename(SCM))
            # Perform ages study, if it is specified in Report
            SCM.ages_study_com (items, period, startdate, enddate, destdir)
コード例 #14
0
ファイル: data_source.py プロジェクト: jgbarah/GrimoireLib
    def convert_all_to_single(cls, data, filter_, destdir, evolutionary, period='month'):
        """ Convert a GROUP BY result to follow tradition individual JSON files """
        from vizgrimoire.SCM import SCM
        from vizgrimoire.ITS import ITS
        from vizgrimoire.SCR import SCR
        from vizgrimoire.MLS import MLS
        from vizgrimoire.filter import Filter

        if cls == ITS or cls == SCR:
            if 'url' in data.keys():
                data['name'] = data.pop('url')
                data['name'] = [item.replace('/', '_') for item in data['name']]
        elif cls == MLS:
            if 'mailing_list_url' in data.keys():
                data['name'] = data.pop('mailing_list_url')
                data['name'] = [item.replace('/', '_') for item in data['name']]
        if cls == ITS or cls == SCM:
            if filter_.get_name() in ["company+country","company+project"]:
                data['name'] = data.pop('filter')

        if not evolutionary:
            # First create the JSON with the list of items
            item_list = {}
            fn = os.path.join(destdir, filter_.get_filename(cls))
            if cls == SCM:
                fields = ["authors_365","name","commits_365"]
            elif cls == ITS:
                fields = ["closed_365","closers_365", "name"]
            elif cls == MLS:
                fields = ["sent_365","senders_365", "name"]
            elif cls == SCR:
                fields = ["submitted","review_time_days_median","review_time_pending_upload_ReviewsWaitingForReviewer_days_median", "name"]
            else:
                fields = ["name"]
            for field in fields:
                if field in data:
                    item_list[field] = data[field]
            createJSON(item_list, fn)
        # Items files
        ts_fields = ['unixtime','id','date',period]
        # Not metrics fields
        no_metrics_fields = ['filter_type']
        for i in range(0,len(data['name'])):
            item_metrics = {}
            item = data['name'][i]
            for metric in data:
                if metric == "name": continue
                if metric in ts_fields+no_metrics_fields: continue
                if len(data[metric])<len(data['name']):
                    logging.error(cls.get_name()+" "+metric + " not supported in GROUP BY. Not included")
                    continue
                if evolutionary:
                    if not isinstance(data[metric][i], list):
                        logging.error(cls.get_name()+" "+metric + " evol not supported in GROUP BY. Not included")
                        continue
                item_metrics[metric] = data[metric][i]
            filter_item = Filter(filter_.get_name(), item)
            if evolutionary:
                for field in ts_fields:
                    # Shared time series fields
                    item_metrics[field] = data[field]
                fn = os.path.join(destdir, filter_item.get_evolutionary_filename(cls()))
            else:
                fn = os.path.join(destdir, filter_item.get_static_filename(cls()))
            createJSON(item_metrics, fn)
コード例 #15
0
    def convert_all_to_single(cls,
                              data,
                              filter_,
                              destdir,
                              evolutionary,
                              period='month'):
        """ Convert a GROUP BY result to follow tradition individual JSON files """
        from vizgrimoire.SCM import SCM
        from vizgrimoire.ITS import ITS
        from vizgrimoire.SCR import SCR
        from vizgrimoire.MLS import MLS
        from vizgrimoire.filter import Filter

        if cls == ITS or cls == SCR:
            if 'url' in data.keys():
                data['name'] = data.pop('url')
                data['name'] = [
                    item.replace('/', '_') for item in data['name']
                ]
        elif cls == MLS:
            if 'mailing_list_url' in data.keys():
                data['name'] = data.pop('mailing_list_url')
                data['name'] = [
                    item.replace('/', '_') for item in data['name']
                ]
        if cls == ITS or cls == SCM:
            if filter_.get_name() in ["company+country", "company+project"]:
                data['name'] = data.pop('filter')

        if not evolutionary:
            # First create the JSON with the list of items
            item_list = {}
            fn = os.path.join(destdir, filter_.get_filename(cls))
            if cls == SCM:
                fields = ["authors_365", "name", "commits_365"]
            elif cls == ITS:
                fields = ["closed_365", "closers_365", "name"]
            elif cls == MLS:
                fields = ["sent_365", "senders_365", "name"]
            elif cls == SCR:
                fields = [
                    "submitted", "review_time_days_median",
                    "review_time_pending_upload_ReviewsWaitingForReviewer_days_median",
                    "name"
                ]
            else:
                fields = ["name"]
            for field in fields:
                if field in data:
                    item_list[field] = data[field]
            createJSON(item_list, fn)
        # Items files
        ts_fields = ['unixtime', 'id', 'date', period]
        # Not metrics fields
        no_metrics_fields = ['filter_type']
        for i in range(0, len(data['name'])):
            item_metrics = {}
            item = data['name'][i]
            for metric in data:
                if metric == "name": continue
                if metric in ts_fields + no_metrics_fields: continue
                if len(data[metric]) < len(data['name']):
                    logging.error(cls.get_name() + " " + metric +
                                  " not supported in GROUP BY. Not included")
                    continue
                if evolutionary:
                    if not isinstance(data[metric][i], list):
                        logging.error(
                            cls.get_name() + " " + metric +
                            " evol not supported in GROUP BY. Not included")
                        continue
                item_metrics[metric] = data[metric][i]
            filter_item = Filter(filter_.get_name(), item)
            if evolutionary:
                for field in ts_fields:
                    # Shared time series fields
                    item_metrics[field] = data[field]
                fn = os.path.join(destdir,
                                  filter_item.get_evolutionary_filename(cls()))
            else:
                fn = os.path.join(destdir,
                                  filter_item.get_static_filename(cls()))
            createJSON(item_metrics, fn)
コード例 #16
0
ファイル: MLS.py プロジェクト: jgbarah/GrimoireLib
    def create_filter_report(filter_, period, startdate, enddate, destdir,
                             npeople, identities_db):
        from vizgrimoire.report import Report
        items = Report.get_items()
        if items is None:
            items = MLS.get_filter_items(filter_, startdate, enddate,
                                         identities_db)
            if (items == None): return
            items = items['name']

        filter_name = filter_.get_name()

        if not isinstance(items, (list)):
            items = [items]

        items_files = [
            item.replace('/', '_').replace("<", "__").replace(">", "___")
            for item in items
        ]

        fn = os.path.join(destdir, filter_.get_filename(MLS()))
        createJSON(items_files, fn)

        if filter_name in ("domain", "company", "repository"):
            items_list = {'name': [], 'sent_365': [], 'senders_365': []}
        else:
            items_list = items

        for item in items:
            item = item.replace("'", "\\'")
            item_name = "'" + item + "'"
            logging.info(item_name)
            filter_item = Filter(filter_.get_name(), item)

            evol_data = MLS.get_evolutionary_data(period, startdate, enddate,
                                                  identities_db, filter_item)
            fn = os.path.join(destdir,
                              filter_item.get_evolutionary_filename(MLS()))
            createJSON(evol_data, fn)

            agg = MLS.get_agg_data(period, startdate, enddate, identities_db,
                                   filter_item)
            fn = os.path.join(destdir, filter_item.get_static_filename(MLS()))
            createJSON(agg, fn)

            if filter_name in ("domain", "company", "repository"):
                items_list['name'].append(
                    item.replace('/', '_').replace("<",
                                                   "__").replace(">", "___"))
                items_list['sent_365'].append(agg['sent_365'])
                items_list['senders_365'].append(agg['senders_365'])

            top_senders = MLS.get_top_data(startdate, enddate, identities_db,
                                           filter_item, npeople, False)
            createJSON(top_senders,
                       destdir + "/" + filter_item.get_top_filename(MLS()))

        fn = os.path.join(destdir, filter_.get_filename(MLS()))
        createJSON(items_list, fn)

        if (filter_name == "company"):
            ds = MLS
            if False:
                summary = MLS.get_filter_summary(filter_, period, startdate,
                                                 enddate, identities_db, 10,
                                                 self.db.projects_db)
                createJSON(summary,
                           destdir + "/" + filter_.get_summary_filename(MLS))
            # Perform ages study, if it is specified in Report
            MLS.ages_study_com(items, period, startdate, enddate, destdir)