From b752ea6fd6e27d3668af64a63a93452197bde4ff Mon Sep 17 00:00:00 2001 From: yomguy Date: Fri, 13 Apr 2012 15:45:15 +0200 Subject: [PATCH] add images, logos, crem_checker tool --- telemeta/htdocs/images/download.png | Bin 960 -> 939 bytes telemeta/htdocs/images/logo_mini_2.png | Bin 3768 -> 3855 bytes telemeta/htdocs/images/logo_only.png | Bin 0 -> 3743 bytes telemeta/htdocs/images/logo_only_22.png | Bin 0 -> 1442 bytes telemeta/htdocs/images/logo_only_22_cont.png | Bin 0 -> 1184 bytes telemeta/htdocs/images/logo_only_22_nb.png | Bin 0 -> 872 bytes telemeta/htdocs/images/logo_only_52.png | Bin 0 -> 3743 bytes telemeta/htdocs/images/share.png | Bin 0 -> 825 bytes telemeta/htdocs/images/zoom2.png | Bin 0 -> 494 bytes telemeta/views/base.py | 4 +- tools/scripts/crem_checker.py | 336 +++++++++++++++++++ 11 files changed, 339 insertions(+), 1 deletion(-) create mode 100644 telemeta/htdocs/images/logo_only.png create mode 100644 telemeta/htdocs/images/logo_only_22.png create mode 100644 telemeta/htdocs/images/logo_only_22_cont.png create mode 100644 telemeta/htdocs/images/logo_only_22_nb.png create mode 100644 telemeta/htdocs/images/logo_only_52.png create mode 100644 telemeta/htdocs/images/share.png create mode 100644 telemeta/htdocs/images/zoom2.png create mode 100755 tools/scripts/crem_checker.py diff --git a/telemeta/htdocs/images/download.png b/telemeta/htdocs/images/download.png index aecddfc2097e73e5988a6781365d9026752c5727..4f7a3c26151c07271972abed7b91f3e6a4f7cb83 100644 GIT binary patch delta 893 zcmV-@1A_d(2df7miBL{Q4GJ0x0000DNk~Le0000K0000N2nGNE01F*&qmdy!f7}EO z1PBQj&XSn`00S#YL_t(I%dM4PXj^3%#(!V3CgG&9C8f>g+6!$*?F_-SOz@&QTB)qK zh}B%I*b41grPsW^K&#OT;qh{MXk4uP{5?%4PH}o@oM21)e*@>I zMu{}0$y|G2&JK1G>1aYpjqnJJHe{~;v36$ctG0WW-@$wGJ^$H@A6Nbje|W6=Flen1 z9zpBL5aCGB)ntWyt?~1NRd2Y2|I-D+;V{W$QVb6d*8_Wo#+m!%8-zzt*>x~l*BX@4 zC`a?w2bTZ{g+gCvv)M$kSY&K$%*@Qph-PXW{rovz{ph>uU6n#B=_+HYFR(1@ zheDx{$Ye5DmPI0wU}R*(e-sJ@HxQuX%y}@NwMI+js=XwXN~LoR4GpUR#bS}Jt}gof z`fiU7z1mi)u&RdwrOh&#HI^~F3FUfE&$q2%WEEfxb8k)>S@qhkjT z(zzzyu+pq72U%GQl5dSu&PxufI-r!2E9Olet^SGak8opEQvlBY2P&mdN|9bazIVb= zx53U{MhBj}6oMyD+Zcmw*vl+v*OijP($TSYV5N&It~L0l)tH#P@AGE| zo6gj!O{ZV@!TbJr;qyGd@ArKke_@QFEPHdEug*8pefk(puLPg;mC{_hG)GI{MP7UR z4Atm`9UTK&YqV5PT3TtgFXaCL0Id{C%5Cokqn{5T$}4+t`zn829>*@M5o~HT+1b>R z+v966S|MC+j`t3W`Cl#(Y1KN9snfl^8giBD`bTC?1q)0iM4?np8Kp+tKHj~N3^Z7hOLqld_VnW1X zvHt|P$`3EUaf)|8`(bM@e@da1tSDo)fR<(bl*{Gf>2w;)vWUmy3=9mITrRga0O06} zzKWP`ud-K#Lg7?RP0a#8KA)$xwUw@}E=ER1%)Wr9V_GgPRYgo4$7$ADBc;S~9J;%^ znVg(tbad40378%mG~xChlq1oyvNjw)b&FHfEly$EHd0EAG1#_^f7Y5r zURz|*X~*O7VB0pve;9-i2qDl~Q!EzuHu>W(OX6l~iREme!ek{Sv%jr!cO%N2>rG0f z5{~2SsAoFtzMrk9#=F8>T_Jpy8-V-wHo0?ajo*XE(4{;8@~II%^J#kfVSu~3h2`s6 z-hXF<^@oyMH`ciBJBuuA9?Wr_S`6}mm12I*&-{{~Y(tD8i o)qq4IA$Gko4@)i%S%(hz2b$2_bTeYXU;qFB07*qoM6N<$g4O4{a{vGU diff --git a/telemeta/htdocs/images/logo_mini_2.png b/telemeta/htdocs/images/logo_mini_2.png index ff5e7b4a16cd538944fea9c5750372f6a908e1fb..15e1fb7db602f4cc1d0d282fc456d21158edabab 100644 GIT binary patch delta 3810 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 JPDHLkV1hk;Oy2+i literal 0 HcmV?d00001 diff --git a/telemeta/htdocs/images/logo_only_22.png b/telemeta/htdocs/images/logo_only_22.png new file mode 100644 index 0000000000000000000000000000000000000000..68cc1ccdd3bd00e553df7b9503a469a13f7c1d7d GIT binary patch literal 1442 zcmV;T1zq}yP)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L00k2O00k2PT06>500007bV*G`2iyb= z3X1kHEy12z@D<}a46p`d8nB6ge5A%aNVRPjb4wV-8aYW z_1MI}{%h{3f?pE?-(1qFF9Dz_tcMHDzx>pkm4D$;r%|1EllEd;qAKi*QL*t#FLy8R z6pgE+GQ2n}b&RZk$TPyRnDL!3peLR< z;#jRccG_NSi?}rQ?|S**YNYohCDcZO-c|+$U^Ld;y%y`FWzl$M&h3zejbKC7hY5=9 z$b41^`h`3$tg2!B>hPR}BV9{3pKNNXOYaYx`JLN|nO%uEe!T~OrB`j;zUx(Q>>7Wl z%e3W?znW_CU|{u|d);Zhs>T>=es9~fN`osFGmdyRHRhUf?9V%;J7d@1j`h}RVrJfp zIlA0)g3-SoHiP#kSrt1g9*_S)gzOa=$Pjx-z9}TRz)tp10a3?a~5C9+Z z9l~Ul$a%mk;0p8i9c3Gaxi(-cUfIW+7auCmoc!8{KY9L{Tki1Dw14Ta-t1T0)fh=s znAS#acAXhp)LK&4e98cN%mUE0BoKO}L|xh-q^ag+Qethq>vwi;x6Id19v!{#+*f8j z*P^-EiQ(hlI-fQVhe0n%l1J*YaX06% zvjDo3D#qPi=I*V`#)*nJ-f)UPZRO&VO)4)wbkmv9(t7FDepeSH!giXr4qcZst#P(c zlR;>U{vKCUlg&)WeJ$gZJ%E=jB3#J|-uYmly+>{Fg+GtO@s8(zWx`A9j)p5N& z71>Izq-(=hMzc5WaQv6+ss_gQnCY#LZ-kzeE}l0EM}=Ir1qC;@^p}#1M-731-btw3 zD#j*bV@0~<3{9Jy6)u*{eIELI w4}DfRSh^2s@)hvYduh7IY3bl+_bI0T0Sws;$%O-1qyPW_07*qoM6N<$f(~u7_W%F@ literal 0 HcmV?d00001 diff --git a/telemeta/htdocs/images/logo_only_22_cont.png b/telemeta/htdocs/images/logo_only_22_cont.png new file mode 100644 index 0000000000000000000000000000000000000000..fb002fa311ac6eba74748aa99934bb6471bdd72e GIT binary patch literal 1184 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 JPDHLkV1j^aOGW?y literal 0 HcmV?d00001 diff --git a/telemeta/htdocs/images/share.png b/telemeta/htdocs/images/share.png new file mode 100644 index 0000000000000000000000000000000000000000..02838a9d3c33bf8b5856ad5da0f08b00eaeb82af GIT binary patch literal 825 zcmV-91IGM`P)Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyb; z4JjTyIA-nu00Oy5L_t(I%e9riOCwtp$3OSpYz7io#U}1!2UqMYo+%W?LU0Z3M9i8*C*00fI<6*Oyla@gW4m{5zkw`@6|CbCi|N1e;pp;@@U;xK)qBy|D#s;}u4k;!5{rxzO zgVwr*@g&?BgSD2qxjFLrJUu-2#xlg(zCo}T9T z_?YeOZM4=%DM=&}jE#*^EEcKNYAB`H+S;OCuQNM4iI(%SAW(VYf&rIXyjPVPS!CxlBABXJ%%Gdc97m zREmsu9EY2m8Px#24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyb; z4JkK&ivEHC00C}EL_t(I%e|FNYQjJmhM$aKsDg_|0@h2k)Rp!Cf*Ws;mG{yscmum= zy+qcnh+2rCVSX}QCD@;|7GpmcX7j!eAMZCmUiZH1US40=Y&IyRIJcyfv|24XHy!-- zc1?OXFdPnPHk)U|ce@>r^EvD78c#~;`uzv$^((5X!y)DQ`3a$vsuT=RuV0~*!Uu59 zaf$jrxV4u3eov#(pjNA$3@P)89PXUM7{g>T!5Bl5BxtQk)3kJHtx1yPgD+@|1DdX{&*=$zY@n|$Ebh$5QeTn6G55w@+S$x(Vcl{&$ltF)||6h2XQx))& zGQVgntJUfx__6NSSaNX`MR=aaU@$0!3n7T22%zvC$KnC5*XtGMJj*hK5P!a*pM8tP z;$tjA2!s&)^}Q+cUH0LUQlhoS_x;MC#u%iOh#&}v;}~mfC17hTaU2r_0p8v1om(!K kY~Qw(ebB*mK)c=M9X+XZbdp', 'regex': r'^(BM)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})-[0-9]>[0-9]$'}, + { 'format': 'CY.aaaa.nnn', 'regex': r'^(CY)\.([0-9]{4})\.([0-9]{3})$'}, + { 'format': 'DI.aaaa.nnn.mmm', 'regex': r'^(DI)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})$'}, + { 'format': 'DI.aaaa.nnn.mmm/pp', 'regex': r'^(DI)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'DI.aaa.nnn.mmm', 'regex': r'^(DI)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})$'}, + { 'format': 'DI.aaa.nnn.mmm/pp', 'regex': r'^(DI)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})/[0-9]{2}$'}, + { 'format': 'DI.aaa.nnn.mmm-o/p', 'regex': r'^(DI)\.([0-9]{3})\.([0-9]{3})\.([0-9]{3})-[0-9]/[0-9]$'}, + { 'format': 'FANTOME 2*', 'regex': r'FANTOME 2\*$'}, + + ## yomguy + { 'format': 'BM.aaaa.nnn.mm', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})$'}, + #{ 'format': 'BM.aaaa.nnn.mmm/pp:ii-jj', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/([0-9]{2})\:([0-9]{2})\-([0-9]{2})$'}, + #{ 'format': 'BM.aaaa.nnn.mmm/ppp:ii-jj', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3})/([0-9]{2})\:([0-9]{2})\-([0-9]{2})$'}, + #{ 'format': 'BM.aaaa.nnn.mmm:ii-jj', 'regex': r'^(BM)\.([0-9]{4})\.([0-9]{3})\.([0-9]{3}):([0-9]{2})\-([0-9]{2})$'}, + ] + +ITEM_NEW_PATTERN = [ + { 'format': 'CNRSMH_I_aaaa_nnn_mmm', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{3})$'}, + { 'format': 'CNRSMH_I_aaaa_nnn_mmm_tt', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})$'}, + { 'format': 'CNRSMH_I_aaaa_nnn_mmm_tt_pp', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})_([0-9]{2})$'}, + { 'format': 'CNRSMH_E_aaaa_nnn_mmm_tt', 'regex': r'^(CNRSMH)_E_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})$'}, + { 'format': 'CNRSMH_E_aaaa_nnn_mmm_tt_pp', 'regex': r'^(CNRSMH)_E_([0-9]{4})_([0-9]{3})_([0-9]{3})_([0-9]{2})_([0-9]{2})$'}, + + # yomguy + { 'format': 'CNRSMH_I_aaaa_nnn_mm', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})_([0-9]{2})$'}, + ] + +COLLECTION_PATTERN = [ + { 'format': 'CNRSMH_I_aaaa_nnn', 'regex': r'^(CNRSMH)_I_([0-9]{4})_([0-9]{3})$'}, + { 'format': 'CNRSMH_E_aaaa_nnn_mmm', 'regex': r'^(CNRSMH)_E_([0-9]{4})_([0-9]{3})_([0-9]{3})$'}, + ] + + +def check_name(patterns, name): + match = False + for pattern in patterns: + match = re.match(pattern['regex'], name) + if match: + break + return match + + +class Logger: + + def __init__(self, file): + self.logger = logging.getLogger('myapp') + self.hdlr = logging.FileHandler(file) + self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s') + self.hdlr.setFormatter(self.formatter) + self.logger.addHandler(self.hdlr) + self.logger.setLevel(logging.INFO) + + def write_info(self, prefix, message): + self.logger.info(' ' + prefix + ' : ' + message.decode('utf8')) + + def write_error(self, prefix, message): + self.logger.error(prefix + ' : ' + message.decode('utf8')) + + +class CremCollection: + + def __init__(self, dir): + self.dir = dir + self.dir_name = self.dir.split(os.sep)[-1] + self.file_list = os.listdir(self.dir) + + def xls_list(self): + file_list = [] + for file in self.file_list: + ext = os.path.splitext(file)[1] + if ext == '.xls' or ext == '.XLS': + file_list.append(file) + return file_list + + def wav_list(self): + list = [] + for file in self.file_list: + ext = os.path.splitext(file)[1] + if ext == '.wav' or ext == '.WAV': + list.append(file) + return list + + +class CremCSV: + + def __init__(self, file): + self.csv_file = open(file, 'w') + self.csv = csv.writer(self.csv_file, delimiter=';') + + def close(self): + self.csv_file.close() + +class CremXLS: + + def __init__(self, file): + self.first_row = 8 + self.original_col = 0 + self.new_col = 1 + self.book = xlrd.open_workbook(file) + self.sheet = self.book.sheet_by_index(0) + self.original_refs = self.original_refs() + self.new_refs = self.new_refs() + #print len(self.new_refs) + while True: + if len(self.original_refs) == 0 or len(self.new_refs) == 0: + break + else: + if not 'CNRS' in self.new_refs[0].encode('utf8') \ + and not self.original_refs[0].encode('utf8') == '': + self.original_refs = self.original_refs[1:] + self.new_refs = self.new_refs[1:] + else: + break + + self.size = max(len(self.new_refs), len(self.original_refs)) + + def original_refs(self): + col = self.sheet.col(self.original_col) + list = [] + for cell in col[self.first_row:]: + if cell.ctype == 1: + list.append(cell.value) + return list + + def new_refs(self): + col = self.sheet.col(self.new_col) + list = [] + for cell in col[self.first_row:]: + if cell.ctype == 1: + list.append(cell.value) + return list + + +class CremItemFile: + + def __init__(self): + self.media = '' + + def set_media(self, media): + self.media = media + + def is_wav(self): + try: + audio_file = audiolab.Sndfile(self.media, 'r') + if audio_file.nframes and audio_file.nframes != 0: + return True + except IOError: + return False + + def properties(self): + self.frames = self.audio_file.get_nframes() + self.samplerate = self.audio_file.get_samplerate() + self.channels = self.audio_file.get_channels() + self.format = self.audio_file.get_file_format() + self.encoding = self.audio_file.get_encoding() + + +class CremCheck: + + def __init__(self, root_dir, log_file): + self.root_dir = root_dir + self.logger = Logger(log_file) + dir_list = os.listdir(self.root_dir) + list = [] + for dir in dir_list: + if not dir[0] == '.': + list.append(dir) + self.dir_list = list + + + def check_wav(self): + pass + + def check_new_refs(self): + for name in self.new_refs: + return check_name(ITEM_PATTERN, name) + + def check(self): + for dir in self.dir_list: + collection = CremCollection(self.root_dir + dir) + msg = '************************ ' + collection.dir_name + ' ******************************' + self.logger.write_info(collection.dir, msg[:70]) + xls_list = collection.xls_list() + wav_list = collection.wav_list() + + if not check_name(COLLECTION_PATTERN, dir): + self.logger.write_error(collection.dir, 'Le dossier de la collection est mal nommé -> SORTIE') + elif len(xls_list) == 0: + self.logger.write_error(collection.dir, 'PAS de fichier XLS dans le dossier collection -> SORTIE') + elif len(xls_list) > 1: + self.logger.write_error(collection.dir, 'Plusieurs fichiers XLS dans le dossier collection -> SORTIE') + + else: + xls = CremXLS(self.root_dir + os.sep + dir + os.sep + xls_list[0]) + self.logger.write_info(collection.dir, 'XLS : ' + xls_list[0] + ' - Feuille : ' + xls.sheet.name.encode('utf8')) + self.logger.write_info(collection.dir, 'Nombre d\'items détectés : ' + str(xls.size)) + csv_file = CremCSV(self.root_dir + dir + os.sep + collection.dir_name + '.csv') + + if len(wav_list) != xls.size: + self.logger.write_error(collection.dir, \ + 'Le nombre de références du fichier XLS (' + str(xls.size) + ') diffère du nombre de fichiers (' + str(len(wav_list)) + ')') + + temp_list = [] + item_file = CremItemFile() + + for i in range(0,xls.size): + error = False + + try: + item_old = xls.original_refs[i] + #self.logger.write_error(collection.dir, item_old) + except: + item_old = '' + msg = 'Ligne ' + str(i+xls.first_row+1) + ' : l\'ancienne référence d\'item est inexistante' + self.logger.write_error(collection.dir, msg) + error = True + continue + + try: + item = xls.new_refs[i] + #self.logger.write_error(collection.dir, item) + except: + item = '' + msg = 'Ligne ' + str(i+xls.first_row+1) + ' : la nouvelle référence d\'item est inexistante' + self.logger.write_error(collection.dir, msg) + error = True + continue + + if not item in temp_list: + temp_list.append(item) + else: + msg = 'Ligne ' + str(i+xls.first_row+1) + ' : la référence d\'item ' + item.encode('utf8') + ' est multiple' + self.logger.write_error(collection.dir, msg) + error = True + + #if not check_name(ITEM_OLD_PATTERN, item_old): + #msg = 'Ligne ' + str(i+xls.first_row+1) + ' : l\'ancienne référence d\'item ' + item_old.encode('utf8') + ' est mal formatée' + #self.logger.write_error(collection.dir, msg) + + if not check_name(ITEM_NEW_PATTERN, item): + msg = 'Ligne ' + str(i+xls.first_row+1) + ' : la nouvelle référence d\'item ' + item.encode('utf8') + ' est mal formatée' + self.logger.write_error(collection.dir, msg) + error = True + + if item[0:17] != collection.dir_name : + msg = 'Ligne ' + str(i+xls.first_row+1) + ' : la référence d\'item ' + item.encode('utf8') + ' ne correspond pas à celle de la collection' + self.logger.write_error(collection.dir, msg) + error = True + + name_wav = item.encode('utf8') + '.wav' + if not name_wav in wav_list: + self.logger.write_error(collection.dir, 'Le fichier ' + item.encode('utf8') + '.wav n\'existe pas') + else: + item_file.set_media(collection.dir + os.sep + name_wav) + if not item_file.is_wav(): + self.logger.write_error(collection.dir, 'Le fichier ' + item.encode('utf8') + '.wav n\'est pas valide') + error = True + + if not error: + csv_file.csv.writerow([xls.original_refs[i], xls.new_refs[i]]) + + csv_file.close() + + for filename in wav_list: + if not check_name(ITEM_NEW_PATTERN, os.path.splitext(filename)[0]): + self.logger.write_error(collection.dir, 'Le nom du fichier ' + str(os.path.splitext(filename)[0]) + ' est mal formaté') + + msg = '********************************************************************************' + self.logger.write_info(collection.dir, msg[:70]) + + +def main(): + c = CremCheck(sys.argv[-2], sys.argv[-1]) + c.check() + +if __name__ == '__main__': + main() + -- 2.39.5