-
Notifications
You must be signed in to change notification settings - Fork 0
/
freestyle_brioche.py
226 lines (170 loc) · 6.39 KB
/
freestyle_brioche.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
# -*- coding: utf-8 -*-
import Queue, thread, datetime, time
class BriocheDoree:
__name__ = "MerMoz Dakar"
def __init__(self , args=None):
self.members = []
# Allons nous avoir 50 pizzas , Joeri :), Alioune :) ......
# Ok , Puis que il y'a des discussions sur la mailing liste sur
# combien de pizzas , il y'aura , qui va payer , est ce que cela
# sera gratuit pour les filles ect , moi je met ici un
# hook_pizzas , faites en ce que vous voulez mais que personne
# ne touche plus a mon code
# self.pizzas = 50
# les pizzas waiters
self.pizza_waiters =Queue.Queue()
# les speakers
self.speakers =Queue.Queue()
# les learners list not queue
self.learners =[]
def add_member(self, member):
# ajouter un membre
self.members.append(member)
def del_member(self, member):
# Un membre doit pouvoir quitter la brioche doree a tout instant
# avant que sa femme ne vienne la chercher :)
self.members.remove(member)
def pizza_parts_hook(self):
# A implementer par les polemiqueurs
raise NotImplemented
def entry(self):
# entree de la brioche doree les membres sont
# accuelli ici a MerMoz :)
# starting theard before starting entry
self.event_starting()
#
while True:
raw = raw_input ("Accueil Brioche doree :\n\
Pesentateur : Nom, Presentation \n\
Learners :Nom,1 : \n\
Pizzas Waiters :Nom , 0:\n\
")
if raw =="stop":
# stop
# evitez d'arreter l'event sans que les pizzas ne soient
# distribués sinion , les pizza_waiters vont tous saccager
# stop apres que les pizzas soit distibues.
self.start_event = False
break
m = Member(raw)
print m
# Add to member list
self.members.append(m)
# lorsque un membre ne fait rien d'autre que attendre les pizzas
# met le dans la pile pizza_waiters
if m.presentation == "0":
self.pizza_waiters.put(m)
# lorque un gas vient pour suivre les prensentations des speakers:
if m.presentation == "1":
self.learners.append(m)
else:
self.speakers.put(m)
# lorsque un membre prose une presentation , le mettre dans la
# pile des speakers
def event_starting(self):
# Joeri a dit que l'evenment commence a 19 heures 30 le dimanche donc
# pas avant :
thread.start_new_thread(self.starting_event , ())
def starting_event(self):
while self.start_event:
try:
#print "starting events"
# PIZZA WAITER
try:
# get nowait
a_pizza_waiter = self.pizza_waiters.get(False)
except Queue.Empty:
a_pizza_waiter =None
# un pizza waiter ne fait rien d'autre que bouffer :)
# il s'en tape des presentations , Lien Rag :)
# Il faut tester si il est l'heure de donner des pizzas , a 20 h 30 ? c'est bon
# et lui donner sa part :) :
# part = Nombre de Pizzas disponibles / (speakers + learners + pizza_waiters_queue)
# la distrubtion des Pizzas commence a cette heure
if datetime.datetime.now()> datetime.datetime(2013, 10, 11, 11, 06):
# Fix de ElWan :)
if len(self.members):
self.pizzas = self.pizza_parts_hook()
part = self.pizzas / len(self.members)
# Moins il y'aura de personnes presentes a la brioche plus il y'aura de
# parts de Pizzas , Huuuuum :) . c'est le souhait des pizzas waiters
# Hein Lien :)
if a_pizza_waiter:
a_pizza_waiter.gains.append("%s part de Pizzas" % part )
# SPEAKERS
# un speaker vient donner une presention , alors il faut extraire le contenu
# de la presentation et le donner a un LEARNER
try:
# get nowait
speaker= self.speakers.get(False)
except Queue.Empty:
speaker =None
if speaker:
presentation = speaker.presentation
for learner in self.learners:
if presentation not in learner.gains:
learner.gains.append(presentation)
except:
import traceback
print traceback.format_exc()
time.sleep(2)
# event stopped , est sans doute 20 heures passes
#print "stopped event"
def stop_event(self):
# Lorque a 20 heures , on doit finaliser l'evenement avant que Madame Dia
# se pointe a la Brioche doree pour me tirer les oreils
#if datetime.datetime.now()> datetime.datetime(2013, 10, 10, 18, 10):
self.start_event = False
def start_event(self):
# Demarrage hostilites (Presentions, manageurs de Pizzas , les apprenants)
self.start_event =True
def reporting(self):
# au sortir de cet evenement qu'est ce que un membre
# a gagne , juste des Pizzas ? , a t'il benefie de l'expertis d'Elwan
# sur PyUnicode , De Joerie avec Jekyll?
for m in self.members:
print m
print m.gains
"""
Les membres de DakarLug qui viendront a la brioche doree le Dimanche
13 Novembre a 19 heures 30
.
1 . Si presentation n'est pas vide , la personne propose de faire une presentation
Exemple : Waly Ndiaye fait une presentation sur PyUnicode dont son attribut
presentation = "PyUnicode"
2 . Si un membre est venu pour suivre une presentation alors son attribut
leaner = True
3. Si la personne est venu juste pour bouffer nos pizzas alors presentation = ""
et learner = ""
"""
class Member:
def __init__(self, raw):
# raw.split()
args = raw.split(",")
print args
if len(args)!=2:
raise ValueError("Erreur saisie ")
# speaker or learner :
if args[1].strip() == "1":
# learner:
self.presentation = "1"
elif args[1].strip() == "0":
# pizzas waiters
self.presentation = "0"
else:
self.presentation = args[1]
self.name = args[0]
# Qu'est ce que tu as gagne , a lissue de l'evenement
# Brioche doree
self.gains =[]
def what_gain(self):
"""
ce que le membre qui est venu a la brioche dorée a gagne au sortir
de cet evenement
"""
print "%s a appris a la fin de cette presentation"
for gain in gains:
print gain
def __str__(self):
return "<Mamber presentation =%s , name =%s , >"%(
self.presentation, self.name)