Beispiel #1
0
    def create_product(data, username):
        try:
            with session_scope() as session:
                user = session.query(models.UserSHG).filter(
                    models.UserSHG.username == username).first()
                if not user:
                    resp = {'status': 'fail', 'message': 'SHG does not exist'}
                    return resp, 400

                product = models.Product(data.get("name"),
                                         data.get("description"),
                                         data.get("image_uri"),
                                         data.get("min_size"),
                                         data.get("price"), user)

                session.add(product)
                resp = {
                    'status': 'success',
                    'message': 'Product added successfully'
                }
                return resp, 200

        except BaseException:
            LOG.error("Couldn't create product", exc_info=True)
            response_object = {
                'status': 'fail',
                'message': 'Try again',
            }
            return response_object, 500
Beispiel #2
0
 def create_bid(tender_id, amount, shg_id):
     # print(tender_id, amount, shg_id)
     with session_scope() as session:
         existing_bid = session.query(
             models.Bid).filter(models.Bid.shg_id == shg_id).filter(
                 models.Bid.tender_id == tender_id).all()
         if (len(existing_bid) == 0):
             shg = session.query(models.UserSHG).filter(
                 models.UserSHG.id == shg_id).all()[0]
             tender = session.query(models.Tender).filter(
                 models.Tender.id == tender_id).all()[0]
             new_bid = models.Bid(amount, shg, tender)
             if new_bid:
                 session.add(new_bid)
                 response_data = {
                     "success": True,
                     "data": format_response(session, new_bid)
                 }
                 return response_data
             return {
                 "success": False,
                 "message": "Bid creation failed!"
             }, 400
         # print(existing_bid[0].tender_id)
         return {"success": False, "message": "Bid exists"}, 400
    def create_tender(name, sme_id, description, media, milestones, plan_uri):
        with session_scope() as session:
            user_sme = session.query(
                models.UserSME).filter(models.UserSME.id == sme_id).first()
            media_obj = []
            milestone_obj = []
            for m in media:
                new_media = models.Media(m["uri"], m["type"])
                media_obj.append(new_media)
                session.add(new_media)
            for milestone in milestones:
                milestone_media = []
                for milestone_m in milestone["media"]:
                    new_mile_media = models.Media(m["uri"], m["type"])
                    milestone_media.append(new_mile_media)
                    session.add(new_mile_media)

                new_milestone = models.Milestone(milestone["name"],
                                                 milestone["description"],
                                                 "pending", milestone_media)
                milestone_obj.append(new_milestone)
                session.add(new_milestone)
            new_tender = models.Tender(name, "created", description, media_obj,
                                       milestone_obj, user_sme, plan_uri)
            if new_tender:
                session.add(new_tender)
                response_data = {
                    "success": True,
                    "data": format_response(session, new_tender)
                }
                return response_data, 200
            return {"success": False}, 400
Beispiel #4
0
 def get_order(order_id):
     with session_scope() as session:
         order = session.query(models.Order).filter(
             models.Order.id == order_id).first()
         if order:
             return {"success": True, "data": format_response(session, order)}, 200
         return {"success": False}, 404
    def login_user_SHG(data):
        try:
            with session_scope() as session:
                user = session.query(models.UserSHG).filter(
                    models.UserSHG.username == data.get("username")).all()

                if len(user) == 0:
                    user = None
                else:
                    user = user[0]

                if user is None:
                    response_object = {
                        'status': 'fail',
                        'message': 'User does not exist. '
                    }
                    return response_object, 403

                if user and user.check_password(data.get('password')):
                    if True:
                        # if user.is_verified: // TODO: Add verification
                        # convert string to bool
                        if data.get('remember').lower() == 'true' or data.get(
                                'remember').lower() == 'yes':
                            remem = True
                        else:
                            remem = False
                        response_object = {
                            'status': 'success',
                            'message': 'Successfully logged in.',
                        }

                        login_info = format_user_shg(session, user)
                        return login_info, 200
                    else:
                        response_object = {
                            'status':
                            'fail',
                            'message':
                            'Please verify your Username before first login',
                        }
                        return response_object, 402
                else:
                    response_object = {
                        'status': 'fail',
                        'message': 'Username or password does not match.',
                    }
                    return response_object, 401

        except BaseException:
            LOG.error('Login Failed', exc_info=True)
            response_object = {
                'status': 'fail',
                'message': 'Try again',
            }
            return response_object, 500
Beispiel #6
0
 def get_shg_bids(shg_id):
     with session_scope() as session:
         bids = session.query(
             models.Bid).filter(models.Bid.shg_id == shg_id).all()
         if len(bids) > 0:
             return {
                 "success": True,
                 "data": [format_response(session, b) for b in bids]
             }
         return {"success": False}, 404
Beispiel #7
0
    def get_product_id(id):
        with session_scope() as session:
            product = session.query(
                models.Product).filter(models.Product.id == id).first()
            if not product:
                resp = {'status': 'fail', 'message': 'Product not found'}
                return resp, 400

            resp = format_response(session, product)
            return resp, 200
 def create_milestone(tender_id, name, description, image_uri):
     with session_scope() as session:
         image = models.Media(image_uri, "image")
         new_milestone = models.Milestone(
             name, description, "created", [image])
         session.flush()
         tender = session.query(models.Tender).filter(
             models.Tender.id == tender_id).first()
         tender.milestones.append(new_milestone)
         return {"success": True, "milestone_id": new_milestone.id}, 200
 def get_tender_by_id(id_):
     with session_scope() as session:
         tender = session.query(
             models.Tender).filter(models.Tender.id == id_).all()
         if len(tender) > 0:
             data = {
                 "success": True,
                 "data": format_response(session, tender[0])
             }
             return data, 200
         return {"success": False}, 404
Beispiel #10
0
    def load_user_from_request(request):
        try:
            with session_scope() as session:
                token = request.headers.get('Authorization')
                if token:
                    user_id = decode_token(token)
                    username = user_id['identity']
                    user = session.query(UserSHG).filter(
                        UserSHG.username == username).first()
                    if user:
                        return user

        except Exception as e:
            return None
Beispiel #11
0
 def accept_bid(bid_id, contract_uri):
     # TODO: authenticated by SME
     with session_scope() as session:
         bid = session.query(
             models.Bid).filter(models.Bid.id == bid_id).first()
         tender = session.query(models.Tender).filter(
             models.Tender.id == bid.tender_id).first()
         new_contract = models.Media(contract_uri, "image")
         new_order = models.Order(tender.name, "created",
                                  tender.description, tender.milestones,
                                  tender.sme, bid.shg, [new_contract],
                                  tender, tender.plan_uri)
         session.add(new_order)
         return {"success": True}, 200
     return {"success": False}, 400
Beispiel #12
0
    def delete_product(id, username):
        with session_scope() as session:
            product = session.query(
                models.Product).filter(models.Product.id == id).first()
            if not product:
                resp = {'status': 'fail', 'message': 'Product not found'}
                return resp, 400

            if (product.shg.username != username):
                resp = {'status': 'fail', 'message': 'Not Authorized'}
                return resp, 401

            session.delete(product)
            resp = {'status': 'success', 'message': 'Product Deleted'}
            return resp, 200
    def update_milestone(milestone_id, name, description, image_uri, status):
        with session_scope() as session:
            if name:
                session.query(models.Milestone).filter(
                    models.Milestone.id == milestone_id).update({models.Milestone.description: name}, synchronize_session=False)

            if description:
                session.query(models.Milestone).filter(
                    models.Milestone.id == milestone_id).update({models.Milestone.description: description}, synchronize_session=False)

            if image_uri:
                session.query(models.Media).filter(
                    models.Media.milestone_id == milestone_id).update({models.Media.uri: image_uri}, synchronize_session=False)

            if status:
                session.query(models.Media).filter(
                    models.Media.milestone_id == milestone_id).update({models.Milestone.status: status}, synchronize_session=False)

            return {"success": True}, 200
    def signup_SHG(data):
        try:
            with session_scope() as session:
                user = session.query(models.UserSHG).filter(
                    models.UserSHG.username == data.get("username")).first()

                if user is not None:
                    response_object = {
                        'status': 'invalid',
                        'message': 'Username Already Registered',
                    }
                    LOG.info(
                        'Username already present in database. Redirect to Login Page'
                    )
                    return response_object, 401

                bank = models.BankDetails(data.get("account_number"),
                                          data.get("branch_code"))

                user = models.UserSHG(data.get("name"), data.get("username"),
                                      data.get("password"), data.get("phone"),
                                      data.get("WAContact"),
                                      data.get("name_SHG"),
                                      data.get("industry_type"),
                                      data.get("production_cap"),
                                      data.get("order_size"),
                                      data.get("profile_image_uri"), bank)

                session.add(user)
            response_object = {
                'status': 'success',
                'message': 'User added Successfully',
            }

            return response_object, 200
        except BaseException as e:
            print(e)
            response_object = {
                'status': 'fail',
                'message': 'Try again',
            }
            return response_object, 500
Beispiel #15
0
    def edit_product(id, data, username):
        with session_scope() as session:
            product = session.query(
                models.Product).filter(models.Product.id == id).first()
            if not product:
                resp = {'status': 'fail', 'message': 'Product not found'}
                return resp, 400

            if (product.shg.username != username):
                resp = {'status': 'fail', 'message': 'Not Authorized'}
                return resp, 401

            for k, v in data.items():
                if k == "id":
                    continue
                session.query(models.Product).filter(
                    models.Product.id == id).update({k: v},
                                                    synchronize_session=False)

        resp = {'status': 'success', 'message': 'Product Updated'}
        return resp, 200
Beispiel #16
0
 def load_user(id):
     with session_scope() as session:
         return session.query(UserSHG).filter(UserSHG.id == id).first()
Beispiel #17
0
 def get_all_orders():
     with session_scope() as session:
         products = session.query(models.Product).all()
         resp = [format_response(session, product) for product in products]
         return resp, 200
Beispiel #18
0
 def get_product_shg_id(id):
     with session_scope() as session:
         products = session.query(
             models.Product).filter(models.Product.shg_id == id).all()
         resp = [format_response(session, product) for product in products]
         return resp, 200
 def mark_completed(id_):
     with session_scope() as session:
         milestone = session.query(models.Milestone).filter(models.Milestone.id == id_).update(
             {models.Milestone.status: "completed"}, synchronize_session=False)
         return {"success": True}, 200
Beispiel #20
0
 def all_shg():
     with session_scope() as session:
         all_shg = session.query(models.UserSHG).all()
         return [format_user_shg(s) for s in all_shg], 200
Beispiel #21
0
 def all_sme():
     with session_scope() as session:
         all_sme = session.query(models.UserSME).all()
         return [format_user_sme(s) for s in all_sme], 200
Beispiel #22
0
 def complete_order(order_id):
     with session_scope() as session:
         order = session.query(models.Order).filter(models.Order.id == order_id).update(
             {models.Order.state: "completed"}, synchronize_session=False)
         return {"success": True}, 200
 def get_all_tenders():
     with session_scope() as session:
         all_tenders = session.query(models.Tender).all()
         return [format_response(session, t) for t in all_tenders], 200
 def get_sme_tenders(sme_id):
     with session_scope() as session:
         tenders = session.query(
             models.Tender).filter(models.Tender.sme_id == sme_id).all()
         return [format_response(session, t) for t in tenders], 200
Beispiel #25
0
from drishtee.db.models import Tender, UserSME, BankDetails, UserSHG
from drishtee.db.base import session_scope
from datetime import datetime

with session_scope() as session:
    bank_details = BankDetails("kjdsfhjdshf", "sdhksjhfds")
    # new_user_sme = UserSME(
    #     "name", "username", "password", "phone", "WAContact", "industry_type", "https://google.com", bank_details
    # )
    # user_sme = session.query(UserSME).filter(UserSME.id == 1).all()[0]
    # new_tender = Tender("created", "dsakjfh", [], [], new_user_sme)
    new_user_shg = UserSHG("sdjkfkdsf", "kdajsf", "adsfuhiua", "2345",
                           "random", "sjhfjdshf", "skjdhfkjdsf", "3748",
                           "7459", "https://reddit.com", bank_details)
    session.add(new_user_shg)
    session.add(bank_details)
Beispiel #26
0
 def load_user(id):
     with session_scope() as session:
         user = session.query(UserSME).filter(UserSME.id == id).first()
         return user
Beispiel #27
0
 def get_shg_orders(shg_id):
     with session_scope() as session:
         orders = session.query(models.Order).filter(
             models.Order.shg_id == shg_id).all()
         return [format_response(session, o) for o in orders], 200