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: class Meta:
model = Storage model = Storage
fields = ('name', 'method', 'username', 'password', 'token', 'url') fields = ('name', 'method', 'username', 'password', 'token', 'url', 'path')
help_texts = { help_texts = {
'url': _('Leave empty for dropbox and enter only base url for nextcloud (<code>/remote.php/webdav/</code> is added automatically)'), # noqa: E501 '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) password = models.CharField(max_length=128, blank=True, null=True)
token = models.CharField(max_length=512, blank=True, null=True) token = models.CharField(max_length=512, blank=True, null=True)
url = models.URLField(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) created_by = models.ForeignKey(User, on_delete=models.PROTECT)
def __str__(self): def __str__(self):

View File

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

View File

@ -402,7 +402,7 @@ def get_recipe_file(request, recipe_id):
@group_required('user') @group_required('user')
def sync_all(request): def sync_all(request):
if DEMO or True: if DEMO:
messages.add_message( messages.add_message(
request, messages.ERROR, _('This feature is not available in the demo version!') 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. 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. Lastly you will need to sync with the external path and import recipes you desire.
# Storage Backends ## Storage
!!! success !!! success
Currently only Nextcloud and Dropbox are supported. There are plans to add more provider 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`. To add a new backend click on `Storage Data` and then on `Storage Backends`.
There click the plus button. 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. The basic configuration is the same for all providers.
Dropboxes API tokens can be found on the
[Dropboxes API explorer](https://dropbox.github.io/dropbox-api-v2-explorer/#auth_token/from_oauth1) | Field | Value |
with the button on the top right. For Nextcloud, you can use an App password created in the settings. |----------|-------|
| 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 ## Adding Synced Paths
To add a new path from your Storage backend to the sync list, go to `Storage Data >> Configure Sync` and To add a new path from your Storage backend to the sync list, go to `Storage Data >> Configure Sync` and