mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-31 21:41:33 +00:00
Showing OPML errors and fixing unicode decode error by sanitizing OPML uploads.
This commit is contained in:
parent
687c044b10
commit
4b5fce6ce7
3 changed files with 30 additions and 21 deletions
|
@ -127,7 +127,8 @@ class OPMLImporter(Importer):
|
||||||
|
|
||||||
def process(self):
|
def process(self):
|
||||||
# self.clear_feeds()
|
# self.clear_feeds()
|
||||||
outline = opml.from_string(str(self.opml_xml))
|
|
||||||
|
outline = opml.from_string(self.opml_xml)
|
||||||
folders = self.get_folders()
|
folders = self.get_folders()
|
||||||
try:
|
try:
|
||||||
folders = self.process_outline(outline, folders)
|
folders = self.process_outline(outline, folders)
|
||||||
|
|
|
@ -35,16 +35,14 @@ def opml_upload(request):
|
||||||
if 'file' in request.FILES:
|
if 'file' in request.FILES:
|
||||||
logging.user(request, "~FR~SBOPML upload starting...")
|
logging.user(request, "~FR~SBOPML upload starting...")
|
||||||
file = request.FILES['file']
|
file = request.FILES['file']
|
||||||
xml_opml = file.read()
|
xml_opml = str(file.read().decode('utf-8', 'ignore'))
|
||||||
try:
|
try:
|
||||||
uploaded_opml = UploadedOPML.objects.create(user_id=request.user.pk, opml_file=xml_opml)
|
UploadedOPML.objects.create(user_id=request.user.pk, opml_file=xml_opml)
|
||||||
except (UnicodeDecodeError, InvalidStringData):
|
except (UnicodeDecodeError, InvalidStringData):
|
||||||
uploaded_opml = None
|
|
||||||
folders = None
|
folders = None
|
||||||
code = -1
|
code = -1
|
||||||
message = "There was a Unicode decode error when reading your OPML file."
|
message = "There was a Unicode decode error when reading your OPML file."
|
||||||
|
|
||||||
if uploaded_opml:
|
|
||||||
opml_importer = OPMLImporter(xml_opml, request.user)
|
opml_importer = OPMLImporter(xml_opml, request.user)
|
||||||
try:
|
try:
|
||||||
folders = opml_importer.try_processing()
|
folders = opml_importer.try_processing()
|
||||||
|
@ -62,6 +60,7 @@ def opml_upload(request):
|
||||||
folders = None
|
folders = None
|
||||||
|
|
||||||
if folders:
|
if folders:
|
||||||
|
code = 1
|
||||||
feeds = UserSubscription.objects.filter(user=request.user).values()
|
feeds = UserSubscription.objects.filter(user=request.user).values()
|
||||||
payload = dict(folders=folders, feeds=feeds)
|
payload = dict(folders=folders, feeds=feeds)
|
||||||
logging.user(request, "~FR~SBOPML Upload: ~SK%s~SN~SB~FR feeds" % (len(feeds)))
|
logging.user(request, "~FR~SBOPML Upload: ~SK%s~SN~SB~FR feeds" % (len(feeds)))
|
||||||
|
|
|
@ -608,10 +608,14 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
|
||||||
$('.NB-intro-import-delayed', self.$modal).show();
|
$('.NB-intro-import-delayed', self.$modal).show();
|
||||||
$('.NB-intro-import-restart', self.$modal).hide();
|
$('.NB-intro-import-restart', self.$modal).hide();
|
||||||
$('.NB-intro-import-message', self.$modal).hide();
|
$('.NB-intro-import-message', self.$modal).hide();
|
||||||
|
} else if (data.code < 0) {
|
||||||
|
$('.NB-intro-import-delayed', self.$modal).hide();
|
||||||
|
$('.NB-intro-import-restart', self.$modal).hide();
|
||||||
|
$('.NB-intro-import-message', self.$modal).show().addClass('NB-error').text(data.message);
|
||||||
} else {
|
} else {
|
||||||
$('.NB-intro-import-delayed', self.$modal).hide();
|
$('.NB-intro-import-delayed', self.$modal).hide();
|
||||||
$('.NB-intro-import-restart', self.$modal).show();
|
$('.NB-intro-import-restart', self.$modal).show();
|
||||||
$('.NB-intro-import-message', self.$modal).show().text("All done!");
|
$('.NB-intro-import-message', self.$modal).show().removeClass('NB-error').text("All done!");
|
||||||
}
|
}
|
||||||
}, this));
|
}, this));
|
||||||
},
|
},
|
||||||
|
@ -631,6 +635,7 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function (data, status) {
|
success: function (data, status) {
|
||||||
NEWSBLUR.assets.load_feeds(function() {
|
NEWSBLUR.assets.load_feeds(function() {
|
||||||
|
console.log(["opml upload", data, status]);
|
||||||
$loading.removeClass('NB-active');
|
$loading.removeClass('NB-active');
|
||||||
self.advance_import_carousel(2);
|
self.advance_import_carousel(2);
|
||||||
if (data.payload.delayed) {
|
if (data.payload.delayed) {
|
||||||
|
@ -639,6 +644,10 @@ _.extend(NEWSBLUR.ReaderIntro.prototype, {
|
||||||
$('.NB-intro-import-delayed', self.$modal).show();
|
$('.NB-intro-import-delayed', self.$modal).show();
|
||||||
$('.NB-intro-import-restart', self.$modal).hide();
|
$('.NB-intro-import-restart', self.$modal).hide();
|
||||||
$('.NB-intro-import-message', self.$modal).hide();
|
$('.NB-intro-import-message', self.$modal).hide();
|
||||||
|
} else if (data.code < 0) {
|
||||||
|
$('.NB-intro-import-delayed', self.$modal).hide();
|
||||||
|
$('.NB-intro-import-restart', self.$modal).show();
|
||||||
|
$('.NB-intro-import-message', self.$modal).addClass('NB-error').show().text(data.message);
|
||||||
} else {
|
} else {
|
||||||
$('.NB-intro-import-message', self.$modal).text("All done!").removeClass('NB-error').show();
|
$('.NB-intro-import-message', self.$modal).text("All done!").removeClass('NB-error').show();
|
||||||
$('.NB-intro-import-delayed', self.$modal).hide();
|
$('.NB-intro-import-delayed', self.$modal).hide();
|
||||||
|
|
Loading…
Add table
Reference in a new issue