Added error when there is a restricted audios buffer

This commit is contained in:
Manuel Cortez 2016-04-13 17:45:05 -05:00
parent 561ed25054
commit 73d9400dc8
3 changed files with 48 additions and 14 deletions

View File

@ -12,6 +12,7 @@ from sessionmanager import session
from mysc.thread_utils import call_threaded
from wxUI import commonMessages
from vk import upload
from vk.exceptions import VkAPIMethodError
class baseBuffer(object):
""" a basic representation of a buffer. Other buffers should be derived from this class"""
@ -44,8 +45,15 @@ class baseBuffer(object):
def get_items(self, show_nextpage=False):
""" Retrieves items from the VK API. This function is called repeatedly by the main controller and users could call it implicitly as well with the update buffer option.
show_nextpage boolean: If it's true, it will try to load previous results."""
num = getattr(self.session, "get_newsfeed")(show_nextpage=show_nextpage, name=self.name, *self.args, **self.kwargs)
show_nextpage boolean: If it's true, it will try to load previous results.
"""
retrieved = True # Control variable for handling unauthorised/connection errors.
try:
num = getattr(self.session, "get_newsfeed")(show_nextpage=show_nextpage, name=self.name, *self.args, **self.kwargs)
except VkAPIMethodError as err:
print(u"Error {0}: {1}".format(err.code, err.message))
retrieved = err.code
return retrieved
if show_nextpage == False:
if self.tab.list.get_count() > 0 and num > 0:
print "inserting a value"
@ -57,6 +65,7 @@ class baseBuffer(object):
else:
if num > 0:
[self.insert(i, False) for i in self.session.db[self.name]["items"][:num]]
return retrieved
def get_more_items(self):
self.get_items(show_nextpage=True)
@ -140,7 +149,7 @@ class baseBuffer(object):
def pause_audio(self, *args, **kwargs):
player.player.pause()
def remove_buffer(self): return False
def remove_buffer(self, mandatory): return False
def get_users(self):
post = self.session.db[self.name]["items"][self.tab.list.get_selected()]
@ -152,8 +161,14 @@ class baseBuffer(object):
class feedBuffer(baseBuffer):
def get_items(self, show_nextpage=False):
num = getattr(self.session, "get_page")(show_nextpage=show_nextpage, name=self.name, *self.args, **self.kwargs)
print num
retrieved = True
try:
num = getattr(self.session, "get_page")(show_nextpage=show_nextpage, name=self.name, *self.args, **self.kwargs)
print num
except VkAPIMethodError as err:
print(u"Error {0}: {1}".format(err.code, err.message))
retrieved = err.code
return retrieved
if show_nextpage == False:
if self.tab.list.get_count() > 0 and num > 0:
print "inserting a value"
@ -162,6 +177,7 @@ class feedBuffer(baseBuffer):
[self.insert(i, True) for i in v]
else:
[self.insert(i) for i in self.session.db[self.name]["items"][:num]]
return retrieved
class audioBuffer(feedBuffer):
def create_tab(self, parent):
@ -190,19 +206,21 @@ class audioBuffer(feedBuffer):
audios = [i for i in self.session.db[self.name]["items"][selected:]]
pub.sendMessage("play-audios", audios=audios)
def remove_buffer(self):
def remove_buffer(self, mandatory):
if "me_audio" == self.name or "popular_audio" == self.name or "recommended_audio" == self.name:
output.speak(_(u"This buffer can't be deleted"))
return False
else:
dlg = commonMessages.remove_buffer()
if mandatory == False:
dlg = commonMessages.remove_buffer()
else:
dlg = widgetUtils.YES
if dlg == widgetUtils.YES:
self.session.db.pop(self.name)
return True
else:
return False
def get_more_items(self, *args, **kwargs):
output.speak(_(u"This buffer doesn't support getting more items."))
@ -218,4 +236,4 @@ class empty(object):
def get_more_items(self, *args, **kwargs):
output.speak(_(u"This buffer doesn't support getting more items."))
def remove_buffer(self): return False
def remove_buffer(self, mandatory): return False

View File

@ -171,10 +171,10 @@ class Controller(object):
def update_status_bar(self, status):
self.window.change_status(status)
def remove_buffer(self, *args, **kwargs):
def remove_buffer(self, mandatory=False, *args, **kwargs):
buffer = self.get_current_buffer()
buff = self.window.search(buffer.name)
answer = buffer.remove_buffer()
answer = buffer.remove_buffer(mandatory)
if answer == False:
return
self.window.remove_buffer(buff)
@ -217,5 +217,13 @@ class Controller(object):
if buffertype == "audio":
audio = buffers.audioBuffer(parent=self.window.tb, name="{0}_audio".format(user_id,), composefunc="compose_audio", session=self.session, endpoint="get", parent_endpoint="audio", full_list=True, count=self.session.settings["buffers"]["count_for_audio_buffers"], user_id=user_id)
self.buffers.append(audio)
call_threaded(audio.get_items)
self.window.insert_buffer(audio.tab, _(u"{0}'s audios").format(user,), self.window.search("timelines"))
call_threaded(self.complete_buffer_creation, buffer=audio, name_=_(u"{0}'s audios").format(user,), position=self.window.search("timelines"))
def complete_buffer_creation(self, buffer, name_, position):
answer = buffer.get_items()
if answer is not True:
self.buffers.remove(buffer)
del buffer
commonMessages.show_error_code(answer)
return
self.window.insert_buffer(buffer.tab, name_, position)

View File

@ -12,4 +12,12 @@ def remove_buffer():
return wx.MessageDialog(None, _(u"Do you really want to dismiss this buffer?"), _(u"Attention"), style=wx.ICON_QUESTION|wx.YES_NO).ShowModal()
def no_user_exist():
wx.MessageDialog(None, _(u"This user does not exist"), _(u"Error"), style=wx.ICON_ERROR).ShowModal()
wx.MessageDialog(None, _(u"This user does not exist"), _(u"Error"), style=wx.ICON_ERROR).ShowModal()
def show_error_code(code):
title = ""
message = ""
if code == 201:
title = _(u"Restricted access")
message = _(u"Access to user's audio is denied by the owner. Error code {0}").format(code,)
return wx.MessageDialog(None, message, title, style=wx.ICON_ERROR).ShowModal()