예제 #1
0
    def serialize(self):
        s = {
            to_camel_case(column.name): getattr(self, column.name)
            for column in self.__table__.columns if column.name not in
            ['created_at', 'updated_at', 'start_time', 'stop_time']
        }
        if 'start_time' in self.__table__.columns:
            s[to_camel_case('start_time')] = str(self.start_time)
        if 'stop_time' in self.__table__.columns:
            s[to_camel_case('stop_time')] = str(self.stop_time)
        s['timestamps'] = {
            'created_at': datetime.strftime(self.created_at, '%Y-%m-%d'),
            'updated_at': self.updated_at
        }

        return s
예제 #2
0
def handleFormAction(formClass, field, submit, id=0):
    form_type = formClass.__name__.lower()[:-4]
    form = formClass()
    form._id = id

    model = get_model(form_type, id)
    if field == 'submit':
        for f in get_fields(formClass):
            load_field_value_from_submit(form_type, form, model, f)
        return submitForm(form, submit, id)

    data = request.form.get('value')
    if data is None:
        return 'The value parameter is not provided', 400

    for f in get_fields(formClass):
        load_field_value_from_session(form_type, form, model, f)

    form_field = get_attribute(form, field)
    if form_field is None:
        return 'Field "' + field + '" in ' + form_type + ' form was not found', 400
    if isinstance(form_field, str):
        return 'Field "' + field + '" in ' + form_type + ' form is not editable', 400

    session[form_type + '_' + field] = data
    form_field.data = data if data != '' or model is None else get_attribute(model, field)

    if get_attribute(form, 'post_load'):
        form.post_load()

    if form_field.validate(form):
        result = get_attribute(form_field, 'usedType', field)
        return to_camel_case(result) + ' is correct'

    return '\n'.join(item for item in form_field.errors), 400
예제 #3
0
def _upload_profile_photo(current_user, files):
    current_user.upload_profile_photo(files[0])
    resp = jsonify(
        to_camel_case({
            'url': current_user.profile_photo_url(),
            'file_name': files[0].filename,
        }))
    return resp, 200
예제 #4
0
    def serialize(self, get_children=False):
        s = {
            column.name: getattr(self, column.name)
            for column in self.__table__.columns if column.name not in
            ["created_at", "updated_at", "start_time", "stop_time"]
        }
        if "start_time" in self.__table__.columns:
            s[to_camel_case("start_time")] = str(self.start_time)
        if "stop_time" in self.__table__.columns:
            s[to_camel_case("stop_time")] = str(self.stop_time)
        s["timestamps"] = {
            "created_at": datetime.strftime(self.created_at, "%Y-%m-%d"),
            "updated_at": self.updated_at,
        }

        # get the related objects and serialize them
        if get_children:
            self.serialize_children_objects(s)
        return s
예제 #5
0
    def add_new_field(self, field):

        class_name = to_camel_case(field['discriminator'])
        class_ = getattr(models, class_name)

        field = class_(**field)
        session = db.session
        session.add(field)
        session.commit()

        return field
예제 #6
0
 def serialize(self):
     s = {
         to_camel_case(column.name): getattr(self, column.name)
         for column in self.__table__.columns
         if column.name not in ['created_at', 'updated_at']
     }
     s['timestamps'] = {
         'created_at': self.created_at,
         'updated_at': self.updated_at
     }
     return s
예제 #7
0
 def serialize(self):
     s = {
         to_camel_case(column.name): getattr(self, column.name)
         for column in self.__table__.columns if column.name not in
         ['created_at', 'updated_at', 'password_hash']
     }
     s['timestamps'] = {
         'createdAt': format_response_timestamp(self.created_at),
         'updatedAt': format_response_timestamp(self.updated_at)
     }
     return s
예제 #8
0
 def serialize_old(self):
     s = {
         to_camel_case(column.name): getattr(self, column.name)
         for column in self.__table__.columns
         if column.name not in ["created_at", "updated_at"]
     }
     s["timestamps"] = {
         "createdAt": format_response_timestamp(self.created_at),
         "updatedAt": format_response_timestamp(self.updated_at),
     }
     return s
예제 #9
0
def get_user_payload(user):
    data = {
        'role': user.role.value,
        'verified_email': user.verified_email,
        'first_name': user.first_name,
        'last_name': user.last_name,
        'email': user.email,
        'profile_photo_url': user.profile_photo_url(),
        'allow_resend_invite': user.password_hash is None,
    }
    return to_camel_case(data)
예제 #10
0
    def serialize_children_objects(self, s):
        """Get the model related objects and serializes them

        Args:
            s (list): serialized list object
        """
        back_refs = set(inspect(self).attrs.keys()) - set(
            self.__table__.columns.keys())
        for item in back_refs:
            obj = getattr(self, item)
            if isinstance(obj, list):
                list_item = [record.serialize() for record in obj]
                s[to_camel_case(item)] = list_item
예제 #11
0
 def serialize(self):
     s = {
         to_camel_case(column.name): getattr(self, column.name)
         for column in self.__table__.columns
         if column.name not in ['created_at', 'updated_at']
     }
     s['timestamps'] = {
         'created_at': self.created_at,
         'update_at': self.updated_at,
         'date_pretty_short': self.created_at.strftime('%b %d, %Y'),
         'date_pretty': self.created_at.strftime('%B %d, %Y')
     }
     return s
예제 #12
0
    def create_object(self, parent_object, dto, releation_key) -> Model:
        cls_name = parent_object.__class__.__name__

        if "discriminator" in dto:
            dto = dto.copy()
            class_name = to_camel_case(dto['discriminator'])
            class_ = getattr(models, class_name)
            del dto['discriminator']
            obj = class_(**dto)
            return obj

        model = find_model_for_relation(parent_object.__class__, releation_key)
        return model(**dto)
예제 #13
0
def authenticate_payload(user):
    data = {
        'userID': user.id,
        'role': user.role.value,
        'verified_email': user.verified_email,
        'first_name': user.first_name.title(),
        'last_name': user.last_name.title(),
        'email': user.email,
        'profile_photo': None,
    }
    if user.profile_photo_s3_key:
        key = user.profile_photo_s3_key
        data['profile_photo'] = {
            'url': user.profile_photo_url(),
            'file_name': key[key.rfind('/') + 1:],
        }
    return jsonify(to_camel_case(data))
예제 #14
0
def test_utils_to_camel_case():
    assert to_camel_case('apple') == 'Apple'
    assert to_camel_case('apple_pie') == 'Apple Pie'
    assert to_camel_case('MY_apple_pie') == 'My Apple Pie'
예제 #15
0
	def serialize(self, excluded=[], with_timestamp=True):
		excluded = excluded + ['created_at', 'updated_at', 'password', 'is_deleted', 'activation_code', 'auth_key']
		s = {to_camel_case(column.name): getattr(self, column.name) for column in self.__table__.columns if column.name not in excluded}
		if with_timestamp:
			s['timestamps'] = {'createdAt': format_response_timestamp(self.created_at), 'updatedAt': format_response_timestamp(self.updated_at)}
		return s