def to_dict(self): json_object = self.event_to_dict() result = [] for model in self.expenses: if model.expense_id in self.internal_expense_ids: model.internal_expense_id = self.internal_expense_ids[model.expense_id] result.append(model.to_dict()) json_object[self.k_expenses] = result result = [] for team_member_row in EventTeamMembers.team_members(self.event_id): person = PersonModel.find_person(team_member_row.person_id) person_dict = person.to_dict() person_dict[Constants.k_is_removed] = team_member_row.is_removed if person.time_stamp is not None: person_dict[Constants.k_time_stamp] = person.time_stamp.isoformat() result.append(person_dict) json_object[self.k_team_members] = result return json_object
def post(self): # user_id = request.form['userID'] # token = request.form['userToken'] # event_id = request.form['eventID'] # model = BaseResource.check_user_credentials_with_credentials(user_id, token) # # if not isinstance(model, PersonModel): # # Some error happens here # return model # items = EventModel.query.filter_by(event_id=event_id).all() # if len(items) > 0: # return {'status': 'event_not_exist'}, 401 team_members_json = request.form["teamMembersID"] try: team_members = json.loads(team_members_json) except ValueError: return Constants.error_wrong_json_format() if not isinstance(team_members, list): return Constants.error_wrong_json_structure() result = {} for team_member in team_members: local_user_id = team_member["user_id"] if local_user_id is None: continue person_model = PersonModel() person_model.first_name = team_member["first_name"] person_model.last_name = team_member["last_name"] # Add person to the model db.session.add(person_model) db.session.commit() result[local_user_id] = person_model.to_dict() return result
def configure_team_members_with_dict(self, dict_model): if dict_model is not None and isinstance(dict_model, list): for member_dict in dict_model: member_id = member_dict.get(self.k_person_id) member = PersonModel.find_person(member_id) member.configure_with_dict(member_dict) # Need commit immediately to get 'person_id' db.session.add(member) db.session.commit() if Constants.k_internal_id in member_dict: self.internal_team_member_ids[member.person_id] = member_dict[Constants.k_internal_id]
def post(self): parser = reqparse.RequestParser() parser.add_argument('facebookID', type=str, help='Facebook ID', location='form') parser.add_argument('email', type=str, help='User email', location='form', required=True) parser.add_argument('firstName', type=str, help='First Name', location='form', required=True) parser.add_argument('lastName', type=str, help='Last Name', location='form', required=True) parser.add_argument('password', type=str, help='Password', location='form', required=True) args = parser.parse_args() person_model = PersonModel() person_model.email = args['email'] items = PersonModel.query.filter_by(email=person_model.email).all() if len(items) > 0: return Constants.error_with_message_and_status('user_is_already_exist', 401) parameter = 'password' if not parameter in args: return Constants.error_missed_parameter(parameter) person_model.first_name = args['firstName'] person_model.last_name = args['lastName'] person_model.facebook_id = args['facebookID'] # Encrypt user password password = request.form['password'] encr_password = passlib.encrypt(password, salt_length=100) person_model.password = encr_password # Generate user token with expiration date person_model.token = TokenSerializer.generate_auth_token(person_model.person_id) # Add person to the model db.session.add(person_model) db.session.commit() return person_model.to_dict()
def post(self): parser = reqparse.RequestParser() parser.add_argument(Constants.k_user_id, type=int, help='User ID', location='form', required=True) parser.add_argument(Constants.k_user_token, type=str, help='User token', location='form', required=True) parser.add_argument(PersonModel.k_person_id, type=str, help='Person ID', location='headers') parser.add_argument(Constants.k_internal_id, type=str, help='Internal event ID', location='headers') parser.add_argument(Constants.k_is_removed, type=str, help='Is event removed', location='headers') parser.add_argument(Constants.k_event_id, type=int, help='Event ID', location='headers', required=True) parser.add_argument(PersonModel.k_first_name, type=str, help='First name', location='headers') parser.add_argument(PersonModel.k_last_name, type=str, help='Last name', location='headers') parser.add_argument(PersonModel.k_email, type=str, help='Email', location='headers') parser.add_argument(PersonModel.k_facebook_id, type=str, help='Facebook ID', location='headers') args = parser.parse_args() user_id = args[Constants.k_user_id] token = args[Constants.k_user_token] current_user = BaseResource.check_user_credentials_with_credentials(user_id, token=token) if not isinstance(current_user, PersonModel): # Return error description return current_user email = args.get(PersonModel.k_email) # Is person has email? if email is not None and len(email) > 0: # Yes: try to find person by email person = PersonModel.find_person_by_email(email) if person is not None: # Person with this email is exist person.configure_with_dict(args) else: # Person with current email doesn't exist person = PersonModel() else: # No: try to find the person by ID person_id = args.get(PersonModel.k_person_id) person = PersonModel.find_person(person_id) person.configure_with_dict(args) db.session.add(person) db.session.commit() event_id = args.get(Constants.k_event_id) team_member_event_row = EventTeamMembers.find_team_member_for_event(event_id, person.person_id) team_member_event_row.event_id = event_id team_member_event_row.person_id = person.person_id is_removed = args.get(Constants.k_is_removed) if is_removed is not None: team_member_event_row.is_removed = bool(is_removed) team_member_event_row.time_stamp = datetime.utcnow() db.session.add(team_member_event_row) db.session.commit() return person.to_dict()