예제 #1
0
파일: main.py 프로젝트: christer79/wlog
def start(args, service, wh):
    ongoing_events = find_ongoing_events(service, args)
    if len(ongoing_events) > 0:
        print(
            "There are {} ongoing evnts, consider stopping them before starting new."
        )
        for event in ongoing_events:
            print(event_utils.format_event(event))
        if len(ongoing_events) == 1:
            if query_yes_no("Stop the ongoing event at this time",
                            default="no"):
                utc = pytz.timezone("UTC")
                event = ongoing_events[0]
                end_time = datetime.datetime.combine(args.date.date(),
                                                     args.start.time())
                utc_end = end_time.astimezone(utc)
                event["end"]["dateTime"] = utc_end.isoformat()
                calendar_id = cal.get_calendar_id(service, args.calendar)
                updated_event = (service.events().update(
                    calendarId=calendar_id, eventId=event["id"],
                    body=event).execute())
                print(updated_event["updated"])
        else:
            if not args.force and not query_yes_no("Start event anyway",
                                                   default="no"):
                sys.exit(0)

    start_time = datetime.datetime.combine(args.date.date(), args.start.time())
    event = generate_event(start_time, start_time, args.summary,
                           args.description, args.location)
    create_new_event(service, event, args)
예제 #2
0
파일: main.py 프로젝트: christer79/wlog
def find_ongoing_events(service, args):
    calendar_id = cal.get_calendar_id(service, args.calendar)
    all_events = cal.get_all_events(service, calendar_id)
    possible_events = []
    for event in all_events:
        if event_utils.event_duration(event).total_seconds() == 0.0:
            possible_events.append(event)
    return possible_events
예제 #3
0
파일: main.py 프로젝트: christer79/wlog
    def summary(self):
        calendar_id = cal.get_calendar_id(self.service, self.args.calendar)
        all_events = cal.get_all_events(self.service, calendar_id)

        # The size of each step in days
        day_delta = datetime.timedelta(days=1)

        start_date = self.args.start.date()
        first_date = get_first_date(all_events).date()
        if start_date < first_date:
            start_date = first_date
        end_date = self.args.end.date()

        acc_time_diff_total = 0.0
        acc_time_diff_week = 0.0
        acc_time_diff_month = 0.0

        for i in range((end_date - start_date).days + 1):
            date = start_date + i * day_delta
            if date.weekday() == 0:
                if self.args.weeks:
                    print(" ** WEEK {} SUMMARY: ".format(
                        (date - day_delta).isocalendar()[1]) +
                          event_utils.format_time_diff(acc_time_diff_week))
                acc_time_diff_week = 0.0
            if date.day == 1:
                if self.args.months:
                    print(" **** {} SUMMARY: ".format(
                        (date - day_delta).strftime("%B")) +
                          event_utils.format_time_diff(acc_time_diff_month))
                acc_time_diff_month = 0.0

            day_events = event_utils.get_events_on_date(all_events, date)
            worktime = self.total_worktime(day_events)
            acc_time_diff_total += time_diff(worktime, self.planned(date))
            acc_time_diff_week += time_diff(worktime, self.planned(date))
            acc_time_diff_month += time_diff(worktime, self.planned(date))
            if self.args.days:
                color = ""
                if date.weekday() == 5 or date.weekday() == 6:
                    color = bcolors.WEEKEND
                print(
                    color,
                    date,
                    format_timedelta(worktime),
                    event_utils.format_time_diff(
                        time_diff(worktime, self.planned(date))),
                    event_utils.graph(
                        day_events,
                        start=datetime.time(0, 0, 0),
                        end=datetime.time(23, 59, 59),
                        resolution=datetime.timedelta(minutes=15),
                    ),
                    bcolors.ENDC,
                    event_utils.format_time_diff(acc_time_diff_total),
                )
        print("Total: " + event_utils.format_time_diff(acc_time_diff_total))
예제 #4
0
파일: main.py 프로젝트: christer79/wlog
def delete(args, service, wh):
    for id in args.ids:
        calendar_id = cal.get_calendar_id(service, args.calendar)
        event = service.events().get(calendarId=calendar_id,
                                     eventId=id).execute()
        print("Delete event")
        print(event_utils.format_event(event))
        if args.force or query_yes_no("Delete the above evetn?", default="no"):
            service.events().delete(calendarId=calendar_id,
                                    eventId=id).execute()
예제 #5
0
파일: main.py 프로젝트: christer79/wlog
 def day_summary(self):
     today = datetime.datetime.now().date()
     calendar_id = cal.get_calendar_id(self.service, self.args.calendar)
     all_events = cal.get_all_events(self.service, calendar_id)
     events_on_day = event_utils.get_events_on_date(all_events, today)
     total_worktime = self.total_worktime(events_on_day)
     print(
         f"\nTotal time worked today: {total_worktime}/{self.planned(today)}",
         event_utils.format_time_diff(
             time_diff(total_worktime, self.planned(today))),
     )
예제 #6
0
파일: main.py 프로젝트: christer79/wlog
def update(args, service, wh):
    calendar_id = cal.get_calendar_id(service, args.calendar)
    event = service.events().get(calendarId=calendar_id,
                                 eventId=args.id).execute()
    print("Replace event")
    print(event_utils.format_event(event))
    print("with:")
    new_event = patch_event(event, args)
    print(new_event)
    if args.force or query_yes_no("Update the above evetn?", default="no"):
        update_event(new_event, service, args)
예제 #7
0
파일: main.py 프로젝트: christer79/wlog
def stop(args, service, wh):
    calendar_id = cal.get_calendar_id(service, args.calendar)
    # Find latest event with same start and stop time
    possible_events = find_ongoing_events(service, args)

    if len(possible_events) == 1:
        event = possible_events[0]
    else:
        print("None or too many event were found: ", len(possible_events))
        sys.exit(1)

    # Show suggested event
    print("Event to update:")
    print(event_utils.format_event(event))

    # Confirm update
    if args.force or query_yes_no("Stop that event", "no"):
        # Update event
        new_event = patch_event(event, args)
        updated_event = (service.events().update(calendarId=calendar_id,
                                                 eventId=new_event["id"],
                                                 body=new_event).execute())
        print(updated_event["updated"])
예제 #8
0
파일: main.py 프로젝트: christer79/wlog
def list(args, service, wh):
    calendar_id = cal.get_calendar_id(service, args.calendar)
    all_events = cal.get_all_events(service, calendar_id)
    events = filter_events(all_events, args.start, args.end)
    event_utils.print_events(events)
예제 #9
0
파일: main.py 프로젝트: christer79/wlog
def update_event(event, service, args):
    calendar_id = cal.get_calendar_id(service, args.calendar)
    updated_event = (service.events().update(calendarId=calendar_id,
                                             eventId=event["id"],
                                             body=event).execute())
    print(updated_event["updated"])
예제 #10
0
파일: main.py 프로젝트: christer79/wlog
def create_new_event(service, event, args):
    calendar_id = cal.get_calendar_id(service, args.calendar)
    event = service.events().insert(calendarId=calendar_id,
                                    body=event).execute()
    print("Event created: %s" % (event.get("htmlLink")))