예제 #1
0
def hour_chart(preachers):
    service_year = get_service_year()
    ChartData = namedtuple('ChartData', ['legend', 'id', 'label', 'data'])

    label = []
    data = []

    def get_hour(pr, month):
        return pr['tatitra'][str(month)]['ora']

    for month in service_year:
        f = Filter(preachers)
        f('returned', month=str(month))

        hour = _sum([get_hour(pr, month) for pr in f.preachers])

        f_aux = Filter(f.preachers)
        f_aux('is_auxiliary', month=str(month))

        aux_hour = _sum([get_hour(pr, month) for pr in f_aux.preachers])

        f_reg = Filter(f.preachers)
        f_reg('is_regular')

        reg_hour = _sum([get_hour(pr, month) for pr in f_reg.preachers])

        label.append(month.prettie('{short_month} {short_year}'))
        data.append((hour, reg_hour, aux_hour))

    return ChartData(
        legend=['Mpitory rehetra', 'Maharitra', 'Mpanampy'],
        id=['all', 'reg', 'aux'],
        label=label,
        data=data, )
예제 #2
0
def growth_data_six(id, name, preachers):
    GrowthData = namedtuple('GrowthData', ['desc', 'last', 'now'])

    MONTH = app.config['MONTH']

    month = str(MONTH)
    last_month_1 = MONTH.new_me() - 1
    last_month_2 = MONTH.new_me() - 2
    last_month_3 = MONTH.new_me() - 3
    last_month_4 = MONTH.new_me() - 4
    last_month_5 = MONTH.new_me() - 5
    last_month_6 = MONTH.new_me() - 6

    def get_data(pr, month):
        return pr['tatitra'][str(month)][id]

    f = Filter(preachers)
    f('returned', month=str(month))

    last_f1 = Filter(preachers)
    last_f1('returned', month=str(last_month_1))

    last_f2 = Filter(preachers)
    last_f2('returned', month=str(last_month_2))

    last_f3 = Filter(preachers)
    last_f3('returned', month=str(last_month_3))

    last_f4 = Filter(preachers)
    last_f4('returned', month=str(last_month_4))

    last_f5 = Filter(preachers)
    last_f5('returned', month=str(last_month_5))

    last_f6 = Filter(preachers)
    last_f6('returned', month=str(last_month_6))

    now_data = _sum([get_data(pr, month) for pr in f.preachers])
    last_data_1 = _sum([get_data(pr, last_month_1) for pr in last_f1.preachers])
    last_data_2 = _sum([get_data(pr, last_month_2) for pr in last_f2.preachers])
    last_data_3 = _sum([get_data(pr, last_month_3) for pr in last_f3.preachers])
    last_data_4 = _sum([get_data(pr, last_month_4) for pr in last_f4.preachers])
    last_data_5 = _sum([get_data(pr, last_month_5) for pr in last_f5.preachers])
    last_data_6 = _sum([get_data(pr, last_month_6) for pr in last_f6.preachers])

    last_data = _sum([
        last_data_1,
        last_data_2,
        last_data_3,
        last_data_4,
        last_data_5,
        last_data_6,
    ]) / 6

    return GrowthData(name, last_data, now_data)
예제 #3
0
파일: home.py 프로젝트: Unviray/ES21
def growth_data(id, name, preachers):
    GrowthData = namedtuple('GrowthData', ['desc', 'last', 'now'])

    MONTH = app.config['MONTH']

    month = str(MONTH)
    last_month = MONTH.new_me() - 1

    def get_data(pr, month):
        return pr['tatitra'][str(month)][id]

    f = Filter(preachers)
    f('returned', month=str(month))
    last_f = Filter(preachers)
    last_f('returned', month=str(last_month))

    now_data = _sum([get_data(pr, month) for pr in f.preachers])
    last_data = _sum([get_data(pr, last_month) for pr in last_f.preachers])

    return GrowthData(name, last_data, now_data)
예제 #4
0
def hour_chart(preachers, gid):
    service_year = get_service_year()
    ChartData = namedtuple('ChartData', ['legend', 'id', 'label', 'data'])

    label = []
    data = []

    for month in service_year:
        fr = Filter(preachers)
        fr('in_group', gid)
        fr('returned', month=str(month))

        s_hour = _sum([pr['tatitra'][str(month)]['ora'] for pr in fr.preachers])

        label.append(month.prettie('{short_month} {short_year}'))
        data.append((s_hour,))

    return ChartData(['Ora'], ['grp'], label, data)
예제 #5
0
def post_report(preachers):
    """
    Produce table main report table to post.
    :param preacher: list of tri sorted preacher
    :return: result object. preachers is accessible with
    'non, aux, reg, tot' properties.
    """

    p = preachers

    MONTH = str(app.config['MONTH'])

    non = {
        'isa': len(p.non),
        'zvn': _sum([_['tatitra'][MONTH]['zavatra_napetraka'] for _ in p.non]),
        'vid': _sum([_['tatitra'][MONTH]['video'] for _ in p.non]),
        'ora': _sum([_['tatitra'][MONTH]['ora'] for _ in p.non]),
        'fit': _sum([_['tatitra'][MONTH]['fitsidihana'] for _ in p.non]),
        'fam': _sum([_['tatitra'][MONTH]['fampianarana'] for _ in p.non]), }

    aux = {
        'isa': len(p.aux),
        'zvn': _sum([_['tatitra'][MONTH]['zavatra_napetraka'] for _ in p.aux]),
        'vid': _sum([_['tatitra'][MONTH]['video'] for _ in p.aux]),
        'ora': _sum([_['tatitra'][MONTH]['ora'] for _ in p.aux]),
        'fit': _sum([_['tatitra'][MONTH]['fitsidihana'] for _ in p.aux]),
        'fam': _sum([_['tatitra'][MONTH]['fampianarana'] for _ in p.aux]), }

    reg = {
        'isa': len(p.reg),
        'zvn': _sum([_['tatitra'][MONTH]['zavatra_napetraka'] for _ in p.reg]),
        'vid': _sum([_['tatitra'][MONTH]['video'] for _ in p.reg]),
        'ora': _sum([_['tatitra'][MONTH]['ora'] for _ in p.reg]),
        'fit': _sum([_['tatitra'][MONTH]['fitsidihana'] for _ in p.reg]),
        'fam': _sum([_['tatitra'][MONTH]['fampianarana'] for _ in p.reg]), }

    tot = {
        'isa': len(p.all),
        'zvn': _sum([_['tatitra'][MONTH]['zavatra_napetraka'] for _ in p.all]),
        'vid': _sum([_['tatitra'][MONTH]['video'] for _ in p.all]),
        'ora': _sum([_['tatitra'][MONTH]['ora'] for _ in p.all]),
        'fit': _sum([_['tatitra'][MONTH]['fitsidihana'] for _ in p.all]),
        'fam': _sum([_['tatitra'][MONTH]['fampianarana'] for _ in p.all]), }

    result = namedtuple('PostReport', ['non', 'aux', 'reg', 'tot'])
    return result(non, aux, reg, tot)
예제 #6
0
파일: preacher.py 프로젝트: Unviray/ES21
def all_table(preachers):
    """
    Report table of current field service.
    """

    Row = namedtuple('Row', [
        'month', 'publication', 'video', 'hour', 'visit', 'study', 'remark',
        'auxiliary'
    ])

    service_year = get_service_year()

    result = []
    n_returned = 0
    for month in service_year:
        fr = Filter(preachers)
        fr('returned', month=str(month))

        if len(fr.preachers) != 0:
            report = fr.preachers[0]['tatitra'][str(month)]

            result.append(
                Row(month=month,
                    publication=report['zavatra_napetraka'],
                    video=report['video'],
                    hour=report['ora'],
                    visit=report['fitsidihana'],
                    study=report['fampianarana'],
                    remark=report['fanamarihana'],
                    auxiliary=is_auxiliary(str(month))(fr.preachers[0], )))

            n_returned += 1
        else:
            result.append(
                Row(month=month,
                    publication=0,
                    video=0,
                    hour=0,
                    visit=0,
                    study=0,
                    remark='',
                    auxiliary=is_auxiliary(str(month))(preachers[0], )))

    class custom_month(object):
        def __init__(self, name):
            self.name = name

        def prettie(self):
            return self.name

    total = Row(
        month=custom_month('Total'),
        publication=_sum([_.publication for _ in result]),
        video=_sum([_.video for _ in result]),
        hour=_sum([_.hour for _ in result]),
        visit=_sum([_.visit for _ in result]),
        study=_sum([_.study for _ in result]),
        remark='',
        auxiliary=False,
    )

    if n_returned > 0:
        moyen = Row(
            month=custom_month('Moyen'),
            publication=round(total.publication / n_returned, 2),
            video=round(total.video / n_returned, 2),
            hour=round(total.hour / n_returned, 2),
            visit=round(total.visit / n_returned, 2),
            study=round(total.study / n_returned, 2),
            remark='',
            auxiliary=False,
        )
    else:
        moyen = Row(
            month=custom_month('Moyen'),
            publication=0,
            video=0,
            hour=0,
            visit=0,
            study=0,
            remark='',
            auxiliary=False,
        )

    result.append(total)
    result.append(moyen)

    return result