Exemplo n.º 1
0
    def get_gallery_items():
        """
        Get list of items from the gallery

        :return: list of item of the gallery. Each item is a dict with 7 keys:

            * `name` : name of the job
            * `id_job` : id of the job
            * `picture` : illustrating picture filename (located in gallery folder of the data folder)
            * `query` : query specie name
            * `target` : target specie name
            * `mem_peak` : max memory used for the run (human readable)
            * `time_elapsed` : time elapsed for the run (human readable)
        :rtype: list of dict
        """
        from dgenies.database import Gallery
        items = []
        for item in Gallery.select():
            items.append({
                "name":
                item.name,
                "id_job":
                item.job.id_job,
                "picture":
                item.picture,
                "query":
                item.query,
                "target":
                item.target,
                "mem_peak":
                Functions.get_readable_size(item.job.mem_peak),
                "time_elapsed":
                Functions.get_readable_time(item.job.time_elapsed)
            })
        return items
Exemplo n.º 2
0
def parse_database(app_data, max_age, fake=False):
    from dgenies.database import Job, Gallery
    gallery_jobs = []
    with Job.connect():
        old_jobs = Job.select().where(
            ((Job.status == "success") & (Job.date_created < datetime.now() -
                                          timedelta(days=max_age["data"])))
            | ((Job.status != "success") & (Job.date_created < datetime.now() -
                                            timedelta(days=max_age["error"]))))
        for job in old_jobs:
            id_job = job.id_job
            is_gallery = len(
                Gallery.select().join(Job).where(Job.id_job == id_job)) > 0
            if is_gallery:
                gallery_jobs.append(id_job)
            else:
                print("Removing job %s..." % id_job)
                data_dir = os.path.join(app_data, id_job)
                if os.path.exists(data_dir) and os.path.isdir(data_dir):
                    if not fake:
                        shutil.rmtree(data_dir)
                else:
                    print("Job %s has no data folder!" % id_job)
                if not fake:
                    job.delete_instance()
    return gallery_jobs
Exemplo n.º 3
0
 def is_in_gallery(id_job, mode="webserver"):
     if mode == "webserver":
         from dgenies.database import Gallery, Job
         from peewee import DoesNotExist
         try:
             return len(Gallery.select().where(Gallery.job == Job.get(id_job=id_job))) > 0
         except DoesNotExist:
             return False
     return False
Exemplo n.º 4
0
def main():
    """
    Index page
    """
    if MODE == "webserver":
        pict = Gallery.select().order_by("id")
        if len(pict) > 0:
            pict = pict[0].picture
        else:
            pict = None
    else:
        pict = None
    return render_template("index.html", menu="index", pict=pict)
Exemplo n.º 5
0
 def get_gallery_items():
     from dgenies.database import Gallery
     items = []
     for item in Gallery.select():
         items.append({
             "name": item.name,
             "id_job": item.job.id_job,
             "picture": item.picture,
             "query": item.query,
             "target": item.target,
             "mem_peak": Functions.get_readable_size(item.job.mem_peak),
             "time_elapsed": Functions.get_readable_time(item.job.time_elapsed)
         })
     return items
Exemplo n.º 6
0
    def is_in_gallery(id_job, mode="webserver"):
        """
        Check whether a job is in the gallery

        :param id_job: job id
        :type id_job: str
        :param mode: webserver or standalone
        :type mode: str
        :return: True if job is in the gallery, else False
        :rtype: bool
        """
        if mode == "webserver":
            from dgenies.database import Gallery, Job
            from peewee import DoesNotExist
            try:
                return len(Gallery.select().where(Gallery.job == Job.get(
                    id_job=id_job))) > 0
            except DoesNotExist:
                return False
        return False
Exemplo n.º 7
0
def parse_database(app_data, max_age, fake=False):
    """
    Parse database and remove too old jobs (from database and from disk)

    :param app_data: folder where jobs are stored
    :type app_data: str
    :param max_age: remove all files & folders older than this age. Define it for each category
        (uploads, data, error, ...)
    :type max_age: dict
    :param fake: if True, just print files to delete, without delete them
    :type fake: bool
    :return: id jobs which are in the gallery (not removed independently of their age)
    :rtype: list
    """
    from dgenies.database import Job, Gallery
    gallery_jobs = []
    with Job.connect():
        old_jobs = Job.select().where(
            ((Job.status == "success") & (Job.date_created < datetime.now() -
                                          timedelta(days=max_age["data"])))
            | ((Job.status != "success") & (Job.date_created < datetime.now() -
                                            timedelta(days=max_age["error"]))))
        for job in old_jobs:
            id_job = job.id_job
            is_gallery = len(
                Gallery.select().join(Job).where(Job.id_job == id_job)) > 0
            if is_gallery:
                gallery_jobs.append(id_job)
            else:
                print("Removing job %s..." % id_job)
                data_dir = os.path.join(app_data, id_job)
                if os.path.exists(data_dir) and os.path.isdir(data_dir):
                    if not fake:
                        shutil.rmtree(data_dir)
                else:
                    print("Job %s has no data folder!" % id_job)
                if not fake:
                    job.delete_instance()
    return gallery_jobs