ISiocItem is an interface that is implemented by 'post' entities (in sioc specification) i.e blogentry, mail ...
IsiocContainer is an interface that is implemented by 'container' entities (see sioc specification) i.e blog, mailthread ...
"""distutils / __pkginfo__ helpers for cubicweb applications"""importosfromos.pathimportisdir,joindefget_distutils_datafiles(cube,i18n=True,recursive=False):""" :param cube: application cube's name """data_files=[]data_files+=get_basepyfiles(cube)data_files+=get_webdatafiles(cube)ifi18n:data_files+=get_i18nfiles(cube)data_files+=get_viewsfiles(cube,recursive=recursive)data_files+=get_migrationfiles(cube)data_files+=get_schemafiles(cube)returndata_files## listdir filter funcs ################################################defnopyc_and_nodir(fname):ifisdir(fname)orfname.endswith('.pyc')orfname.endswith('~'):returnFalsereturnTruedefno_version_control(fname):iffnamein('CVS','.svn','.hg'):returnFalseiffname.endswith('~'):returnFalsereturnTruedefbasepy_files(fname):iffname.endswith('.py')andfname!='setup.py':returnTruereturnFalsedefchain(*filters):defnewfilter(fname):forfilterfuncinfilters:ifnotfilterfunc(fname):returnFalsereturnTruereturnnewfilterdeflistdir_with_path(path='.',filterfunc=None):iffilterfunc:return[join(path,fname)forfnameinos.listdir(path)iffilterfunc(join(path,fname))]else:return[join(path,fname)forfnameinos.listdir(path)]## data_files helpers ##################################################CUBES_DIR=join('share','cubicweb','cubes')defget_i18nfiles(cube):"""returns i18n files in a suitable format for distutils's data_files parameter """i18ndir=join(CUBES_DIR,cube,'i18n')potfiles=[(i18ndir,listdir_with_path('i18n',chain(no_version_control,nopyc_and_nodir)))]returnpotfilesdefget_viewsfiles(cube,recursive=False):"""returns views files in a suitable format for distutils's data_files parameter :param recursive: include views' subdirs recursively if True """ifrecursive:datafiles=[]fordirpath,dirnames,filenamesinos.walk('views'):filenames=[join(dirpath,fname)forfnameinfilenamesifnopyc_and_nodir(join(dirpath,fname))]dirpath=join(CUBES_DIR,cube,dirpath)datafiles.append((dirpath,filenames))returndatafileselse:viewsdir=join(CUBES_DIR,cube,'views')return[(viewsdir,listdir_with_path('views',filterfunc=nopyc_and_nodir))]defget_basepyfiles(cube):"""returns cube's base python scripts (tali18n.py, etc.) in a suitable format for distutils's data_files parameter """return[(join(CUBES_DIR,cube),[fnameforfnameinos.listdir('.')iffname.endswith('.py')andfname!='setup.py'])]defget_webdatafiles(cube):"""returns web's data files (css, png, js, etc.) in a suitable format for distutils's data_files parameter """return[(join(CUBES_DIR,cube,'data'),listdir_with_path('data',filterfunc=no_version_control))]defget_migrationfiles(cube):"""returns cube's migration scripts in a suitable format for distutils's data_files parameter """return[(join(CUBES_DIR,cube,'migration'),listdir_with_path('migration',no_version_control))]defget_schemafiles(cube):"""returns cube's schema files in a suitable format for distutils's data_files parameter """return[(join(CUBES_DIR,cube,'schema'),listdir_with_path('schema',no_version_control))]