Skip to content

Commit

Permalink
committing to new branch
Browse files Browse the repository at this point in the history
  • Loading branch information
quoncc committed Aug 24, 2023
1 parent b47a9b8 commit c77eae2
Show file tree
Hide file tree
Showing 7 changed files with 196 additions and 37 deletions.
69 changes: 67 additions & 2 deletions api/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,83 @@




app = Flask(__name__)
app.json.sort_keys = False





@app.route('/getMembers', methods=['GET'])
def apiGetMembers():
return (queries.getMembers())
token = request.headers['token']
try:
permission = authenticate.getRolePermission(token, 'seemembers')
except:
return "Forbidden", 403
if permission == True:
return (queries.getMembers())
else:
return "Forbidden", 403




@app.route('/getMemberByName', methods=['GET'])
def apiGetMemberByName():
token = request.headers['token']
try:
permission = authenticate.getRolePermission(token, 'seemembers')
except:
return "Forbidden", 403
if permission == True:
firstName = request.args.get('firstname')
lastName = request.args.get('lastname')
result = queries.getMemberByName(firstName, lastName)
if result == False:
return "Member not found", 404
else:
return result
else:
return "Forbidden", 403




@app.route('/getMemberById/<id>', methods=['GET'])
def apiGetMemberById(id):
try:
return queries.getMemberByID(id)
except:
return "Member does not exist", 404
return "Member not found", 404





@app.route('/getMemberDetailsByID/<id>', methods=['GET'])
def apiGetMemberDetailsByID(id):
token = request.headers['token']
try:
permission = authenticate.getRolePermission(token, 'seemembers')
except:
return "Forbidden", 403
if permission == True:
try:
return queries.getMemberDetailsByID(id)
except:
return "Member not found", 404
else:
return "Forbidden", 403



@app.route('/addMember', methods='POST')
def apiAddMember():
try:
queries.createNewMember(**request.args)
return 200
except:
return "Error", 500

120 changes: 108 additions & 12 deletions api/queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,27 @@
from models.request import request
from sqlalchemy import select
import variables
from sqlalchemy.orm import Session
from db.database import create_db_engine, executeQuery
import stringcase


#execute query

db_engine = create_db_engine()



# returns list of dicts for each member

def keysToCamelCase(keydict):


def getMembers():
stmt = (
select(member.id,
member.firstname,
member.lastname,
member.emailaddress,
member.slackhandle)
member.first_name,
member.last_name,
member.email_address,
member.phone_number,
member.slack_handle)
)
result = executeQuery(stmt, db_engine)
baselist = []
Expand All @@ -34,11 +37,14 @@ def getMembers():

def getMemberByID(memberId):
stmt = (
select(member.id,
member.firstname,
member.lastname,
member.emailaddress)
.where(member.id == memberId)
select(
member.id,
member.first_name,
member.last_name,
member.email_address,
member.phone_number,
member.slack_handle)
.where(member.id == memberId)
)
result = executeQuery(stmt,db_engine)
try:
Expand All @@ -47,3 +53,93 @@ def getMemberByID(memberId):
raise ValueError("Member does not exist")
return response

def getMemberByName(firstName, lastName):
stmt = (
select(
member.id,
member.first_name,
member.last_name,
member.email_address,
member.phone_number,
member.slack_handle
).where(member.first_name == firstName).where(member.lastname == lastName)
)
result = executeQuery(stmt,db_engine)
resultkeys = result.keys()
resultall = result.all()
if len(resultall) == 0:
return False
elif len(resultall) == 1:
response = dict(zip(resultkeys, resultall[0]))
return response
else:
baselist = []
for row in resultall:
baselist.append(dict(zip(resultkeys, row)))
return baselist


def getMemberDetailsByID(memberID):
stmt = (
select(
member.id,
member.first_name,
member.last_name,
member.email_address,
member.phone_number,
member.slack_handle,
install.install_number,
install.building_id,
install.install_status,
building.street_address,
building.building_status,
building.city,
building.state,
building.zip_code,
building.latitude,
building.longitude,
building.altitude,
building.network_number,
building.install_date,
building.abandon_date,
building.panorama_image
).where(member.id == memberID)
.join(install, member.id == install.member_id)
.join(building, install.building_id == building.id)
)
result = executeQuery(stmt, db_engine)
try:
response = dict(zip(result.keys(), result.one()))
except:
raise ValueError("Member does not exist")
returndict = {
'firstName': response['first_name'],
'lastName': response['last_name'],
'emailAddress': response['email_address'],
'phoneNumber': response['phone_number'],
'install': {
'installNumber': response['building_id'],
'status': response['install_status'],
},
'building': {
'networkNumber': response['network_number'],
'buildingStatus': response['building_status'],
'streetAddress': response['street_address'],
'city': response['city'],
'state': response['state'],
'zipCode': response['zip_code'],
'latitude': response['latitude'],
'longitude': response['longitude'],
'altitude': response['altitude']
}
}
return returndict

def createNewMember(**kwargs):
newMember = member
for key, value in kwargs:
setattr(member, key, value)
with Session(db_engine) as session:
session.add_all([member])
session.commit()

14 changes: 7 additions & 7 deletions models/building.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@ class building(Base):
__tablename__ = "buildings"

id: Mapped[int] = mapped_column(primary_key=True)
status: Mapped[str] = mapped_column(String(45))
streetaddress: Mapped[str] = mapped_column(TEXT)
building_status: Mapped[str] = mapped_column(String(45))
street_address: Mapped[str] = mapped_column(TEXT)
city: Mapped[str] = mapped_column(String(45))
state: Mapped[str] = mapped_column(String(45))
zipcode: Mapped[int] = mapped_column()
zip_code: Mapped[int] = mapped_column()
latitude: Mapped[float] = mapped_column()
longitude: Mapped[float] = mapped_column()
altitude: Mapped[float] = mapped_column()


networknumber: Mapped[int] = mapped_column(nullable=True)
installdate: Mapped[datetime.date] = mapped_column(nullable=True)
abandondate: Mapped[datetime.date] = mapped_column(nullable=True)
panoramaimage: Mapped[str] = mapped_column(TEXT, nullable=True)
network_number: Mapped[int] = mapped_column(nullable=True)
install_date: Mapped[datetime.date] = mapped_column(nullable=True)
abandon_date: Mapped[datetime.date] = mapped_column(nullable=True)
panorama_image: Mapped[str] = mapped_column(TEXT, nullable=True)
7 changes: 4 additions & 3 deletions models/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ class install(Base):
__tablename__ = "installs"

id: Mapped[int] = mapped_column(primary_key=True)
status: Mapped[str] = mapped_column(String(45))
buildingid: Mapped[int] = mapped_column(ForeignKey("buildings.id"))
memberid: Mapped[int] = mapped_column(ForeignKey("members.id"))
install_number: Mapped[int] = mapped_column()
install_status: Mapped[str] = mapped_column(String(45))
building_id: Mapped[int] = mapped_column(ForeignKey("buildings.id"))
member_id: Mapped[int] = mapped_column(ForeignKey("members.id"))
10 changes: 5 additions & 5 deletions models/member.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ class member(Base):
__tablename__ = "members"

id: Mapped[int] = mapped_column(primary_key=True)
firstname: Mapped[str] = mapped_column(String(45))
lastname: Mapped[str] = mapped_column(String(45))
emailaddress: Mapped[str] = mapped_column(String(45))
phonenumber: Mapped[str] = mapped_column(String(20), nullable=True)
slackhandle: Mapped[str] = mapped_column(String(45), nullable=True)
first_name: Mapped[str] = mapped_column(String(45))
last_name: Mapped[str] = mapped_column(String(45))
email_address: Mapped[str] = mapped_column(String(45))
phone_number: Mapped[str] = mapped_column(String(20), nullable=True)
slack_handle: Mapped[str] = mapped_column(String(45), nullable=True)
3 changes: 0 additions & 3 deletions models/modeltest.py

This file was deleted.

10 changes: 5 additions & 5 deletions models/request.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ class request(Base):
__tablename__ = "requests"

id: Mapped[int] = mapped_column(primary_key=True)
status: Mapped[str] = mapped_column(String(45))
ticketid: Mapped[int] = mapped_column()
memberid: Mapped[int] = mapped_column(ForeignKey("members.id"), nullable=True)
buildingid: Mapped[int] = mapped_column(ForeignKey("buildings.id"), nullable=True)
installid: Mapped[int] = mapped_column(ForeignKey("installs.id"), nullable=True)
request_status: Mapped[str] = mapped_column(String(45))
ticket_id: Mapped[int] = mapped_column()
member_id: Mapped[int] = mapped_column(ForeignKey("members.id"), nullable=True)
building_id: Mapped[int] = mapped_column(ForeignKey("buildings.id"), nullable=True)
install_id: Mapped[int] = mapped_column(ForeignKey("installs.id"), nullable=True)

0 comments on commit c77eae2

Please sign in to comment.