mirror of
https://github.com/yweber/lodel2.git
synced 2026-07-30 01:23:26 +02:00
Added a manage.py command to generate random EM
This commit is contained in:
parent
32975049d1
commit
8ed5b666a9
1 changed files with 129 additions and 0 deletions
129
Lodel/management/commands/emgen.py
Normal file
129
Lodel/management/commands/emgen.py
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
from django.core.management.base import BaseCommand, CommandError
|
||||
from optparse import make_option
|
||||
from EditorialModel.model import Model
|
||||
from EditorialModel.backend.json_backend import EmBackendJson
|
||||
from EditorialModel.backend.dummy_backend import EmBackendDummy
|
||||
from EditorialModel.backend.graphviz import EmBackendGraphviz
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('--no-classes',
|
||||
action='store',
|
||||
dest='classtype',
|
||||
default = 0,
|
||||
help='Chances for a classtype to be empty',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--max-classes',
|
||||
action='store',
|
||||
dest='nclass',
|
||||
default = 5,
|
||||
help='Maximum number of classes per classtype',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--no-fieldgroup',
|
||||
action='store',
|
||||
dest='nofg',
|
||||
default = 10,
|
||||
help='Chances for a class to have no fieldgroup',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--no-types',
|
||||
action='store',
|
||||
dest='notype',
|
||||
default = 5,
|
||||
help='Chances for a class to have no types',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--sel-opt-field',
|
||||
action='store',
|
||||
dest='seltype',
|
||||
default = 2,
|
||||
help='Chances for type to select an optionnal field',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--superiors',
|
||||
action='store',
|
||||
dest='ntypesuperiors',
|
||||
default = 3,
|
||||
help='Chances for a type to link with other types (superiors)',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--no-fields',
|
||||
action='store',
|
||||
dest='nofields',
|
||||
default = 10,
|
||||
help='Chances for a fieldgroup to be empty',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--max-fields',
|
||||
action='store',
|
||||
dest='nfields',
|
||||
default = 8,
|
||||
help='Maxmimum number of fields per fieldgroup',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--rel-to-type-attr',
|
||||
action='store',
|
||||
dest='rfields',
|
||||
default = 5,
|
||||
help='Maximum number of relation-to-type attribute fields',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('--opt-field',
|
||||
action='store',
|
||||
dest='optfield',
|
||||
default = 2,
|
||||
help='Chances for a field to be optionnal',
|
||||
type="int",
|
||||
metavar="INT",
|
||||
),
|
||||
make_option('-o',
|
||||
'--output',
|
||||
action='store',
|
||||
dest='output',
|
||||
default = 'random_me.json',
|
||||
help='json output file for the me',
|
||||
type="string",
|
||||
metavar="FILENAME",
|
||||
),
|
||||
make_option('-d',
|
||||
'--output-dot',
|
||||
action='store',
|
||||
dest='dotout',
|
||||
default = False,
|
||||
help='graphviz output file for the me',
|
||||
type="string",
|
||||
metavar="FILENAME",
|
||||
),
|
||||
|
||||
|
||||
)
|
||||
help = 'Randomly generate an EditorialModel'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
anames = ['classtype','nclass', 'nofg', 'notype', 'seltype', 'ntypesuperiors', 'nofields', 'nfields', 'optfield']
|
||||
chances = dict()
|
||||
for n in anames:
|
||||
chances[n] = options[n]
|
||||
|
||||
bj = EmBackendJson(options['output'])
|
||||
|
||||
em = Model.random(EmBackendDummy())
|
||||
bj.save(em)
|
||||
|
||||
if options['dotout']:
|
||||
gvb = EmBackendGraphviz(options['dotout'])
|
||||
gvb.save(em)
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue