def user_page(): uses = Users(app.config['dsn']) if request.method == 'GET' and ('users_to_new' not in request.form): now = datetime.datetime.now() uselist = uses.get_userlist() return render_template('users.html', UserList = uselist, current_time=now.ctime()) elif 'users_to_delete' in request.form: id_users = request.form.getlist('users_to_delete') for id_user in id_users: uses.delete_user(id_user) return redirect(url_for('user_page')) elif 'users_to_add' in request.form: uses.add_user(request.form['kuladi'],request.form['password']) return redirect(url_for('user_page')) elif 'users_to_update' in request.form: uses.update_user(request.form['id_user'], request.form['kuladi'],request.form['password']) return redirect(url_for('user_page')) elif 'users_to_search' in request.form: searchList = uses.search_user(request.form['name']); now = datetime.datetime.now() uselist = uses.get_userlist() return render_template('users.html', UserList = uselist, SearchList = searchList, current_time=now.ctime()) elif 'users_to_new' in request.form: uses.add_user(request.form['user'],request.form['password']) return redirect(url_for('home_page2'))
def main(): set_from_db.get_songs_from_file() set_from_db.get_users_from_file() # Users.initiate_users() # SongsList.initiate_songs() Users.add_user("eytan", "123") e = Users.get_user("eytan") e.change_password("123", "456") e.add_playlist("lala") e.add_playlist("lala2") p = e.get_playlist("lala") s1 = Song("hamilton", 2010, "rap", "lin manuel miranda") s2 = Song("hamilton_1", 2010, "rap", "lin manuel miranda") SongsList.add_song(s1) SongsList.add_song(s2) e.add_song_to_playlist("lala", "hamilton") e.add_song_to_playlist("lala", "hamilton_1") e.add_song_to_playlist("lala2", "hamilton_1") set_from_db.write_users_to_file() set_from_db.write_songs_to_file() print("h")
def register(): form = RegistrationForm(request.form) if request.method == 'POST' and form.validate(): user = Users(form.firstname.data, form.lastname.data, form.email.data, form.password.data) user.add_user(user) flash('Thanks for registering') return redirect('/') return render_template('register.j2', form=form)
def test_add_multiple_users(self): ''' test_add_multiple_users to check if we can save multiple user objects to our users_list ''' self.new_user.add_user() test_user = Users("Alfred", "101") test_user.add_user() self.assertEqual(len(Users.users_list), 2)
def test_user_exists(self): ''' test to see if a true is returned when a user exists and false otherwise ''' self.new_user.add_user() test_user = Users("Alfred", "101") test_user.add_user() user_exists = Users.user_exists("Alfred", "101") self.assertTrue(user_exists)
def test_find_user_by_username(self): ''' test to check if we can find a user by username ''' self.new_user.add_user() test_user1 = Users("Wanjiru", "1") test_user1.add_user() found_user = Users.find_by_username("Wanjiru") self.assertEqual(found_user.login_password, test_user1.login_password)
def get_users_from_source(users): Users.initiate_users() for k, v in users.items(): name = v['name'] password = v['password'] Users.add_user(name, password, True) user = Users.get_user(name) user.friends = v['friends'] for playlist_name, songs in v['playlists'].items(): user.add_playlist(playlist_name) for song in songs: user.add_song_to_playlist(playlist_name, song)
def test_remove_users(self): ''' test_remove_users to test if we can remove a user from our user list ''' self.new_user.add_user() test_user = Users("Alfred", "101") test_user.add_user() test_user1 = Users("Wanjiru", "1") test_user1.add_user() test_user.delete_user() self.assertEqual(len(Users.users_list), 2)
class Users_Test(unittest.TestCase): def setUp(self): self.uzytkownicy = Users() self.uzytkownicy.add_user('Marta', 'm') self.uzytkownicy.add_user('Julia', 'j') def test_add_user(self): Users.add_user(self.uzytkownicy, 'Zuza', 'z') self.assertEqual(Users.show_users(self.uzytkownicy), 'Marta, Julia, Zuza') def test_delete_user(self): Users.delete_user(self.uzytkownicy, 'Julia', 'j') self.assertEqual(Users.show_users(self.uzytkownicy), 'Marta')
class UserManagementTestcase(unittest.TestCase): def setUp(self): self.user = Users() self.current_user = USERS self.email = "*****@*****.**" self.username = "******" self.password = "******" def test_if_user_added(self): test_user = self.user.add_user(self.user_email, self.username, self.password) self.assertEqual(test_user, "User added successfully.")
def add_user(): user_name = request.json.get("user_name") user_password = request.json.get("user_password") valid = validations.valid_parameters(user_name=user_name, user_password=user_password) if valid != True: return valid user = Users.add_user(user_name, user_password) if user is None: return {"error": f"user with name {user_name} already exists."} set_from_db.write_users_to_file() return {"messgae": "OK", "data": user}
def interaction(): print( 'Witaj w programie, w którym zaplanujesz swój budżet. W razie problemów wpisz "help".' ) if os.path.exists('Uzytkownicy'): with open('Uzytkownicy', 'rb') as o: uzytkownicy = pickle.load(o) else: uzytkownicy = Users() help = '1 - Utwórz profil \n2 - Usuń profil \n3 - Wyświetl nazwy użytkowników \n4 - Wybierz profil (zaloguj się) ' \ '\n5 - Przypomnij hasło \n6 - Zakończ program\n' while True: wybor = input('Co chcesz zrobić? ').lower() #pomoc if wybor == 'help': print(help) # tworzenie profilu elif wybor == '1': try: login = input('Podaj login: '******'Podaj hasło: ') # jeśli ktoś z takim loginem już istnieje: błąd if login in uzytkownicy.logins: raise ValueError # gdy nie było jeszcze takiego loginu else: uzytkownicy.add_user(login, haslo) print('Użytkownik został dodany\n') with open(login + '_pass', 'wb') as g: pickle.dump(haslo, g) except ValueError: print( 'Użytkownik o podanym loginie już istnieje. Spróbuj jeszcze raz.\n' ) # koniec programu elif wybor == '6': odp = input( 'Czy na pewno chcesz wyjść z programu? T/N ').upper() if odp == 'T': with open('Uzytkownicy', 'wb') as u: pickle.dump(uzytkownicy, u) return else: pass # usuwanie profilu elif wybor == '2': try: login = input( 'Podaj login użytkownika, którego chcesz usunąć (UWAGA: Ta operacja usunie wszystkie dane ' 'związane z podanym profilem): ') if login in uzytkownicy.logins: haslo = input('Podaj hasło: ') uzytkownicy.delete_user(login, haslo) print('Użytkownik został usunięty\n') # usuwamy informacje o uzytkowniku (login, haslo, budzet) if os.path.exists(login + '_pass'): os.remove(login + '_pass') if os.path.exists(login + '_budget'): os.remove(login + '_budget') else: raise ValueError except ValueError: print( 'Użytkownik o podanym loginie nie istnieje lub wprowadzone hasło jest nieprawidłowe. ' 'Spróbuj jeszcze raz.\n') # wyświetlanie obecnych użytkowników elif wybor == '3': if len(uzytkownicy.logins) == 0: print('Brak użytkowników\n') else: print('Obecni użytkownicy to: ' + uzytkownicy.show_users() + '\n') # przypomnienie hasła elif wybor == '5': try: login = input('Podaj login: '******'_pass'): with open(login + '_pass', 'rb') as g: haslo = pickle.load(g) print('Twoje hasło to: ' + haslo) else: raise ValueError except ValueError: print( 'Użytkownik o podanym loginie nie istnieje. Spróbuj jeszcze raz.' ) # logowanie się na konto elif wybor == '4': try: login = input('Podaj login: '******'Podaj hasło: ') if os.path.exists(login + '_pass'): with open(login + '_pass', 'rb') as p: check = pickle.load(p) if haslo == check: if login not in uzytkownicy.logins: uzytkownicy.add_user(login, haslo) user = uzytkownicy.select_user(login, haslo) print( 'Pomyślne zalogowanie do programu. W razie problemów, wpisz help.\n' ) else: raise ValueError else: raise ValueError help2 = '\n1 - Zmień hasło \n2 - Dodaj transakcję' \ '\n3 - Pokaż wszystkie transakcje \n4 - Pokaż budżet \n5 - Pokaż ostrzeżenia ' \ '\n6 - Pokaż tabelę \n7 - Wyczyść cały budżet ' \ '\n8 - Wróć do poprzedniego menu \n9 - Zapisz zmiany \n10 - Stwórz przykładowy budżet ' # wczytujemy budżet użytkownika, jeśli już istnieje if os.path.exists(user.login + '_budget'): with open(user.login + '_budget', 'rb') as h: budzet = pickle.load(h) user.budzet = budzet while True: wybor2 = input('Co dalej? ').lower() # pomoc if wybor2 == 'help': print(help2) # powrót do poprzedniego menu elif wybor2 == "8": odp = input('Pamiętaj, aby zapisać zmiany! Czy na pewno chcesz wrócić do poprzedniego menu? T/N ')\ .upper() if odp == 'T': break elif odp == 'N': pass elif wybor2 == '10': n = int( input( 'Podaj przykładową liczbę transakcji w miesiącu: ' )) example = Generator(n) example.simulation() # zapisywanie zmian elif wybor2 == '9': # zapisujemy budżet użytkownika with open(user.login + '_budget', 'wb') as f: pickle.dump(user.budzet, f) # zapisujemy ramki danych fig = plt.figure(facecolor='w', edgecolor='k') sns.heatmap(user.budzet.show_df_inc(), annot=True, cmap='viridis', cbar=False) plt.savefig(user.login + '_inc') fig = plt.figure(facecolor='w', edgecolor='k') sns.heatmap(user.budzet.show_df_exp(), annot=True, cmap='viridis', cbar=False) plt.savefig(user.login + '_exp') fig = plt.figure(facecolor='w', edgecolor='k') sns.heatmap(user.budzet.show_df_details(), annot=True, cmap='viridis', cbar=False) plt.savefig(user.login + '_details') # zapisywanie wykresów user.budzet.show_pieplot() plt.savefig(user.login + '_pie') user.budzet.show_barplot() plt.savefig(user.login + '_bar') # zmiana hasła elif wybor2 == '1': try: password = input('Podaj obecne hasło: ') password2 = input('Podaj nowe hasło: ') uzytkownicy.change_pass(user.login, password, password2) print('Hasło zostało zmienione\n') with open(user.login + '_pass', 'wb') as g: pickle.dump(password2, g) except ValueError: print('Spróbuj ponownie\n') # wprowadzenie transakcji / dodanie kategorii elif wybor2 == '2': print(user.budzet.kategorie) typ = input('Wydatek czy przychód? (W/P) ').upper() if typ == 'P': dzialanie = input('Aby dodać nową kategorię wciśnij K, aby wprowadzić przychód wciśnij P: ')\ .upper() if dzialanie == 'K': try: new_cat = input('Podaj nową kategorię: ') user.budzet.add_inc_cat(new_cat) print('Pomyślnie dodano nową kategorię.') except ValueError: print( 'Podana kategoria już istnieje. Spróbuj jeszcze raz.' ) elif dzialanie == 'P': try: category = input('Podaj kategorię: ') t = input( 'Podaj typ budżetu (r/p): ').lower() amount = float(input('Podaj kwotę: ')) day = int(input('Podaj dzień: ')) user.add_inc(category, t, amount, day) print('Dodano nowy przychód') except ValueError: print( 'Coś poszło nie tak... Spróbuj jeszcze raz.' ) else: print( 'Masz do wyboru literkę P lub K. Spróbuj ponownie.' ) elif typ == 'W': dzialanie2 = input( 'Aby dodać nową kategorię wciśnij K, aby wprowadzić wydatek wciśnij W: ' ).upper() if dzialanie2 == 'K': try: new_cat = input('Podaj nową kategorię: ') user.budzet.add_exp_cat(new_cat) print('Pomyślnie dodano nową kategorię') except ValueError: print( 'Podana kategoria już istnieje. Spróbuj jeszcze raz.' ) elif dzialanie2 == 'W': try: category = input('Podaj kategorię: ') t = input( 'Podaj typ budżetu (r/p): ').lower() amount = float(input('Podaj kwotę: ')) day = int(input('Podaj dzień: ')) user.add_exp(category, t, amount, day) print('Dodano nowy wydatek') except ValueError: print( 'Coś poszło nie tak... Spróbuj jeszcze raz.' ) else: print( 'Masz do wyboru literkę W lub K. Spróbuj ponownie.' ) # pokaż wszystkie transakcje elif wybor2 == '3': print(user.show_trans()) # pokaż inf. o budżecie elif wybor2 == '4': print(user.show_budget()) # pokaż ostrzeżenia elif wybor2 == '5': print(user.show_warnings()) # pokaż tabelę elif wybor2 == '6': tab = input( 'Przychodów (P), wydatków (W) czy wydatków dzień po dniu (D)?' ).upper() if tab == 'P': print(user.budzet.show_df_inc()) elif tab == 'W': print(user.budzet.show_df_exp()) elif tab == 'D': print('Wybierz zakres dni:') try: a = int(input('od: ')) if a < 1 or a > 31: raise ValueError b = int(input('do: ')) if b < 1 or b > 31: raise ValueError print(user.budzet.show_selected_days(a, b)) except ValueError: print( 'Podano nieprawidłowy zakres (0 < a,b < 31). Spróbuj jeszcze raz.' ) else: print( 'Masz do wyboru literki: P/W/D. Spróbuj ponownie.' ) elif wybor2 == '7': answer = input( 'Czy jesteś pewny, że chcesz usunąć wszystkie dane ze swojego budżetu? (T/N)' ).upper() if answer == 'T': user.clear_budget() elif answer == 'N': pass else: print('Wspomóż się poleceniem "help"\n') except ValueError: print( 'Użytkownik o podanym loginie nie istnieje lub wprowadzone hasło jest nieprawidłowe. Spróbuj jeszcze raz.\n' ) else: print('Wspomóż się poleceniem "help"\n')
class Bot(object): def __init__(self, configpath, userspath): self.log = Log(configpath) self.config = Config(configpath) self.users = Users(userspath) self.updater = None self.dispatcher = None def init_updater(self): try: self.updater = Updater(token=self.config.get_value("BOT", "token"), use_context=True) self.dispatcher = self.updater.dispatcher return self.dispatcher except Exception as exc: self.log.LOGGING.error( "Whoops. We failed to set up the updater. Error: {}".format( exc)) def init_handler(self): start_handler = CommandHandler('start', self.start) subscribe_handler = CommandHandler('subscribe', self.subscribe) unsubscribe_handler = CommandHandler('unsubscribe', self.unsubscribe) # TODO: help command self.dispatcher.add_handler(start_handler) self.dispatcher.add_handler(subscribe_handler) self.dispatcher.add_handler(unsubscribe_handler) def start_bot(self): thread = Thread(target=self.updater.start_polling, args=()) thread.start() def start(self, update, context): text = """ Hi there! Welcome to the **Heise Online Telegram News Bot**. Please note that the bot was **not** build by Heise Online itself. You can view the source on GitHub: https://github.com/jpylypiw/heise-online-news-telegram-bot **Commands the bot can execute:** /subscribe - this starts the news subscription /unsubscribe - this stops the automatic news sent to you If you don't want to use the bot anymore, just delete the chat. """ self.send_message(update.effective_chat.id, text, context.bot.send_message) def subscribe(self, update, context): succeeded = self.users.add_user(update.effective_chat.id) if succeeded: text = """ Thank you for subscribing to the news! We will send you the next news when we got some. """ else: text = """ You have already subscribed to the news. """ self.send_message(update.effective_chat.id, text, context.bot.send_message) def unsubscribe(self, update, context): self.users.remove_user(update.effective_chat.id) text = """ You successfully unsubscribed from the list. Thanks for using Heise Online News Bot! You will no longer receive any messages. """ self.send_message(update.effective_chat.id, text, context.bot.send_message) def send_message(self, chat_id, text, func, parse_mode="Markdown", disable_web_page_preview=True): try: func(chat_id=chat_id, text=text, parse_mode=parse_mode, disable_web_page_preview=disable_web_page_preview) except Exception as exc: self.log.LOGGING.error("Error sending message: {}".format(exc))
def test_add_user(self): Users.add_user(self.uzytkownicy, 'Zuza', 'z') self.assertEqual(Users.show_users(self.uzytkownicy), 'Marta, Julia, Zuza')
class TestUsers(unittest.TestCase): ''' Test class that defines test cases for the Users class behaviours Args: unittest.TestCase: TestCase class that helps in creating test cases ''' def setUp(self): ''' Set up method to run before each test cases ''' self.new_user = Users("Lorna", "97") def test_initialization(self): ''' test_initialization case to test whether the object is being initialised properly ''' self.assertEqual(self.new_user.username, "Lorna") self.assertEqual(self.new_user.login_password, "97") def test_add_user(self): ''' test_add_user test case to test if the contact object is saved into the users list ''' self.new_user.add_user() self.assertEqual(len(Users.users_list), 1) def tearDown(self): ''' tearDown method that does clean up after each test case has run ''' Users.users_list = [] def test_add_multiple_users(self): ''' test_add_multiple_users to check if we can save multiple user objects to our users_list ''' self.new_user.add_user() test_user = Users("Alfred", "101") test_user.add_user() self.assertEqual(len(Users.users_list), 2) def test_remove_users(self): ''' test_remove_users to test if we can remove a user from our user list ''' self.new_user.add_user() test_user = Users("Alfred", "101") test_user.add_user() test_user1 = Users("Wanjiru", "1") test_user1.add_user() test_user.delete_user() self.assertEqual(len(Users.users_list), 2) def test_find_user_by_username(self): ''' test to check if we can find a user by username ''' self.new_user.add_user() test_user1 = Users("Wanjiru", "1") test_user1.add_user() found_user = Users.find_by_username("Wanjiru") self.assertEqual(found_user.login_password, test_user1.login_password) def test_user_exists(self): ''' test to see if a true is returned when a user exists and false otherwise ''' self.new_user.add_user() test_user = Users("Alfred", "101") test_user.add_user() user_exists = Users.user_exists("Alfred", "101") self.assertTrue(user_exists)
class Dkp(commands.Cog): def __init__(self, bot): self.bot = bot self.users = Users('users.dat') bot.loop.create_task(self.auto_load()) async def auto_load(self): await self.bot.wait_until_ready() while True: print('Updating users') self.users.users = self.users.load_users() await asyncio.sleep(60) #Admin/Gm/Lootmaster commands------------------ @commands.command() @commands.has_permissions(administrator=True) async def givedkp(self, ctx, user: str, amount: int): ''' Gives <Amount> of DKP to user out of thin air. ''' print(str(user)) recipient = self.users.find_user(user) recipient.dkp += amount self.users.save_users() await ctx.send('<@' + str(ctx.author.id) + '> Awarded ' + recipient.id + ' ' + str(amount) + ' DKP!') @commands.command() @commands.has_permissions(administrator=True) async def takedkp(self, ctx, user: str, amount: int): ''' Takes <Amount> of DKP from user. ''' #THATS A F*****G 50DKP MINUS!! print(str(user)) recipient = self.users.find_user(user) if recipient.dkp >= amount: recipient.dkp -= amount await ctx.send('<@' + str(ctx.author.id) + '> Removed ' + str(amount) + ' DKP from ' + recipient.id + '!') else: recipient.dkp = 0 await ctx.send('<@' + str(ctx.author.id) + '> Rinsed all of ' + recipient.id + '\'s DKP!') self.users.save_users() @commands.command() @commands.has_permissions(administrator=True) async def dkp_a(self, ctx): ''' Returns entire guild's DKP balance. ''' usersout = '```\n' for user in self.users.users: usersout += user.wow_name + '\'s DKP Balance: ' + str( user.dkp) + ' DKP\n' usersout += '```' await ctx.send(usersout) #End of admin only commands:---------------- @commands.command() async def setmain(self, ctx, character: str): ''' Allows you to set the character name of your WoW Classic main. Useage: !setmain <Charactername> ''' usr_id = '<@' + str(ctx.author.id) + '>' usr_name = str(ctx.author) wow_name = character saving = True updating = False for user in self.users.users: if user.id == usr_id: await ctx.send('<@' + str(ctx.author.id) + '> You\'ve already set your main!') saving = False updating = True #Already set main. if user.wow_name == wow_name: await ctx.send('<@' + str(ctx.author.id) + '> That WoW Name has already been set!') saving = False if saving: self.users.add_user(usr_id, usr_name, wow_name) await ctx.send('<@' + str(ctx.author.id) + '> your main has been set to ' + character) role = discord.utils.get(ctx.author.guild.roles, name="Peon") #Assign peon role automatically. await ctx.author.add_roles(role) elif updating: user = self.users.find_user(ctx.author.id) if user: if wow_name not in self.users.users: if user.wow_name != wow_name: user.wow_name = wow_name self.users.save_users() await ctx.send('<@' + str(ctx.author.id) + '> Main updated to: ' + wow_name) @commands.command() async def dkp(self, ctx): ''' Prints your DKP balance. Usage: !dkp ''' user = self.users.find_user(ctx.author.id) if user is not False: await ctx.send('```\n' + user.wow_name + '\'s DKP Balance:\n' + str(user.dkp) + '\n```') else: print( 'Have you set your WoW Main character yet? Try !setmain <character>' ) # for user in self.users.users: # if user.id == ('<@'+str(ctx.author.id)+'>'): # await ctx.send('```\n'+user.wow_name+'\'s DKP Balance:\n'+ str(user.dkp) +'\n```') @commands.command() async def transferdkp(self, ctx, recipient: str, amount: int): ''' Allows you to transfer DKP to another user. Recieving user must have !setmain\'ed, otherwise transaction will fail. Usage: !transferdkp @User <Amount> ''' #Nicknames contain a !, if this is the case remove it. if (recipient[2] == '!'): # recipient = recipient[0:2] + recipient[3:] recipient.replace('!', '') #Checks sender = self.users.find_user(ctx.author.id) if sender is not False: if sender.dkp >= amount: recip = self.users.find_user(recipient) if recip is not False: #do transfer recip.dkp += amount sender.dkp -= amount self.users.save_users() await ctx.send(sender.id + ' Successfully transferred ' + str(amount) + ' DKP to ' + recipient) else: await ctx.send( recipient + ' Has not yet !setmained, so cannot recieve DKP.') else: await ctx.send( sender.id + ' You do not have enough DKP for this transaction.') else: await ctx.send( sender.id + ' You have not yet used !setmain to set your character name. Do this to start transferring DKP.' )