Esempio n. 1
0
 def __init__(self):
     s = get_settings()
     s.clear_on_change("options")
     s.add_on_change("options", self.load_settings)
     self.load_settings()
     self.recompile_timer = None
     self.not_code_regex = re.compile("(string.)|(comment.)")
Esempio n. 2
0
 def __init__(self):
     s = get_settings()
     s.clear_on_change("options")
     s.add_on_change("options", self.load_settings)
     self.load_settings()
     self.recompile_timer = None
     self.not_code_regex = re.compile("(string.)|(comment.)")
Esempio n. 3
0
 def __init__(self):
     s = get_settings()
     s.clear_on_change("options")
     s.add_on_change("options", self.load_settings)
     self.load_settings()
     self.recompile_timer = None
     self.complete_timer = None
     self.member_regex = re.compile("(([a-zA-Z_]+[0-9_]*)|([\)\]])+)((\.)|(->))$")
     self.not_code_regex = re.compile("(string.)|(comment.)")
Esempio n. 4
0
 def stopAllTorrents(self):
     settings = common.get_settings()
     if self.transmission:
         torrents = self.transmission.list()
         for tid, torrent in torrents.iteritems():
             if settings[
                     'restart_if_was_seeding'] == 'true' and torrent.status == "seeding":
                 self.wasSeeding.append(tid)
             self.transmission.stop(tid)
Esempio n. 5
0
 def refreshSettings(self):
     settings = common.get_settings()
     if settings != self.prev_settings:
         self.active = (settings['stop_all_on_playback'] == 'true')
         try:
             self.transmission = common.get_rpc_client()
         except:
             self.transmission = None
         self.prev_settings = settings
Esempio n. 6
0
 def refreshSettings(self):
     settings = common.get_settings()
     if settings != self.prev_settings:
         self.active = (settings['stop_all_on_playback'] == 'true')
         try:
             self.transmission = common.get_rpc_client()
         except:
             self.transmission = None
         self.prev_settings = settings
Esempio n. 7
0
 def startAllTorrents(self):
     settings = common.get_settings()
     if self.transmission:
         torrents = self.transmission.list()
         for tid, torrent in torrents.iteritems():
             if settings['restart_if_was_seeding'] == 'true':
                 self.transmission.start(tid)
             else:
                 if tid not in self.wasSeeding:
                     self.transmission.start(tid)
Esempio n. 8
0
 def __init__(self):
     s = get_settings()
     s.clear_on_change("options")
     s.add_on_change("options", self.load_settings)
     self.load_settings()
     self.recompile_timer = None
     self.complete_timer = None
     self.member_regex = re.compile(
         "(([a-zA-Z_]+[0-9_]*)|([\)\]])+)((\.)|(->))$")
     self.not_code_regex = re.compile("(string.)|(comment.)")
Esempio n. 9
0
 def refreshSettings(self):
     settings = common.get_settings()
     if settings != self.prev_settings:
         self.mode = settings['action_on_playback']
         self.keep_seeding = settings['seeding_torrents']
         self.show_notifications = settings['show_notifications']
         self.seconds = int(settings['seconds_playback_finished'])*1000
         try:
             self.transmission = common.get_rpc_client()
         except:
             self.transmission = None
         self.prev_settings = settings
Esempio n. 10
0
 def onClick(self, controlID):
     list = self.getControl(120)
     if (controlID == 111):
         # Add torrent
         engines = [
             (_(32200), None),
             (_(32204), search.Kickass),
             (_(32208), search.EZTV),
             (_(32202), search.TPB),
             (_(32205), search.L337x),
             (_(32206), search.YTS),
             (_(32207), search.Lime),
         ]
         selected = xbmcgui.Dialog().select(_(32000), [i[0] for i in engines])
         if selected < 0:
             return
         engine = engines[selected][1]
         if not engine:
             filename = xbmcgui.Dialog().input(_(32000), '', xbmcgui.INPUT_ALPHANUM)
             if (len(filename)):
                 self.deluge.add_url(filename, __settings__.getSetting('download_path'))
         else:
             kb = xbmc.Keyboard(__settings__.getSetting('last_search'), engines[selected][0])
             kb.doModal()
             if not kb.isConfirmed():
                 return
             terms = kb.getText()
             __settings__.setSetting('last_search', terms)
             p = xbmcgui.DialogProgress()
             p.create(_(32000), _(32290))
             try:
                 results = engine().search(terms)
             except:
                 p.close()
                 xbmcgui.Dialog().ok(_(32000), _(32292))
                 return
             p.close()
             del p
             if not results:
                 xbmcgui.Dialog().ok(_(32000), _(32291))
                 return
             selected = xbmcgui.Dialog().select(_(32000),
                                                ['[S:%d L:%d] %s'%(t['seeds'], t['leechers'], t['name']) for t in
                                                 results])
             if selected < 0:
                 return
             try:
                 self.deluge.add_url(results[selected]['url'], __settings__.getSetting('download_path'))
             except:
                 xbmcgui.Dialog().ok(_(32000), _(32293))
                 return
     if (controlID == 112):
         # Remove selected torrent
         item = list.getSelectedItem()
         if item and xbmcgui.Dialog().yesno(_(32000), 'Remove \'%s\'?'%item.getLabel()):
             remove_data = xbmcgui.Dialog().yesno(_(32000), 'Remove data as well?')
             if remove_data:
                 self.deluge.action_simple('removedata', item.getProperty('TorrentID'))
             else:
                 self.deluge.action_simple('remove', item.getProperty('TorrentID'))
     if (controlID == 113):
         # Stop selected torrent
         item = list.getSelectedItem()
         if item:
             self.deluge.action_simple('stop', item.getProperty('TorrentID'))
     if (controlID == 114):
         # Start selected torrent
         item = list.getSelectedItem()
         if item:
             self.deluge.action_simple('start', item.getProperty('TorrentID'))
     if (controlID == 115):
         # Stop all torrents
         for torrent in self.torrents:
             self.deluge.action_simple('stop', torrent['id'])
     if (controlID == 116):
         # Start all torrents
         for torrent in self.torrents:
             self.deluge.action_simple('start', torrent['id'])
     if (controlID == 118):
         # Settings button
         prev_settings = common.get_settings()
         __settings__.openSettings()
         p = xbmcgui.DialogProgress()
         p.create(_(32000), _(32001))  # 'Transmission', 'Connecting to Transmission'
         try:
             self.deluge = common.get_rpc_client()
             self.updateTorrents()
             p.close()
         except:
             p.close()
             xbmcgui.Dialog().ok(_(32002), _(32901))
             # restore settings
             self.set_settings(prev_settings)
             try:
                 self.deluge = common.get_rpc_client()
             except err:
                 xbmcgui.Dialog().ok(_(32002), _(32901))
                 self.close()
         del p
     if (controlID == 120):
         global PLAY_REQUESTED
         # A torrent was chosen, show details
         item = list.getSelectedItem()
         w = TorrentInfoGUI("script-Deluge-details.xml", __settings__.getAddonInfo('path'), "Default")
         w.setTorrent(self.deluge, item.getProperty('TorrentID'))
         w.doModal()
         del w
         if PLAY_REQUESTED:
             PLAY_REQUESTED = False
             self.close()
     if (controlID == 117):
         # Exit button
         self.close()
Esempio n. 11
0
    def get(self, *arg):
        artwork_id = arg[0]
        artwork = dao.get_artwork(artwork_id)
        if not artwork:
            self.response.set_status(404)
            return

        favorite_count = dao.get_artwork_favorite_count(artwork)
        favorite = dao.is_artwork_favorite_by_user(artwork,
                                                   self.user_info.user_email)

        db_comments = db.Comment.all().filter(
            'artwork_ref =',
            artwork).order('-date').fetch(const.MAX_COMMENT_PACK + 1)
        all_db_comments = [
            convert.convert_comment_for_page(c) for c in db_comments
        ]
        comments = all_db_comments[:const.MAX_COMMENT_PACK]
        has_more_comments = len(all_db_comments) > const.MAX_COMMENT_PACK

        converted_artwork = convert.convert_artwork_for_page(artwork, 600, 400)
        author_user_id = converted_artwork.get('author', {}).get('profile_id')

        if 'tags' in converted_artwork:
            converted_artwork['tags_merged'] = ','.join([
                tags.tag_by_url_name(t.title).title
                for t in converted_artwork['tags']
            ])

        if 'self_block' in converted_artwork['author']:
            self.write_template('templates/artwork-details-blocked.html',
                                {'artwork': converted_artwork})
            return

        user_is_author = artwork.author_email == self.user_info.user_email

        db_collaborators = db.ArtworkCollaborator.all().filter(
            'artwork =', artwork).order('-last_date')
        collaborators = [
            convert.convert_user_profile(dao.get_user_profile_by_id(c.user_id))
            for c in db_collaborators if c.user_id != author_user_id
        ]

        user_is_collaborator = False
        if self.user_info.user:
            user_is_collaborator = self.user_info.profile_id in [
                c['profile_id'] for c in collaborators
            ]

        can_edit_artwork = self.user_info.superadmin or user_is_author or user_is_collaborator
        if ('block' in converted_artwork or 'copyright_block'
                in converted_artwork) and not can_edit_artwork:
            self.write_template('templates/artwork-details-blocked.html',
                                {'artwork': converted_artwork})
            return

        if self.user_info.user:
            following = dao.is_follower(artwork.author_email,
                                        self.user_info.user_email)
        else:
            following = None

        settings = get_settings()

        template_name = 'templates/artwork-details.html'
        if 'block' in converted_artwork or 'copyright_block' in converted_artwork:
            template_name = 'templates/artwork-details-limited.html'

        self.write_template(
            template_name, {
                'artwork':
                converted_artwork,
                'collaborators':
                collaborators,
                'can_edit_artwork':
                can_edit_artwork,
                'user_is_author':
                user_is_author,
                'user_is_collaborator':
                user_is_collaborator,
                'comments_offset':
                len(comments),
                'comments':
                comments,
                'has_more_comments':
                has_more_comments,
                'favorite_count':
                favorite_count,
                'favorite':
                favorite,
                'following':
                following,
                'og_title':
                converted_artwork['name'],
                'og_image':
                'https://grid-paint.com/images/png/' + artwork_id + '.png',
                'og_image_width':
                converted_artwork['full_image_width'],
                'og_image_height':
                converted_artwork['full_image_height'],
                'og_url':
                'https://grid-paint.com/images/details/' + artwork_id,
                'og_description':
                u'Created by {} in Grid Paint'.format(
                    converted_artwork['author']['nickname']),
                'settings':
                settings
            })
Esempio n. 12
0
    def get(self):
        if not self.user_info.user:
            self.redirect(self.user_info.login_url)
            return

        if self.user_info.read_only:
            self.response.set_status(403)
            return

        if self.request.get('id'):
            artwork_id = self.request.get('id')
            artwork = dao.get_artwork(artwork_id)

            if artwork is None:
                self.response.set_status(404)
                return

            user_is_author = artwork.author_email == self.user_info.user_email
            collaborator = db.ArtworkCollaborator.all().filter(
                'artwork =', artwork).filter('user_id =',
                                             self.user_info.profile_id).get()
            user_is_collaborator = collaborator is not None

            if not self.user_info.superadmin and not user_is_author and not user_is_collaborator:
                # should be the same user or superadmin
                self.response.set_status(403)
                return

            collaborators_count = db.ArtworkCollaborator.all().filter(
                'artwork =', artwork).count()
            settings = get_settings()
            exchange_token = ''
            if collaborators_count > 0:
                # Generate security token for grid-paint-exchange, because it's group artwork
                exchange_token = generate_token(settings.exchange_salt,
                                                artwork_id,
                                                self.user_info.profile_id,
                                                self.user_info.user_name,
                                                self.user_info.avatar_url)

            if hasattr(artwork, 'json'):
                if artwork.json_compressed:
                    artwork_json = zlib.decompress(
                        artwork.json.encode('ISO-8859-1'))
                else:
                    artwork_json = artwork.json
            else:
                artwork_json = zlib.decompress(
                    cs.read_file(artwork.json_file_name))

            self.write_template(
                'templates/painter.html', {
                    'artwork_id':
                    artwork_id,
                    'artwork_name':
                    artwork.name,
                    'artwork_description':
                    artwork.description,
                    'artwork_json':
                    artwork_json,
                    'artwork_tags':
                    ','.join(
                        [tags.tag_by_url_name(t).title for t in artwork.tags]),
                    'exchange_token':
                    exchange_token,
                    'exchange_url':
                    settings.exchange_url
                })
        elif self.request.get('copy_id'):
            artwork_id = self.request.get('copy_id')
            artwork = dao.get_artwork(artwork_id)

            user_is_author = artwork.author_email == self.user_info.user_email
            collaborator = db.ArtworkCollaborator.all().filter(
                'artwork =', artwork).filter('user_id =',
                                             self.user_info.profile_id).get()
            user_is_collaborator = collaborator is not None

            if not self.user_info.superadmin and not user_is_author and not user_is_collaborator:
                # should be the author, collaborator or superadmin
                self.response.set_status(403)
                return

            if hasattr(artwork, 'json'):
                if artwork.json_compressed:
                    artwork_json = zlib.decompress(
                        artwork.json.encode('ISO-8859-1'))
                else:
                    artwork_json = artwork.json
            else:
                artwork_json = zlib.decompress(
                    cs.read_file(artwork.json_file_name))

            self.write_template(
                'templates/painter.html', {
                    'artwork_name':
                    artwork.name + ' (copy)',
                    'artwork_description':
                    (artwork.description if artwork.description else '') +
                    ' (copy)',
                    'artwork_json':
                    artwork_json,
                    'artwork_tags':
                    ','.join(
                        [tags.tag_by_url_name(t).title for t in artwork.tags])
                })
        else:
            new_artwork = {
                'version': {
                    'major': 2,
                    'minor': 0
                },
                'backgroundColor':
                '#ffffff',
                'canvasSize': {
                    'width': int(float(self.request.get('artwork_width'))),
                    'height': int(float(self.request.get('artwork_height'))),
                },
                'layers': [{
                    'grid':
                    self.request.get('artwork_grid'),
                    'cellSize':
                    int(float(self.request.get('cell_size'))),
                    'rows': []
                }],
                'recentColors': [
                    '#4096EE', '#FFFFFF', '#000000', '#EEEEEE', '#FFFF88',
                    '#CDEB8B', '#6BBA70', '#006E2E', '#C3D9FF', '#356AA0',
                    '#FF0096', '#B02B2C', '#FF7400', '#EF9090', '#0099FF',
                    '#9933FF', '#2E2EFF', '#8A725D', '#FF3838', '#4BC8D1',
                    '#CBD114', '#858585'
                ]
            }
            artwork_json = json.dumps(new_artwork)
            self.write_template('templates/painter.html',
                                {'artwork_json': artwork_json})
Esempio n. 13
0
 def onClick(self, controlID):
     list = self.getControl(120)
     if (controlID == 111):
         # Add torrent
         engines = [
             (_(32200), None),
             (_(32209), search.Torrent9),
         ]
         selected = xbmcgui.Dialog().select(_(32000),
                                            [i[0] for i in engines])
         if selected < 0:
             return
         engine = engines[selected][1]
         if not engine:
             filename = xbmcgui.Dialog().browse(1, _(32000), 'files',
                                                '.torrent')
             try:
                 f = open(filename, 'r')
                 data = base64.b64encode(f.read())
                 self.transmission.add(data)
             except:
                 pass
         else:
             kb = xbmc.Keyboard('', engines[selected][0])
             kb.doModal()
             if not kb.isConfirmed():
                 return
             terms = kb.getText()
             p = xbmcgui.DialogProgress()
             p.create(_(32000), _(32290))
             try:
                 results = engine().search(terms)
             except:
                 p.close()
                 xbmcgui.Dialog().ok(_(32000), _(32292))
                 return
             p.close()
             if not results:
                 xbmcgui.Dialog().ok(_(32000), _(32291))
                 return
             selected = xbmcgui.Dialog().select(_(32000), [
                 '[S:%d L:%d] %s' % (t['seeds'], t['leechers'], t['name'])
                 for t in results
             ])
             if selected < 0:
                 return
             try:
                 if (engine == search.T411):
                     t = t411()
                     data = t.download(results[selected]['url'])
                     self.transmission.add(data)
                 else:
                     self.transmission.add_torrent(results[selected]['url'])
             except Exception as e:
                 #xbmcgui.Dialog().ok("test", e.message)
                 xbmcgui.Dialog().ok(_(32000), _(32293))
                 return
     if (controlID == 112):
         # Remove selected torrent
         item = list.getSelectedItem()
         if item and xbmcgui.Dialog().yesno(
                 _(32000), 'Remove \'%s\'?' %
                 self.torrents[int(item.getProperty('TorrentID'))].name):
             remove_data = xbmcgui.Dialog().yesno(_(32000),
                                                  'Remove data as well?')
             self.transmission.remove(int(item.getProperty('TorrentID')),
                                      remove_data)
     if (controlID == 113):
         # Stop selected torrent
         item = list.getSelectedItem()
         if item:
             self.transmission.stop(int(item.getProperty('TorrentID')))
     if (controlID == 114):
         # Start selected torrent
         item = list.getSelectedItem()
         if item:
             self.transmission.start(int(item.getProperty('TorrentID')))
     if (controlID == 115):
         # Stop all torrents
         self.transmission.stop(self.torrents.keys())
     if (controlID == 116):
         # Start all torrents
         self.transmission.start(self.torrents.keys())
     if (controlID == 117):
         # Exit button
         self.close()
     if (controlID == 118):
         # Settings button
         prev_settings = common.get_settings()
         __settings__.openSettings()
         p = xbmcgui.DialogProgress()
         p.create(_(32000),
                  _(32001))  # 'Transmission', 'Connecting to Transmission'
         try:
             self.transmission = common.get_rpc_client()
             self.updateTorrents()
             p.close()
         except:
             p.close()
             xbmcgui.Dialog().ok(_(32002), _(32901))
             # restore settings
             self.set_settings(prev_settings)
             try:
                 self.transmission = common.get_rpc_client()
             except err:
                 xbmcgui.Dialog().ok(_(32002), _(32901))
                 self.close()
     if (controlID == 120):
         # A torrent was chosen, show details
         item = list.getSelectedItem()
         w = TorrentInfoGUI("script-Transmission-details.xml",
                            __settings__.getAddonInfo('path'), "Default")
         w.setTorrent(self.transmission, int(item.getProperty('TorrentID')))
         w.doModal()
         del w
Esempio n. 14
0
 def onClick(self, controlID):
     list = self.getControl(120)
     if (controlID == 111):
         # Add torrent
         engines = [
             (_(32200), None),
             (_(32202), search.TPB),
             (_(32203), search.Mininova),
             (_(32204), search.Kickass),
             (_(32205), search.L337x),
             (_(32206), search.YTS),
             (_(32207), search.Lime),
             (_(32208), search.EZTV),
         ]
         selected = xbmcgui.Dialog().select(_(32000), [i[0] for i in engines])
         if selected < 0:
             return
         engine = engines[selected][1]
         if not engine:
             filename = xbmcgui.Dialog().browse(1, _(32000), 'files', '.torrent')
             try:
                 f = open(filename, 'r')
                 data = base64.b64encode(f.read())
                 self.transmission.add(data)
             except:
                 pass
         else:
             kb = xbmc.Keyboard('', engines[selected][0])
             kb.doModal()
             if not kb.isConfirmed():
                 return
             terms = kb.getText()
             p = xbmcgui.DialogProgress()
             p.create(_(32000), _(32290))
             try:
                 results = engine().search(terms)
             except:
                 p.close()
                 xbmcgui.Dialog().ok(_(32000), _(32292))
                 return
             p.close()
             if not results:
                 xbmcgui.Dialog().ok(_(32000), _(32291))
                 return
             selected = xbmcgui.Dialog().select(_(32000), ['[S:%d L:%d] %s' % (t['seeds'], t['leechers'], t['name']) for t in results])
             if selected < 0:
                 return
             try:
                 self.transmission.add_torrent(results[selected]['url'])
             except:
                 xbmcgui.Dialog().ok(_(32000), _(32293))
                 return
     if (controlID == 112):
         # Remove selected torrent
         item = list.getSelectedItem()
         if item and xbmcgui.Dialog().yesno(_(32000), 'Remove \'%s\'?' % self.torrents[int(item.getProperty('TorrentID'))].name):
             remove_data = xbmcgui.Dialog().yesno(_(32000), 'Remove data as well?')
             self.transmission.remove(int(item.getProperty('TorrentID')), remove_data)
     if (controlID == 113):
         # Stop selected torrent
         item = list.getSelectedItem()
         if item:
             self.transmission.stop(int(item.getProperty('TorrentID')))
     if (controlID == 114):
         # Start selected torrent
         item = list.getSelectedItem()
         if item:
             self.transmission.start(int(item.getProperty('TorrentID')))
     if (controlID == 115):
         # Stop all torrents
         self.transmission.stop(self.torrents.keys())
     if (controlID == 116):
         # Start all torrents
         self.transmission.start(self.torrents.keys())
     if (controlID == 117):
         # Exit button
         self.close()
     if (controlID == 118):
         # Settings button
         prev_settings = common.get_settings()
         __settings__.openSettings()
         p = xbmcgui.DialogProgress()
         p.create(_(32000), _(32001)) # 'Transmission', 'Connecting to Transmission'
         try:
             self.transmission = common.get_rpc_client()
             self.updateTorrents()
             p.close()
         except:
             p.close()
             xbmcgui.Dialog().ok(_(32002), _(32901))
             # restore settings
             self.set_settings(prev_settings)
             try:
                 self.transmission = common.get_rpc_client()
             except err:
                 xbmcgui.Dialog().ok(_(32002), _(32901))
                 self.close()
     if (controlID == 120):
         # A torrent was chosen, show details
         item = list.getSelectedItem()
         w = TorrentInfoGUI("script-Transmission-details.xml", __settings__.getAddonInfo('path') ,"Default")
         w.setTorrent(self.transmission, int(item.getProperty('TorrentID')))
         w.doModal()
         del w