182 lines
4.5 KiB
Markdown
182 lines
4.5 KiB
Markdown
# Deploy Asset API to Frappe Server
|
|
|
|
## Issue
|
|
When trying to create/edit/delete assets, you get an error: "Failed to save asset" or "Failed to create asset"
|
|
|
|
This happens because the Asset API endpoints are not deployed on your Frappe server yet.
|
|
|
|
## Solution
|
|
|
|
Follow these steps to deploy the Asset API:
|
|
|
|
### Step 1: SSH into Your Frappe Server
|
|
|
|
```bash
|
|
ssh user@seeraasm-med.seeraarabia.com
|
|
```
|
|
|
|
Replace `user` with your actual SSH username.
|
|
|
|
### Step 2: Navigate to the Asset Lite App API Directory
|
|
|
|
```bash
|
|
cd frappe-bench/apps/asset_lite/asset_lite/api/
|
|
```
|
|
|
|
If the `api` directory doesn't exist, create it:
|
|
|
|
```bash
|
|
mkdir -p frappe-bench/apps/asset_lite/asset_lite/api/
|
|
cd frappe-bench/apps/asset_lite/asset_lite/api/
|
|
```
|
|
|
|
### Step 3: Create the Asset API File
|
|
|
|
Create a new file called `asset_api.py`:
|
|
|
|
```bash
|
|
nano asset_api.py
|
|
```
|
|
|
|
### Step 4: Copy the API Code
|
|
|
|
Copy the **ENTIRE contents** of the file `frappe_asset_api.py` from your project folder and paste it into the editor.
|
|
|
|
The file contains these API endpoints:
|
|
- `get_assets` - Get list of assets with filters
|
|
- `get_asset_details` - Get details of a specific asset
|
|
- `create_asset` - Create a new asset
|
|
- `update_asset` - Update an existing asset
|
|
- `delete_asset` - Delete an asset
|
|
- `get_asset_filters` - Get filter options
|
|
- `get_asset_stats` - Get asset statistics
|
|
- `search_assets` - Search assets by keyword
|
|
|
|
### Step 5: Save and Exit
|
|
|
|
In nano:
|
|
- Press `Ctrl + O` (to save)
|
|
- Press `Enter` (to confirm)
|
|
- Press `Ctrl + X` (to exit)
|
|
|
|
### Step 6: Create __init__.py (if needed)
|
|
|
|
Make sure there's an `__init__.py` file in the api directory:
|
|
|
|
```bash
|
|
touch __init__.py
|
|
```
|
|
|
|
### Step 7: Restart Frappe
|
|
|
|
Go back to the bench directory and restart:
|
|
|
|
```bash
|
|
cd ~/frappe-bench
|
|
bench restart
|
|
```
|
|
|
|
Or if using supervisor:
|
|
|
|
```bash
|
|
sudo supervisorctl restart all
|
|
```
|
|
|
|
### Step 8: Test the API
|
|
|
|
Open your browser console and try creating an asset again. You should now see detailed logs:
|
|
|
|
```
|
|
[useAssetMutations] Creating asset with data: {...}
|
|
[useAssetMutations] Create asset response: {...}
|
|
```
|
|
|
|
## Verify Deployment
|
|
|
|
You can verify the API is deployed by checking if the endpoint exists:
|
|
|
|
```bash
|
|
curl -X GET "https://seeraasm-med.seeraarabia.com/api/method/asset_lite.api.asset_api.get_assets?limit=1"
|
|
```
|
|
|
|
You should get a response (even if it's an authentication error, that means the endpoint exists).
|
|
|
|
## Troubleshooting
|
|
|
|
### Error: "Module has no attribute 'asset_api'"
|
|
|
|
**Cause:** The file wasn't created in the right location or Frappe hasn't reloaded.
|
|
|
|
**Solution:**
|
|
1. Check the file exists: `ls -la ~/frappe-bench/apps/asset_lite/asset_lite/api/asset_api.py`
|
|
2. Restart Frappe: `cd ~/frappe-bench && bench restart`
|
|
|
|
### Error: "Not permitted to create asset"
|
|
|
|
**Cause:** Your user doesn't have permissions for the Asset doctype.
|
|
|
|
**Solution:**
|
|
1. Log in to Frappe desk as Administrator
|
|
2. Go to User Permissions
|
|
3. Grant your user "Create" permission for Asset doctype
|
|
|
|
### Error: "Asset doctype not found"
|
|
|
|
**Cause:** The Asset Lite app doesn't have an Asset doctype, or it's named differently.
|
|
|
|
**Solution:**
|
|
Check what doctypes are available:
|
|
|
|
```bash
|
|
cd ~/frappe-bench
|
|
bench console
|
|
```
|
|
|
|
Then in the console:
|
|
|
|
```python
|
|
import frappe
|
|
frappe.get_all('DocType', filters={'module': 'Asset Lite'}, fields=['name'])
|
|
```
|
|
|
|
You may need to adjust the doctype name in the API code.
|
|
|
|
## Expected Behavior After Deployment
|
|
|
|
✅ **Create Asset:** Form data is saved, new asset is created with auto-generated ID
|
|
✅ **Edit Asset:** Changes are saved to existing asset
|
|
✅ **Delete Asset:** Asset is deleted after confirmation
|
|
✅ **Duplicate Asset:** New asset is created based on existing one
|
|
✅ **Export/Print:** Asset data is exported or printed
|
|
|
|
## Console Debugging
|
|
|
|
After deployment, when you try to save an asset, you should see in the browser console:
|
|
|
|
```javascript
|
|
[useAssetMutations] Creating asset with data: {
|
|
asset_name: "Test Asset",
|
|
company: "Test Company",
|
|
custom_asset_type: "Medical Equipment",
|
|
// ... other fields
|
|
}
|
|
|
|
[useAssetMutations] Create asset response: {
|
|
success: true,
|
|
asset: { name: "ACC-ASS-2025-00097", ... },
|
|
message: "Asset created successfully"
|
|
}
|
|
```
|
|
|
|
If you see errors instead, they will now show the actual backend error message.
|
|
|
|
## Need Help?
|
|
|
|
If you continue having issues:
|
|
|
|
1. Check the Frappe error logs: `tail -f ~/frappe-bench/logs/error.log`
|
|
2. Check the worker logs: `tail -f ~/frappe-bench/logs/worker.error.log`
|
|
3. Verify your user has the correct permissions in Frappe
|
|
4. Make sure the Asset doctype exists in your Asset Lite app
|
|
|