added option to choose webdav path

This commit is contained in:
vabene1111 2021-01-22 20:29:29 +01:00
parent fce293e722
commit f1b7ed7d7a
6 changed files with 51 additions and 7 deletions

View File

@ -238,7 +238,7 @@ class StorageForm(forms.ModelForm):
class Meta:
model = Storage
fields = ('name', 'method', 'username', 'password', 'token', 'url')
fields = ('name', 'method', 'username', 'password', 'token', 'url', 'path')
help_texts = {
'url': _('Leave empty for dropbox and enter only base url for nextcloud (<code>/remote.php/webdav/</code> is added automatically)'), # noqa: E501

View File

@ -0,0 +1,18 @@
# Generated by Django 3.1.5 on 2021-01-22 18:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('cookbook', '0100_recipe_servings_text'),
]
operations = [
migrations.AddField(
model_name='storage',
name='path',
field=models.CharField(blank=True, default='', max_length=256),
),
]

View File

@ -124,6 +124,7 @@ class Storage(models.Model):
password = models.CharField(max_length=128, blank=True, null=True)
token = models.CharField(max_length=512, blank=True, null=True)
url = models.URLField(blank=True, null=True)
path = models.CharField(blank=True, default='', max_length=256)
created_by = models.ForeignKey(User, on_delete=models.PROTECT)
def __str__(self):

View File

@ -20,6 +20,8 @@ class Nextcloud(Provider):
'webdav_password': storage.password,
'webdav_root': '/remote.php/dav/files/' + storage.username
}
if storage.path != '':
options['webdav_root'] = storage.path
return wc.Client(options)
@staticmethod

View File

@ -402,7 +402,7 @@ def get_recipe_file(request, recipe_id):
@group_required('user')
def sync_all(request):
if DEMO or True:
if DEMO:
messages.add_message(
request, messages.ERROR, _('This feature is not available in the demo version!')
)

View File

@ -10,7 +10,8 @@ This feature is now called External recipes.
To use external recipes you will first need to configure a storage source. After that a synced path can be created.
Lastly you will need to sync with the external path and import recipes you desire.
# Storage Backends
## Storage
!!! success
Currently only Nextcloud and Dropbox are supported. There are plans to add more provider
@ -18,10 +19,32 @@ A `Storage Backend` is a remote storage location where files are **read** from.
To add a new backend click on `Storage Data` and then on `Storage Backends`.
There click the plus button.
Enter a name (just a display name for you to identify it) and an API access Token for the account you want to use.
Dropboxes API tokens can be found on the
[Dropboxes API explorer](https://dropbox.github.io/dropbox-api-v2-explorer/#auth_token/from_oauth1)
with the button on the top right. For Nextcloud, you can use an App password created in the settings.
The basic configuration is the same for all providers.
| Field | Value |
|----------|-------|
| Name | Your identifier for this storage source, can be everything you want. |
| Method | The desired method. |
### Dropbox
| Field | Value |
|----------|-------|
| Username | Dropbox username |
| Token | Dropbox API Token. Can be found [here](https://dropbox.github.io/dropbox-api-v2-explorer/#auth_token/from_oauth1)|
### Nextcloud
!!! warning "Path"
It appears that the correct webdav path varies from installation to installation (for whatever reason).
In the Nextcloud webinterface click the `Settings` button in the bottom left corner, there your WebDav Url will be displayed.
| Field | Value |
|----------|-------|
| Username | Nextcloud username |
| Password | Nextcloud app password |
| Url | Nextcloud Server URL (e.g. `https://cloud.mydomain.com`) |
| Path | (optional) webdav path (e.g. `/remote.php/dav/files/vabene1111`). If no path is supplied `/remote.php/dav/files/` plus your username will be used. |
## Adding Synced Paths
To add a new path from your Storage backend to the sync list, go to `Storage Data >> Configure Sync` and