basic import management page

This commit is contained in:
vabene1111 2018-03-30 23:56:49 +02:00
parent e09b4d3074
commit b7fb7e8e9b
9 changed files with 67 additions and 20 deletions

View File

@ -1,4 +1,6 @@
import os
from datetime import datetime
import requests
import json
from django.conf import settings
@ -44,6 +46,10 @@ def import_all(monitor):
log_entry = ImportLog(status='SUCCESS', msg='Imported ' + str(import_count) + ' recipes', monitor=monitor)
log_entry.save()
monitor.last_checked = datetime.now()
monitor.save()
return True

View File

@ -39,9 +39,18 @@ class KeywordTable(tables.Table):
class MonitoredPathTable(tables.Table):
edit = tables.TemplateColumn("<a href='{% url 'delete_monitor' record.id %}' >" + _('Delete') + "</a>")
delete = tables.TemplateColumn("<a href='{% url 'delete_monitor' record.id %}' >" + _('Delete') + "</a>")
class Meta:
model = Keyword
template_name = 'generic/table_template.html'
fields = ('path', 'last_checked')
class NewRecipeTable(tables.Table):
delete = tables.TemplateColumn("<a href='{% url 'delete_new_recipe' record.id %}' >" + _('Delete') + "</a>")
class Meta:
model = Keyword
template_name = 'generic/table_template.html'
fields = ('name','path')

View File

@ -51,7 +51,8 @@
{% trans 'Manage Data' %}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="{% url 'batch_import' %}">{% trans 'Import' %}</a>
<a class="dropdown-item" href="{% url 'batch_monitor' %}">{% trans 'Configure Sync' %}</a>
<a class="dropdown-item" href="{% url 'batch_import' %}">{% trans 'Manage imported Recipes' %}</a>
<a class="dropdown-item" href="{% url 'batch_edit' %}">{% trans 'Batch Edit' %}</a>
</div>
</li>

View File

@ -1,21 +1,16 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load i18n %}
{% load django_tables2 %}
{% block title %}{% trans 'Import Recipes' %}{% endblock %}
{% block title %}{% trans 'Imported Recipes' %}{% endblock %}
{% block content %}
<h3>
{% trans 'Import Recipes' %}
<small class="text-muted">{% trans 'Manage all paths that should be imported' %}</small>
</h3>
<h3>{% trans 'Update imported Recipes' %}</h3>
<br>
<button class="btn btn-primary">Auto-Import all</button>
<br>
<form method="POST" class="post-form">{% csrf_token %}
{% crispy form %}
</form>
{% render_table monitored_paths %}
{% render_table imported_recipes %}
{% endblock %}

View File

@ -0,0 +1,21 @@
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load i18n %}
{% load django_tables2 %}
{% block title %}{% trans 'Sync' %}{% endblock %}
{% block content %}
<h3>{% trans 'Manage watched Folders' %}</h3>
{% trans 'On this Page you can manage all DropBox folder locations that should be monitored and synced' %} <br/>
{% trans 'The path must be in the following format' %} <code>/Folder/RecipesFolder</code>
<br/>
<form method="POST" class="post-form">{% csrf_token %}
{% crispy form %}
</form>
{% render_table monitored_paths %}
{% endblock %}

View File

@ -20,7 +20,9 @@ urlpatterns = [
path('delete/keyword/<int:pk>/', edit.KeywordDelete.as_view(), name='delete_keyword'),
path('delete/category/<int:pk>/', edit.CategoryDelete.as_view(), name='delete_category'),
path('delete/monitor/<int:pk>/', edit.MonitorDelete.as_view(), name='delete_monitor'),
path('delete/new_recipe/<int:pk>/', edit.NewRecipeDelete.as_view(), name='delete_new_recipe'),
path('batch/monitor', batch.batch_monitor, name='batch_monitor'),
path('batch/import', batch.batch_import, name='batch_import'),
path('batch/category', batch.batch_edit, name='batch_edit'),

View File

@ -20,4 +20,4 @@ def get_file_link(request, recipe_id):
@login_required
def dropbox_sync(request):
dropbox.sync_all()
return HttpResponse("Import Successful")
return HttpResponse("Import Successful ... or not ? WIP")

View File

@ -4,14 +4,13 @@ from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect, render
from django_tables2 import RequestConfig
from cookbook.forms import ImportForm, BatchEditForm
from cookbook.helper import dropbox
from cookbook.forms import ImportForm, BatchEditForm, NewRecipe
from cookbook.models import Recipe, Category, Monitor
from cookbook.tables import MonitoredPathTable
from cookbook.tables import MonitoredPathTable, NewRecipeTable
@login_required
def batch_import(request):
def batch_monitor(request):
if request.method == "POST":
form = ImportForm(request.POST)
if form.is_valid():
@ -26,7 +25,15 @@ def batch_import(request):
monitored_paths = MonitoredPathTable(Monitor.objects.all())
RequestConfig(request, paginate={'per_page': 25}).configure(monitored_paths)
return render(request, 'batch/import.html', {'form': form, 'monitored_paths': monitored_paths})
return render(request, 'batch/monitor.html', {'form': form, 'monitored_paths': monitored_paths})
@login_required
def batch_import(request):
imported_recipes = NewRecipeTable(NewRecipe.objects.all())
RequestConfig(request, paginate={'per_page': 25}).configure(imported_recipes)
return render(request, 'batch/import.html', {'imported_recipes': imported_recipes})
@login_required

View File

@ -7,7 +7,7 @@ from django.utils.translation import gettext as _
from django.views.generic import UpdateView, DeleteView
from cookbook.forms import EditRecipeForm
from cookbook.models import Recipe, Category, Monitor, Keyword
from cookbook.models import Recipe, Category, Monitor, Keyword, NewRecipe
class MonitorUpdate(LoginRequiredMixin, UpdateView):
@ -67,3 +67,9 @@ class KeywordDelete(LoginRequiredMixin, DeleteView):
template_name = "generic\delete_template.html"
model = Keyword
success_url = reverse_lazy('index')
class NewRecipeDelete(LoginRequiredMixin, DeleteView):
template_name = "generic\delete_template.html"
model = NewRecipe
success_url = reverse_lazy('batch_import')