public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/council-webapp:master commit in: bot/tests/, bot/tests/test_scripts/, bot/ircmeeting/
@ 2011-08-03  9:57 Petteri Räty
  0 siblings, 0 replies; only message in thread
From: Petteri Räty @ 2011-08-03  9:57 UTC (permalink / raw
  To: gentoo-commits

commit:     2bc0f6162e76a0a2a6c6753b5c5808ddba85ccd0
Author:     Joachim Filip Ignacy Bartosik <jbartosik <AT> gmail <DOT> com>
AuthorDate: Tue Aug  2 15:24:28 2011 +0000
Commit:     Petteri Räty <betelgeuse <AT> gentoo <DOT> org>
CommitDate: Wed Aug  3 08:44:33 2011 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/council-webapp.git;a=commit;h=2bc0f616

Make some more actions available only to council members

Namely #nextitem, #previtem, #changeitem, #startvote, #endvote

---
 bot/ircmeeting/agenda.py                         |   22 ++++++++++++++++------
 bot/ircmeeting/meeting.py                        |   10 +++++-----
 bot/tests/run_test.py                            |    2 +-
 bot/tests/test_scripts/council_only_actions.json |    7 +++++++
 4 files changed, 29 insertions(+), 12 deletions(-)

diff --git a/bot/ircmeeting/agenda.py b/bot/ircmeeting/agenda.py
index 05e4a57..ffd028c 100644
--- a/bot/ircmeeting/agenda.py
+++ b/bot/ircmeeting/agenda.py
@@ -62,9 +62,11 @@ class Agenda(object):
                                 match.group(3), irc)
       self._agenda[self._current_item][2] = ''
 
-    def next_agenda_item(self, irc):
+    def next_agenda_item(self, nick, irc):
         if not self.conf.manage_agenda:
           return('')
+        if not nick in self._voters:
+            return str.format(self.can_not_vote_msg, ", ".join(self._voters))
         if self._vote_open:
             return self.voting_open_so_item_not_changed_msg
         else:
@@ -72,9 +74,11 @@ class Agenda(object):
                 self._swich_agenda_item_to(self._current_item + 1, irc)
             return(self.get_agenda_item())
 
-    def prev_agenda_item(self, irc):
+    def prev_agenda_item(self, nick, irc):
         if not self.conf.manage_agenda:
           return('')
+        if not nick in self._voters:
+            return str.format(self.can_not_vote_msg, ", ".join(self._voters))
         if self._vote_open:
             return self.voting_open_so_item_not_changed_msg
         else:
@@ -82,17 +86,21 @@ class Agenda(object):
                 self._swich_agenda_item_to(self._current_item - 1, irc)
             return(self.get_agenda_item())
 
-    def start_vote(self):
+    def start_vote(self, nick):
         if not self.conf.manage_agenda:
           return('')
+        if not nick in self._voters:
+            return str.format(self.can_not_vote_msg, ", ".join(self._voters))
         if self._vote_open:
             return self.voting_already_open_msg
         self._vote_open = True
         return str.format(self.voting_open_msg, self.options())
 
-    def end_vote(self):
+    def end_vote(self, nick):
         if not self.conf.manage_agenda:
           return('')
+        if not nick in self._voters:
+            return str.format(self.can_not_vote_msg, ", ".join(self._voters))
         if self._vote_open:
             self._vote_open = False
             return self.voting_close_msg
@@ -125,7 +133,7 @@ class Agenda(object):
 
         reply = str.format(self.vote_confirm_msg, opt, self._agenda[self._current_item][1][opt])
         if users_who_voted == self._voters:
-          reply += '. ' + self.end_vote()
+          reply += '. ' + self.end_vote(nick)
         return(reply)
 
     def _get_json(self, url):
@@ -169,9 +177,11 @@ class Agenda(object):
         options_list.append(option_text)
         return str.format(self.added_option_msg, option_text)
 
-    def change_agenda_item(self, line):
+    def change_agenda_item(self, nick, line):
         if not self.conf.manage_agenda:
           return('')
+        if not nick in self._voters:
+            return str.format(self.can_not_vote_msg, ", ".join(self._voters))
         if self._vote_open:
             return self.voting_open_so_item_not_changed_msg
         opt = self._to_agenda_item_number(line)

diff --git a/bot/ircmeeting/meeting.py b/bot/ircmeeting/meeting.py
index c20fd6d..6440ca2 100644
--- a/bot/ircmeeting/meeting.py
+++ b/bot/ircmeeting/meeting.py
@@ -324,11 +324,11 @@ class MeetingCommands(object):
 
     def do_nextitem(self, nick, time_, line, **kwargs):
         """Go to next agenda item"""
-        self.reply(self.config.agenda.next_agenda_item(self))
+        self.reply(self.config.agenda.next_agenda_item(nick, self))
 
     def do_previtem(self, nick, time_, line, **kwargs):
         """Go to previous agenda item"""
-        self.reply(self.config.agenda.prev_agenda_item(self))
+        self.reply(self.config.agenda.prev_agenda_item(nick, self))
 
     def do_timelimit(self, nick, time_, line, **kwargs):
         """ Manage reminders:
@@ -352,16 +352,16 @@ class MeetingCommands(object):
 
     def do_changeitem(self, nick, time_, line, **kwargs):
         """Change agenda item. Usage: #chengeitem <item number>"""
-        self.reply(self.config.agenda.change_agenda_item(line))
+        self.reply(self.config.agenda.change_agenda_item(nick, line))
 
     def do_startvote(self, nick, time_, line, **kwargs):
        """Start vote on current item"""
-       for messageline in self.config.agenda.start_vote().split('\n'):
+       for messageline in self.config.agenda.start_vote(nick).split('\n'):
             self.reply(messageline)
 
     def do_endvote(self, nick, time_, line, **kwargs):
        """Close voting for current agenda item. You can resume voting later with #startvote"""
-       for messageline in self.config.agenda.end_vote().split('\n'):
+       for messageline in self.config.agenda.end_vote(nick).split('\n'):
             self.reply(messageline)
 
     def do_vote(self, nick, time_, line, **kwargs):

diff --git a/bot/tests/run_test.py b/bot/tests/run_test.py
index a6077cb..dafcda3 100644
--- a/bot/tests/run_test.py
+++ b/bot/tests/run_test.py
@@ -326,7 +326,7 @@ class MeetBotTest(unittest.TestCase):
     def test_message_answer_tests(self):
         files = ['agenda_item_changing', 'agenda_option_listing',
                   'agenda_option_adding', 'agenda_option_removing',
-                  'close_voting_after_last_vote']
+                  'close_voting_after_last_vote', 'council_only_actions']
         for file in files:
             test = self.get_simple_agenda_test()
             test.check_responses_from_json_file(file)

diff --git a/bot/tests/test_scripts/council_only_actions.json b/bot/tests/test_scripts/council_only_actions.json
new file mode 100644
index 0000000..ce843a9
--- /dev/null
+++ b/bot/tests/test_scripts/council_only_actions.json
@@ -0,0 +1,7 @@
+[
+["20:13:50 <y> #nextitem", "You can not vote or change agenda. Only x, z can."],
+["20:13:50 <y> #previtem", "You can not vote or change agenda. Only x, z can."],
+["20:13:50 <y> #changeitem 1", "You can not vote or change agenda. Only x, z can."],
+["20:13:50 <y> #startvote", "You can not vote or change agenda. Only x, z can."],
+["20:13:50 <y> #endvote", "You can not vote or change agenda. Only x, z can."]
+]



^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-08-03  9:58 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-03  9:57 [gentoo-commits] proj/council-webapp:master commit in: bot/tests/, bot/tests/test_scripts/, bot/ircmeeting/ Petteri Räty

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox