コード例 #1
0
ファイル: css.py プロジェクト: skarphed/skarphed
    def delete(self):
        """
        deletes this csspropertyset from the database
        """
        db = Database()
        current_session = Session.get_current_session()

        if self._typ == CSSPropertySet.GENERAL:
            stmnt = "DELETE FROM CSS WHERE CSS_MOD_ID IS NULL AND CSS_WGT_ID IS NULL AND CSS_SES_ID IS NULL;"
            db.query(stmnt, commit=True)
        elif self._typ == CSSPropertySet.MODULE:
            stmnt = "DELETE FROM CSS WHERE CSS_MOD_ID = ? AND CSS_WGT_ID IS NULL AND CSS_SES_ID IS NULL;"
            db.query(stmnt, (self.get_module_id(),), commit=True)
        elif self._typ == CSSPropertySet.WIDGET:
            stmnt = "DELETE FROM CSS WHERE CSS_MOD_ID IS NULL AND CSS_WGT_ID = ? AND CSS_SES_ID IS NULL;"
            db.query(stmnt, (self.get_widget_id(),), commit=True)
        elif self._typ == CSSPropertySet.SESSION:
            stmnt = "DELETE FROM CSS WHERE CSS_MOD_ID IS NULL AND CSS_WGT_ID IS NULL AND CSS_SES_ID = ? ;"
            db.query(stmnt, (self.get_session_id(),), commit=True)

        if self._typ == CSSPropertySet.SESSION:
            if current_session is not None:
                stmnt = "UPDATE CSSSESSION SET CSE_OUTDATED = 1 WHERE CSE_SES_ID = ? ;"
                db.query(stmnt, (current_session.get_id(),), commit=True)
        else:
            stmnt = "UPDATE CSSSESSION SET CSE_OUTDATED = 1 ;"
            db.query(stmnt, commit=True)
コード例 #2
0
ファイル: poke.py プロジェクト: skarphed/skarphed
    def generate(cls):
        """
        Generates an Activity Report. This report contains,
        how many activities have happened since the last poke
        further it contains the activity types.
        """
        session  = Session.get_current_session()

        db = Database()
        stmnt = "SELECT ATV_TYPE, MAX(ATV_ID) AS LATEST_ID, COUNT(ATV_ID) AS AMOUNT FROM ACTIVITIES WHERE ATV_SES_ID != ? OR ATV_SES_ID IS NULL AND ATV_ID >= \
                COALESCE((SELECT SPO_ATV_ID FROM SESSIONPOKE WHERE SPO_SES_ID = ?),0) GROUP BY ATV_TYPE;"
        cur = db.query(stmnt, (session.get_id(), session.get_id()))

        activity_report = ActivityReport()

        res = cur.fetchallmap()
        for row in res:
            activity = Activity()
            activity.set_id(row["LATEST_ID"])
            activity.set_activity_type(row["ATV_TYPE"])

            activity_report._activities.append(activity)

            if activity_report._latest_id < row["LATEST_ID"]:
                activity_report._latest_id = row["LATEST_ID"]

            activity_report._amount += row["AMOUNT"]
        
        return activity_report
コード例 #3
0
ファイル: css.py プロジェクト: skarphed/skarphed
    def store(self):
        """
        stores this cssPropertySet into the database
        """
        db = Database()
        current_session = Session.get_current_session()

        self.delete()

        values_to_store = self.get_non_inherited()
        stmnt = "UPDATE OR INSERT INTO CSS (CSS_SELECTOR, CSS_TAG, CSS_VALUE, CSS_MOD_ID, CSS_WGT_ID, CSS_SES_ID) \
                   VALUES ( ?,?,?,?,?,?) MATCHING (CSS_SELECTOR,CSS_TAG,CSS_MOD_ID,CSS_WGT_ID, CSS_SES_ID) ;"
        for key, value in values_to_store.items():
            selector, tag = key.split(CSSPropertySet.SPLIT)
            db.query(
                stmnt,
                (selector, tag, value["v"], self.get_module_id(), self.get_widget_id(), self.get_session_id()),
                commit=True,
            )

        if self._typ == CSSPropertySet.SESSION and current_session is not None:
            stmnt = "UPDATE CSSSESSION SET CSE_OUTDATED = 1 WHERE CSE_SES_ID = ? ;"
            db.query(stmnt, (current_session.get_id()), commit=True)
        else:
            stmnt = "UPDATE CSSSESSION SET CSE_OUTDATED = 1;"
            db.query(stmnt, commit=True)
コード例 #4
0
ファイル: poke.py プロジェクト: skarphed/skarphed
    def cleanup(cls):
        """
        Remove activities that are no longer needed
        """
        session = Session.get_current_session()

        db = Database()
        stmnt = "DELETE FROM SESSIONPOKE WHERE SPO_SES_ID IN (SELECT SES_ID FROM SESSIONS WHERE SES_EXPIRES < CURRENT_TIMESTAMP) ;"
        db.query(stmnt, (session.get_id(),), commit=True)
        stmnt = "DELETE FROM ACTIVITIES WHERE ATV_ID < COALESCE ((SELECT MIN(SPO_ATV_ID) FROM SESSIONPOKE WHERE SPO_SES_ID != ?),0) ;"
        db.query(stmnt, (session.get_id(),), commit=True)
コード例 #5
0
ファイル: rpc.py プロジェクト: skarphed/skarphed
 def authenticateUser(self,params):
     username = unicode(params[0])
     password = unicode(params[1])
     
     try:
         user = User.get_user_by_name(username)
     except UserException , e:
         session = Session.get_current_session()
         if session is not None:
             session.delete()
         return False
コード例 #6
0
ファイル: poke.py プロジェクト: skarphed/skarphed
 def poke(cls):
     """
     Pulls together poke-response information for the current client
     """
     activity_report = ActivityReport.generate()
     session = Session.get_current_session()
     db = Database()
     stmnt = "UPDATE OR INSERT INTO SESSIONPOKE (SPO_SES_ID, SPO_ATV_ID) VALUES (?, \
             MAXVALUE(COALESCE((SELECT SPO_ATV_ID FROM SESSIONPOKE WHERE SPO_SES_ID = ?), 0) ,?)) MATCHING (SPO_SES_ID) ;"
     db.query(stmnt, (session.get_id(), session.get_id(), activity_report._latest_id+1), commit=True)
     cls.cleanup()
     return activity_report.to_dict()
コード例 #7
0
ファイル: poke.py プロジェクト: skarphed/skarphed
    def add_activity(cls, activity_type):
        """
        Registers an activity to the Pokesystem
        """
        session = Session.get_current_session()

        activity = Activity()
        if session is not None:
            activity.set_session_id(session.get_id())
        
        activity.set_activity_type(activity_type)
        activity.store()
コード例 #8
0
ファイル: css.py プロジェクト: skarphed/skarphed
    def get_css_file(cls):
        """
        Gets the name of the cssFile for the current user
        """
        configuration = Configuration()
        css_folder = "%s%s%s/" % (
            configuration.get_entry("global.webpath"),
            configuration.get_entry("core.instance_id"),
            configuration.get_entry("core.css_folder"),
        )

        db = Database()
        current_session = Session.get_current_session()

        rerendering_necessary = False

        if current_session is not None:
            stmnt = "SELECT CSE_FILE FROM CSSSESSION WHERE CSE_SES_ID = ? AND CSE_OUTDATED = 0 ;"
            cur = db.query(stmnt, (current_session.get_id(),))
            row = cur.fetchonemap()
            if row is not None:
                filename = row["CSE_FILE"]
            else:
                filename = css_folder + current_session.get_id() + ".css"
                stmnt = "UPDATE OR INSERT INTO CSSSESSION (CSE_SES_ID,CSE_FILE,CSE_OUTDATED) VALUES (?,?,0) MATCHING (CSE_SES_ID) ;"
                db.query(stmnt, (current_session.get_id(), filename), commit=True)
                rerendering_necessary = True
        else:
            stmnt = "SELECT CSE_FILE FROM CSSSESSION WHERE CSE_SES_ID = '-1' AND CSE_OUTDATED = 0 ;"
            cur = db.query(stmnt)
            row = cur.fetchonemap()
            if row is not None:
                filename = row["CSE_FILE"]
            else:
                filename = css_folder + "general.css"
                # TODO: This was eventually fail! ↓
                stmnt = "UPDATE OR INSERT INTO CSSSESSION (CSE_SES_ID,CSE_FILE,CSE_OUTDATED) VALUES ('-1',?,0) MATCHING (CSE_SES_ID) ;"
                db.query(stmnt, (filename,), commit=True)
                rerendering_necessary = True

        if not os.path.exists(filename) or rerendering_necessary:
            cls.render_to_file(filename)

        cls.cleanup_css_sessiontable()
        return filename
コード例 #9
0
ファイル: css.py プロジェクト: skarphed/skarphed
    def render_to_file(cls, filename):
        """
        renders a css file
        """
        css = ""
        session_id = None
        current_session = Session.get_current_session()
        if current_session is None:
            generic_set = cls.get_csspropertyset()
            module_sets = cls.get_csspropertyset(cls.ALL, None, None)
            widget_sets = cls.get_csspropertyset(None, cls.ALL, None)

            css += generic_set.render()
            for module_set in module_sets.values():
                css += module_set.render()
            for widget_set in widget_sets.values():
                css += widget_set.render()

        else:
            # TODO: Implement behaviour with session
            generic_set = cls.get_csspropertyset()
            module_sets = cls.get_csspropertyset(cls.ALL, None, None)
            widget_sets = cls.get_csspropertyset(None, cls.ALL, None)

            css += generic_set.render()
            for module_set in module_sets.values():
                css += module_set.render()
            for widget_set in widget_sets.values():
                css += widget_set.render()

        if not os.path.exists(os.path.dirname(filename)):
            os.makedirs(os.path.dirname(filename))

        cssfile = open(filename, "w")
        cssfile.write(css)
        cssfile.close()
コード例 #10
0
ファイル: rpc.py プロジェクト: skarphed/skarphed
        password = unicode(params[1])
        
        try:
            user = User.get_user_by_name(username)
        except UserException , e:
            session = Session.get_current_session()
            if session is not None:
                session.delete()
            return False


        if user.authenticate(password):
            session = Session.create_session(user)
            return user.get_permissions()
        else:
            session = Session.get_current_session()
            if session is not None:
                session.delete()
            return False

    def alterPassword(self, params):
        user_id = int(params[0])
        new_password = unicode(params[1])
        old_password = unicode(params[2])

        session_user = Session.get_current_session_user()

        if user_id == session_user.get_id():
            session_user.alter_password(new_password,old_password)
        else:
            if session_user.check_permission("skarphed.users.alter_password"):