def setUp(self) -> None: """Create all db tables before each test""" self.client = app.test_client() self.app_context = app.app_context() with self.app_context: db.create_all() self.keynote_1 = KeynoteModel(**TEST_KEYNOTE_1) self.keynote_2 = KeynoteModel(**TEST_KEYNOTE_2) self.member_1 = MemberModel(**TEST_MEMBER_1) self.member_2 = MemberModel(**TEST_MEMBER_2) self.meeting_1 = MeetingModel(**TEST_MEETING_1) self.meeting_2 = MeetingModel(**TEST_MEETING_2) self.permission_1 = PermissionModel(**TEST_PERMISSION_1) self.permission_2 = PermissionModel(**TEST_PERMISSION_2) self.permission_3 = PermissionModel(**TEST_PERMISSION_3) self.permission_4 = PermissionModel(**TEST_PERMISSION_4) self.permission_5 = PermissionModel(**TEST_PERMISSION_5) self.permission_6 = PermissionModel(**TEST_PERMISSION_6) self.permission_7 = PermissionModel(**TEST_PERMISSION_7) self.permission_8 = PermissionModel(**TEST_PERMISSION_8) self.project_1 = ProjectModel(**TEST_PROJECT_1) self.project_2 = ProjectModel(**TEST_PROJECT_2) self.role_1 = RoleModel(**TEST_ROLE_1) self.role_2 = RoleModel(**TEST_ROLE_2) self.role_3 = RoleModel(**TEST_ROLE_3) self.role_4 = RoleModel(**TEST_ROLE_4) self.role_5 = RoleModel(**TEST_ROLE_5) self.speaker_1 = SpeakerModel(**TEST_SPEAKER_1) self.speaker_2 = SpeakerModel(**TEST_SPEAKER_2)
def post(self, member_id): json_data = request.get_json() member = MemberModel(member_id, **json_data) try: member.save_to_db() except ValueError: return { "message": "An error occurred inserting the item." }, 500 # Internal server error return member.json(), 201 # created status code
def test_find_by_id(self): with self.app_context: member_1, _ = self.add_member_to_db(self.member_1, self.role_1) member = MemberModel.find_by_id(member_1.id) self.assertEqual(member.email, self.EMAIL)
def test_find_all(self): with self.app_context: member, _ = self.add_member_to_db(self.member_1, self.role_1) members = MemberModel.find_all() self.assertEqual(members[0].id, member.id)
def login() -> ApiResponse: """Login a member""" member_json = request.get_json() email = member_json["email"] password = member_json["password"] member = MemberModel.find_by_email(email) if member and member.verify_password(password) and member.is_active: identity = member_schema.dump(member) access_token = create_access_token(identity=identity, fresh=True) _refresh_token = create_refresh_token(identity=identity) add_token_to_database([access_token, _refresh_token], member.id) return ( jsonify( { "access_token": access_token, "refresh_token": _refresh_token, "member": identity, }, ), 200, ) abort(401, description=MEMBER_401)
def members(): members=MemberModel.fetch_all() print(members) if request.method == 'POST': fname = request.form['fname'] lname = request.form['lname'] email = request.form['email'] record = MemberModel(fname=fname,lname=lname,email=email) record.create_record() flash("Record has been successifully created","success") return redirect(url_for('members')) return render_template('members.html', all_members = members)
def put_member(member_id: int) -> ApiResponse: member = MemberModel.find_by_id(member_id) identity = get_jwt_identity() if member and identity["id"] != member.id: abort( 401, description=ERROR_401, ) if not member: abort( 404, description=ERROR_404.format("Member", "id", member_id), ) member_json = request.get_json() member_by_email = MemberModel.find_by_email(member_json.get("email")) if member_by_email and member_by_email.id != member_id: abort( 409, description=ERROR_409.format( "Member", "email", member_json.get("email"), ), ) member.email = member_json.get("email") member.mobile_phone = member_json.get("mobile_phone") member.first_name = member_json.get("first_name") member.last_name = member_json.get("last_name") member.linkedin_profile = member_json.get("linkedin_profile") member.github_profile = member_json.get("github_profile") member.twitter_profile = member_json.get("twitter_profile") member.profile_picture = member_json.get("profile_picture") member.save_to_db() return ( jsonify({ "message": MODIFIED.format("Member"), "member": member_schema.dump(member), }), 200, )
def post(self): member_id = request.form.get('member_id') if MemberModel.find_by_id(member_id): message = "Correct member id" else: message = "Wrong member id" return render_template('form.html', message=message)
def test_get_permissions(self): with self.app_context: member_1, role = self.add_member_to_db(self.member_1, self.role_1) permission = self.add_permission_to_db(self.permission_1) role.permissions.append(permission) member = MemberModel.find_by_id(member_1.id) self.assertEqual(member.get_permissions(), [permission.permission_name])
def test_meetings_members_relation(self): with self.app_context: meeting, member, _ = self.add_meeting_to_db( self.meeting_1, self.member_1, self.role_1) meeting = MeetingModel.find_by_id(meeting.id) member = MemberModel.find_by_id(member.id) meeting.members.append(member) self.assertEqual(meeting.members[0].email, member.email)
def get_member(member_id: int) -> ApiResponse: member = MemberModel.find_by_id(member_id) if not member: abort(404, description=ERROR_404.format("Member", "id", member_id)) return ( jsonify({ "member": member_schema.dump(member), }), 200, )
def test_projects_members_relation(self): with self.app_context: self.role_1.save_to_db() self.member_1.save_to_db() project_id = self.project_1.save_to_db().id member_id = self.member_1.save_to_db().id project = ProjectModel.find_by_id(project_id) member = MemberModel.find_by_id(member_id) project.members.append(member) self.assertEqual(project.members[0].email, "*****@*****.**")
def deactivate_member(member_id: int) -> ApiResponse: member = MemberModel.find_by_id(member_id) if not member: abort(404, description=ERROR_404.format("Member", "id", member_id)) member.is_active = False member.save_to_db() return ( jsonify({ "message": DEACTIVATED.format("Member"), "member": member_schema.dump(member), }), 200, )
def post(self, name): if MemberModel.find_by_name(name): return { "message": "Member named {} is already exists.".format(name) }, 400 member = MemberModel(name, 0) try: member.save_to_db() except: return { "message": "An error occurred while registering member." }, 500 return member.json(), 201
def post_member() -> ApiResponse: member_json = request.get_json() if MemberModel.find_by_email(member_json.get("email")): abort( 409, description=ERROR_409.format( "Member", "email", member_json.get("email"), ), ) member = member_schema.load(member_json) member.save_to_db() return ( jsonify({ "message": CREATED.format("Member"), "member": member_schema.dump(member), }), 201, )
def change_member_password(member_id: int) -> ApiResponse: member = MemberModel.find_by_id(member_id) identity = get_jwt_identity() if member and identity["id"] != member.id: abort( 401, description=ERROR_401, ) if not member: abort(404, description=ERROR_404.format("Member", "id", member_id)) member_json = request.get_json() member.password_hash = generate_password_hash(member_json.get("password")) member.save_to_db() return ( jsonify({ "message": PASSWORD_MODIFIED, "member": member_schema.dump(member), }), 200, )
def add_member_to_db( self, member: MemberModel, role: RoleModel ) -> Tuple[MemberModel, RoleModel]: role = self.add_role_to_db(role) member = member.save_to_db() return member, role
def get(self, name): member = MemberModel.find_by_name(name) if member: return member.json(), 200 return {"message": "Member named {} was not found.".format(name)}, 404
def get(self): # List comprehensions version return { 'members': [member.json() for member in MemberModel.find_all()] }
def add_claims_to_jwt(identity: Dict) -> MemberJSON: return { "permissions": MemberModel.find_by_id(identity["id"]).get_permissions() }