Skip to content

Commit

Permalink
ENH/WIP: add a free command
Browse files Browse the repository at this point in the history
  • Loading branch information
jklymak committed Apr 18, 2020
1 parent cd524eb commit c13dfbe
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 2 deletions.
8 changes: 8 additions & 0 deletions gcalcli/argparsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,11 +329,19 @@ def get_argument_parser():
description='Get a week-based agenda in calendar format.')
calw.add_argument('weeks', type=int, default=1, nargs='?')

free = sub.add_parser(
'free', parents=[details_parser, output_parser, cal_query_parser],
help='get free',
description='Get free timeslots in week.')
free.add_argument('weeks', type=int, default=1, nargs='?')

sub.add_parser(
'calm', parents=[details_parser, output_parser, cal_query_parser],
help='get a month agenda in calendar format',
description='Get a month agenda in calendar format.')



quick = sub.add_parser(
'quick', parents=[details_parser, remind_parser],
help='quick-add an event to a calendar',
Expand Down
5 changes: 5 additions & 0 deletions gcalcli/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,11 @@ def main():
start_text=parsed_args.start
)

elif parsed_args.command == 'free':
print(parsed_args)
gcal.FreeQuery(start=parsed_args.start)


elif parsed_args.command == 'calm':
gcal.CalQuery(parsed_args.command, start_text=parsed_args.start)

Expand Down
41 changes: 39 additions & 2 deletions gcalcli/gcal.py
Original file line number Diff line number Diff line change
Expand Up @@ -1010,7 +1010,6 @@ def _iterate_events(self, start_datetime, event_list, year_date=False,
work=None):

selected = 0

if len(event_list) == 0:
self.printer.msg('\nNo Events Found...\n', 'yellow')
return selected
Expand Down Expand Up @@ -1155,6 +1154,37 @@ def ListAllCalendars(self):
self._calendar_color(cal)
)

def _display_free(self, start, end, search=None,
year_date=False):
event_list = self._search_for_events(start, end, search)
day = start.replace(hour=0, minute=0, second=0, microsecond=0)
dayst = start.replace(hour=9, minute=0, second=0, microsecond=0)
nextst = dayst
dayend = nextst.replace(hour=17)
prefix = dayst.strftime('%a %b %d')

self.printer.msg(f'\nAvailability {dayst.strftime("%b %d")} - {end.strftime("%b %d")} \n', 'yellow')
self.printer.msg('---------------------------- \n\n', 'yellow')
for event in event_list:

while event['s'] > dayend:
self.printer.msg(prefix, 'green')
self.printer.msg(f" {nextst.strftime('%H:%M')} to {dayend.strftime('%H:%M')}\n", )
dayst = dayst + timedelta(days=1)
dayend = dayend + timedelta(days=1)
nextst = dayst
print_prefix = True
prefix = dayst.strftime('\n%a %b %d')
if event['s'] >= nextst:
self.printer.msg(prefix, 'green')
self.printer.msg(f" {nextst.strftime('%H:%M')} to {event['s'].strftime('%H:%M')}\n")
nextst = event['e']
prefix = ' '
if event['e'] < dayend:
print(prefix + f" {nextst.strftime('%H:%M')} to {dayend.strftime('%H:%M')}")



def _display_queried_events(self, start, end, search=None,
year_date=False):
event_list = self._search_for_events(start, end, search)
Expand Down Expand Up @@ -1215,6 +1245,14 @@ def AgendaQuery(self, start=None, end=None):

return self._display_queried_events(start, end)

def FreeQuery(self, start=None, count=1):
if not start:
start = self.now.replace(hour=0, minute=0, second=0, microsecond=0)

end = (start + timedelta(days=(count * 8)))

return self._display_free(start, end)

def CalQuery(self, cmd, start_text='', count=1):
if not start_text:
# convert now to midnight this morning and use for default
Expand Down Expand Up @@ -1256,7 +1294,6 @@ def CalQuery(self, cmd, start_text='', count=1):
count += 1

event_list = self._search_for_events(start, end, None)

self._GraphEvents(cmd, start, count, event_list)

def QuickAddEvent(self, event_text, reminders=None):
Expand Down

0 comments on commit c13dfbe

Please sign in to comment.