예제 #1
0
 def post(name):
     store = StoreModel.find_by_name(name)
     if store:
         return {'message': MSG.EXISTED.format(name)}, 400
     store = StoreModel(name)
     safe_run(message=MSG.ERROR_INSERT.format(name),
              error_code=500)(store.save_to_db(store))
     return store.jsonify(), 201
예제 #2
0
    def post(self):
        data = request.json
        name = data['name']
        if StoreModel.find_by_name(name):
            return {'message': 'An store with name {} already exists.'.format(name)}

        store = StoreModel(data['name'])
        try:
            store.save_to_db()
        except:
            return 500
예제 #3
0
    def delete(self, name):
        store = StoreModel.find_by_name(name)
        if store is None:
            return {'message': "Store '{}' is not exists.".format(name)}, 400

        store.delete_from_db()
        return {'message': 'Store deleted'}
예제 #4
0
    def get(self, name):
        store = StoreModel.find_by_name(name)

        if store:
            return store.json(), 200

        return {"message": "No store with name {} found!.".format(name)}, 404
예제 #5
0
 def get(self):
     args = store_ns_parser.parse_args()
     name = args.get('name', None)
     store = StoreModel.find_by_name(name)
     if store:
         return store.json()
     return {'message': 'Store not found'}, 404
예제 #6
0
async def post_file(file: UploadFile, user: User) -> Union[str, None]:
    try:
        filename = Path(get_random_filename(with_subdirs=True))
        suffixes = Path(file.filename).suffixes
        if len(suffixes) > 0:
            base = filename.parent
            name = filename.name
            for suffix in suffixes:
                name += suffix
            filename = base / name
        relative_path = static_path() / filename
        absolute_path = project_root() / relative_path
        if not absolute_path.parent.is_dir():
            absolute_path.parent.mkdir(parents=True, exist_ok=True)

        # get file
        with open(str(absolute_path), "wb") as buffer:
            shutil.copyfileobj(file.file, buffer)
        url = f"{base_url()}/store/{filename}"
        # put record to db
        store_row = StoreModel(user_id=user.id,
                               email=user.email,
                               enterdate=datetime.now(),
                               filename=file.filename,
                               url=str(url),
                               path=str(relative_path))
        session = Session()
        session.add(store_row)
        session.commit()
        session.close()
        return url
    except Exception as e:
        print("exception", e)
        return None
예제 #7
0
 def get(self, name):
     store = StoreModel.find_by_name(name)
     if store:
         return store.json()
     else:
         return {
             "message": "Store {} does not exist".format(name)
         }, 404  # Requested data not found
예제 #8
0
 def delete(name):
     store = StoreModel.find_by_name(name)
     if store:
         ItemModel.query.filter(ItemModel.store_id == store.id).delete()
         safe_run(message=MSG.ERROR_DELETE.format(name),
                  error_code=500)(store.delete_from_db(store))
     else:
         return {'message': MSG.NOT_EXIST.format(name)}, 400
     return {'message': MSG.DELETED.format(name)}
예제 #9
0
 def delete(self):
     args = store_ns_parser.parse_args()
     name = args.get('name', None)
     item = StoreModel.find_by_name(name)
     if item:
         item.delete_from_db()
         return {'message': 'Store deleted'}
     else:
         return {'message': 'Store not found'}
예제 #10
0
    def get() -> tuple:
        """
        Returns a list of all stores in .db

        :return: All stores found in .db
        """
        return {
            'stores': [store.json() for store in StoreModel.find_all()]
        }, 200
예제 #11
0
    def get(name: str) -> tuple:
        """
        Returns an existing store or error message.

        :param name: Name of the store
        :return: .json error message if no store found.
        """
        store = StoreModel.find_by_name(name)
        if store:
            return store.json(), 200
        return {'message': 'No such store found!'}, 404
예제 #12
0
    def delete(name: str) -> tuple:
        """
        Delete a store by its name.
        Requires a fresh JWT.

        :param name: Name of the store.
        :return: .json message
        """
        store = StoreModel.find_by_name(name)

        if store:
            store.delete_from_db()

        return {'message': 'Store deleted!'}, 200
예제 #13
0
 def post(self, name):
     if StoreModel.find_by_name(name):
         return {'message': 'The store with name {} already exists.'.format(name)}, 404
     store = StoreModel(name)
     try:
         store.save_to_db()
     except:
         return {'message': 'An error ocurred creating the store.'}, 500
     return store.json(), 201
예제 #14
0
    def put(self, name):
        data = Item.parser.parse_args()
        item = ItemModel.find_by_name(name)
        if item is None:
            return {'message': 'Item not found'}, 404
        elif StoreModel.find_by_id(data['store_id']) is None:
            return {
                'message': 'There is no Store. You should be add store first.'
            }, 400
        else:
            item.price = data['price']
            item.store_id = data['store_id']

        item.save_to_db()

        return item.json()
예제 #15
0
    def post(self, name):
        if StoreModel.find_by_name(name):
            return {'message': 'store by name ' + name + ' already exists'}

        store = StoreModel(name)
        try:
            store.save_to_db()
        except:
            return {'message': 'An error occured while inserting'}, 500

        return store.json(), 201
예제 #16
0
    def post(self, name):
        if StoreModel.find_by_name(name):
            return {'message': "A Store with name '{}' already exists.".format(name)}, 400

        store = StoreModel(name)
        try:
            store.save_to_db()
        except:
            return {'message': 'An error occurred while creating the store'}, 500

        return store.json(), 201
예제 #17
0
    def post(self, name):
        if StoreModel.find_by_name(name):
            return {'message': f'A store with name {name} already exists'}

        store = StoreModel(name)
        try:
            store.save_to_db()
        except:
            return {
                'message': 'An error occured while creating the store'
            }, 500

        return store.json(), 201
예제 #18
0
 def post(self, name):
     if StoreModel.find_by_name(name):
         return {
             "message": "a store with name '{}' already exists".format(name)
         }
     store = StoreModel(name)
     try:
         store.save_to_db()
     except Exception as e:
         return {
             "message": "an error occurred while creating the store"
         }, 500
     return store.json(), 201
예제 #19
0
    def delete(self, name):
        store = StoreModel.find_by_name(name)
        if store is None:
            return {
                "message": "No item with name {} found!.".format(name)
            }, 404

        if store.check_empty():
            return {
                "message":
                "Store cannot be deleted since there are items in its catalog!"
            }, 400
        else:
            try:
                store.delete_from_db()
                return {"message": "Store successfully deleted!"}, 200
            except:
                return {
                    "message": "An error occurred deleting the store."
                }, 500
예제 #20
0
    def post(self, name):
        if StoreModel.find_by_name(name):
            return {
                "message": "A store named '{}' already exists!".format(name)
            }, 400  # Bad request for data

        store = StoreModel(name)
        try:
            store.save_to_db()
        except:
            return {
                "message": "The was an error inserting the store in database"
            }, 500  # Internal error

        return store.json(), 201  # Successfully created
예제 #21
0
    def post(self, name):
        store = StoreModel.find_by_name(name)
        if store:
            return {
                "message":
                "There is already a store with name {}".format(store.name)
            }, 400

        store = StoreModel(name)
        try:
            store.save_to_db()
        except:
            return {"message": "An error occurred inserting the item."}, 500

        return store.json(), 201  # code for created ok
예제 #22
0
    def post(self, name):
        if ItemModel.find_by_name(name):
            return {
                'message': "An item with '{}' already exists".format(name)
            }, 400

        jsonPayload = Item.parser.parse_args()

        if StoreModel.find_by_id(jsonPayload['store_id']) is None:
            return {
                'message': 'There is no Store. You should be add store first.'
            }, 400

        item = ItemModel(name, **jsonPayload)

        try:
            item.save_to_db()  # attributing object self
        except:
            return {"message", "An error occurred inserting the item"}, 400

        return item.json(), 201  # create success
예제 #23
0
    def post(name: str) -> tuple:
        """
        Creates a new store.

        :param name: Name of the store.
        :return: store in .json or error message.
        """
        store = StoreModel.find_by_name(name)
        if store:
            return {
                'message':
                "An store with name '{}' already exists.".format(name)
            }, 422  # Un-processable Entity

        store = StoreModel(name)

        try:
            store.save_to_db()
        except SQLAlchemyError:
            return {'message': "Internal server error!"}, 500
        return store.json(), 200
예제 #24
0
 def get(self, name):
     store = StoreModel.find_by_name(name)
     if store:
         return store.json()
     return {'message': 'store not found'}, 404
예제 #25
0
 def delete(self, name):
     store = StoreModel.find_by_name(name)
     if store:
         store.delete_from_db()
     return {'message': 'store deleted'}
예제 #26
0
 def get(name):
     store = StoreModel.find_by_name(name)
     if store:
         return store.jsonify()
     return {'message': MSG.NOT_FOUND.format(name)}, 404
예제 #27
0
 def get(self, name):
     store = StoreModel.find_by_name(name)
     if store:
         return store.json()
     return {"message": "store not found"}, 404
예제 #28
0
 def get(self):
     return {'stores': [x.json() for x in StoreModel.find_all()]}