X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fapigen%2Fmodelgen;fp=planetstack%2Fapigen%2Fmodelgen;h=d2e80f53871ee91ff141ab999561c90979dc7a60;hb=eb62ad61ef3ca0b8dd5e641ac8e841eb0f17e8ae;hp=4c8a0f1409b8d8d9e0e4f70e76f08920c2bcb7ba;hpb=7d018caab5dd607b6050e2ba5611ac631772f67f;p=plstackapi.git diff --git a/planetstack/apigen/modelgen b/planetstack/apigen/modelgen index 4c8a0f1..d2e80f5 100755 --- a/planetstack/apigen/modelgen +++ b/planetstack/apigen/modelgen @@ -11,9 +11,17 @@ from django.template import Context, Template sys.path.append('.') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings") -from django.db.models.fields.related import ForeignKey +from django.db.models.fields.related import ForeignKey, ManyToManyField from core.models import * +def singular(foo, keys): + for k in keys: + if (foo==k+'es'): + return k + elif (foo==k+'s'): + return k + raise Exception('Plural to singular error for %s'%foo) + g = globals() def enum_classes(): @@ -66,6 +74,18 @@ class Generator(dict): obj.refs.append(refobj) else: obj.props.append(f.name) + m2m = obj.model._meta.many_to_many + for f in m2m: + try: + related_model_name = f.m2m_reverse_field_name() + except: + related_model_name = f.m2m_db_table().rsplit('_',1)[-1] + + if related_model_name in self.keys(): + refobj = self[related_model_name] + obj.multi=True + refobj.refs.append(obj) + def main(): try: