コード例 #1
0
class Services(Resource):

    csr_schema = CSRSchema()

    @oidc.accept_token(require_token=True)
    @api_call_with_retry
    def put(self, id):
        json_data = request.get_json()

        if not json_data:
            return {'message': 'No input data received for updating CSR'}, 400

        auth_csr = CSR.find_by_username(g.oidc_token_info['username'])
        edit_csr = CSR.query.filter_by(csr_id=id).first_or_404()

        if auth_csr.csr_id != edit_csr.csr_id:
            return {
                'message': 'You do not have permission to edit this CSR'
            }, 403

        try:
            edit_csr = self.csr_schema.load(json_data,
                                            instance=edit_csr,
                                            partial=True).data
        except ValidationError as err:
            return {'message': err.messages}, 422

        db.session.add(edit_csr)
        db.session.commit()

        result = self.csr_schema.dump(edit_csr)

        return {'service_request': result.data, 'errors': result.errors}, 200
コード例 #2
0
ファイル: csrs.py プロジェクト: rarmitag/queue-management
class CsrSelf(Resource):

    csr_schema = CSRSchema()
    citizen_schema = CitizenSchema(many=True)

    @oidc.accept_token(require_token=True)
    def get(self):
        try:
            csr = CSR.query.filter_by(username=g.oidc_token_info['username'].
                                      split("idir/")[-1]).first()
            active_sr_state = SRState.query.filter_by(sr_code='Active').first()

            active_citizens = Citizen.query \
                .join(Citizen.service_reqs) \
                .filter_by(sr_state_id=active_sr_state.sr_state_id) \
                .join(ServiceReq.periods) \
                .filter_by(csr_id=csr.csr_id) \
                .filter(Period.time_end.is_(None))

            result = self.csr_schema.dump(csr)
            active_citizens = self.citizen_schema.dump(active_citizens)

            return {
                'csr': result.data,
                'active_citizens': active_citizens.data,
                'errors': result.errors
            }

        except exc.SQLAlchemyError as e:
            print(e)
            return {'message': 'API is down'}, 500
コード例 #3
0
ファイル: csrs.py プロジェクト: melrichar/queue-management
class CsrList(Resource):

    csr_schema = CSRSchema(many=True, exclude=(
        'office',
        'periods',
    ))

    @oidc.accept_token(require_token=True)
    def get(self):
        try:
            csr = CSR.find_by_username(g.oidc_token_info['username'])

            if csr.role.role_code != "GA":
                return {
                    'message':
                    'You do not have permission to view this end-point'
                }, 403

            csrs = CSR.query.filter_by(office_id=csr.office_id)
            filtered_csrs = [c for c in csrs if c.deleted is None]
            result = self.csr_schema.dump(filtered_csrs)

            return {'csrs': result.data, 'errors': result.errors}

        except exc.SQLAlchemyError as e:
            print(e)
            return {'message': 'API is down'}, 500
コード例 #4
0
class PeriodSchema(ma.ModelSchema):
    class Meta:
        model = Period
        jit = toastedmarshmallow.Jit

    period_id = fields.Int()
    sr_id = fields.Int()
    csr_id = fields.Int()
    reception_csr_ind = fields.Int()
    ps_id = fields.Int()
    time_start = fields.DateTime()
    time_end = fields.DateTime()
    ps = fields.Nested(
        PeriodStateSchema(exclude=(
            'ps_id',
            'ps_desc',
            'ps_number',
        )))
    sr = fields.Nested("ServiceReqSchema", exclude=('periods', ))
    csr = fields.Nested(
        CSRSchema(exclude=('csr_id', 'csr_state', 'csr_state_id', 'deleted',
                           'office', 'office_id', 'periods', 'qt_xn_csr_ind',
                           'receptionist_ind', 'role', 'role_id')))
コード例 #5
0
ファイル: csrs.py プロジェクト: rarmitag/queue-management
class CsrList(Resource):

    csr_schema = CSRSchema(many=True)

    @oidc.accept_token(require_token=True)
    def get(self):
        try:
            csr = CSR.query.filter_by(username=g.oidc_token_info['username'].
                                      split("idir/")[-1]).first()

            if csr.role.role_code != "GA":
                return {
                    'message':
                    'You do not have permission to view this end-point'
                }, 403

            csrs = CSR.query.filter_by(office_id=csr.office_id)
            result = self.csr_schema.dump(csrs)

            return {'csrs': result.data, 'errors': result.errors}

        except exc.SQLAlchemyError as e:
            print(e)
            return {'message': 'API is down'}, 500