@@ -26,23 +26,33 @@ class DatasetTemplate(CreateableAPIResource, ListableAPIResource,
2626
2727 def __init__ (self , * args , ** kwargs ):
2828 super (DatasetTemplate , self ).__init__ (* args , ** kwargs )
29+ self .fields = self .__init_fields (** kwargs )
2930
30- self .fields = kwargs .get ('fields' ) or []
31- for attr in dir (self ):
32- if attr .startswith ('__' ):
31+ @classmethod
32+ def __init_fields (cls , * args , ** kwargs ):
33+ fields = kwargs .get ("fields" ) or []
34+ for attr in dir (cls ):
35+ if attr .startswith ("__" ):
3336 continue
3437
35- func = getattr (self , attr , None )
38+ func = getattr (cls , attr , None )
3639 if getattr (func , "field" , None ):
37- self . fields .append (func .field )
40+ fields .append (func .field )
3841
39- def get_or_create (self , ** params ):
40- objects = self .all (** params ).solve_objects ()
42+ return fields
43+
44+ @classmethod
45+ def create (cls , ** params ):
46+ params ["fields" ] = cls .__init_fields (** params )
47+ return super (DatasetTemplate , cls ).create (** params )
48+
49+ @classmethod
50+ def get_or_create_by_name (cls , name , ** params ):
51+ objects = cls .all (name = name , ** params ).solve_objects ()
4152 if objects :
42- # TODO: Raise exception?
4353 return objects [0 ]
44- else :
45- return self .create (** params )
54+
55+ return cls .create (name = name , ** params )
4656
4757 @property
4858 def import_params (self ):
@@ -64,6 +74,8 @@ def get_function_body(func):
6474 source_lines = inspect .getsourcelines (func )[0 ]
6575 source_lines = dropwhile (lambda x : x .startswith ('@' ), source_lines )
6676 source = '' .join (source_lines )
77+ # Remove comments
78+ source = re .sub (r'(?m)^ *#.*\n?' , '' , source )
6779 pattern = re .compile (
6880 r'(async\s+)?def\s+\w+\s*\(.*?\)\s*:\s*(.*)' ,
6981 flags = re .S )
0 commit comments