Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
app-separating-code-to-models
Created
6 years ago
Diff never expires
Clear
Export
Share
Explain
52 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
102 lines
Copy
39 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
101 lines
Copy
Copy
Copied
Copy
Copied
import
os
import
random
import psycopg2
import psycopg2
Copy
Copied
Copy
Copied
from psycopg2.errors import DivisionByZero
from dotenv import load_dotenv
import database
import database
Copy
Copied
Copy
Copied
from connection_pool import pool
from models.option import Option
from models.poll import Poll
Copy
Copied
Copy
Copied
DATABASE_PROMPT = "Enter the DATABASE_URI value or leave empty to load from .env file: "
MENU_PROMPT = """-- Menu --
MENU_PROMPT = """-- Menu --
1) Create new poll
1) Create new poll
2) List open polls
2) List open polls
3) Vote on a poll
3) Vote on a poll
4) Show poll votes
4) Show poll votes
5) Select a random winner from a poll option
5) Select a random winner from a poll option
6) Exit
6) Exit
Enter your choice: """
Enter your choice: """
NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): "
NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): "
Copy
Copied
Copy
Copied
def prompt_create_poll(
connection
):
def prompt_create_poll(
):
poll_
title = input("Enter poll title: ")
title = input("Enter poll title: ")
poll_
owner = input("Enter poll owner: ")
owner = input("Enter poll owner: ")
options
=
[]
poll
=
Poll(title, owner)
poll.save()
while (new_option := input(NEW_OPTION_PROMPT)):
while (new_option := input(NEW_OPTION_PROMPT)):
Copy
Copied
Copy
Copied
option
s.append
(new_option)
poll.add_
option
(new_option)
database.create_poll(connection, poll_title, poll_owner, options)
Copy
Copied
Copy
Copied
def list_open_polls(
connection
):
def list_open_polls(
):
polls = database.get_polls(connection)
for poll in
P
oll
.all()
:
print(f"{poll
.id
}: {poll
.title
} (created by {poll
.owner
})")
for poll in
p
oll
s
:
print(f"{poll
[0]
}: {poll
[1]
} (created by {poll
[2]
})")
Copy
Copied
Copy
Copied
def prompt_vote_poll(
connection
):
def prompt_vote_poll(
):
poll_id = int(input("Enter poll would you like to vote on: "))
poll_id = int(input("Enter poll would you like to vote on: "))
Copy
Copied
Copy
Copied
poll_options = database.get_poll_details(connection, poll_id)
_print_poll_options(
Poll.get(
poll_
id).
options)
_print_poll_options(
poll_
options)
option_id = int(input("Enter option you'd like to vote for: "))
option_id = int(input("Enter option you'd like to vote for: "))
username = input("Enter the username you'd like to vote as: ")
username = input("Enter the username you'd like to vote as: ")
Copy
Copied
Copy
Copied
database.add_poll_vote(connection, username,
option_id)
Option.get(
option_id)
.vote(username)
Copy
Copied
Copy
Copied
def _print_poll_options(
poll_with_
options):
def _print_poll_options(
options):
for option in
poll_with_
options:
for option in
options:
print(f"{option
[3]
}: {option
[4]
}")
print(f"{option
.id
}: {option
.text
}")
Copy
Copied
Copy
Copied
def show_poll_votes(
connection
):
def show_poll_votes(
):
poll_id = int(input("Enter poll you would like to see votes for: "))
poll_id = int(input("Enter poll you would like to see votes for: "))
Copy
Copied
Copy
Copied
poll = Poll.get(poll_id)
options = poll.options
votes_per_option = [len(option.votes) for option in options]
total_votes = sum(votes_per_option)
try:
try:
Copy
Copied
Copy
Copied
poll_and_votes = database.get_poll_and_vote_results(connection, poll_id)
for option, votes in zip(options, votes_per_option):
except
DivisionByZero
:
percentage = votes / total_votes * 100
percentage = votes / total_votes * 100
print(f"{option.text} for {votes} ({percentage:.2f}% of total)")
except
ZeroDivisionError
:
print("No votes yet cast for this poll.")
print("No votes yet cast for this poll.")
Copy
Copied
Copy
Copied
else:
for result in poll_and_votes:
print(f"{result[1]} got {result[2]} votes ({result[3]:.2f}% of total)")
Copy
Copied
Copy
Copied
def randomize_poll_winner(
connection
):
def randomize_poll_winner(
):
poll_id = int(input("Enter poll you'd like to pick a winner for: "))
poll_id = int(input("Enter poll you'd like to pick a winner for: "))
Copy
Copied
Copy
Copied
poll
_options
=
database
.get
_poll_details(connection,
poll_id)
poll
=
Poll
.get
(
poll_id)
_print_poll_options(poll
_
options)
_print_poll_options(poll
.
options)
option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: "))
option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: "))
Copy
Copied
Copy
Copied
winner =
database.get_
random
_poll_
vote
(connection, option_id
)
votes = Option.get(option_id).votes
winner =
random
.choice(
vote
s
)
print(f"The randomly selected winner is {winner[0]}.")
print(f"The randomly selected winner is {winner[0]}.")
MENU_OPTIONS = {
MENU_OPTIONS = {
"1": prompt_create_poll,
"1": prompt_create_poll,
"2": list_open_polls,
"2": list_open_polls,
"3": prompt_vote_poll,
"3": prompt_vote_poll,
"4": show_poll_votes,
"4": show_poll_votes,
"5": randomize_poll_winner
"5": randomize_poll_winner
}
}
def menu():
def menu():
Copy
Copied
Copy
Copied
database_uri = input(DATABASE_PROMPT)
connection =
pool.getconn(
)
if not database_uri:
load_dotenv()
database_uri = os.environ["DATABASE_URI"]
connection =
psycopg2.connect(database_uri
)
database.create_tables(connection)
database.create_tables(connection)
Copy
Copied
Copy
Copied
pool.putconn(connection)
while (selection := input(MENU_PROMPT)) != "6":
while (selection := input(MENU_PROMPT)) != "6":
try:
try:
Copy
Copied
Copy
Copied
MENU_OPTIONS[selection](
connection
)
MENU_OPTIONS[selection](
)
except KeyError:
except KeyError:
print("Invalid input selected. Please try again.")
print("Invalid input selected. Please try again.")
menu()
menu()
Saved diffs
Original text
Open file
import os import psycopg2 from psycopg2.errors import DivisionByZero from dotenv import load_dotenv import database DATABASE_PROMPT = "Enter the DATABASE_URI value or leave empty to load from .env file: " MENU_PROMPT = """-- Menu -- 1) Create new poll 2) List open polls 3) Vote on a poll 4) Show poll votes 5) Select a random winner from a poll option 6) Exit Enter your choice: """ NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): " def prompt_create_poll(connection): poll_title = input("Enter poll title: ") poll_owner = input("Enter poll owner: ") options = [] while (new_option := input(NEW_OPTION_PROMPT)): options.append(new_option) database.create_poll(connection, poll_title, poll_owner, options) def list_open_polls(connection): polls = database.get_polls(connection) for poll in polls: print(f"{poll[0]}: {poll[1]} (created by {poll[2]})") def prompt_vote_poll(connection): poll_id = int(input("Enter poll would you like to vote on: ")) poll_options = database.get_poll_details(connection, poll_id) _print_poll_options(poll_options) option_id = int(input("Enter option you'd like to vote for: ")) username = input("Enter the username you'd like to vote as: ") database.add_poll_vote(connection, username, option_id) def _print_poll_options(poll_with_options): for option in poll_with_options: print(f"{option[3]}: {option[4]}") def show_poll_votes(connection): poll_id = int(input("Enter poll you would like to see votes for: ")) try: poll_and_votes = database.get_poll_and_vote_results(connection, poll_id) except DivisionByZero: print("No votes yet cast for this poll.") else: for result in poll_and_votes: print(f"{result[1]} got {result[2]} votes ({result[3]:.2f}% of total)") def randomize_poll_winner(connection): poll_id = int(input("Enter poll you'd like to pick a winner for: ")) poll_options = database.get_poll_details(connection, poll_id) _print_poll_options(poll_options) option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: ")) winner = database.get_random_poll_vote(connection, option_id) print(f"The randomly selected winner is {winner[0]}.") MENU_OPTIONS = { "1": prompt_create_poll, "2": list_open_polls, "3": prompt_vote_poll, "4": show_poll_votes, "5": randomize_poll_winner } def menu(): database_uri = input(DATABASE_PROMPT) if not database_uri: load_dotenv() database_uri = os.environ["DATABASE_URI"] connection = psycopg2.connect(database_uri) database.create_tables(connection) while (selection := input(MENU_PROMPT)) != "6": try: MENU_OPTIONS[selection](connection) except KeyError: print("Invalid input selected. Please try again.") menu()
Changed text
Open file
import random import psycopg2 import database from connection_pool import pool from models.option import Option from models.poll import Poll MENU_PROMPT = """-- Menu -- 1) Create new poll 2) List open polls 3) Vote on a poll 4) Show poll votes 5) Select a random winner from a poll option 6) Exit Enter your choice: """ NEW_OPTION_PROMPT = "Enter new option text (or leave empty to stop adding options): " def prompt_create_poll(): title = input("Enter poll title: ") owner = input("Enter poll owner: ") poll = Poll(title, owner) poll.save() while (new_option := input(NEW_OPTION_PROMPT)): poll.add_option(new_option) def list_open_polls(): for poll in Poll.all(): print(f"{poll.id}: {poll.title} (created by {poll.owner})") def prompt_vote_poll(): poll_id = int(input("Enter poll would you like to vote on: ")) _print_poll_options(Poll.get(poll_id).options) option_id = int(input("Enter option you'd like to vote for: ")) username = input("Enter the username you'd like to vote as: ") Option.get(option_id).vote(username) def _print_poll_options(options): for option in options: print(f"{option.id}: {option.text}") def show_poll_votes(): poll_id = int(input("Enter poll you would like to see votes for: ")) poll = Poll.get(poll_id) options = poll.options votes_per_option = [len(option.votes) for option in options] total_votes = sum(votes_per_option) try: for option, votes in zip(options, votes_per_option): percentage = votes / total_votes * 100 percentage = votes / total_votes * 100 print(f"{option.text} for {votes} ({percentage:.2f}% of total)") except ZeroDivisionError: print("No votes yet cast for this poll.") def randomize_poll_winner(): poll_id = int(input("Enter poll you'd like to pick a winner for: ")) poll = Poll.get(poll_id) _print_poll_options(poll.options) option_id = int(input("Enter which is the winning option, we'll pick a random winner from voters: ")) votes = Option.get(option_id).votes winner = random.choice(votes) print(f"The randomly selected winner is {winner[0]}.") MENU_OPTIONS = { "1": prompt_create_poll, "2": list_open_polls, "3": prompt_vote_poll, "4": show_poll_votes, "5": randomize_poll_winner } def menu(): connection = pool.getconn() database.create_tables(connection) pool.putconn(connection) while (selection := input(MENU_PROMPT)) != "6": try: MENU_OPTIONS[selection]() except KeyError: print("Invalid input selected. Please try again.") menu()
Find difference