示例#1
0
文件: admin.py 项目: orbitalno11/FSIM
def get_activity_list(current_user):
    year = request.args.get('year')

    db = DatabaseHelper()
    result = db.get_activity_list(year)

    return api_helper.return_response(result)
示例#2
0
    def analyze_publicize(self, year=None):
        connect = DatabaseHelper()
        data = connect.get_activity_publicize(year)
        if data['value']:
            data = pd.DataFrame(data['value'])
            activity = analyze_helper.set_fullname(connect.get_activity_list())
            if year:
                year_s = int(year)
                activity = activity.loc[(activity['education_year'] == year_s)
                                        |
                                        (activity['education_year'] == year_s -
                                         1)]

            dupli_activity = activity.activity_name.duplicated(keep=False)
            activity.loc[dupli_activity, 'activity_name'] = activity.loc[dupli_activity, 'activity_name'] + ' (' + \
                                                            activity['education_year'].astype(str) + ')'
            count_duplicate = 1
            for i in activity.loc[dupli_activity, 'activity_name'].index:
                activity.loc[i, 'activity_name'] = activity.loc[
                    i, 'activity_name'] + " " + str(count_duplicate)
                count_duplicate = count_duplicate + 1

            activityNoAr = activity[activity['project_type'] == 0]
            activity_data = activityNoAr.drop(columns='project_type')
            activityNoAr = activityNoAr[['activity_name']]

            activity_dict = analyze_helper.set_dict(activityNoAr.index,
                                                    activityNoAr.activity_name)
            data_year = data.copy()

            year_select = []
            if year:
                year = int(year)
                data_year = data[data['activity_year'] == year]
                year_select.append(int(year))
                year_select.append(int(year - 1))
                activity_data = activity_data[activity_data['education_year']
                                              == year]

            else:
                max_year = data.activity_year.max()
                year_select.append(int(max_year))
                year_select.append(int(max_year - 1))

            activity_data.set_index(['activity_name'], inplace=True)

            # data_compare is data all person who joined activity not ar
            data_compare = data[data['activity_year'].isin(year_select)]
            # data_student_compare is data all person who joined activity not ar and studied in KMUTT
            data_student_join = data_compare.dropna()

            compare_year = data_compare.groupby(
                ['activity_id', 'activity_year']).size().unstack(fill_value=0)
            # student_joined = data_student_join.groupby(['activity_id', 'activity_year']).size().unstack(fill_value=0)
            if not compare_year.empty:
                compare_year_data = analyze_helper.check_list(
                    activityNoAr.index, compare_year)
                compare_year_data = analyze_helper.check_list_column(
                    year_select, compare_year_data)
                compare_year_data = analyze_helper.set_fullname_index(
                    activity_dict, compare_year_data)

                # student_joined_compare = analyze_helper.check_list(activityNoAr.index, student_joined)
                # student_joined_compare = analyze_helper.check_list_column(year_select, student_joined_compare)
                # student_joined_compare = analyze_helper.set_fullname_index(activity_dict, student_joined_compare)

            else:
                compare_year_data = pd.DataFrame(columns=year_select)
                activity_name = activityNoAr.activity_name.tolist()
                compare_year_data['activity_name'] = activity_name
                compare_year_data.fillna(0, inplace=True)
                compare_year_data.set_index('activity_name', inplace=True)
                # student_joined_compare = compare_year_data.copy()

            activity_group = data_year.groupby('activity_id').size()
            activity_count_check = analyze_helper.check_list(
                activityNoAr.index, activity_group)
            activity_count = analyze_helper.set_fullname_index(
                activity_dict, activity_count_check)

            student_join = data_student_join.groupby('activity_id').size()
            student_join_check = analyze_helper.check_list(
                activityNoAr.index, student_join)
            student_join_count = analyze_helper.set_fullname_index(
                activity_dict, student_join_check)

            budget = activity.loc[(activity['education_year'] == year)]

            value = {
                'activity_count': activity_count.to_dict(),
                # 'student_join_count': student_join_count.to_dict(),
                'activity_year_compare': compare_year_data.to_dict(),
                # 'student_joined_compare': student_joined_compare.to_dict(),
                'budget': activity_data.to_dict('index')
            }

            response = True
            message = "Analyze Successfully"
        else:
            value = {}
            response = False
            message = "Don't have Data"

        return inner_res_helper.make_inner_response(response=response,
                                                    message=message,
                                                    value=value)
示例#3
0
    def analyze_ar(self, year=None):
        connect = DatabaseHelper()
        data = connect.get_activity_ar(year)

        if data['value']:
            data = pd.DataFrame(data['value'])
            activity = analyze_helper.set_fullname(connect.get_activity_list())
            dupli_activity = activity.activity_name.duplicated(keep=False)
            activity.loc[dupli_activity, 'activity_name'] = activity.loc[dupli_activity, 'activity_name'] + ' (' + \
                                                            activity['education_year'].astype(str) + ')'
            activityAr = activity[activity['project_type'] == 1]
            activity_data = activityAr.drop(columns='project_type')
            activityAr = activityAr[['activity_name']]
            activity_dict = analyze_helper.set_dict(activityAr.index,
                                                    activityAr.activity_name)

            # get_branch=connect.get_department(None)

            # branch=[]
            # for i in get_branch['value']:
            #     for index in range(len(i['branch'])):
            #         branch.append(i['branch'][index])
            # branch_data = analyze_helper.set_branch(branch)
            # branch_data.drop(columns=['amount_student'],inplace=True)
            # branch_dict = analyze_helper.set_dict(branch_data.index, branch_data.branch_name)

            get_branch = connect.get_department_ds()
            get_branch = pd.DataFrame(get_branch['value'])

            branch_data = get_branch[['branch_id', 'branch_name']]
            branch_data = branch_data.set_index('branch_id')
            branch_dict = analyze_helper.set_dict(branch_data.index,
                                                  branch_data.branch_name)

            # activity_data keep data activity such as activity_year and activity_budget
            # activity_dict keep data activity such as activity_year and activity_budget in syntex dic

            count_school = data.school_name.value_counts()
            sort_count_school = count_school.sort_values(
                ascending=False).head()

            gpax_school = data.groupby(['school_name'])['gpax'].mean()
            sort_gpax_school = gpax_school.sort_values(ascending=False).head()
            analyze_by_activity = data.groupby(['project_id', 'branch_name'
                                                ]).size().unstack(fill_value=0)
            # analyze_by_activity = analyze_helper.check_list(activityAr.index, analyze_by_activity)
            # analyze_by_activity = analyze_helper.set_fullname_column(branch_dict, analyze_by_activity)
            # analyze_by_activity = analyze_helper.set_fullname_index(activity_dict, analyze_by_activity)

            analyze_by_activity_gpax = data.groupby(
                ['project_id',
                 'branch_name'])['gpax'].mean().unstack(fill_value=0)
            # analyze_by_activity_gpax = analyze_helper.check_list(activityAr.index, analyze_by_activity_gpax)
            # analyze_by_activity_gpax = analyze_helper.set_fullname_index(activity_dict, analyze_by_activity_gpax)
            # analyze_by_activity_gpax = analyze_helper.set_fullname_column(branch_dict, analyze_by_activity_gpax)
            analyze_by_activity_gpax = analyze_by_activity_gpax.round(2)

            value = {
                'count_school':
                sort_count_school.to_dict(),
                'gpax':
                sort_gpax_school.to_dict(),
                'activity_by_branch_count':
                [analyze_by_activity.to_dict('index')],
                'activity_by_branch_gpax':
                [analyze_by_activity_gpax.to_dict('index')]
            }

            response = True
            message = "Analyze Successfully"
        else:
            value = {}
            response = False
            message = "Don't have Data"

        return inner_res_helper.make_inner_response(response=response,
                                                    message=message,
                                                    value=value)