Example #1
0
def load_tags_db():
    '''
    load user tags data from uploaded db file

    Args:
        file: io.BufferedRandom -> uploaded db file stream
    '''
    db_name = get_data_path('uploaded.db')
    try:
        db_upload = SqliteDatabase(db_name)
        db_upload.get_tables()
    except DatabaseError:
        raise DBError()
    db_is_old = False
    tag_data = []
    missed_fanhaos = []
    tag_file_added = 0
    sql_old = '''select item_rate.rate_value, item.fanhao
                from item_rate inner
                join item on item_rate.item_id = item.id
                where item_rate.rate_type=1 '''

    sql_new = '''select item_rate.rate_value, item.fanhao
                from item_rate inner
                join item on item_rate.item_id = item.fanhao
                where item_rate.rate_type=1 '''
    cursor = db_upload.execute_sql(sql_old)
    res = cursor.fetchone()
    if res:
        db_is_old = True
    if db_is_old:
        cursor = db_upload.execute_sql(sql_old)
    else:
        cursor = db_upload.execute_sql(sql_new)

    for row in cursor.fetchall():
        tag_data.append(row)
    with db_upload.atomic():
        for rate_value, fanhao in tag_data:
            item_rate = ItemRate.saveit(RATE_TYPE.USER_RATE, rate_value,
                                        fanhao)
            if item_rate:
                tag_file_added += 1
            if not Item.get_by_fanhao(fanhao):
                # add to get from spider
                missed_fanhaos.append(fanhao)
    logger.debug(tag_data)
    logger.info(f'added user tag rate: {tag_file_added}')
    logger.info(f'added fanhao to download: {len(missed_fanhaos)}')
    return tag_file_added, missed_fanhaos
Example #2
0
 def KfpMigrate(database: SqliteDatabase):
     tables = database.get_tables()
     migrator = SqliteMigrator(database)
     if "rpgcharacter" in tables:
         columns = database.get_columns("rpgcharacter")
         if not KfpMigrator.hasColumn("retired", columns):
             retiredField = BooleanField(default=False)
             migrate(
                 migrator.add_column("rpgcharacter", "retired", retiredField)
             )
         if not KfpMigrator.hasColumn("last_attack", columns):
             lastAttackField = DateTimeField(default=datetime.now() + timedelta(days=-1))
             migrate(
                 migrator.add_column("rpgcharacter", "last_attack", lastAttackField)
             )
     if "member" in tables:
         columns = database.get_columns("member")
         if not KfpMigrator.hasColumn("token", columns):
             tokenField = BigIntegerField(default=100)
             migrate(
                 migrator.add_column("member", 'token', tokenField)
             )
     if "channel" in tables:
         columns = database.get_columns("channel")
         if not KfpMigrator.hasColumn("channel_id", columns):
             guildIdField = IntegerField(default=-1)
             migrate(
                 migrator.add_column('channel', 'channel_guild_id', guildIdField),
                 migrator.rename_column('channel', 'channel_discord_id', 'channel_id'),
             )
     if "item" in tables:
         columns = database.get_columns("item")
         if KfpMigrator.hasColumn("hidden", columns):                
             migrate(
                 migrator.drop_column('item', 'hidden'),
             )
         if KfpMigrator.hasColumn("buff_type", columns):                
             migrate(
                 migrator.drop_column('item', 'buff_type'),
             )
         if KfpMigrator.hasColumn("buff_value", columns):                
             migrate(
                 migrator.drop_column('item', 'buff_value'),
             )
         if not KfpMigrator.hasColumn("type", columns):
             typeField = CharField(default=ItemType.NONE)
             migrate(
                 migrator.add_column('item', 'type', typeField),
             )
         if not KfpMigrator.hasColumn("buff", columns):
             buff = BuffField(default=Buff(BuffType.NONE, 0, -1))
             migrate(
                 migrator.add_column('item', 'buff', buff),
             )
         if not KfpMigrator.hasColumn("description", columns):
             description = CharField(default="")
             migrate(
                 migrator.add_column('item', 'description', description),
             )
     return True
Example #3
0
 def create_data_base(self):
     database = SqliteDatabase(self.db)
     # Create the database connection to a db file
     database.connect()
     tables = database.get_tables()
     # If there are no tables in the db then add this base data
     if len(tables) == 0:
         database.create_tables([Artist, Artwork])
         #add_test_data()
     database.close()
    def OnInit(self):

        wx.InitAllImageHandlers()

        F = wx.SplashScreen(
            wx.Bitmap("../icons/splash.bmp"), wx.SPLASH_TIMEOUT | wx.SPLASH_CENTER_ON_SCREEN, 2000, None, -1
        )

        frame_EcranPrincipal = MainFrame(None, title=u"Usine à GASE", droits=1)
        self.SetTopWindow(frame_EcranPrincipal)
        frame_EcranPrincipal.Show()

        try:
            database = SqliteDatabase("usineagase.sqlite", **{})
            tables_base = database.get_tables()
        except:
            msg = u"Erreur de connection à la base de données"
            dlg = wx.MessageDialog(None, msg, "ERREUR", wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return 0

        tables_obligatoires = [
            u"achats",
            u"adherents",
            u"adhesion_types",
            u"adhesions",
            u"cotisations",
            u"categories",
            u"credits",
            u"commandes",
            u"exercices",
            u"fournisseurs",
            u"lignes_achat",
            u"lignes_commande",
            u"parametres",
            u"produits",
            u"referents",
            u"tvas",
        ]

        if set(tables_obligatoires) - set(tables_base):
            msg = u"Erreur : la base de données n'est pas accessible ou n'est pas conforme."
            dlg = wx.MessageDialog(None, msg, "ERREUR", wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return 0
        else:
            # query = session.query(model.Exercice).filter(model.Exercice.DateDebut<datetime.today()).filter(model.Exercice.DateFin>datetime.today())
            # Exercice.select().where(date_debut<datetime.today())

            # if query.count() == 1:
            #    EXERCICE_EN_COURS = query.first()

            return 1
Example #5
0
    def OnInit(self):

        wx.InitAllImageHandlers()

        F = wx.SplashScreen(wx.Bitmap("../icons/splash.bmp"),
                            wx.SPLASH_TIMEOUT | wx.SPLASH_CENTER_ON_SCREEN,
                            2000, None, -1)

        frame_EcranPrincipal = MainFrame(None,
                                         title=u"Usine à GASE",
                                         droits=1)
        self.SetTopWindow(frame_EcranPrincipal)
        frame_EcranPrincipal.Show()

        try:
            database = SqliteDatabase('usineagase.sqlite', **{})
            tables_base = database.get_tables()
        except:
            msg = u"Erreur de connection à la base de données"
            dlg = wx.MessageDialog(None, msg, "ERREUR",
                                   wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return 0

        tables_obligatoires = [
            u"achats", u"adherents", u"adhesion_types", u"adhesions",
            u"cotisations", u"categories", u"credits", u"commandes",
            u"exercices", u"fournisseurs", u"lignes_achat", u"lignes_commande",
            u"parametres", u"produits", u"referents", u"tvas"
        ]

        if set(tables_obligatoires) - set(tables_base):
            msg = u"Erreur : la base de données n'est pas accessible ou n'est pas conforme."
            dlg = wx.MessageDialog(None, msg, "ERREUR",
                                   wx.OK | wx.ICON_EXCLAMATION)
            dlg.ShowModal()
            dlg.Destroy()
            return 0
        else:
            #query = session.query(model.Exercice).filter(model.Exercice.DateDebut<datetime.today()).filter(model.Exercice.DateFin>datetime.today())
            #Exercice.select().where(date_debut<datetime.today())

            #if query.count() == 1:
            #    EXERCICE_EN_COURS = query.first()

            return 1
def test_initialize() -> None:
    test_db = SqliteDatabase(":memory:")
    with test_db.bind_ctx(MODELS):
        initialize(test_db)
        assert test_db.get_tables() == [t._meta.table_name for t in MODELS]
Example #7
0
    #         self.cast = cast and self.tag.sub("",str(cast)) or ""

    def __str__(self):
        #         return  self.url + " " +self.title
        return self.title + " " + self.url + " " + self.number + " " + self.date + " " + self.length + " " + self.director + " " + self.maker + " " + self.label + " " + self.review + " " + str(
            self.genres) + " " + str(self.cast)

    def __eq__(self, other):
        if isinstance(other, Video):
            return self.title == other.title
        else:
            return False

    def __ne__(self, other):
        return not self.__eq__(other)

    def __hash__(self):
        return hash(self.title) + hash(self.title)


db.connect()
tables = db.get_tables()
if 'video' not in tables:
    db.create_tables([
        Video,
    ])
#     Video.create(title = "_title", url = "_url", number = "_number", date = "_date", length = "_len", director = "_director", maker = "_maker", label = "_label", review = "_review", genres = "_genres", cast = "_cast")
if 'url' not in tables:
    db.create_tables([
        Url,
    ])
Example #8
0
    class Meta:
        database = db


TABLE_NAMES = {
    'qqnews_live': QQNEWS_LIVE,
    'qqnews_daily_summary': QQNEWS_DAILY_SUMMARY,
    'qqnews_area': QQNEWS_AREA,
    'qqnews_news': QQNEWS_NEWS
}

############# Connect to db and create table if doesn't exist ###############

# Connect to DB, if table not exist, create it.
db.connect()
create_table = list(set(TABLE_NAMES.keys()) - set(db.get_tables()))

if create_table:
    print('Table not exist.. create it')
    tables = map(lambda x: TABLE_NAMES[x], create_table)
    db.create_tables(tables)
    print('Created table :', create_table)

############ CONNECT TO QQ NEWS TO GET DATA #####################

# http request from qq news
print('Scraping on :', datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

for key, url in URLS.items():
    print('requesting: ', url)
    resp = requests.get(url)
Example #9
0
            where(self._meta.columns['email'] == email).execute()

    def change_password(self, password: str, email: str):
        self.set_password(password)
        self.update(password=self.password).\
            where(self._meta.columns['email'] == email).execute()

    @property
    def check_exists_admin_user(self) -> bool:
        query = self.select().where(
            self._meta.columns['username'] == 'admin',
            self._meta.columns['email'] == ADMIN_DEFAULT_EMAIL,
            self._meta.columns['active'] == 1,
            self._meta.columns['admin'] == 1)
        return True if [row for row in query] else False


db.connect()
db.create_tables([
    Date, VisitsCountByHour, Cities, RegionsMap, Devices, TrafficSource,
    PageViewsByDevices, VisitsCountByTrafficSource
])

cases_of_create_default_models = [HoursInDay, Users]
for default_model in cases_of_create_default_models:
    if default_model._meta.table_name not in db.get_tables():
        db.create_tables([default_model])
        default_model().insert_default_values()

db.close()
Example #10
0
APP_DIR = get_app_dir()
if not APP_DIR.exists():
    os.mkdir(APP_DIR)

DB = SqliteDatabase(str(APP_DIR / "health.db"))


def current_time():
    now = datetime.now().time()
    return time(hour=now.hour, minute=now.minute)


def current_date():
    return datetime.now().date()


class BaseModel(Model):
    class Meta:
        database = DB


class Food(BaseModel):
    name = CharField(max_length=20)
    time = TimeField(default=current_time)
    date = DateField(default=current_date)


tables = {table.__name__.lower(): table for table in [Food]}
if not set(DB.get_tables()).issuperset(tables.keys()):
    DB.create_tables(tables.values())