예제 #1
0
class EduQACourse(db.Model):
    __tablename__ = 'eduqa_courses'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    th_code = db.Column(db.String(255), nullable=False, info={'label': u'รหัส'})
    en_code = db.Column(db.String(255), nullable=False, info={'label': u'English Code'})
    th_name = db.Column(db.String(255), nullable=False, info={'label': u'ชื่อภาษาไทย'})
    en_name = db.Column(db.String(255), nullable=False, info={'label': u'English Title'})
    semester = db.Column(db.String(), info={'label': u'ภาคการศึกษา'})
    academic_year = db.Column(db.String(), info={'label': u'ปีการศึกษา'})
    th_desc = db.Column(db.Text(), info={'label': u'คำอธิบายรายวิชา'})
    en_desc = db.Column(db.Text(), info={'label': u'Description'})
    lecture_credit = db.Column(db.Numeric(), default=0, info={'label': u'หน่วยกิตบรรยาย'})
    lab_credit = db.Column(db.Numeric(), default=0, info={'label': u'หน่วยกิตปฏิบัติ'})
    created_at = db.Column(db.DateTime(timezone=True))
    updated_at = db.Column(db.DateTime(timezone=True))

    creator_id = db.Column(db.ForeignKey('staff_account.id'))
    updater_id = db.Column(db.ForeignKey('staff_account.id'))

    creator = db.relationship(StaffAccount, foreign_keys=[creator_id])
    updater = db.relationship(StaffAccount, foreign_keys=[updater_id])

    category_id = db.Column(db.ForeignKey('eduqa_course_categories.id'))
    category = db.relationship(EduQACourseCategory,
                               backref=db.backref('courses', lazy='dynamic'))

    revision_id = db.Column(db.ForeignKey('eduqa_curriculum_revisions.id'))
    revision = db.relationship(EduQACurriculumnRevision,
                               backref=db.backref('courses', lazy='dynamic'))

    @property
    def credits(self):
        return self.lecture_credit + self.lab_credit
예제 #2
0
class HealthServiceTimeSlot(db.Model):
    __tablename__ = 'health_service_timeslots'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    start = db.Column('start',
                      db.DateTime(timezone=True),
                      nullable=False,
                      info={'label': u'เริ่ม'})
    end = db.Column('end',
                    db.DateTime(timezone=True),
                    nullable=False,
                    info={'label': u'สิ้นสุด'})
    service_id = db.Column(db.ForeignKey('health_service_services.id'))
    site_id = db.Column(db.ForeignKey('health_service_sites.id'))
    staff_id = db.Column(db.ForeignKey('staff_account.id'), nullable=False)
    created_by = db.relationship('StaffAccount')
    quota = db.Column(db.Integer, info={'label': 'Quota'})
    cancelled_at = db.Column(db.DateTime(timezone=True))

    site = db.relationship(HealthServiceSite, backref=db.backref('slots'))
    service = db.relationship(HealthServiceService,
                              backref=db.backref('slots'))

    @property
    def remaining(self):
        return self.quota - len(self.bookings)

    @property
    def is_available(self):
        return self.remaining > 0
예제 #3
0
class Address(db.Model):
    __tablename__ = 'address'
    id = db.Column(Integer, unique=True, primary_key=True)
    address_line1 = db.Column(String(100))
    address_line2 = db.Column(String(100))
    street = db.Column(String(100))
    area = db.Column(String(100))
    city = db.Column(String(100))
    state = db.Column(String(100))
    country = db.Column(String(100))
    pin_code = db.Column(String(6))
    modified_at = db.Column(db.DateTime(), default=Util.current_date_time())
    created_at = db.Column(db.DateTime(), default=Util.current_date_time())
    modified_by = db.Column(Integer)
    is_active = db.Column(db.Boolean, default=True)

    @staticmethod
    def add_address(address):
        address_obj = Address(
            address_line1=address['address_line1'],
            address_line2=address['address_line2'],
            street=address['street'],
            area=address['area'],
            city=address['city'],
            state=address['state'],
            country=address['country'],
            pin_code=address['pin_code'],
        )
        try:
            db.session.add(address_obj)
            db.session.flush()
            op_obj = {
                'status': True,
                'message': 'address added ',
                'address_id': address_obj.id
            }
            log.info("Address created successfully")
            return op_obj
        except SQLAlchemyError as e:
            error = str(e.__dict__['orig'])
            log.error("Failed to create address in table " + str(error))
            op_obj = {
                'status': False,
                'message': 'Failed to create address ',
            }
            return op_obj

    @staticmethod
    def get_by(**kwargs):
        try:
            return Address.query.filter_by(**kwargs).first()
        except SQLAlchemyError as e:
            error = str(e.__dict__['orig'])
            log.error('Failed to get address by id ' + str(error))
            return False
예제 #4
0
class FlightDetails(db.Model):
	__tablename__ = 'flight_details'
	id = db.Column(db.Integer, primary_key = True, autoincrement = True)
	flight_number = db.Column(db.String(100), primary_key = True)
	source = db.Column(db.String(200), nullable = False)
	destination = db.Column(db.String(200), nullable = False)
	flight_date = db.Column(db.Date, primary_key = True)
	departure_time = db.Column(db.Time(timezone = False), nullable = False) #departure from the source
	destination_arrival_time = db.Column(db.Time(timezone = False), nullable = False) #arrival at the destination
	total_seats = db.Column(db.Integer, nullable = False)
	booked_seats = db.Column(db.Integer, default = 0)
	created_at = db.Column(db.DateTime(timezone=False), default=datetime.now(), nullable=False)
	updated_at = db.Column(db.DateTime(timezone=False), default=datetime.now(), nullable=False)
예제 #5
0
class DocRoundOrg(db.Model):
    __tablename__ = 'doc_round_orgs'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    sent_at = db.Column(db.DateTime(timezone=True))
    round_id = db.Column(db.ForeignKey('doc_rounds.id'))
    org_id = db.Column(db.ForeignKey('orgs.id'))
    finished_at = db.Column(db.DateTime(timezone=True))

    org = db.relationship('Org')
    round = db.relationship(DocRound,
                            backref=db.backref('targets',
                                               lazy='dynamic',
                                               cascade='all, delete-orphan'))
예제 #6
0
class HealthServiceBooking(db.Model):
    __tablename__ = 'health_service_bookings'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    slot_id = db.Column(db.ForeignKey('health_service_timeslots.id'))
    slot = db.relationship(HealthServiceTimeSlot,
                           backref=db.backref('bookings'))
    cancelled = db.Column(db.DateTime(timezone=True))
    created_at = db.Column(db.DateTime(timezone=True))
    updated_at = db.Column(db.DateTime(timezone=True))
    confirmed_at = db.Column(db.DateTime(timezone=True))
    user_id = db.Column(db.ForeignKey('health_service_app_users.id'))
    user = db.relationship('HealthServiceAppUser',
                           backref=db.backref('bookings'))
예제 #7
0
class DocRoundOrgReach(db.Model):
    __tablename__ = 'doc_round_org_reaches'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    reached_at = db.Column(db.DateTime(timezone=True))
    reacher_id = db.Column(db.ForeignKey('staff_account.id'))
    reacher = db.relationship(StaffAccount)
    created_at = db.Column(db.DateTime(timezone=True))

    round_org_id = db.Column(db.ForeignKey('doc_round_orgs.id'))

    round_org = db.relationship(DocRoundOrg,
                                backref=db.backref(
                                    'round_reaches',
                                    lazy='dynamic',
                                    cascade='all, delete-orphan'))
예제 #8
0
class FlightBookingRecords(db.Model):
    __tablename__ = 'flight_booking_records'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    flight_number = db.Column(db.String(100), primary_key=True)
    flight_date = db.Column(db.Date, primary_key=True)
    departure_time = db.Column(db.Time(timezone=False),
                               nullable=False)  #departure from the source
    total_seats = db.Column(db.Integer, nullable=False)
    seats_booked = db.Column(db.Integer, default=0)
    created_on = db.Column(db.DateTime(timezone=False),
                           default=datetime.now(),
                           nullable=False)
    updated_on = db.Column(db.DateTime(timezone=False),
                           default=datetime.now(),
                           nullable=False)
예제 #9
0
class DocReceiveRecord(db.Model):
    __tablename__ = 'doc_receive_records'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    predefined_comment = db.Column(
        db.String(255),
        info={
            'label':
            'Predefined Comment',
            'choices':
            [(c, c) for c in
             [u'แจ้งเพื่อทราบ', u'แจ้งเพื่อพิจารณา', u'ขอความร่วมมือเข้าร่วม']]
        })
    comment = db.Column(db.Text, info={'label': 'Additional Comment'})
    sent_at = db.Column(db.DateTime(timezone=True))
    sender_id = db.Column(db.ForeignKey('staff_account.id'))
    round_org_id = db.Column(db.ForeignKey('doc_round_orgs.id'))
    round_org = db.relationship(DocRoundOrg,
                                backref=db.backref('sent_records',
                                                   lazy='dynamic'))
    doc_id = db.Column(db.ForeignKey('doc_documents.id'))
    rejected = db.Column(db.Boolean(), default=False)
    members = db.relationship(StaffPersonalInfo, secondary=receipt_receivers)
    sender = db.relationship(StaffAccount)
    doc = db.relationship(DocDocument,
                          backref=db.backref('doc_receipts',
                                             lazy='dynamic',
                                             cascade='all, delete-orphan'))
예제 #10
0
class UserRoleEntity(db.Model, CRUDMixin):
    """ Stores the user-role mapping """
    __tablename__ = 'UserRole'

    id = db.Column("urID", db.Integer, primary_key=True)
    user_id = db.Column("usrID",
                        db.Integer,
                        db.ForeignKey('User.usrID', ondelete='CASCADE'),
                        nullable=False)
    role_id = db.Column("rolID",
                        db.Integer,
                        db.ForeignKey('Role.rolID', ondelete='CASCADE'),
                        nullable=False)
    added_at = db.Column('urAddedAt',
                         db.DateTime(),
                         nullable=False,
                         server_default='0000-00-00 00:00:00')

    role = db.relationship('RoleEntity', uselist=False)
    user = db.relationship('UserEntity', uselist=False)

    def get_id(self):
        """ return the unicode of the primary key value """
        return unicode(self.id)

    def __repr__(self):
        return "<UserRoleEntity (\n\t" \
            "urID: {0.id}, \n\t" \
            " {0.user!r}, \n\t" \
            " {0.role!r}, \n" \
            " {0.added_at}, \n" \
            ")>".format(self)
예제 #11
0
class DocDocument(db.Model):
    __tablename__ = 'doc_documents'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    round_id = db.Column(db.ForeignKey('doc_rounds.id'))
    round = db.relationship(DocRound,
                            backref=db.backref('documents',
                                               lazy='dynamic',
                                               order_by='DocDocument.number',
                                               cascade='all, delete-orphan'))
    number = db.Column(db.Integer(), info={'label': u'Number'})
    deadline = db.Column(db.DateTime(timezone=True),
                         info={'label': 'Deadline'})
    addedAt = db.Column(db.DateTime(timezone=True))
    file_name = db.Column(db.String(255))
    url = db.Column(db.String(255))
    priority = db.Column(db.String(255),
                         info={
                             'label':
                             'Priority',
                             'choices':
                             [(c, c)
                              for c in [u'ปกติ', u'ด่วน', u'ด่วนที่สุด']]
                         })
    stage = db.Column(db.String(255),
                      info={
                          'label':
                          'Stage',
                          'choices':
                          [(c, c) for c in [u'drafting', u'ready', u'sent']]
                      })
    title = db.Column(db.String(255), info={'label': 'Title'})
    summary = db.Column(db.Text(), info={'label': 'Summary'})
    comment = db.Column(db.Text(), info={'label': 'Comment'})
    category_id = db.Column(db.ForeignKey('doc_categories.id'))
    category = db.relationship(DocCategory,
                               backref=db.backref(
                                   'documents',
                                   lazy='dynamic',
                                   cascade='all, delete-orphan'))

    def get_recipients(self, round_org_id):
        receipt = self.doc_receipts.filter_by(round_org_id=round_org_id,
                                              doc_id=self.id).first()
        if receipt:
            return receipt.members
        else:
            return []
예제 #12
0
class CustomerBooking(db.Model):
    __tablename__ = 'customer_booking'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    flight_number = db.Column(db.String(100), primary_key=True)
    contact_email = db.Column(db.String(100), nullable=False)
    flight_date = db.Column(db.Date, primary_key=True)
    departure_time = db.Column(db.Time(timezone=False),
                               nullable=False)  #departure from the source
    seats_booked = db.Column(db.Integer, default=0, nullable=False)
    booking_id = db.Column(db.Integer, default=-1, primary_key=True)
    booking_status = db.Column(db.String(100), default="pending")
    ticket_booked_on = db.Column(db.DateTime(timezone=False),
                                 default=datetime.now(),
                                 nullable=False)
    ticket_booking_updated_on = db.Column(db.DateTime(timezone=False),
                                          default=datetime.now(),
                                          nullable=False)
예제 #13
0
class DocRound(db.Model):
    __tablename__ = 'doc_rounds'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    date = db.Column(db.Date(), info={'label': 'Date'}, nullable=False)
    created_at = db.Column(db.DateTime(timezone=True))
    created_by = db.Column(db.ForeignKey('staff_account.id'))
    creator = db.relationship(StaffAccount)

    def __str__(self):
        return self.date.strftime('%d/%m/%Y')
예제 #14
0
class File(db.Model):
    __tablename__ = "file"
    id = db.Column(db.String(50), primary_key=True)
    name = db.Column(db.String(255), unique=False)
    extension = db.Column(db.String(10), unique=False)
    type = db.Column(db.Enum(FileType), unique=False, nullable=False)
    created_date = db.Column(db.DateTime(timezone=True),
                             server_default=func.now())

    def get_path(self, directory_path):
        return os.path.join(directory_path,
                            '{}.{}'.format(self.id, self.extension))
예제 #15
0
class DocDocumentReach(db.Model):
    __tablename__ = 'doc_document_reaches'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    reached_at = db.Column(db.DateTime(timezone=True))
    reacher_id = db.Column(db.ForeignKey('staff_account.id'))
    reacher = db.relationship(StaffAccount,
                              backref=db.backref('doc_reaches',
                                                 lazy='dynamic'))
    doc_id = db.Column(db.ForeignKey('doc_documents.id'))
    starred = db.Column(db.Boolean(False))
    note = db.Column(db.Text())
    doc = db.relationship(DocDocument,
                          backref=db.backref('reaches',
                                             lazy='dynamic',
                                             cascade='all, delete-orphan'))
    round_org_id = db.Column(db.ForeignKey('doc_round_orgs.id'))
    round_org = db.relationship(DocRoundOrg,
                                backref=db.backref('doc_reaches',
                                                   lazy='dynamic'))
    sender_comment = db.Column(db.Text())
    receiver_comment = db.Column(db.Text())
    receiver_commented_at = db.Column(db.DateTime(timezone=True))
    created_at = db.Column(db.DateTime(timezone=True))
예제 #16
0
class EduQACourseSession(db.Model):
    __tablename__ = 'eduqa_course_sessions'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    course_id = db.Column(db.ForeignKey('eduqa_courses.id'))
    start = db.Column(db.DateTime(timezone=True), nullable=False, info={'label': u'เริ่ม'})
    end = db.Column(db.DateTime(timezone=True), nullable=False, info={'label': u'สิ้นสุด'})
    type_ = db.Column(db.String(255), info={'label': u'รูปแบบการสอน',
                                            'choices': [(c, c) for c in (u'บรรยาย', u'ปฏิบัติการ', u'กิจกรรม', u'สอบ')]})
    desc = db.Column(db.Text())

    course = db.relationship(EduQACourse, backref=db.backref('sessions', lazy='dynamic'))
    instructors = db.relationship('EduQAInstructor',
                                  secondary=session_instructors,
                                  backref=db.backref('sessions', lazy='dynamic'))

    @property
    def total_hours(self):
        delta = self.end - self.start
        return u'{} ชม. {} นาที'.format(delta.seconds//3600, (delta.seconds//60)%60)

    @property
    def total_seconds(self):
        delta = self.end - self.start
        return delta.seconds
예제 #17
0
class SmartClassOnlineAccountEvent(db.Model):
    __tablename__ = 'smartclass_scheduler_online_account_events'
    id = db.Column('id', db.Integer(), primary_key=True, autoincrement=True)
    account_id = db.Column(
        'account_id',
        db.ForeignKey('smartclass_scheduler_online_accounts.id'),
        nullable=False)
    title = db.Column('title',
                      db.String(255),
                      nullable=False,
                      info={'label': u'กิจกรรม'})
    start = db.Column('start',
                      db.DateTime(timezone=True),
                      nullable=False,
                      info={'label': u'เริ่ม'})
    end = db.Column('end',
                    db.DateTime(timezone=True),
                    nullable=False,
                    info={'label': u'สิ้นสุด'})
    occupancy = db.Column('occupancy',
                          db.Integer(),
                          info={'label': u'ผู้เข้าร่วม'})
    approved = db.Column('approved', db.Boolean(), default=True)
    created_at = db.Column('created_at',
                           db.DateTime(timezone=True),
                           server_default=func.now())
    created_by = db.Column('created_by', db.ForeignKey('staff_account.id'))
    creator = db.Column('creator',
                        db.String(),
                        nullable=True,
                        info={'label': u'ชื่อผู้ลงทะเบียน'})
    updated_at = db.Column('updated_at',
                           db.DateTime(timezone=True),
                           server_default=None)
    updated_by = db.Column('updated_by', db.ForeignKey('staff_account.id'))
    cancelled_at = db.Column('cancelled_at',
                             db.DateTime(timezone=True),
                             server_default=None)
    cancelled_by = db.Column('cancelled_by', db.ForeignKey('staff_account.id'))
    approved_by = db.Column('approved_by', db.ForeignKey('staff_account.id'))
    approved_at = db.Column('approved_at',
                            db.DateTime(timezone=True),
                            server_default=None)
    note = db.Column('note', db.Text(), info={'label': u'หมายเหตุ'})
    account = db.relationship(SmartClassOnlineAccount,
                              backref=db.backref('events'))
예제 #18
0
class VehicleBooking(db.Model):
    __tablename__ = 'scheduler_vehicle_bookings'
    id = db.Column('id', db.Integer(), primary_key=True, autoincrement=True)
    vehicle_id = db.Column('vehicle_id',
                           db.ForeignKey('scheduler_vehicle_resources.id'),
                           nullable=False)
    vehicle = db.relationship('VehicleResource',
                              backref=db.backref('bookings'))
    title = db.Column('title', db.String(255), nullable=False)
    init_milage = db.Column('init_milage', db.Integer, nullable=True)
    end_milage = db.Column('end_milage', db.Integer, nullable=True)
    toll_fee = db.Column('toll_fee', db.Float(), default=0.0)
    distance = db.Column('distance', db.Integer, nullable=True)
    init_location = db.Column('init_location', db.String(255), nullable=True)
    destination = db.Column('destination', db.String(255), nullable=True)
    start = db.Column('start', db.DateTime(timezone=True), nullable=False)
    end = db.Column('end', db.DateTime(timezone=True), nullable=False)
    iocode_id = db.Column('iocode_id', db.ForeignKey('iocodes.id'))
    iocode = db.relationship('IOCode', backref=db.backref('vehicle_bookings'))
    org_id = db.Column('org_id', db.ForeignKey('orgs.id'))
    org = db.relationship('Org', backref=db.backref('vehicle_bookings'))
    num_passengers = db.Column('num_passengers', db.Integer())
    approved = db.Column('approved', db.Boolean(), default=False)
    closed = db.Column('closed', db.Boolean(), default=False)
    created_at = db.Column('created_at',
                           db.DateTime(timezone=True),
                           server_default=func.now())
    created_by = db.Column('created_by', db.ForeignKey('staff_account.id'))
    updated_at = db.Column('updated_at',
                           db.DateTime(timezone=True),
                           server_default=None)
    updated_by = db.Column('updated_by', db.ForeignKey('staff_account.id'))
    cancelled_at = db.Column('cancelled_at',
                             db.DateTime(timezone=True),
                             server_default=None)
    cancelled_by = db.Column('cancelled_by', db.ForeignKey('staff_account.id'))
    approved_by = db.Column('approved_by', db.ForeignKey('staff_account.id'))
    approved_at = db.Column('approved_at',
                            db.DateTime(timezone=True),
                            server_default=None)
    desc = db.Column('desc', db.Text())
    google_event_id = db.Column('google_event_id', db.String(64))
    google_calendar_id = db.Column('google_calendar_id', db.String(255))
예제 #19
0
class RoomEvent(db.Model):
    __tablename__ = 'scheduler_room_reservations'
    id = db.Column('id', db.Integer(), primary_key=True, autoincrement=True)
    room_id = db.Column('room_id',
                        db.ForeignKey('scheduler_room_resources.id'),
                        nullable=False)
    category_id = db.Column('category_id',
                            db.ForeignKey('scheduler_event_categories.id'))
    category = db.relationship('EventCategory', backref=db.backref('events'))
    title = db.Column('title', db.String(255), nullable=False)
    start = db.Column('start', db.DateTime(timezone=True), nullable=False)
    end = db.Column('end', db.DateTime(timezone=True), nullable=False)
    iocode_id = db.Column('iocode_id', db.ForeignKey('iocodes.id'))
    occupancy = db.Column('occupancy', db.Integer())
    # number of sets of food/refreshment requested
    refreshment = db.Column('refreshment', db.Integer(), default=0)
    request = db.Column('request', db.Text())  # comma separated list of things
    approved = db.Column('approved', db.Boolean(), default=True)
    created_at = db.Column('created_at',
                           db.DateTime(timezone=True),
                           server_default=func.now())
    created_by = db.Column('created_by', db.ForeignKey('staff_account.id'))
    updated_at = db.Column('updated_at',
                           db.DateTime(timezone=True),
                           server_default=None)
    updated_by = db.Column('updated_by', db.ForeignKey('staff_account.id'))
    cancelled_at = db.Column('cancelled_at',
                             db.DateTime(timezone=True),
                             server_default=None)
    cancelled_by = db.Column('cancelled_by', db.ForeignKey('staff_account.id'))
    approved_by = db.Column('approved_by', db.ForeignKey('staff_account.id'))
    approved_at = db.Column('approved_at',
                            db.DateTime(timezone=True),
                            server_default=None)
    extra_items = db.Column('extra_items', db.JSON)
    note = db.Column('note', db.Text())
    google_event_id = db.Column('google_event_id', db.String(64))
    google_calendar_id = db.Column('google_calendar_id', db.String(255))
예제 #20
0
class RbaUser(db.Model):
    __tablename__ = 'rba_user'
    id = db.Column(Integer, primary_key=True, autoincrement=True)
    name = db.Column(String(100))
    mobile = db.Column(String(100))
    email = db.Column(String(100))
    is_email_verified = db.Column(db.Boolean, nullable=False, default=False)
    password = db.Column(String(250))
    gender = db.Column(String(8))
    aadhaar_no = db.Column(String(20))
    dob = db.Column(db.DateTime())
    profile_image = db.Column(String(250))
    address_id = db.Column(Integer, ForeignKey('address.id'), nullable=True)
    created_at = db.Column(db.DateTime(), default=Util.current_date_time())
    modified_at = db.Column(db.DateTime(), default=Util.current_date_time())
    modified_by = db.Column(Integer)
    is_active = db.Column(db.Boolean, default=True)

    # this method will add user but we have to commit where we have called this method
    @staticmethod
    def add_user(user):

        # adding address in address table
        result = AddressService.add_address(user['address'])
        if result['status'] is False:
            return {
                'status': constants.STATUS_FAIL,
                'message': 'Failed to create address'
            }

        address_id = result['address_id']
        '''encrypt password'''
        password = sha256_crypt.encrypt(user['password'])

        try:
            log.info("adding in user table")
            users = RbaUser(name=user['name'],
                            mobile=user['mobile'],
                            email=user['email'],
                            password=password,
                            gender=user['gender'],
                            aadhaar_no=user['aadhaar_no'],
                            dob=user['dob'],
                            profile_image=user['profile_image'],
                            address_id=address_id)
            db.session.add(users)
            db.session.flush()
            op_object = {
                'status': constants.STATUS_PASS,
                'user_id': users.id,
                'address_id': address_id
            }
        except SQLAlchemyError as e:
            template = "An exception of type {0} occurred. Arguments:\n{1!r}"
            error = template.format(type(e).__name__, e.args)
            log.error("problem in user table")
            log.error(error)
            op_object = {'status': constants.STATUS_FAIL, 'msg': error}

        return op_object

    @staticmethod
    def get_by(**kwargs):
        try:
            return RbaUser.query.filter_by(**kwargs).first()
        except SQLAlchemyError as e:
            error = str(e.__dict__['orig'])
            log.error(error)
            return False