Ejemplo n.º 1
0
    def invite(self, eventid, aid, uid):
        """
        Methode zum Einladen eines Benutzers.

        :param eventid: ID des Events, fuer das eingeladen werden soll.
        :param aid: ID des Admin des Events zu Sicherheitszwecken.
        :param uid: Einzuladener User
        :return: -
        """

        u_id = EventId()
        u_id.setHashed(uid)

        a_id = EventId()
        a_id.setHashed(aid)

        e_id = EventId()
        e_id.setHashed(eventid)

        event = Event.getById(e_id)
        admin = User(id=a_id)

        if not event.authorized(admin):
            raise EventError(EventError.NO_ADMIN)

        user = User.getById(u_id)

        invitation = Invitation(user=user, event=event)
        invitation.create()

        return
Ejemplo n.º 2
0
    def createEvent(self, aid, time, bz, location):
        """
        Methode zur Anlegung eines neuen Events

        :param aid: ID des Users der als Admin eingetragen werden soll
        :param time: Datum und Zeit des Events als Datetime-Objekt
        :param bz: Bezeichnung fuer die Veranstaltung
        :param location: Ort der Veranstaltung
        :return: Event Objekt als Dictionary
        """

        event = Event()

        a_id = EventId()
        a_id.setHashed(aid)
        admin = User.getById(a_id)
        event.admin = admin

        date = EventDatetime()
        date.fromString(time)
        event.datetime = date

        event.description = bz

        event.location = location

        event.create()

        return event.getAsDict()
Ejemplo n.º 3
0
    def signin(self, eventid, userid, status):
        """
        Methode zur Anmeldung/Absage eines Events

        :param eventid: ID des Events
        :param userid: ID des Users
        :param status: neuer Status
        :return:  -
        """

        u_id = EventId()
        u_id.setHashed(userid)

        e_id = EventId()
        e_id.setHashed(eventid)

        user = User.getById(u_id)
        event = Event.getById(e_id)

        invitation = Invitation.getFromUserAndEvent(user, event)

        if invitation is None:
            raise EventError("Keine Einladung vorhanden.")

        status = int(status)
        if status == Invitation.YES:
            invitation.signin()
        elif status == Invitation.NO:
            invitation.notcoming()
        else:
            #Niemand wird ein Anfrage senden um zu sagen, dass er sich noch nicht entschschieden hat.
            pass

        return
Ejemplo n.º 4
0
 def toDictionary(self, options=[], user=None):
     '''For packaging in JSON objects.
     
     Pass in list of VisionComment.Options.* to include other info in objs
     '''
     obj = {  VisionComment.Key.ID : self.id(),
              VisionComment.Key.VISION_ID : self.visionId(),
              VisionComment.Key.AUTHOR_ID : self.authorId(),
              VisionComment.Key.TEXT : self.text(),
              VisionComment.Key.CREATED: self.created().isoformat(),
           }
     if VisionComment.Options.AUTHOR in options:
         from User import User
         obj = self.toDictionary()
         author = User.getById(self.authorId())
         if author:
             obj[VisionComment.Key.AUTHOR] = author.toDictionary()
     if VisionComment.Options.LIKES in options:
         obj[VisionComment.Key.LIKE] = { 
                             VisionComment.Key.LIKE_COUNT: self.likeCount() }
         if user:
             obj[VisionComment.Key.LIKE][VisionComment.Key.USER_LIKE] = \
                                                         self.likedBy(user)
     if VisionComment.Options.PICTURE in options:
         if self.hasPicture():
             from Picture import Picture
             picture = Picture.getById(self.pictureId())
             if picture:
                 obj[VisionComment.Key.PICTURE] = picture.toDictionary()
     return obj
Ejemplo n.º 5
0
    def getFromUserAndEvent(user, event):

        ret = Invitation()

        db = SQLConnection.getInstance()

        db_ret = db.select("SELECT * FROM invitations WHERE user=%s AND event=%s",
                           (user.id.getUnhashed(), event.id.getUnhashed()))

        if len(db_ret) > 1:
            raise EventError(EventError.UNDEFINED)

        if len(db_ret) == 0:
            return None

        db_ret = db_ret[0]

        ret.id = EventId()
        ret.id.setUnhashed(db_ret[0])
        uid = EventId()
        uid.setUnhashed(db_ret[1])
        ret.user = User.getById(uid)
        eid = EventId()
        eid.setUnhashed(db_ret[2])
        ret.event = Event.getById(eid)
        ret.status = int(db_ret[3])

        return ret
Ejemplo n.º 6
0
    def toDictionary(self, options=[], user=None):
        '''Used for packaging into JSON
        
        Pass in optional input list with other things to package into object.

        If accessing many visions, use VisionList instead! It can batch up
        DB queries across visions for better performance

        The 'user' parameter is used when LIKES option is provided to
        determine whether this vision is liked by the user
        '''
        obj = { Vision.Key.ID           : self.id(),
                Vision.Key.USER_ID      : self.userId(),
                Vision.Key.TEXT         : self.text(),
                Vision.Key.PARENT_ID    : self.parentId(),
                Vision.Key.ROOT_ID      : self.rootId(),
                Vision.Key.PRIVACY      : self.privacy(),
                Vision.Key.CREATED      : self.created().isoformat(),
              }
        from User import User
        if Vision.Options.PICTURE in options:
            picture = self.picture()
            if picture:
                obj[Vision.Key.PICTURE] = picture.toDictionary()
        if Vision.Options.USER in options:
            user = User.getById(self.userId())
            if user:
                obj[Vision.Key.USER] = user.toDictionary()
        if Vision.Options.PARENT_USER in options:
            if not self.isOriginalVision():
                parentVision = Vision.getById(self.parentId(), self)
                # Parent vision MUST be public
                if parentVision and parentVision.isPublic():
                    parentUser = User.getById(parentVision.userId())
                    if parentUser:
                        obj[Vision.Key.PARENT_USER] = parentUser.toDictionary()
        if Vision.Options.LIKES in options:
            obj[Vision.Key.LIKE] = { Vision.Key.LIKE_COUNT: self.likeCount() }
            if user:
                obj[Vision.Key.LIKE][Vision.Key.USER_LIKE] = self.likedBy(user)
        return obj
Ejemplo n.º 7
0
    def getInvitations(self, userid):
        """
        Methoe zur Rueckgabe aller Einladungen eines Benutzers.

        :param userid: ID des Benutzers
        :return: Array aus Dicts aller Einladungen
        """

        ret = []

        u_id = EventId()
        u_id.setHashed(userid)
        user = User.getById(u_id)
        invitations = Invitation.getAllFromUser(user)

        for e in invitations:
            ret.append(e.getAsDict(["event", "status"]))

        return {"invitations": ret}
Ejemplo n.º 8
0
    def getAllForEvent(event):
        ret = []

        #DB Verbindung
        db = SQLConnection.getInstance()

        #SQL Befehl
        db_ret = db.select("SELECT * FROM invitations WHERE event=%s", (event.id.getUnhashed(),))

        #for schleife durch array
        for e in db_ret:
            i = Invitation()
            i.id = EventId()
            i.id.setUnhashed(int(e[0]))
            u_id = EventId()
            u_id.setUnhashed(int(e[1]))
            i.user = User.getById(u_id)
            i.event = event
            i.status = int(e[3])
            ret.append(i)

        return ret
Ejemplo n.º 9
0
    def getById(id):
        event = Event()
        db = SQLConnection.getInstance()

        db_content = db.select("SELECT * FROM events WHERE id=%s", (id.getUnhashed(),))

        if len(db_content) < 1:
            raise EventError(EventError.NO_EVENT_FOUND)

        db_event = db_content[0]

        event.id = EventId()
        event.id.setUnhashed(int(db_event[0]))
        event.location = db_event[1]
        event.datetime = EventDatetime(db_event[2])

        admin_id = EventId()
        admin_id.setUnhashed(int(db_event[3]))
        admin = User.getById(admin_id)

        event.admin = admin
        event.description = db_event[4]

        return event
Ejemplo n.º 10
0
 def user(self):
     '''Returns User object that owns this vision, or None'''
     # import here to avoid circular imports
     from User import User
     return User.getById(self.userId())
Ejemplo n.º 11
0
 def author(self):
     from User import User
     return User.getById(self.authorId())