-
Notifications
You must be signed in to change notification settings - Fork 2
/
demo.py
172 lines (142 loc) · 7.44 KB
/
demo.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
from group import Group
from member import Member
from absl import app
from absl import flags
from colors import bcolors
import random
FLAGS = flags.FLAGS
groups = {}
members = {}
def print_members_and_groups():
print("\nMembers : " + str([i for i in members.keys()]))
print("Groups : " + str([i for i in groups.keys()]))
if len(groups) > 0:
print("Members of Groups : ")
for group in groups.values():
print("Group {} has members {}".format(group.id, [i for i in group.members.keys()]))
def main(argv):
print("\n************* Welcome *************\n")
while True:
print_members_and_groups()
print(bcolors.BOLD + bcolors.WARNING + "\nPlease select an action from the following:" + bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "1. Sign Up as a New Member" + bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "2. Log In as an Existing Member" + bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "3. Exit" + bcolors.ENDC)
choice = input("\nEnter your choice of action : ")
if choice == '1':
"""
Creating a new member.
"""
print("\n******** Creating Member ********\n")
mem_id = len(members) + 1
# key = int(input("Choose a secret key for the member : "))
# key = random.randint(2**FLAGS.l, 2**FLAGS.h)
m = Member(id=mem_id)
members[mem_id] = m
print("Member created with member id : ", mem_id)
# print(bcolors.BOLD + bcolors.OKBLUE + "Your secret key is {}. Do not share it with anyone.".format(key) + bcolors.ENDC)
print("\n******** Done ********\n")
elif choice == '2':
"""
Signing in as existing member by entering member id.
"""
mem_id = int(input(bcolors.BOLD + bcolors.WARNING + "\nEnter your member ID : "+bcolors.ENDC))
if mem_id not in members.keys():
print(bcolors.BOLD + bcolors.ERROR + "Invalid member ID!! Please try again."+bcolors.ENDC)
continue
print(bcolors.BOLD + bcolors.OKGREEN + "\nLogging in as member {}....".format(mem_id)+bcolors.ENDC)
print("\n******** Welcome member {} ********\n".format(mem_id))
member = members[mem_id]
while True:
print_members_and_groups()
print(bcolors.BOLD + bcolors.WARNING + "\nPlease select an action from the following: "+bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "1. Create a new group"+bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "2. Add member to group"+bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "3. Remove member from group"+bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "4. Send message"+bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "5. Read messages"+bcolors.ENDC)
print(bcolors.BOLD + bcolors.WARNING + "6. Logout\n"+bcolors.ENDC)
option = input(bcolors.BOLD + bcolors.WARNING + "Enter your choice of action : "+bcolors.ENDC)
if option == '1':
"""
Creating a group.
Possible only if the current member is not part of any group.
A group will be created with the current member as the admin.
"""
if member.group_id != None:
print("\nYou are already part of a group!!")
continue
print("\n******** Creating group ********\n")
group_id = len(groups) + 1
g = Group(id=group_id)
g.add_member(member)
groups[group_id] = g
print("\n******** Done ********\n")
elif option == '2':
"""
Adding a member to a group. This is possible only for a group admin.
"""
if member.group_id == None:
print("\nYou are not a member of any group!!")
continue
m = int(input("Select member : "))
if m not in members.keys():
print("Invalid Member ID entered!!")
continue
g = member.group_id
group = groups[g]
mem = members[m]
member.add_member_to_group(mem, group)
elif option == '3':
"""
Removing a member from a group. This is possible only for a group admin
"""
if member.group_id == None:
print("\nYou are not a member of any group!!")
continue
m = int(input("Select member : "))
if m not in members.keys():
print("Invalid Member ID entered!!")
continue
g = member.group_id
group = groups[g]
mem = members[m]
member.remove_member_from_group(mem, group)
elif option == '4':
"""
Sending a message, intra-group or inter-group
"""
message = input(bcolors.BOLD + bcolors.WARNING + "Enter the message to send : " + bcolors.ENDC)
g = int(input(bcolors.BOLD + bcolors.WARNING + "Enter the ID of the group to which message is to be sent : " + bcolors.ENDC))
if g not in groups.keys():
print(bcolors.BOLD + bcolors.ERROR + "Invalid Group ID entered!!" + bcolors.ENDC)
continue
group = groups[g]
member.add_message_to_group(group, message)
if g == member.group_id: # Intra-group message
for mem in group.members.values():
mem.read_latest_message_of_group(group)
members[mem.id] = mem
else: # Inter-group message
for mem in group.members.values():
mem.read_latest_intergroup_message(group)
members[mem.id] = mem
elif option == '5':
"""
Reading messages received on your group
"""
print(bcolors.BOLD + bcolors.WARNING + "Below are the messages received on your group : "+bcolors.ENDC)
for message in member.message_history:
print("\"{}\" - Message received from {}".format(message[0], message[1]))
elif option == '6':
print(bcolors.BOLD + bcolors.OKGREEN + "\n******** Logging out the member ********\n"+bcolors.ENDC)
break
else:
print(bcolors.BOLD + bcolors.ERROR + "Invalid choice!! Please try again."+bcolors.ENDC)
elif choice == '3':
print("******** Exiting demo ********\n")
break
else:
print(bcolors.BOLD + bcolors.ERROR + "Invalid choice!! Please try again." + bcolors.ENDC)
if __name__ == '__main__':
app.run(main)