Exemplo n.º 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)
Exemplo n.º 2
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 = 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)
Exemplo n.º 3
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 =  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)
Exemplo n.º 4
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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
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 = 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)
Exemplo n.º 8
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 = 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)
Exemplo n.º 9
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 = 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)
Exemplo n.º 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)
Exemplo n.º 11
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 = 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)
Exemplo n.º 12
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 = 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)
Exemplo n.º 13
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)
Exemplo n.º 14
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)
Exemplo n.º 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)
Exemplo n.º 16
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 = 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)