Study.py 1.86 KiB
# -*- coding: utf-8 -*-

import os
from datetime import datetime

from Model.Saved import SavedStatus
from Model.Serializable import Serializable

from Model.River import River


class Study(Serializable):
    def __init__(self):
        # Serialization information
        super(Study, self).__init__("")
        self.filename = ""

        self.status = SavedStatus()

        # Study general information
        self._name = ""
        self.description = ""
        # Time system
        self._time_system = "time"
        self._date = datetime.fromtimestamp(0)

        self.creation_date = datetime.now()
        self.last_modification_date = datetime.now()
        self.last_save_date = datetime.now()

        # Study data
        self.river = River(status=self.status)

    @property
    def is_saved(self):
        return self.status.is_saved()

    def save(self):
        self.last_save_date = datetime.now()
        self.status.save()
        self._save()

    @property
    def name(self):
        return self._name

    @name.setter
    def name(self, name):
        self._name = str(name)
        self.status.modified()

    @property
    def time_system(self):
        return self._time_system

    def use_time(self):
        self._time_system = "time"
        self.status.modified()

    def use_date(self, date:datetime):
        self._time_system = "date"
        self._date = date
        self.status.modified()

    @property
    def date(self):
        return self._date

    @date.setter
    def date(self, timestamp):
        self._date = timestamp
        self.status.modified()

    @classmethod
    def new(cls):
        return cls()

    @classmethod
    def new(cls, name, description, date = None):
        me = cls()
        me.name = name
        me.description = description
        if date is not None:
            me.use_date()
            me.date = date
        return me