Beispiel #1
0
    def check_planet(self, request, user):
        coords = request.REQUEST.get(PLANET) or ""

        if coords == "Clear":
            if self.user_has_planet(user):
                user.planet = None
                session.commit()
            return False

        m = self.coord.match(coords)
        if m:
            planet = Planet.load(*m.group(1, 3, 5))
        else:
            planet = None

        if planet is not None:
            if self.is_user(user):
                user.planet = planet
                if user.is_member():
                    alliance = Alliance.load(Config.get("Alliance", "name"))
                    if planet.intel is None:
                        planet.intel = Intel(nick=user.name, alliance=alliance)
                    else:
                        planet.intel.nick = user.name
                        planet.intel.alliance = alliance
                session.commit()
            else:
                user.planet = planet
                session.expunge(user)
            return user.planet.id

        pa_id = request.COOKIES.get(PLANET_KEY)
        if self.user_has_planet(user):
            if pa_id == user.planet.id:
                return True
            else:
                return user.planet.id
        elif self.is_user(user):
            if pa_id:
                return False
            else:
                return True
        else:
            if pa_id:
                planet = session.query(Planet).filter_by(id=pa_id).first()
                if planet is None:
                    return False
                else:
                    user.planet = planet
                    session.expunge(user)
                    return True
            else:
                return True
Beispiel #2
0
 def check_planet(self, request, user):
     coords = request.POST.get(PLANET) or ""
     
     if coords == "Clear":
         if self.user_has_planet(user):
             user.planet = None
             session.commit()
         return False
     
     m = self.coord.match(coords)
     if m:
         planet = Planet.load(*m.group(1,3,5))
     else:
         planet = None
     
     if planet is not None:
         if self.is_user(user):
             user.planet = planet
             if user.is_member():
                 alliance = Alliance.load(Config.get("Alliance","name"))
                 if planet.intel is None:
                     planet.intel = Intel(nick=user.name, alliance=alliance)
                 else:
                     planet.intel.nick = user.name
                     planet.intel.alliance = alliance
             session.commit()
         else:
             user.planet = planet
             session.expunge(user)
         return user.planet.id
     
     pa_id = request.COOKIES.get(PLANET_KEY)
     if self.user_has_planet(user):
         if pa_id == user.planet.id:
             return True
         else:
             return user.planet.id
     elif self.is_user(user):
         if pa_id:
             return False
         else:
             return True
     else:
         if pa_id:
             planet = session.query(Planet).filter_by(id=pa_id).first()
             if planet is None:
                 return False
             else:
                 user.planet = planet
                 session.expunge(user)
                 return True
         else:
             return True
Beispiel #3
0
    def vote(self, message, user, params):
        id = params.group(1)
        vote = params.group(2).lower()
        prop = self.load_prop(id)
        if prop is None:
            message.reply("No proposition number %s exists (idiot)." % (id, ))
            return
        if not prop.active:
            message.reply("You can't vote on prop %s, it's expired." % (id, ))
            return
        if prop.proposer == user:
            message.reply(
                "Arbitrary %s rule #167: No voting on your own props." %
                (Config.get("Connection", "nick")))
            return
        if prop.type == 'kick' and vote == 'veto' and prop.kicked == user:
            message.reply("You can't veto a vote to kick you.")
            return

        old_vote = prop.votes.filter(Vote.voter == user).first()
        if old_vote is not None:
            session.expunge(old_vote)

        prop.votes.filter(Vote.voter == user).delete()
        prop.votes.append(Vote(voter=user, vote=vote,
                               carebears=user.carebears))
        session.commit()

        if old_vote is None:
            reply = "Set your vote on proposition %s as %s" % (
                id,
                vote,
            )
        else:
            reply = "Changed your vote on proposition %s from %s" % (
                id,
                old_vote.vote,
            )
            if old_vote.vote not in (
                    "abstain",
                    "veto",
            ):
                reply += " (%s)" % (old_vote.carebears, )
            reply += " to %s" % (vote, )
        if vote not in (
                "abstain",
                "veto",
        ):
            reply += " with %s carebears" % (user.carebears, )
        reply += "."
        message.reply(reply)
Beispiel #4
0
 def vote(self, message, user, params):
     id = params.group(1)
     vote = params.group(2).lower()
     prop = self.load_prop(id)
     if prop is None:
         message.reply("No proposition number %s exists (idiot)."%(id,))
         return
     if not prop.active:
         message.reply("You can't vote on prop %s, it's expired."%(id,))
         return
     if prop.proposer == user:
         message.reply("Arbitrary %s rule #167: No voting on your own props."%(Config.get("Connection", "nick")))
         return
     if prop.type == 'kick' and vote == 'veto' and prop.kicked == user:
         message.reply("You can't veto a vote to kick you.")
         return
     
     old_vote = prop.votes.filter(Vote.voter==user).first()
     if old_vote is not None:
         session.expunge(old_vote)
     
     prop.votes.filter(Vote.voter==user).delete()
     prop.votes.append(Vote(voter=user, vote=vote, carebears=user.carebears))
     session.commit()
     
     if old_vote is None:
         reply = "Set your vote on proposition %s as %s"%(id,vote,)
     else:
         reply = "Changed your vote on proposition %s from %s"%(id,old_vote.vote,)
         if old_vote.vote not in ("abstain","veto",):
             reply+= " (%s)"%(old_vote.carebears,)
         reply+= " to %s"%(vote,)
     if vote not in ("abstain","veto",):
         reply+= " with %s carebears"%(user.carebears,)
     reply+= "."
     message.reply(reply)