mirror of
https://github.com/hay-kot/mealie.git
synced 2025-08-22 06:23:34 -07:00
pull from master
This commit is contained in:
commit
fc0728e51c
7 changed files with 152 additions and 4 deletions
49
.github/workflows/dockerbuild.prod.yml
vendored
Normal file
49
.github/workflows/dockerbuild.prod.yml
vendored
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
name: Docker Build Dev
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
#
|
||||||
|
# Checkout
|
||||||
|
#
|
||||||
|
- name: checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
#
|
||||||
|
# Setup QEMU
|
||||||
|
#
|
||||||
|
- name: Set up QEMU
|
||||||
|
id: qemu
|
||||||
|
uses: docker/setup-qemu-action@v1
|
||||||
|
with:
|
||||||
|
image: tonistiigi/binfmt:latest
|
||||||
|
platforms: all
|
||||||
|
#
|
||||||
|
# Setup Buildx
|
||||||
|
#
|
||||||
|
- name: install buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
with:
|
||||||
|
install: true
|
||||||
|
#
|
||||||
|
# Login to Docker Hub
|
||||||
|
#
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
#
|
||||||
|
# Build
|
||||||
|
#
|
||||||
|
- name: build the image
|
||||||
|
run: |
|
||||||
|
docker build --push \
|
||||||
|
--tag hkotel/mealie:latest \
|
||||||
|
--platform linux/amd64,linux/arm/v7,linux/arm64 .
|
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -151,4 +151,4 @@ ENV/
|
||||||
# Node Modules
|
# Node Modules
|
||||||
node_modules/
|
node_modules/
|
||||||
mealie/data/debug/last_recipe.json
|
mealie/data/debug/last_recipe.json
|
||||||
*.sqlite
|
*.sqlite
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
Request Feature
|
Request Feature
|
||||||
</a>
|
</a>
|
||||||
·
|
·
|
||||||
<a href="https://hub.docker.com/repository/docker/hkotel/mealies"> Docker Hub
|
<a href="https://hub.docker.com/repository/docker/hkotel/mealie"> Docker Hub
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
90
frontend/src/components/Settings/Backup/BackupCard.vue
Normal file
90
frontend/src/components/Settings/Backup/BackupCard.vue
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<ImportDialog
|
||||||
|
:name="selectedName"
|
||||||
|
:date="selectedDate"
|
||||||
|
ref="import_dialog"
|
||||||
|
@import="importBackup"
|
||||||
|
@delete="deleteBackup"
|
||||||
|
/>
|
||||||
|
<v-row>
|
||||||
|
<v-col
|
||||||
|
:sm="6"
|
||||||
|
:md="6"
|
||||||
|
:lg="4"
|
||||||
|
:xl="4"
|
||||||
|
v-for="backup in backups"
|
||||||
|
:key="backup.name"
|
||||||
|
>
|
||||||
|
<v-card @click="openDialog(backup)">
|
||||||
|
<v-card-text>
|
||||||
|
<v-row align="center">
|
||||||
|
<v-col cols="12" sm="2">
|
||||||
|
<v-icon color="primary"> mdi-backup-restore </v-icon>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" sm="10">
|
||||||
|
<div>
|
||||||
|
<strong>{{ backup.name }}</strong>
|
||||||
|
</div>
|
||||||
|
<div>{{ readableTime(backup.date) }}</div>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</v-card-text>
|
||||||
|
</v-card>
|
||||||
|
</v-col>
|
||||||
|
</v-row>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ImportDialog from "./ImportDialog";
|
||||||
|
import api from "../../../api";
|
||||||
|
import utils from "../../../utils";
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
backups: Array,
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
ImportDialog,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
selectedName: "",
|
||||||
|
selectedDate: "",
|
||||||
|
loading: false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
openDialog(backup) {
|
||||||
|
this.selectedDate = this.readableTime(backup.date);
|
||||||
|
this.selectedName = backup.name;
|
||||||
|
this.$refs.import_dialog.open();
|
||||||
|
},
|
||||||
|
readableTime(timestamp) {
|
||||||
|
let date = new Date(timestamp);
|
||||||
|
return utils.getDateAsText(date);
|
||||||
|
},
|
||||||
|
async importBackup(data) {
|
||||||
|
this.$emit("loading");
|
||||||
|
let response = await api.backups.import(data.name, data);
|
||||||
|
|
||||||
|
let failed = response.data.failed;
|
||||||
|
let succesful = response.data.successful;
|
||||||
|
|
||||||
|
this.$emit("finished", succesful, failed);
|
||||||
|
},
|
||||||
|
deleteBackup(data) {
|
||||||
|
this.$emit("loading");
|
||||||
|
|
||||||
|
api.backups.delete(data.name);
|
||||||
|
this.selectedBackup = null;
|
||||||
|
this.backupLoading = false;
|
||||||
|
|
||||||
|
this.$emit("finished");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
</style>
|
|
@ -13,7 +13,7 @@ from routes import (
|
||||||
static_routes,
|
static_routes,
|
||||||
user_routes,
|
user_routes,
|
||||||
)
|
)
|
||||||
from utils.api_docs import generate_api_docs
|
# from utils.api_docs import generate_api_docs
|
||||||
from utils.logger import logger
|
from utils.logger import logger
|
||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
|
|
|
@ -57,7 +57,17 @@ def normalize_yield(yld) -> str:
|
||||||
return yld
|
return yld
|
||||||
|
|
||||||
|
|
||||||
|
def normalize_time(time_entry) -> str:
|
||||||
|
if type(time_entry) == type(None):
|
||||||
|
return None
|
||||||
|
elif type(time_entry) != str:
|
||||||
|
return str(time_entry)
|
||||||
|
|
||||||
|
|
||||||
def normalize_data(recipe_data: dict) -> dict:
|
def normalize_data(recipe_data: dict) -> dict:
|
||||||
|
recipe_data["totalTime"] = normalize_time(recipe_data.get("totalTime"))
|
||||||
|
recipe_data["prepTime"] = normalize_time(recipe_data.get("prepTime"))
|
||||||
|
recipe_data["performTime"] = normalize_time(recipe_data.get("performTime"))
|
||||||
recipe_data["recipeYield"] = normalize_yield(recipe_data.get("recipeYield"))
|
recipe_data["recipeYield"] = normalize_yield(recipe_data.get("recipeYield"))
|
||||||
recipe_data["recipeInstructions"] = normalize_instructions(
|
recipe_data["recipeInstructions"] = normalize_instructions(
|
||||||
recipe_data["recipeInstructions"]
|
recipe_data["recipeInstructions"]
|
||||||
|
|
|
@ -12,7 +12,6 @@ logging.basicConfig(
|
||||||
level=LOGGER_LEVEL,
|
level=LOGGER_LEVEL,
|
||||||
format="%(asctime)s %(levelname)s: %(message)s",
|
format="%(asctime)s %(levelname)s: %(message)s",
|
||||||
datefmt="%d-%b-%y %H:%M:%S",
|
datefmt="%d-%b-%y %H:%M:%S",
|
||||||
filename=LOGGER_FILE,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue