Exemple #1
0
class DaoMixin:
    """
    Provides database access initialization.
    Requires that self.unit be set
    """
    def _initialize_db(self):
        try:
            unit_number = self.unit.unit_number
        except AttributeError:
            unit_number = self.activity.unit_number

        try:
            t = 'TEST-' if env.CONFIG.is_test else ""
            self.db_filepath = "{}/{}{}-Unit-{}-review-assigns.db".format(
                env.LOG_FOLDER, t, env.CONFIG.semester_name, unit_number)
        except AttributeError as e:
            # This is likely to happen during testing
            print(e)

        if env.CONFIG.is_test:
            try:
                if CanvasHacks.testglobals.TEST_WITH_FILE_DB:
                    # testing: file db
                    self._initialize_file_db()
                    print("Connected to TEST db file. {}".format(
                        self.db_filepath))
                else:
                    # testing: in memory db
                    self._initialize_memory_db()
            except (NameError, AttributeError) as e:
                print(e)
                # The variable might not be defined under in any
                # number of circumstances. So default to the in-memory db
                self._initialize_memory_db()

        else:
            # real: file db
            self._initialize_file_db()
            print("Connected to REAL db. {}".format(self.db_filepath))

    def _initialize_file_db(self):
        self.dao = SqliteDAO(self.db_filepath)
        self.dao.initialize_db_file()

    def _initialize_memory_db(self):
        self.dao = SqliteDAO()
        print("Connected to in-memory testing db")
Exemple #2
0
class IStep:
    """Parent of all steps in a Skaa"""

    def __init__( self, course=None, unit=None, is_test=None, send=True ):
        """
        :param course:
        :param unit:
        :param is_test:
        :param send: Whether to actually send the messages
        """
        self.course = env.CONFIG.course if course is None else course
        self.unit = env.CONFIG.unit if unit is None else unit
        self.is_test = env.CONFIG.is_test if is_test is None else is_test
        self.send = send



    def _initialize( self ):
        """Creates and populates all relevant repositories and db access points"""
        self.studentRepo = StudentRepository( self.course )
        self.studentRepo.download()
        self._initialize_db()
        self.associationRepo = AssociationRepository( self.dao, self.activity_for_review_pairings)

        self.display_manager = DisplayManager(self.activity)

        # Moved to child classes while working on CAN-53
        # if isinstance(self.activity, MetaReview) and isinstance(self.activity_notifying_about, MetaReview):
        #     # If both of these are the metareview, then we are on the final
        #     # step (sending the metareview results to the reviewer). Thus
        #     # we need a special status repository since the notified field
        #     # for the metareview will have already been populated in the previous step
        #     self.statusRepos = FeedbackStatusRepository( self.dao, self.activity_notifying_about )
        # elif isinstance(self.activity, DiscussionReview) and isinstance(self.activity_notifying_about, DiscussionReview):
        #     # If both of these are the discussion review, then we are on the final
        #     # step (sending the review results to the poster). Thus
        #     # we need a special status repository since the notified field
        #     # for the review will have already been populated in the previous step
        #     self.statusRepos = FeedbackStatusRepository( self.dao, self.activity_notifying_about )
        # else:
        #     self.statusRepos = StatusRepository( self.dao, self.activity_notifying_about )

    def _initialize_db( self ):
        try:
            t = 'TEST-' if env.CONFIG.is_test else ""
            self.db_filepath = "{}/{}{}-Unit-{}-review-assigns.db".format( env.LOG_FOLDER, t, env.CONFIG.semester_name, self.unit.unit_number )
        except AttributeError as e:
            # This is likely to happen during testing
            print(e)

        if env.CONFIG.is_test:
            try:
                if CanvasHacks.testglobals.TEST_WITH_FILE_DB:
                    # testing: file db
                    self._initialize_file_db()
                    print( "Connected to TEST db file. {}".format( self.db_filepath ) )
                else:
                    # testing: in memory db
                    self._initialize_memory_db()
            except (NameError, AttributeError) as e:
                print(e)
                # The variable might not be defined under in any
                # number of circumstances. So default to the in-memory db
                self._initialize_memory_db()

        else:
            # real: file db
            self._initialize_file_db()
            print( "Connected to REAL db. {}".format( self.db_filepath ) )

    def _initialize_file_db( self ):
        self.dao = SqliteDAO( self.db_filepath )
        self.dao.initialize_db_file()

    def _initialize_memory_db( self ):
        self.dao = SqliteDAO()
        print( "Connected to in-memory testing db" )

    def run( self ):
        raise NotImplementedError