def createdbcatalog(self,dbout):
     if self.discoverd:
         con=sqlite3.connect(dbout)        
         con.enable_load_extension(True)
         cur = con.cursor()
         cur.execute('SELECT load_extension("mod_spatialite")');
         cur.execute('SELECT InitSpatialMetadata();')
         cur.execute(self._createtablecatalog())
         con.commit()
         con.close()
         for layer in self.layers:
             url = layer['url']
             name = layer['name']
             #name = unicode(name.decode(self.encoding))
             #name = djenc.force_unicode(name)
             name = futureenc(name)
             querable = layer['querable']
             xmin = layer['properties']['extent']['xmin']
             ymin = layer['properties']['extent']['ymin']
             xmax = layer['properties']['extent']['xmax']
             ymax = layer['properties']['extent']['ymax']
             srid = layer['properties']['extent']['spatialReference']['wkid']
             description = layer['properties']['description']
             #description = UnicodeDammit(description).unicode
             #description = unicode(description.decode(self.encoding))
             #description = djenc.force_unicode(description)
             description = futureenc(description)
             typelayer = layer['properties']['type']
             geometrytype = layer['properties']['geometryType'].replace('esriGeometry','')
             self._insertdatacatalog(dbout,name,url,querable,xmin,ymin,xmax,ymax,srid,description,typelayer,geometrytype)
    def writedb(self, people, outdb):
        if os.path.isfile(outdb):
            os.remove(outdb)

        engine = create_engine("sqlite:///" + outdb)
        self.Base.metadata.create_all(engine)
        self.Base.metadata.bind = engine
        DBSession = sessionmaker(bind=engine)
        session = DBSession()

        for p in people:
            keys = (
                "bio",
                "name",
                "lastname",
                "born_date",
                "born_place",
                "death_date",
                "death_place",
                "livedintrentino",
                "bornintrentino",
                "job",
                "street",
            )
            data = {}
            for k in keys:
                data[k] = ""
                try:
                    data[k] = futureenc(p[k])
                except KeyError:
                    data[k] = ""

            bio = data["bio"]
            name = data["name"]
            lastname = data["lastname"]
            born_date = data["born_date"]
            born_place = data["born_place"]
            death_date = data["death_date"]
            death_place = data["death_place"]
            livedintrentino = data["livedintrentino"]
            bornintrentino = data["bornintrentino"]
            job = data["job"]
            street = data["street"]

            new_person = self.Person(
                bio=bio,
                name=name,
                lastname=lastname,
                born_date=born_date,
                born_place=born_place,
                death_date=death_date,
                death_place=death_place,
                livedintrentino=livedintrentino,
                bornintrentino=bornintrentino,
                job=job,
                street=street,
            )

            session.add(new_person)
            session.commit()
    def getbiodata(self, borndata, what):
        data = {}
        date = ""
        place = ""
        row = 0
        fr = 0

        for b in borndata:
            b = futureenc(b)
            if b.find(what) > -1:
                for counter in range(len(b), 0, -1):
                    d = b[counter - 1:counter]
                    if d == " ":
                        fr = row
                        break
                    else:
                        date += d
            row += 1

        date = date[::-1]
        if date != "":
            if (date[0].isdigit()):
                place = borndata[fr].replace(date,
                                             "").replace(what + " ",
                                                         "").replace(",", "")

            else:
                date = ""
        data["date"] = date
        data["place"] = place
        return data
    def getbiodata(self, borndata, what):
        data = {}
        date = ""
        place = ""
        row = 0
        fr = 0

        for b in borndata:
            b = futureenc(b)
            if b.find(what) > -1:
                for counter in range(len(b), 0, -1):
                    d = b[counter - 1 : counter]
                    if d == " ":
                        fr = row
                        break
                    else:
                        date += d
            row += 1

        date = date[::-1]
        if date != "":
            if date[0].isdigit():
                place = borndata[fr].replace(date, "").replace(what + " ", "").replace(",", "")

            else:
                date = ""
        data["date"] = date
        data["place"] = place
        return data
    def writedb(self, people, outdb):
        if (os.path.isfile(outdb)):
            os.remove(outdb)

        engine = create_engine('sqlite:///' + outdb)
        self.Base.metadata.create_all(engine)
        self.Base.metadata.bind = engine
        DBSession = sessionmaker(bind=engine)
        session = DBSession()

        for p in people:
            keys = ("bio", "name", "lastname", "born_date", "born_place",
                    "death_date", "death_place", "livedintrentino",
                    "bornintrentino", "job", "street")
            data = {}
            for k in keys:
                data[k] = ""
                try:
                    data[k] = futureenc(p[k])
                except KeyError:
                    data[k] = ""

            bio = data["bio"]
            name = data["name"]
            lastname = data["lastname"]
            born_date = data["born_date"]
            born_place = data["born_place"]
            death_date = data["death_date"]
            death_place = data["death_place"]
            livedintrentino = data["livedintrentino"]
            bornintrentino = data["bornintrentino"]
            job = data["job"]
            street = data["street"]


            new_person = self.Person(bio=bio,name=name,lastname=lastname, \
                                born_date=born_date,born_place=born_place, \
                                death_date=death_date,death_place=death_place, \
                                livedintrentino=livedintrentino, \
                                bornintrentino=bornintrentino,\
                                job=job,street=street)

            session.add(new_person)
            session.commit()