Check-in [49440f6e1f]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Disallow item creation without any accompanying properties.
Timelines: family | ancestors | descendants | both | dev
Files: files | file ages | folders
SHA1:49440f6e1ff0db111897242e83a593e444d91b07
User & Date: mvnathan 2014-09-20 08:38:43
Context
2014-09-20
09:42
Implemented the new command. check-in: 1bafafa24d user: mvnathan tags: dev
08:38
Disallow item creation without any accompanying properties. check-in: 49440f6e1f user: mvnathan tags: dev
07:51
Implemented command-line parsing for the new command. check-in: a855b05bad user: mvnathan tags: dev
Changes

Changes to py/morglib/database.py.

375
376
377
378
379
380
381




382
383
384
385
386
387
388
        abbreviated.

        This function performs all its database operations in a
        transaction. Thus, any failures will roll back the Morg database
        to its previous state.

        '''




        logger.info('adding new item')
        for p, v in properties.iteritems():
            logger.debug('property {} = {}'.format(p, v))

        with self._db:
            self.execute('insert into item default values')
            item_id = self._db.last_insert_rowid()







>
>
>
>







375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
        abbreviated.

        This function performs all its database operations in a
        transaction. Thus, any failures will roll back the Morg database
        to its previous state.

        '''
        if (not properties):
            msg = 'cannot create an item without any properties'
            raise property_error(None, None, None, msg)

        logger.info('adding new item')
        for p, v in properties.iteritems():
            logger.debug('property {} = {}'.format(p, v))

        with self._db:
            self.execute('insert into item default values')
            item_id = self._db.last_insert_rowid()

Changes to py/morglib/new.py.

81
82
83
84
85
86
87
88



89
90
91
92
93
94
95
                        help = 'range of values property may assume',
                        metavar = 'RANGE')

    parser.add_argument('properties', nargs = argparse.REMAINDER,
                        help = 'property specifications for new task',
                        metavar = 'PROPERTIES')

    return parser.parse_args(argv)




def _help_before_options():
    help_text = '''
Use the new command to add items or properties to the Morg database.
Without any options, this command will add a new item to the database,
using the positional arguments as property specifications for the item.








|
>
>
>







81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
                        help = 'range of values property may assume',
                        metavar = 'RANGE')

    parser.add_argument('properties', nargs = argparse.REMAINDER,
                        help = 'property specifications for new task',
                        metavar = 'PROPERTIES')

    arg = parser.parse_args(argv)
    if (arg.property is None and not arg.properties):
        raise args.args_error('cannot create item without properties')
    return arg

def _help_before_options():
    help_text = '''
Use the new command to add items or properties to the Morg database.
Without any options, this command will add a new item to the database,
using the positional arguments as property specifications for the item.