Example #1
0
 def test_image(self):
     logger.info('start testing test_image...')
     post = Post.objects.get(title='test_post')
     # tag1 no author
     image1 = Image(content_object=post,
                    image_src='www.caogecym.com/img1.jpg')
     image1.save()
     # tag2 with author
     image2 = Image(content_object=post,
                    image_src='www.caogecym.com/img2.jpg')
     image2.save()
     self.assertEqual(len(post.images.all()), 2)
Example #2
0
 def process_node_body(self, html):
     try:
         html = autolink(html_cleaner.clean_html(html))
         
         #To stay on the safe side escape all % characters
         html = html.replace(u"%", u"%%")
         doc = filter_style(fromstring(html))
         
         for el in doc.iter(u'img'):
             src = el.get(u"src").replace(u"%%", u"%")
             if not src:
                 el.getparent().remove(el)
             
             if src.startswith(djsettings.APP_URL):
                 src.replace(djsettings.APP_URL, u"/", 1)
             
             if src.startswith(djsettings.MEDIA_URL):                
                 elem_id = el.get(u"id")
                 try:
                     if elem_id and elem_id.startswith(self.image_id_prefix):                        
                         image_id = int(elem_id.replace(self.image_id_prefix, ""))
                         image = Image.objects.get(id=image_id)
                         self.existing_images.append(image)
                         self.set_image_attributes(el, image)                        
                         continue
                 except:
                     logger.error(u'Malformed id (%s)found on our own img url %s' % (elem_id, src))
                 
                 try:
                     image = Image.objects.get(image=src.replace(djsettings.MEDIA_URL,u""))
                     self.set_image_attributes(el, image)
                     self.existing_images.append(image)                    
                     continue
                 except:
                     logger.error(u'Unable to locate img stored under url %s in Image table' % src)
                     if src.startswith(u"/"):
                         src = src.replace(u"/", djsettings.APP_URL, 1)         
 
             image_file = download_image_file(src)
             image = Image(image=image_file, upload_url=src)
             image.save()
             self.new_images.append(image)
             self.set_image_attributes(el, image)
         
         return etree.tounicode(doc, method="html")
     except ValidationError:
         for image in self.new_images:
             image.delete()
         raise
     except Exception:
         logger.exception(u'Unhandled exception while parsing "%s" body' % html)
         for image in self.new_images:
             image.delete()
         raise ValidationError(_(u"Unexpected error happened :("))
Example #3
0
    def value_from_datadict(self, data, files, name):
        if name in files:
            f = files[name]

            # check file type
            file_name_suffix = os.path.splitext(f.name)[1].lower()

            if not file_name_suffix in ('.jpg', '.jpeg', '.gif', '.png', '.bmp', '.tiff', '.ico'):
                raise Exception('File type not allowed')

            from forum.models import Image
            instance = Image(image=f, original_name=f.name)
            instance.save()
            return instance.image.url
#             from forum.settings import UPFILES_FOLDER, UPFILES_ALIAS
# 
#             storage = FileSystemStorage(str(UPFILES_FOLDER), str(UPFILES_ALIAS))
#             new_file_name = storage.save(f.name, f)
#             return str(UPFILES_ALIAS) + new_file_name
        else:
            if "%s_old" % name in data:
                return data["%s_old" % name]
            elif name in data:
                return data[name]
Example #4
0
 def test_image(self):
     logger.info('start testing test_image...')
     post = Post.objects.get(title='test_post')
     # tag1 no author
     image1 = Image(content_object=post, image_src='www.caogecym.com/img1.jpg')
     image1.save()
     # tag2 with author
     image2 = Image(content_object=post, image_src='www.caogecym.com/img2.jpg')
     image2.save()
     self.assertEqual(len(post.images.all()), 2)
Example #5
0
    def handle(self, *args, **options):

        q = ("select max(id) from forum_messagestore ")
        cursor = connection.cursor()
        cursor.execute(q)
        row = cursor.fetchone()
        max_id = row[0]
        print "Max id = %s" % max_id

        q = (
            "select regexp_matches(text, 'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+') from forum_messagestore where image_ex=False"
        )
        cursor = connection.cursor()
        cursor.execute(q)
        for row in cursor.fetchall():
            for k in row:
                url = k[0].lower()
                if (url.endswith('.jpg') or url.endswith('.jpeg') \
                    or url.endswith('.png') or url.endswith('.gif') \
                    or url.endswith('.svg')):
                    print k[0], type(k[0])
                    try:
                        ch = Image.objects.get(image_url=k[0])
                    except Image.DoesNotExist:
                        nim = Image(image_url=k[0])
                        nim.save()
                    """
                    """
        q = ("update forum_messagestore set image_ex=True where id < %s" %
             max_id)
        cursor = connection.cursor()
        cursor.execute(q)
        transaction.commit_unless_managed()

        print "Loading images..."
        for nim in Image.objects.filter(is_exists=True, image__isnull=True):
            print "Loading image %s" % nim.image_url

            try:
                result = urllib.urlretrieve(nim.image_url)
            except:
                print traceback.format_exc()
            if not result:
                print "Can't load image:%s" % nim.image_url
                nim.is_exists = False
            else:
                nim.image.save(os.path.basename(nim.image_url),
                               File(open(result[0]), 'rb'))

            nim.save()
Example #6
0
                post.like_count = like_count
            logger.error('ERROR: %s' % e.message)
        except DatabaseError, e:
            logger.error('ERROR: %s' % e.message)
        except Exception, e:
            logger.error('ERROR: %s' % e.message)

        else:
            # load images
            thread_imgs = body.findAll('img')
            for img in thread_imgs:
                for key in ad_list:
                    if key in img['src']:
                        continue
                if img['src']:
                    image = Image(content_object=post, image_src=img['src'])
                    image.save()
            logger.info('post %s images recorded successfully \n' % post.id)

    def create_torrent(self, post_id, site, url, title, *args, **options):
        if site == SiteType.RMDOWN:
            try:
                r = requests.get(url)
            except requests.ConnectionError, e:
                logger.error('ERROR: %s' % e.message)
                return ''
            soup = BeautifulSoup(r.content, from_encoding="utf-8")
            ref = soup.findAll('input')[0]['value']
            reff = soup.findAll('input')[1]['value']
            form_data = [('ref', ref),
                         ('reff', reff),