Esempio n. 1
0
CLB_WINDOW_MENU = 'window_menu'
CLB_WINDOW_SELECT_GROUP = 'wdwsel_gr'
CLB_WINDOW_SELECT_DISCIPLINE = 'wdwsel_ds'

CONST_TXT_MENU = 'text:menu'
CONST_TXT_LESSON_BYDAY = 'text:lesson:byday'
CONST_TXT_LESSON_BYDATE = 'text:lesson:bydate'
CONST_TXT_LESSON_LAB = 'text:lesson:lab'
CONST_TXT_LAB_NOLABS = 'text:nolabs'
CONST_TXT_LESSON_NOLESSONS = 'text:no_lessons'
CONST_TXT_BACK = 'text:back'
CONST_TXT_HELP = 'text:help'
CONST_TXT_SELECT_GROUP = 'text:select_group'
CONST_TXT_SELECT_DISCIPLINE = 'text:select_discipline'

datastore = DataStore()

def serialize_path(route, args=[]):
    items = [route]
    items.extend( map(lambda x:str(x), args) )
    return ':'.join( items )

def deserialize_path(callback_query):
    path = callback_query.data
    items = path.split(":")
    return items[0], items[1:]

def window_start(bot, update):
    # print word("{say} world {say}", {'say': 'hello', 'unknown': '1'})
    # logging.info(update)
    user_id = update.message.chat.id
Esempio n. 2
0
 def __init__(self, *args, **kwargs):
     self.storage = DataStore()
Esempio n. 3
0
File: command.py Progetto: cigam/bam
 def __init__(self, *args, **kwargs):
     self.storage = DataStore()
     self.platform = Platform()
Esempio n. 4
0
class Command(object):

    def __init__(self, *args, **kwargs):
        self.storage = DataStore()

    def _app_string(self):
        return colored.cyan('DoIt!')

    def overview(self):
        return self.show(None, None)

    def show(self, major, minor):
        tasks = self.storage.get_all_tasks()
        pending_tasks = []
        done_tasks = []
        for i, task in enumerate(tasks):
            if task.get('state') == 'done':
                done_tasks.append((i, task))
            else:
                pending_tasks.append((i, task))
        with indent(INDENT):
            if len(pending_tasks) > 0:
                puts('Here\'s what you still need to do:')
                with indent(INDENT):
                    for task in pending_tasks:
                        puts('({}): {}'.format(task[0], task[1].get('text')))
                if len(done_tasks) > 0:
                    puts('\n\n')
            if len(done_tasks) > 0:
                puts ('Here\'s what you\'ve accomplished so far:')
                with indent(INDENT):
                    for task in done_tasks:
                        puts('({}): {}'.format(task[0], task[1].get('text')))

    def add(self, major, minor):
        new_task_index = self.storage.add_task(major)
        with indent(INDENT):
            puts('Got it. You need to {}. This has been assigned #{}.'.format(major[0].lower() + major[1:], new_task_index))

    def finish(self, task_number):
        index = self.storage.complete_task(int(task_number))
        task = self.storage.get_task(index)
        with indent(INDENT):
            puts('Awesome! You\'re done with {}. High-five!'.format(task.get('text')[0].lower() + task.get('text')[1:]))

    def delete(self, task_number):
        task = self.storage.get_task(int(task_number))
        response = raw_input('Are you sure you want to delete "({}): {}"? Y/N: '.format(task_number, task.get('text')))
        if response.lower().startswith('y'):
            self.storage.delete_task(int(task_number))
            with indent(INDENT):
                puts('Alright, looks like you won\'t {}"'.format(task.get('text')[0].lower(), task.get('text')[1:]))

    def flush(self):
        self.storage.delete_done_tasks()
        with indent(INDENT):
            puts("Nice. Totally cleaned up your done tasks.")

    def done(self):
        tasks = self.storage.get_done_tasks()
        with indent(INDENT):
            for task in tasks:
                puts('({}): {}'.format(task[0], task[1].get('text')))

    def execute(self):
        args = clint.Args()
        command = args.get(0)
        major = args.get(1)
        minor = args.get(2)
        if not command:
            return self.overview()
        self.delegate(command, major, minor)

    def delegate(self, command, major, minor):
        if command == 'show':
            return self.show(major, minor)
        elif command == 'help' or command[0] == '-':
            return self.help()
        elif command == 'add':
            return self.add(major, minor)
        elif command == 'finish':
            return self.finish(major)
        elif command == 'done':
            return self.done()
        elif command == 'flush':
            return self.flush()
        elif command == 'delete':
            return self.delete(major)

    def empty(self):
        text = '''
            You have no tasks. You can add some like this:
              $ doit add "Write a sweet to-do list"
            Show your tasks with:
              $ doit show
                You have 1 task!
                (1) Write a sweet to-do list
            Complete it like this:
              $ doit finish 1
                Are you sure you want to finish "Write a sweet to-do list"? (Y/N) Y
                Done. "Write a sweet to-do list" is finished.
            '''
        print textwrap.dedent(text)

    def help(self):
        text = '''
            ==== DoIt : Help =============================================

            doit                        show all of your tasks
            doit show                   also show all of your tasks
            doit help                   show this help message

            doit add <text>             create a new task with the text
            doit finish <taskno>        finish task with that number
            doit delete <taskno>        delete task with that number

            doit done                   show finished tasks
            doit flush                  delete all finished tasks

            ==============================================================
            '''
        with indent(INDENT):
            puts(textwrap.dedent(text))
Esempio n. 5
0
File: command.py Progetto: cigam/bam
class Command(object):

    def __init__(self, *args, **kwargs):
        self.storage = DataStore()
        self.platform = Platform()

    def _app_string(self):
        return colored.cyan('Bam!')

    def all(self):
        lists = self.storage.get_all_lists()
        for list_name, values in lists.iteritems():
            with indent(INDENT):
                puts(list_name)
                for k, v in values.iteritems():
                    with indent(INDENT):
                        puts('{}:\t\t{}'.format(k, v))

    def overview(self):
        lists = self.storage.get_all_lists()
        if lists:
            for list_name, values in lists.iteritems():
                with indent(INDENT):
                    puts("{} ({})".format(list_name, len(values)))
        else:
            self.help()

    def create_list(self, list_name, item_name=None, item_value=None):
        self.storage.create_list(list_name)
        print '{} Created a new list called {}.'.format(
            self._app_string(),
            colored.yellow(list_name)
        )
        if item_name and item_value:
            self.add_item(list_name, item_name, item_value)

    def detail_list(self, list_name):
        if self.storage.list_exists(list_name):
            for k, v in self.storage.get_list(list_name).iteritems():
                with indent(INDENT_LARGE):
                    puts('{}:\t\t{}'.format(k, v))
        else:
            print 'Cannot find list "{}".'.format(list_name)

    def delete_list(self, list_name):
        answer = raw_input(
            "You sure you want to delete everything in {}? (y/n): ".format(
                colored.yellow(list_name))
            )
        if answer.strip().lower() == 'y':
            self.storage.delete_list(list_name)
            print "{} Deleted all your {}.".format(
                self._app_string(),
                colored.yellow(list_name)
            )
        else:
            print "Just kidding then."

    def add_item(self, list_name, name, value):
        self.storage.add_item(list_name, name, value)
        print '{} {} in {} is {}. Got it.'.format(
            self._app_string(),
            colored.yellow(name),
            colored.yellow(list_name),
            colored.yellow(value)
        )

    def search_list_for_item(self, list_name, name):
        value = self.storage.get_item(name, list_name=list_name)
        print "{} We just copied {} to your clipboard.".format(
            self._app_string(),
            colored.yellow(self.platform.copy(value))
        )


    def search_items(self, name):
        value = self.storage.get_item(name)
        
        print "We just copied {} to your clipboard.".format(
            colored.yellow(self.platform.copy(value))
        )

    def delete_item(self, list_name, name):
        if self.storage.list_exists(list_name):
            try:
                self.storage.delete_item(list_name, name)
                print "{} {} is gone forever.".format(
                    self._app_string(),
                    colored.yellow(name)
                )
            except KeyError:
                print "{} {} {}.".format(
                    colored.yellow(name),
                    colored.red("not found in"),
                    colored.yellow(list_name)
                )
        else:
            print "We cound't find that list."

    def echo(self, major, minor=None):
        list_name = list_name = None
        if minor:
            list_name, item_name = major, minor
        else:
            item_name = major
            
        output = self.storage.get_item(item_name, list_name=list_name)
        if not output:
            if list_name and item_name:
                output = "{} {} {}".format(
                    colored.yellow(item_name),
                    colored.red("not found in"),
                    colored.yellow(list_name)
                )
            else:
                output = "{} {}".format(
                    colored.yellow(item_name),
                    colored.red("not found")
                )
        print output

    def edit(self):
        print "{} {}".format(
            self._app_string(),
            self.platform.edit(self.storage.data_path)
        )

    def open(self, major, minor):
        noun = None
        if self.storage.list_exists(major):
            the_list = self.storage.get_list(major)

            if minor:
                value = self.storage.get_item(minor, list_name=major)
                if value:
                    self.platform.open(value)
                    output = "{} We just opened {} for you."
                    noun = value
            else:
                for value in the_list.values():
                    self.platform.open(value)
                output = "{} We just opened all of {} for you."
                noun = major
        else:
            value = self.storage.get_item(major)
            if value:
                self.platform.open(value)
                output = "{} We just opened {} for you."
                noun = value
                
        print output.format(
            self._app_string(),
            colored.yellow(noun)
        )

    def random(self, major):
        if major and self.storage.list_exists(major):
            values = self.storage.get_list(major).values()
        else:
            values = self.storage.get_values()
        print "{} We just opened {} for you.".format(
            self._app_string(),
            colored.yellow(self.platform.open(choice(values)))
        )

    def execute(self):
        args = clint.Args()
        command = args.get(0)
        major = args.get(1)
        minor = args.get(2)
        if not command:
            return self.overview()
        self.delegate(command, major, minor)

    def delegate(self, command, major, minor):
        if command == 'all':
            return self.all()
        elif command == 'help' or command[0] == '-':
            return self.help()
        elif command in ['echo', 'e']:
            return self.echo(major, minor)
        elif command == 'edit':
            return self.edit()
        elif command in ['open', 'o']:
            return self.open(major, minor)
        elif command in ['random', 'rand', 'r']:
            return self.random(major)

        if self.storage.list_exists(command):
            if major == DELETE_OPTION:
                return self.delete_list(command)
            if not major:
                return self.detail_list(command)
            if minor != DELETE_OPTION:
                if minor:
                    return self.add_item(command, major, minor)
                return self.search_list_for_item(command, major)

        if minor == DELETE_OPTION and self.storage.item_exists(major):
            return self.delete_item(command, major)

        if self.storage.item_exists(command) and not major:
            return self.search_items(command)

        return self.create_list(command, item_name=major, item_value=minor)

    def empty(self):
        text = """
            You don't have anything yet! To start out, create a new list:
              $ bam <list-name>
            And then add something to your list!
              $ bam <list-name> <item-name> <item-value>
            You can then grab your new item:
              $ bam <item-name>"""[1:]
        print textwrap.dedent(text)

    def help(self):
        text = """
            - bam: help ---------------------------------------------------

            bam                          display high-level overview
            bam all                      show all items in all lists
            bam edit                     edit the bam JSON file in $EDITOR
            bam help                     this help text

            bam <list>                   create a new list
            bam <list>                   show items for a list
            bam <list> --delete          deletes a list

            bam <list> <name> <value>    create a new list item
            bam <name>                   copy item's value to clipboard
            bam <list> <name>            copy item's value to clipboard
            bam open <name>              open item's url in browser
            bam open <list> <name>       open all item's url in browser for a list
            bam random                   open a random item's url in browser
            bam random <list>            open a random item's url for a list in browser
            bam echo <name>              echo the item's value without copying
            bam echo <list> <name>       echo the item's value without copying
            bam <list> <name> --delete   deletes an item
        """
        with indent(INDENT):
            puts(textwrap.dedent(text))