def handle(self, *args, **options): f = xlrd.open_workbook(args[0]) sh = f.sheet_by_index(0) kont = 1 ercnt =1 CDICT = {'legutiano':'legutio', 'ribera-alta':'erriberagoitia', } uloc = {} for rownum in range(sh.nrows)[1:]: fields = sh.row_values(rownum) if len(fields)!=27: print 'Tenemos mas o menos de 27 campos' n = 1 for field in fields: print n, field n = n+1 break else: (titulo, denom, slug, ent_origen, cod_origen, rcat, direc1, direc2, cp, pob1, pob, loc, desc, lat, lon, tel, fax, url, foto_x, foto_x_tit, foto_x_alt, itinerarios, acc_fis, acc_vis, acc_aud, acc_int, acc_org ) = fields[:27] place = Place() place.name = titulo place.slug = slugify(slug.split('/')[2], instance=place) ent_origen = 'ejgv-tur-rest' place.source = ent_origen place.source_id = cod_origen cat = slugify(rcat) cat = self.RDICT.get(cat,cat) rel_cat = Category.objects.filter(slug=cat) if len(rel_cat)>0: cat_obj = Category.objects.get(slug=cat) else: parentcat = Category.objects.get(slug='restaurant') cat_obj = Category(slug=cat,name=cat,parent=parentcat) cat_obj.save() place.category = cat_obj place.address1 = direc1 place.address2 = direc2 if len(cp)<5: cp = "0%s" % cp place.postalcode = cp.strip() location_slug = slugify(pob) if CDICT.has_key(location_slug): location_slug = CDICT[location_slug] location = Location.objects.filter(slug__startswith=location_slug) if location: loc_obj = location[0] else: print ercnt,'ERROREA TOKI EZEZAGUNA', titulo, cp, pob, kont uloc[pob]=uloc.get(pob,0)+1 ercnt = ercnt+1 break place.city = loc_obj place.locality = loc place.description = desc if lat: place.lat = lat if lon: place.lon = lon place.tlf = tel[:30] place.fax = fax[:15] place.url = url place.email = '' try: print kont, titulo, place.slug, loc_obj.name, place.cp except: print place.slug print "##%s##" % tel, len(tel) 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() foto_x = foto_x.replace('http://turismo.euskadi.net/contenidos/a_alojamiento/ ','http://turismo.euskadi.net/x65-12375/es/contenidos/a_alojamiento/') print foto_x t_place = place #Place.objects.get(slug='bib-ikaztegieta') has_point = foto_x.split('/')[-1].find('.') if has_point>-1: image = loadUrlImage(foto_x, t_place, foto_x_tit, 'jpg', ) kont += 1 print uloc
def handle(self, *args, **options): saving = len(args)>1 and args[1] or 0 line = len(args)>2 and int(args[2]) or 1 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 ercnt =1 CDICT = {'legutiano':'legutio', 'ribera-alta':'erriberagoitia', } uloc = {} new_rest = 0 for rownum in range(sh.nrows)[line:]: fields = sh.row_values(rownum) if len(fields)!=26: print 'Tenemos mas o menos de 25 campos' n = 1 for field in fields: print n, field n = n+1 break else: (titulo, slug, ent_origen, cod_origen, rcat, direc1, direc2, cp, pob, loc, desc, lat, lon, tel, fax, url, foto_x, foto_x_tit, foto_x_alt, itinerarios, acc_fis, acc_vis, acc_aud, acc_int, acc_org, title_code ) = fields[:26] print '############################' print kont, titulo pattern = re.compile("\s+\d+") translation = False ent_origen = 'ejgv-tur-rest' places = Place.objects.filter(source_id=cod_origen, source=ent_origen) if len(places)<1: places = Place.objects.filter(source_id=str(int(cod_origen)), source=ent_origen) if len(places)>0: place = places[0] if '_eu' in filename and place: place.description_eu = strip_tags(desc) translation = True elif '_en' in filename and place: place.description_en = strip_tags(desc) translation = True elif '_eu' in filename or '_en' in filename: translation = True if translation: place.save() continue #GET USER!!!! author = User.objects.get(username=ent_origen) location_slug = slugify(pob) if CDICT.has_key(location_slug): location_slug = CDICT[location_slug] location = Location.objects.filter(slug__startswith=location_slug) if location: loc_obj = location[0] else: print ercnt,'WARNING: New place', titulo, cp, pob, kont uloc[pob]=uloc.get(pob,0)+1 ercnt = ercnt+1 break if len(places)>0: print 'EDIT:', slug, cod_origen place = places[0] else: print 'NEW:', slug, cod_origen place = Place() place.slug = slugify(slug.split('/')[2],instance=place) if rcat: cat = slugify(rcat) cat = self.RDICT.get(cat, cat) rel_cat = Category.objects.filter(slug=cat) if len(rel_cat)>0: cat_obj = Category.objects.get(slug=cat) else: print 'WARNING: Missing cat:', cat parentcat = Category.objects.get(slug='sleep') cat_obj = Category(slug=cat, name=cat, name_es=cat, name_eu=cat, name_en=cat, parent=parentcat) if saving: cat_obj.save() else: cat_obj = Category.objects.get(slug='sleep') place.category = cat_obj new_rest += 1 if title_code: place.name = "%s %s" % (titulo, title_code) else: place.name = titulo place.description_es = strip_tags(desc) repl = pattern.search(direc1) if "," not in direc1 and "km" not in direc1 and repl: repl = repl.group() direc1 = direc1.replace(repl, ",%s" % repl).replace(" ", " ").replace(" ,", ",") place.address1 = direc1.replace(u" NÂș", "") place.address2 = direc2 if len(cp) < 5: cp = "0%s" % cp place.postalcode = cp.strip() try: place.city = loc_obj except: pass place.locality = pob != loc and loc or "" place.description = strip_tags(desc) place.source = ent_origen place.source_id = "%d" % int(cod_origen) if lat: place.lat = str(lat) if lon: place.lon = str(lon) #SET USER!!!!! place.author = author place.tlf = ''.join(tel[:30].split()) place.fax = ''.join(fax[:15].split()) place.url = url place.url_es = url place.url_eu = url place.url_en = url place.email = '' if saving: place.save() accesses = Access.objects.filter(place=place) if len(accesses)>0: access = accesses[0] else: access = Access() access.place = place 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()] if saving: access.save() #print foto_x t_place = place has_point = foto_x.split('/')[-1].find('.') if has_point>-1: if saving: image = loadUrlImage(foto_x, t_place, foto_x_tit, 'jpg', ) kont += 1 print "New restaurants: %d" % (new_rest) print uloc