Exemplo n.º 1
0
def _main(cmd):
    year = cmd.year
    path = sos.path.join(sos.expanded_path(cmd.diary), "%4.4d" % year)
    Y = CAL.Year(year)
    file_name = sos.path.join(path, cmd.filename)
    sort = cmd.sort
    read_plan(Y, file_name)
    if cmd.add_appointment:
        sort = len(cmd.argv)
        for a in cmd.argv:
            if app_pat.match(a.strip()):
                _add_appointment(Y, app_pat, cmd.holidays_too)
            else:
                print("%s doesn't match an appointment" % a)
    if cmd.Show:
        for a in cmd.argv:
            if app_pat.match(a.strip()):
                print(a)
                pat_match = app_pat
                day, month, year, time = _date_time(Y, pat_match)
                for D in _day_generator(pat_match, day, month, year, Y):
                    print("   ", D)
            else:
                print("%s doesn't match an appointment" % a)
    if sort:
        Y.sort_appointments()
        write_plan(Y, file_name, cmd.replace)
Exemplo n.º 2
0
def _main(cmd):
    year = cmd.year
    head = cmd.head
    tail = cmd.tail
    path = sos.path.join(sos.expanded_path(cmd.diary), "%4.4d" % year)
    Y = CAL.Year(year)
    file_name = sos.path.join(path, cmd.filename)
    pdf_name = Filename(cmd.pdf or ("plan_%s.pdf" % year), ".pdf").name
    head = cmd.head or 1
    tail = cmd.tail or 12
    if cmd.monthly:
        Plan = [PDF_Plan_Month, PDF_Plan_Month_L][bool(cmd.landscape)]
    elif cmd.Yearly:
        Plan = [PDF_Plan_Year, PDF_Plan_Year_L][bool(cmd.landscape)]
    else:
        Plan = [PDF_Plan_Week, PDF_Plan_Week_L][bool(cmd.landscape)]
        head = cmd.head or 0
        tail = cmd.tail or -1
        wd = Y.weeks[0].number
        if tail < 0:
            tail += len(Y.weeks)
        head -= wd
        tail += 1 - wd
    CAL.read_plan(Y, file_name)
    Plan \
        ( Y, pdf_name, head, tail
        , xl  = cmd.XL
        , yl  = cmd.YL
        , xo  = cmd.XO
        , yo  = cmd.YO
        )
Exemplo n.º 3
0
 def _new_year(self, year):
     return CAL.Year(year, cal=self)
Exemplo n.º 4
0
def _main (cmd) :
    from _TFL.load_config_file import load_config_file
    globs = globals ()
    for cf in cmd.Config :
        load_config_file (cf, globs)
    if cmd.year :
        ptf       = cmd.ptf
        year      = cmd.year
        Y         = CAL.Year (year)
        days      = Y.days
        cm_d      = Y.dmap [(year, 12, 24)]
        d_range   = ""
        if cmd.after :
            days  = tuple (d for d in days if d.date >= cmd.after)
            if cm_d.date < cmd.after :
                cm_d = None
            d = cmd.after
            d_range  = "%02d.%02d." % (d.date.day, d.date.month)
            if not cmd.before :
                d_range = "%s-31.12." % (d_range, )
        if cmd.before :
            days  = tuple (d for d in days if d.date <= cmd.before)
            if cm_d and cm_d.date > cmd.before :
                cm_d = None
            if not cmd.after :
                d_range  = "01.01"
            d = cmd.before
            d_range = "%s-%02d.%02d" % (d_range, d.date.day, d.date.month)
        if d_range :
            d_range = " [%s]" % (d_range, )
        holidays  = sum \
            ((d.is_weekday and bool (d.is_holiday)) for d in days) * ptf
        workdays  = sum \
            ((d.is_weekday and not   d.is_holiday)  for d in days) * ptf
        vp        = \
            ( sum (float (d.is_weekday and not d.is_holiday)  for d in days)
            / sum (float (d.is_weekday and not d.is_holiday)  for d in Y.days)
            )
        vacation  = cmd.vacation * vp * ptf
        christmas = 0
        if cm_d :
            christmas = 2 * (cm_d.is_weekday and not cm_d.is_holiday)
        holidays += christmas
        workdays -= christmas
        workdays -= vacation
        form      = \
            ( "%s%s: %.0f Arbeitstage, %.0f Feiertage"
              ", %.0f Urlaubstage, %.0f Soll-Stunden"
            )
        print \
            ( form
            % (year, d_range, workdays, holidays, vacation, workdays * cmd.hpd)
            )
    if cmd.argv :
        splitter = TFL.Getter.date.week if cmd.Weekly else TFL.Getter.date.month
        P   = load_periods (cmd.argv, splitter, cmd.before, cmd.after)
        tot = str (P)
        print \
            ( P.format
            % ("Periode", "Arbeit [h]", "Krank [h]", "Total [h]", "Urlaubstage")
            )
        if not cmd.quiet :
            for d in P.entries :
                print (d)
            print ("=" * len (tot))
        print (tot)
Exemplo n.º 5
0
def _show (year, country, lang = "de") :
    """
    >>> _show (2016, "AT")
      1 2016/01/01 Neujahr
      6 2016/01/06 Hl. Drei Könige
     87 2016/03/27 Ostersonntag
     88 2016/03/28 Ostermontag
    122 2016/05/01 Tag der Arbeit
    126 2016/05/05 Christi Himmelfahrt
    136 2016/05/15 Pfingstsonntag
    137 2016/05/16 Pfingstmontag
    147 2016/05/26 Fronleichnam
    228 2016/08/15 Mariä Himmelfahrt
    300 2016/10/26 Nationalfeiertag
    306 2016/11/01 Allerheiligen
    343 2016/12/08 Mariä Empfängnis
    360 2016/12/25 1. Weihnachtstag
    361 2016/12/26 2. Weihnachtstag

    >>> _show (2016, "DE")
      1 2016/01/01 Neujahr
     85 2016/03/25 Karfreitag
     87 2016/03/27 Ostersonntag
     88 2016/03/28 Ostermontag
    122 2016/05/01 Tag der Arbeit
    126 2016/05/05 Christi Himmelfahrt
    136 2016/05/15 Pfingstsonntag
    137 2016/05/16 Pfingstmontag
    277 2016/10/03 Tag der Deutschen Einheit
    360 2016/12/25 1. Weihnachtstag
    361 2016/12/26 2. Weihnachtstag

    >>> _show (2016, "CH", lang = "en")
      1 2016/01/01 New Year's Day
     85 2016/03/25 Good Friday
     87 2016/03/27 Easter Sunday
     88 2016/03/28 Easter Monday
    126 2016/05/05 Ascension Day
    136 2016/05/15 Whit Sunday
    137 2016/05/16 Whit Monday
    214 2016/08/01 Swiss National Day
    262 2016/09/18 Federal Day of Thanksgiving, Repentance and Prayer
    360 2016/12/25 Christmas Day
    361 2016/12/26 St. Stephen's Day

    >>> _show (2016, "IE")
      1 2016/01/01 Neujahr
     77 2016/03/17 Saint Patrick's Day
     88 2016/03/28 Ostermontag
    123 2016/05/02 Mai-Feiertag
    158 2016/06/06 Juni-Feiertag
    214 2016/08/01 August-Feiertag
    305 2016/10/31 Oktober-Feiertag
    360 2016/12/25 1. Weihnachtstag
    361 2016/12/26 2. Weihnachtstag

    >>> _show (2016, "UK")
      1 2016/01/01 Neujahr
     85 2016/03/25 Karfreitag
     87 2016/03/27 Ostersonntag
     88 2016/03/28 Ostermontag
    123 2016/05/02 Bankfeiertag
    151 2016/05/30 Bankfeiertag
    242 2016/08/29 Bankfeiertag
    360 2016/12/25 1. Weihnachtstag
    361 2016/12/26 2. Weihnachtstag

    >>> _show (2017, "UK", lang = "en")
      1 2017/01/01 New Year's Day
    104 2017/04/14 Good Friday
    106 2017/04/16 Easter Sunday
    107 2017/04/17 Easter Monday
    121 2017/05/01 May Day Bank Holiday
    149 2017/05/29 Spring Bank Holiday
    240 2017/08/28 Late Summer Bank Holiday
    359 2017/12/25 Christmas Day
    360 2017/12/26 Boxing Day

    >>> _show (2016, "US", lang = "en")
      1 2016/01/01 New Year's Day
     18 2016/01/18 Martin Luther King Day
     46 2016/02/15 Washington's Birthday
    151 2016/05/30 Memorial Day
    186 2016/07/04 Independence Day
    249 2016/09/05 Labor Day
    284 2016/10/10 Columbus Day
    316 2016/11/11 Veterans Day
    329 2016/11/24 Thanksgiving
    360 2016/12/25 Christmas Day

    >>> _show (2017, "US", lang = "en")
      1 2017/01/01 New Year's Day
     16 2017/01/16 Martin Luther King Day
     20 2017/01/20 Inauguration Day
     51 2017/02/20 Washington's Birthday
    149 2017/05/29 Memorial Day
    185 2017/07/04 Independence Day
    247 2017/09/04 Labor Day
    282 2017/10/09 Columbus Day
    315 2017/11/11 Veterans Day
    327 2017/11/23 Thanksgiving
    359 2017/12/25 Christmas Day

    >>> _show (2016, "ANY")
      1 2016/01/01 Neujahr

    """
    import _CAL.Year
    with TFL.I18N.test_language (lang) :
        Y = CAL.Year (year)
        O = Y.head.ordinal - 1
        for ordinal, name in sorted (pyk.iteritems (holidays (year, country))) :
            print ("%3d %s %s" % (ordinal - O, Y.cal.day [ordinal], _T (name)))