mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2025-10-31 22:57:18 +00:00
Compare commits
1 Commits
optional-p
...
import-bac
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc96a5ff69 |
@@ -755,8 +755,11 @@ def changedetection_app(config=None, datastore_o=None):
|
||||
@login_required
|
||||
def import_page():
|
||||
remaining_urls = []
|
||||
from changedetectionio import forms
|
||||
form = forms.importForm(request.form)
|
||||
|
||||
if request.method == 'POST':
|
||||
from .importer import import_url_list, import_distill_io_json
|
||||
from .importer import import_url_list, import_distill_io_json, import_changedetection_io_zip
|
||||
|
||||
# URL List import
|
||||
if request.values.get('urls') and len(request.values.get('urls').strip()):
|
||||
@@ -779,10 +782,20 @@ def changedetection_app(config=None, datastore_o=None):
|
||||
for uuid in d_importer.new_uuids:
|
||||
update_q.put(queuedWatchMetaData.PrioritizedItem(priority=1, item={'uuid': uuid, 'skip_when_checksum_same': True}))
|
||||
|
||||
if request.files.get("backup_zip_file"):
|
||||
|
||||
if not form.validate():
|
||||
flash("An error occurred, please see below.", "error")
|
||||
else:
|
||||
d_importer = import_changedetection_io_zip()
|
||||
d_importer.run(data=None, flash=flash, datastore=datastore)
|
||||
for uuid in d_importer.new_uuids:
|
||||
# Queue without priority, we will examine their own rule to find out if it should be checked
|
||||
update_q.put(queuedWatchMetaData.PrioritizedItem(item={'uuid': uuid, 'skip_when_checksum_same': True}))
|
||||
|
||||
# Could be some remaining, or we could be on GET
|
||||
output = render_template("import.html",
|
||||
form=form,
|
||||
import_url_list_remaining="\n".join(remaining_urls),
|
||||
original_distill_json=''
|
||||
)
|
||||
|
||||
@@ -3,6 +3,7 @@ import re
|
||||
|
||||
from wtforms import (
|
||||
BooleanField,
|
||||
FileField,
|
||||
Form,
|
||||
IntegerField,
|
||||
RadioField,
|
||||
@@ -425,6 +426,14 @@ class watchForm(commonSettingsForm):
|
||||
result = False
|
||||
return result
|
||||
|
||||
# datastore.data['settings']['requests']..
|
||||
class importForm(Form):
|
||||
#backup_zip_file = FileField("File", validators=[validators.regexp('\.zip$', flags=re.IGNORECASE)])
|
||||
backup_zip_file = FileField("File")
|
||||
|
||||
def validate_backup_zip_file(form, field):
|
||||
if field.data:
|
||||
x=1
|
||||
|
||||
# datastore.data['settings']['requests']..
|
||||
class globalSettingsRequestForm(Form):
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from abc import ABC, abstractmethod
|
||||
from flask import request, url_for, current_app
|
||||
import time
|
||||
import validators
|
||||
|
||||
@@ -20,6 +21,26 @@ class Importer():
|
||||
datastore):
|
||||
pass
|
||||
|
||||
class import_changedetection_io_zip(Importer):
|
||||
|
||||
def run(self,
|
||||
data,
|
||||
flash,
|
||||
datastore,
|
||||
):
|
||||
# `data` should be none, we will hit up request directly
|
||||
|
||||
|
||||
import zipfile
|
||||
import io
|
||||
|
||||
|
||||
with zipfile.ZipFile(io.BytesIO(request.files["backup_zip_file"].read()), 'r') as zf:
|
||||
p =zf.namelist()
|
||||
for file in zf.namelist():
|
||||
x=1
|
||||
|
||||
|
||||
|
||||
class import_url_list(Importer):
|
||||
"""
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block content %}
|
||||
{% from '_helpers.jinja' import render_field %}
|
||||
<script type="text/javascript" src="{{url_for('static_content', group='js', filename='tabs.js')}}" defer></script>
|
||||
<div class="edit-form monospaced-textarea">
|
||||
|
||||
@@ -7,11 +8,12 @@
|
||||
<ul>
|
||||
<li class="tab" id=""><a href="#url-list">URL List</a></li>
|
||||
<li class="tab"><a href="#distill-io">Distill.io</a></li>
|
||||
<li class="tab"><a href="#changedetection-io">Changedetection.io</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="box-wrap inner">
|
||||
<form class="pure-form pure-form-aligned" action="{{url_for('import_page')}}" method="POST">
|
||||
<form class="pure-form pure-form-aligned" action="{{url_for('import_page')}}" method="POST" enctype="multipart/form-data">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
<div class="tab-pane-inner" id="url-list">
|
||||
<fieldset class="pure-group">
|
||||
@@ -77,6 +79,12 @@
|
||||
" rows="25">{{ original_distill_json }}</textarea>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="tab-pane-inner" id="changedetection-io">
|
||||
Upload your changedetection.io backup ZIP here</br>
|
||||
<fieldset class="pure-group">
|
||||
{{ render_field(form.backup_zip_file) }}
|
||||
</fieldset>
|
||||
</div>
|
||||
<button type="submit" class="pure-button pure-input-1-2 pure-button-primary">Import</button>
|
||||
</form>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user