def handle(self, *args, **options): f = open(args[0],'r') parent = Location.objects.get(slug='gipuzkoa') #fix this, location's parent must be described in data file kont = 1 for pl in f.readlines()[2:]: (titulo, slug, ent_origen, cod_origen, cat, direc1, direc2, cp, pob, desc, tel, fax, url, email, foto, lat, lon, foto_x, foto_x_tit, foto_x_alt, acc_fis, acc_vis, acc_aud, acc_int, acc_org, tipo_biblio, ano_inicio, institution, institution_type, open_times, access_type, center_type, tem_general, tem_infantil, tem_religioso, ser_consulta, ser_reprografia, ser_hemeroteca, ser_wifi, ser_selectiva, ser_bol_novedades, ser_prestamo, ser_prestamo_inter, ser_prestamo_domic, ser_infor_bibliografica, ser_internet_usuarios, ser_acceso_bbdd) = pl.split('\t')[0:47] cat = 'biblioteka' cat_obj = Category.objects.get(slug=cat) cod_origen = "bib%04d" % (kont) location_slug = slugify(pob) location = Location.objects.filter(slug__startswith=location_slug) if location: loc_obj = location[0] else: print 'ERROREA', location_slug break place = Place() place.slug = slugify("%s_%s" % ('bib',pob), instance=place) print kont, titulo, place.slug, loc_obj.name, institution, self.IDICT[institution_type] place.name = titulo.decode('utf-8') place.category = cat_obj place.description = desc.decode('utf-8') place.address1 = direc1 place.address2 = direc2 if len(cp)<5: cp = "0%s" % cp place.postalcode = cp place.city = loc_obj place.description = desc place.source = ent_origen place.source_id = cod_origen if lat: place.lat = lat if lon: place.lon = lon place.tlf = tel place.fax = fax place.url = url place.email = email place.save() access = Access() access.aphysic = self.ADICT[acc_fis.lower().strip()] access.avisual = self.ADICT[acc_vis.lower().strip()] access.aaudio = self.ADICT[acc_aud.lower().strip()] access.aintelec = self.ADICT[acc_int.lower().strip()] access.aorganic = self.ADICT[acc_org.lower().strip()] access.place = place access.save() biblio = Biblio() biblio.btype = self.BDICT[tipo_biblio.strip()] ano_conv = ano_inicio.strip().replace('.','') try: biblio.start_year = int(ano_conv) except: biblio.start_year = 0 biblio.institution = institution_type biblio.institution_type = self.IDICT[institution_type.strip()] biblio.open_times = open_times biblio.access_type = self.ACDICT[access_type.strip()] biblio.center_type = self.CDICT[center_type.strip()] biblio.place = place biblio.save() bibtopics = {'general':tem_general, 'infantil':tem_infantil, 'religioso':tem_religioso} for k,v in bibtopics.items(): if v: bibtopic = Bibtopic.objects.filter(name=k) if bibtopic: bibtopic_obj = bibtopic[0] else: print 'ERROR: no bibtopic called %s' % k bibtopic_obj = Bibtopic() bibtopic_obj.name = k bibtopic_obj.save() biblio.topics.add(bibtopic_obj) bibservices = {'consulta':ser_consulta, 'reprografia':ser_reprografia, 'hemeroteca':ser_hemeroteca, 'wifi':ser_wifi, 'selectiva':ser_selectiva, 'bol_novedades':ser_bol_novedades, 'prestamo':ser_prestamo, 'prestamo_inter':ser_prestamo_inter, 'prestamo_domic':ser_prestamo_domic, 'infor_bibliografica':ser_infor_bibliografica, 'internet_usuarios':ser_internet_usuarios, 'acceso_bbdd':ser_acceso_bbdd } for k,v in bibservices.items(): if v: bibservice = Bibservice.objects.filter(name=k) if bibservice: bibservice_obj = bibservice[0] else: print 'ERROR: no bibservice called %s' % k bibservice_obj = Bibservice() bibservice_obj.name = k bibservice_obj.save() biblio.services.add(bibservice_obj) biblio.save() kont += 1
def handle(self, *args, **options): saving = len(args)>1 and args[1] or 0 filename = args[0] full_path = "%s/%s" % (IMPORT_FILES_FOLDER,filename) f = xlrd.open_workbook(full_path) sh = f.sheet_by_index(0) kont = 1 now = datetime.now() print 'NOW!:' print now cat = 'library' cat_obj = Category.objects.get(slug=cat) for rownum in range(sh.nrows)[1:]: fields = sh.row_values(rownum) if len(fields)!=51: print 'Tenemos mas o menos de 51 campos' n = 1 for field in fields: print n, field n = n+1 break else: (cod_origen, titulo, slug, ent_origen, cod_origen_vacio, cat, direc1, direc2, cp, pob, city, desc, tel, fax, url, email, foto, lat, lon, foto_x, foto_x_tit, foto_x_alt, acc_fis, acc_vis, acc_aud, acc_int, acc_org, tipo_biblio, ano_inicio, instit, tipo_inst, open_times_eu, open_times_es, open_times_s_eu, open_times_s_es, tipo_acceso, tipo_centro, tematica_general, ser_consulta, ser_reprografia, ser_hemeroteca, ser_wifi, ser_selectiva, ser_bol_novedades, ser_prestamo, ser_prestamo_inter, ser_prestamo_domic, ser_infor_bibliografica, ser_internet_usuarios, ser_acceso_bbdd, latlon) = fields[:51] # Set fields because not used anymore loc = '' tipo_biblio = '' access_type = '' center_type = '' tem_general = '' institution = '' institution_type = '' cod_origen = "%d" % int(cod_origen) ent_origen = 'ejgv_biblio' author = User.objects.get(username=ent_origen) location_slug = slugify(city or pob) location = Location.objects.filter(slug__startswith=location_slug) if location: loc_obj = location[0] else: print 'ERROREA', location_slug break places = Place.objects.filter(source_id=cod_origen, source=ent_origen) if len(places)>0: place = places[0] print 'EDIT:', place.slug, place.source, place.source_id else: place = Place() place.slug = slugify(titulo, instance=place) print 'NEW:', slug, cod_origen place.name = titulo place.category = cat_obj place.description_es = desc place.description_eu = desc place.description_en = desc place.address1 = direc1 place.address2 = direc2 if len(cp)<5: cp = "0%s" % cp place.postalcode = cp.strip() place.city = loc_obj place.locality = loc place.source = ent_origen place.source_id = cod_origen place.author = author try: (lat,lon) = latlon.split(',') except: print 'LATLONERROR', place.slug, latlon pass if lat: place.lat = lat if lon: place.lon = lon print place.lat, place.lon place.tlf = tel place.fax = fax place.url = url place.email = email place.modified_date = now # ACCESS place.aphysic = self.ADICT[acc_fis.lower().strip()] place.avisual = self.ADICT[acc_vis.lower().strip()] place.aaudio = self.ADICT[acc_aud.lower().strip()] place.aintelec = self.ADICT[acc_int.lower().strip()] place.aorganic = self.ADICT[acc_org.lower().strip()] #get photo URL: if foto: startx = foto.find('img src=') endx = foto.find('"', startx+10) foto_x = foto[startx+9:endx] if saving: place.save() #Load foto_x print foto_x t_place = place has_point = foto_x.split('/')[-1].find('.') if not foto_x_tit: foto_x_tit = place.name[:] if has_point>-1: if saving: image = loadUrlImage(foto_x, t_place, foto_x_tit, 'jpg', ) #BIBLIO try: biblio = place.biblio.all()[0] except: biblio = Biblio() biblio.place = place biblio.btype = self.BDICT[tipo_biblio.strip()] if ano_inicio: ano_conv = str(int(ano_inicio)).strip().replace('.','') else: ano_conv = '' try: biblio.start_year = int(ano_conv) except: biblio.start_year = 0 biblio.institution = institution_type biblio.institution_type = self.IDICT[institution_type.strip()] open_times = "%s %s" % (open_times_eu, open_times_es) biblio.open_times = open_times[:250] biblio.access_type = self.ACDICT[access_type.strip()] biblio.center_type = self.CDICT[center_type.strip()] if saving: biblio.save() tem_infantil = '' tem_religioso = '' bibtopics = {'general':'1', 'infantil':tem_infantil, 'religioso':tem_religioso} for k,v in bibtopics.items(): if v: bibtopic = Bibtopic.objects.filter(name=k) if bibtopic: bibtopic_obj = bibtopic[0] else: print 'ERROR: no bibtopic called %s' % k bibtopic_obj = Bibtopic() bibtopic_obj.name = k if saving: bibtopic_obj.save() biblio.topics.add(bibtopic_obj) bibservices = {'consulta':ser_consulta, 'reprografia':ser_reprografia, 'hemeroteca':ser_hemeroteca, 'wifi':ser_wifi, 'selectiva':ser_selectiva, 'bol_novedades':ser_bol_novedades, 'prestamo':ser_prestamo, 'prestamo_inter':ser_prestamo_inter, 'prestamo_domic':ser_prestamo_domic, 'infor_bibliografica':ser_infor_bibliografica, 'internet_usuarios':ser_internet_usuarios, 'acceso_bbdd':ser_acceso_bbdd } for k,v in bibservices.items(): if v: bibservice = Bibservice.objects.filter(name=k) if bibservice: bibservice_obj = bibservice[0] else: print 'ERROR: no bibservice called %s' % k bibservice_obj = Bibservice() bibservice_obj.name = k if saving: bibservice_obj.save() biblio.services.add(bibservice_obj) if saving: biblio.save() kont += 1
def handle(self, *args, **options): saving = len(args) > 1 and args[1] or 0 filename = args[0] full_path = "%s/%s" % (IMPORT_FILES_FOLDER, filename) f = xlrd.open_workbook(full_path) sh = f.sheet_by_index(0) kont = 1 now = datetime.now() print 'NOW!:' print now cat = 'library' cat_obj = Category.objects.get(slug=cat) for rownum in range(sh.nrows)[1:]: fields = sh.row_values(rownum) if len(fields) != 51: print 'Tenemos mas o menos de 51 campos' n = 1 for field in fields: print n, field n = n + 1 break else: (cod_origen, titulo, slug, ent_origen, cod_origen_vacio, cat, direc1, direc2, cp, pob, city, desc, tel, fax, url, email, foto, lat, lon, foto_x, foto_x_tit, foto_x_alt, acc_fis, acc_vis, acc_aud, acc_int, acc_org, tipo_biblio, ano_inicio, instit, tipo_inst, open_times_eu, open_times_es, open_times_s_eu, open_times_s_es, tipo_acceso, tipo_centro, tematica_general, ser_consulta, ser_reprografia, ser_hemeroteca, ser_wifi, ser_selectiva, ser_bol_novedades, ser_prestamo, ser_prestamo_inter, ser_prestamo_domic, ser_infor_bibliografica, ser_internet_usuarios, ser_acceso_bbdd, latlon) = fields[:51] # Set fields because not used anymore loc = '' tipo_biblio = '' access_type = '' center_type = '' tem_general = '' institution = '' institution_type = '' cod_origen = "%d" % int(cod_origen) ent_origen = 'ejgv_biblio' author = User.objects.get(username=ent_origen) location_slug = slugify(city or pob) location = Location.objects.filter(slug__startswith=location_slug) if location: loc_obj = location[0] else: print 'ERROREA', location_slug break places = Place.objects.filter(source_id=cod_origen, source=ent_origen) if len(places) > 0: place = places[0] print 'EDIT:', place.slug, place.source, place.source_id else: place = Place() place.slug = slugify(titulo, instance=place) print 'NEW:', slug, cod_origen place.name = titulo place.category = cat_obj place.description_es = desc place.description_eu = desc place.description_en = desc place.address1 = direc1 place.address2 = direc2 if len(cp) < 5: cp = "0%s" % cp place.postalcode = cp.strip() place.city = loc_obj place.locality = loc place.source = ent_origen place.source_id = cod_origen place.author = author try: (lat, lon) = latlon.split(',') except: print 'LATLONERROR', place.slug, latlon pass if lat: place.lat = lat if lon: place.lon = lon print place.lat, place.lon place.tlf = tel place.fax = fax place.url = url place.email = email place.modified_date = now # ACCESS place.aphysic = self.ADICT[acc_fis.lower().strip()] place.avisual = self.ADICT[acc_vis.lower().strip()] place.aaudio = self.ADICT[acc_aud.lower().strip()] place.aintelec = self.ADICT[acc_int.lower().strip()] place.aorganic = self.ADICT[acc_org.lower().strip()] #get photo URL: if foto: startx = foto.find('img src=') endx = foto.find('"', startx + 10) foto_x = foto[startx + 9:endx] if saving: place.save() #Load foto_x print foto_x t_place = place has_point = foto_x.split('/')[-1].find('.') if not foto_x_tit: foto_x_tit = place.name[:] if has_point > -1: if saving: image = loadUrlImage( foto_x, t_place, foto_x_tit, 'jpg', ) #BIBLIO try: biblio = place.biblio.all()[0] except: biblio = Biblio() biblio.place = place biblio.btype = self.BDICT[tipo_biblio.strip()] if ano_inicio: ano_conv = str(int(ano_inicio)).strip().replace('.', '') else: ano_conv = '' try: biblio.start_year = int(ano_conv) except: biblio.start_year = 0 biblio.institution = institution_type biblio.institution_type = self.IDICT[institution_type.strip()] open_times = "%s %s" % (open_times_eu, open_times_es) biblio.open_times = open_times[:250] biblio.access_type = self.ACDICT[access_type.strip()] biblio.center_type = self.CDICT[center_type.strip()] if saving: biblio.save() tem_infantil = '' tem_religioso = '' bibtopics = { 'general': '1', 'infantil': tem_infantil, 'religioso': tem_religioso } for k, v in bibtopics.items(): if v: bibtopic = Bibtopic.objects.filter(name=k) if bibtopic: bibtopic_obj = bibtopic[0] else: print 'ERROR: no bibtopic called %s' % k bibtopic_obj = Bibtopic() bibtopic_obj.name = k if saving: bibtopic_obj.save() biblio.topics.add(bibtopic_obj) bibservices = { 'consulta': ser_consulta, 'reprografia': ser_reprografia, 'hemeroteca': ser_hemeroteca, 'wifi': ser_wifi, 'selectiva': ser_selectiva, 'bol_novedades': ser_bol_novedades, 'prestamo': ser_prestamo, 'prestamo_inter': ser_prestamo_inter, 'prestamo_domic': ser_prestamo_domic, 'infor_bibliografica': ser_infor_bibliografica, 'internet_usuarios': ser_internet_usuarios, 'acceso_bbdd': ser_acceso_bbdd } for k, v in bibservices.items(): if v: bibservice = Bibservice.objects.filter(name=k) if bibservice: bibservice_obj = bibservice[0] else: print 'ERROR: no bibservice called %s' % k bibservice_obj = Bibservice() bibservice_obj.name = k if saving: bibservice_obj.save() biblio.services.add(bibservice_obj) if saving: biblio.save() kont += 1