Ejemplo n.º 1
0
 def create(self, validated_data):
     comment = validated_data[u'messageContent']
     userName = validated_data[u'userName']
     userContact = validated_data[u'userContact']
     validated_data[u'messageContent'] = html2safehtml(comment, valid_tags=("b", "a", "i", "br", "p", "pre"))
     validated_data[u'userName'] = html2safehtml(userName, valid_tags=("b", "a", "i", "br", "p", "pre"))
     validated_data[u'userContact'] = html2safehtml(userContact, valid_tags=("b", "a", "i", "br", "p", "pre"))
     return Comment.objects.create(**validated_data)
Ejemplo n.º 2
0
def add_topic(request, forum_id):
        if not request.user.is_authenticated():return HttpResponseRedirect('/')
	"""
	add topic
	
	* forum_id - ID of a Forum entry
	"""
	
	k=form_for_model(Topic)
	if request.POST:
		page_data = request.POST.copy()
		page_data['topic_author'] = str(request.user.get_full_name())
		tags = findall( r'(?xs)\[code\](.*?)\[/code\]''', page_data['text'])
		for i in tags:
			page_data['text'] = page_data['text'].replace(u'[code]'+i+u'[/code]', u'[code]'+base64.encodestring(i)+u'[/code]')
		page_data['text'] = html2safehtml(page_data['text'] ,valid_tags=settings.VALID_TAGS)
		tags = findall( r'(?xs)\[code\](.*?)\[/code\]''', page_data['text'])
		for i in tags:
			page_data['text'] = page_data['text'].replace(u'[code]'+i+u'[/code]', u'[code]'+base64.decodestring(i)+u'[/code]')
		text = page_data['text']
		del page_data['text']
		page_data['topic_name'] = html2safehtml(page_data['topic_name'] ,valid_tags=())
		page_data['topic_forum'] = forum_id
		page_data['topic_posts'] = 1
		page_data['topic_lastpost'] = str(request.user.get_full_name())+'<br />' + str(datetime.today())[:-10]
		page_data['topic_last_pagination_page'] = 1
		page_data['topic_modification_date'] = datetime.now()
		#form = AddTopicForm(page_data)
		form = k(page_data)
		if form.is_valid():
			new_place = form.save()
			post = Post(post_topic = new_place, post_text = text, post_author = str(request.user.get_full_name()), post_ip = request.META['REMOTE_ADDR'])
			post.save()
			forum = Forum.objects.get(id=forum_id)
			forum.forum_topics = forum.forum_topics +1
			forum.forum_posts = forum.forum_posts +1
			forum.forum_lastpost = str(request.user.get_full_name())+'<br />' + str(datetime.today())[:-10] + '<br /><a href="/forum/topic/1/' + str(new_place.id) + '/">' + new_place.topic_name + '</a>'
			forum.save()
			
			#mail_admins('Temat Dodany', "Dodano Temat: http://www." + settings.SITE_KEY + "/forum/forum/" + forum_id +"/", fail_silently=True)
			
			return HttpResponseRedirect("/forum/forum/" + forum_id +"/")
		else:
			return render_to_response(
				'myghtyboard/add_topic.html',
				{'form': form,'header':header, 'perms': list_perms(request)},
				context_instance=RequestContext(request))
	
	
	form = k()
	return render_to_response(
		'myghtyboard/add_topic.html',
		{'form': form,'header':header, 'perms': list_perms(request)},
		context_instance=RequestContext(request))
Ejemplo n.º 3
0
    def parse_detail(self, response):
        item = response.meta['item']
        hxs = scrapy.Selector(response)
        now = time.strftime('%Y-%m-%d %H:%M:%S')

        root = lxml.html.fromstring(response.body)
        lxml.etree.strip_elements(root, lxml.etree.Comment, "script", "head")

        content = root.xpath(
            '//span[@class="left kh size17_kh dark lineheight26_kh"][1]')[0]
        imageEle = E.IMG(src=item['imageUrl'])
        imageEle = lxml.html.tostring(imageEle, encoding=unicode)
        htmlcontent = imageEle
        for p in content.iterchildren():
            imgE = p.xpath('//img[contains(@src, "advertise")]')
            if imgE:
                for im in imgE:
                    im.drop_tag()
            c = lxml.html.tostring(p, encoding=unicode)
            wrap_p = lxml.html.fragment_fromstring(c, create_parent='p')

            wrap_p_string = lxml.html.tostring(wrap_p, encoding=unicode)

            clean_html = html2safehtml(wrap_p_string, valid_tags=("p", "img"))

            minified_html = minify(clean_html)
            htmlcontent += minified_html.replace('\n', ' ').replace(
                '\r', '').replace('%0A',
                                  '').replace('%0D',
                                              '').replace('<p> </p>', '')

        item['htmlcontent'] = htmlcontent

        yield item
Ejemplo n.º 4
0
 def clean(self, value):
     #        if value is None:
     #            return None
     if '<' in value:
         value = html2safehtml(value, safeTags)
     if not value:
         raise forms.ValidationError(['This field is required'])
     return value
Ejemplo n.º 5
0
    def parse_detail(self, response):
        item = response.meta['item']
        root = lxml.html.fromstring(response.body)
        lxml.etree.strip_elements(root, lxml.etree.Comment, "script", "head")
        htmlcontent = ''
        for p in root.xpath('//div[@class="article-content"][1]'):
            unclean_html = lxml.html.tostring(p, encoding=unicode)
            clean_html = html2safehtml(unclean_html, valid_tags=("p", "img"))
            minified_html = minify(clean_html)
            htmlcontent = minified_html

        item['htmlcontent'] = htmlcontent
        yield item
Ejemplo n.º 6
0
def entry_manage(request, entry_id):
    if request.user.is_anonymous():
        return HttpResponseRedirect('/login/')
    entry = get_object_or_404(models.Entry, pk=entry_id)

    user_list = entry.users.all()
    is_member = request.user in list(user_list)

    if not is_member:
        messages.error(request, "You're not allowed to manage this entry!")
        return HttpResponseRedirect('/e/%s/' % entry_id)

    if request.POST:
        f = EntryForm(request.POST)
        if f.is_valid():
            entry.description = html2safehtml(f.cleaned_data['description'],
                                              safeTags)
            entry.title = f.cleaned_data['title']
            entry.game = f.cleaned_data['game']
            new_users = []
            for user in [
                    u.strip() for u in f.cleaned_data['users'].split(',')
            ]:
                new_users.append(
                    models.User.objects.get(username__exact=user).id)
            entry.users = new_users
            entry.save()
            messages.success(request, 'Changes saved!')
            return HttpResponseRedirect("/e/%s/" % entry_id)
    else:
        f = EntryForm({
            'name': entry.name,
            'title': entry.title,
            'description': entry.description,
            'game': entry.game,
            'users': ', '.join(map(str, entry.users.all()))
        })

    challenge = entry.challenge
    #form = forms.FormWrapper(f, new_data, errors)
    return render_to_response('challenge/entry_admin.html', {
        'challenge': challenge,
        'entry': entry,
        'form': f,
        'is_member': True,
        'is_owner': True,
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 7
0
    def parse_detail(self, response):
        item = response.meta['item']
        root = lxml.html.fromstring(response.body)
        lxml.etree.strip_elements(root, lxml.etree.Comment, "script", "head")
        htmlcontent = ''
        for p in root.xpath('//div[@id="fullArticle"][1]'):
            ads = p.xpath(
                'div[@class="fb-ad" or @id="ad_root" or @class="fb-like"]')
            if ads:
                for ad in ads:
                    ad.drop_tag()

            uncleanhtml = lxml.html.tostring(p, encoding=unicode)
            clean_html = html2safehtml(uncleanhtml, valid_tags=("p", "img"))
            minifyhtml = minify(clean_html)
            htmlcontent = minifyhtml

        item['htmlcontent'] = htmlcontent
        # print item['htmlcontent']
        yield item
Ejemplo n.º 8
0
def prepareString(string, lenght = 0, strip_html = True):
    string = string.strip()

    if (strip_html):
        result = []
        parser = HTMLParser()
        parser.handle_data = result.append
        parser.feed(string)
        parser.close()
        string = ''.join(result)
    else:
        string = html2safehtml(string, valid_tags=("b", "a", "i", "br", "ul", "li", "strong"))

    if lenght > 0:
        string = string[0:lenght]
        string += "..."

    string = cgi.escape(string)

    return string
Ejemplo n.º 9
0
def entry_add(request, challenge_id):
    challenge = get_object_or_404(models.Challenge, pk=challenge_id)

    if challenge.isCompFinished():
        if not request.user.is_anonymous():
            messages.error(request, 'Entry registration closed')
        return HttpResponseRedirect("/%s/" % challenge_id)

    if request.method == 'POST':
        f = AddEntryForm(request.POST)
        if f.is_valid():
            new_users = []
            if f.cleaned_data['users'].strip():
                for user in [
                        u.strip() for u in f.cleaned_data['users'].split(',')
                ]:
                    new_users.append(
                        models.User.objects.get(username__exact=user).id)
            if request.user.id not in new_users:
                new_users.append(request.user.id)
            entry = models.Entry(name=f.cleaned_data['name'],
                                 challenge=challenge,
                                 user=request.user,
                                 description=html2safehtml(
                                     f.cleaned_data['description'], safeTags),
                                 title=f.cleaned_data['title'])
            entry.save()
            for u in new_users:
                entry.users.add(u)
            messages.success(request, 'Entry created!')
            return HttpResponseRedirect("/e/%s/" % entry.name)
    else:
        f = AddEntryForm()

    return render_to_response('challenge/entry_add.html', {
        'challenge': challenge,
        'form': f,
        'is_member': True,
        'is_owner': True,
    },
                              context_instance=RequestContext(request))
Ejemplo n.º 10
0
def prepareString(string, lenght=0, strip_html=True):
    string = string.strip()

    if (strip_html):
        result = []
        parser = HTMLParser()
        parser.handle_data = result.append
        parser.feed(string)
        parser.close()
        string = ''.join(result)
    else:
        string = html2safehtml(string,
                               valid_tags=("b", "a", "i", "br", "ul", "li",
                                           "strong"))

    if lenght > 0:
        string = string[0:lenght]
        string += "..."

    string = cgi.escape(string)

    return string
Ejemplo n.º 11
0
def edit_post(request, post_id):
        if not request.user.is_authenticated():return HttpResponseRedirect('/')
	"""
	edit post
	
	* post_id - id of a Post entry
	"""
	
	post = Post.objects.get(id=post_id)
	topic = Topic.objects.values('is_locked').get(id=post.post_topic.id)
	if topic['is_locked']:
		return render_to_response('bug.html', {'bug': _('Topic is closed')}, context_instance=RequestContext(request)) # locked topic!
	
	if str(request.user.get_full_name()) == post.post_author or  request.user.is_staff:
		if request.POST and len(request.POST.copy()['post_text']) > 1:
			page_data = request.POST.copy()
			tags = findall( r'(?xs)\[code\](.*?)\[/code\]''', page_data['post_text'])
			for i in tags:
				page_data['post_text'] = page_data['post_text'].replace(u'[code]'+i+u'[/code]', u'[code]'+base64.encodestring(i)+u'[/code]')
			page_data['post_text'] = html2safehtml(page_data['post_text'] ,valid_tags=settings.VALID_TAGS)
			tags = findall( r'(?xs)\[code\](.*?)\[/code\]''', page_data['post_text'])
			for i in tags:
				page_data['post_text'] = page_data['post_text'].replace(u'[code]'+i+u'[/code]', u'[code]'+base64.decodestring(i)+u'[/code]')
			post.post_text = page_data['post_text']
			post.save()
			
			pmax = Post.objects.filter(post_topic=post.post_topic).count()/10
			pmaxten =  Post.objects.filter(post_topic=post.post_topic).count()%10
			if pmaxten != 0:
				pmax = pmax+1
			return HttpResponseRedirect("/forum/topic/" + str(pmax) + "/" + str(post.post_topic.id) +"/")
		else:
			return render_to_response(
				'myghtyboard/edit_post.html',
				{'post_text': post.post_text,'header':header, 'perms': list_perms(request)},
				context_instance=RequestContext(request))
	else:
		return render_to_response('bug.html', {'bug': _('You can\'t edit this post')}, context_instance=RequestContext(request)) # can't edit post
Ejemplo n.º 12
0
        print "opening " + url
        page = urllib2.urlopen(url).read()
    except HTTPError:   
        print "failed at " + url
        errors += [url] 
    
    print "scraping " + url
    try:
        name,title = re.search("<title>(.*)</title>", page).group(1).split(':')
        name       = name.strip()
        title      = title.strip()

        more_info = "http://pds-rings.seti.org/saturn/cassini/" + name

        caption    = re.search("Original Caption Released with Image:(.*)Image Credit:", page, re.DOTALL | re.UNICODE).group(1).strip()
        caption    = html2safehtml(caption,valid_tags=("p","a","img","br")).strip()

        credit     = re.search("Image Credit:(.*)<br>", page, re.DOTALL | re.UNICODE).group(1).strip()
        credit     = html2safehtml(credit,valid_tags=("p","a","img")).strip()

        # find images
        image_url = re.search("href\t*=\t*\"(.*)\.tif\"", page).group(1)
        image_url = urlparse(image_url).netloc

        if not image_url: image_url = base_url
        else:  image_url = 'http://' + image_url + '/'

        jpg       = 'jpeg/'    + name.strip() + '.jpg'
        jpg_mod   = 'jpegMod/' + name.strip() + '_modest.jpg'
        tif       = 'tiff/'    + name.strip() + '.tif'
Ejemplo n.º 13
0
import sys
sys.path.append('~/projects/')
sys.path.append('~/priod/')
from priod import settings  
from django.core.management import setup_environ 
setup_environ(settings)

from stripogram import html2text, html2safehtml
from priod.daily_image.models import Image
from HTMLParser import HTMLParser
from urlparse import urlparse
import exceptions, urllib2, re

images = Image.objects.all();
for image in images:
    tweet_text = ''.join(html2safehtml(image.caption.split('.')[0], valid_tags=()).split("\n")).strip()
    tweet_text = tweet_text.strip(',')
    
    url_len = len('http://is.gd/ggapu');
    # the tweet text can be 140 minus the url and title length 
    # and spaces after each 
    tweet_length = 140 + len(image.title.strip()) + 2 + len(tweet_text) + 1 + url_len; 

    tweet = image.title.strip() + ': ' + tweet_text.strip()
    if (len(tweet) > 140):
        # this tweet will be to long so need to trim it.
        
        # this is how long the tweet can be: 
        max_length = 140-3-url_len # since we are trimming make room for 2 ellipses: .. 

        while (tweet_length > max_length):
Ejemplo n.º 14
0
def comments(request, apptype, appid, quoteid=False,add=False,page=None,header='Komentarze',):
        
	"""
	Show and add comments to defined object
	
	*apptype - application
	*appid - ID of an app record
	"""
	# create a 5 char random strin and sha hash it
	imgtext = ''.join([choice('QWERTYUOPASDFGHJKLZXCVBNM') for i in range(5)])
	SALT = settings.SECRET_KEY[:20]
	imghash = sha.new(SALT+imgtext).hexdigest()
	# create an image with the string
	im=Image.open(settings.MEDIA_ROOT + '/bg.jpg')
	draw=ImageDraw.Draw(im)
	font=ImageFont.truetype(settings.MEDIA_ROOT + '/SHERWOOD.TTF', 26)
	draw.text((5,5),imgtext, font=font, fill=(100,100,50))
	im.save(settings.MEDIA_ROOT + '/captcha/' + str(request.user) + '.jpg',"JPEG")
	
	com = Comment.objects.filter(apptype= apptype, appid = appid).order_by('-date')
	
	if len(com)>=3 and com[0].ip == com[1].ip and com[0].ip == request.META['REMOTE_ADDR']:
		ban = True
	else:
		ban = False
	try:
		if apptype == '1':
			a = Aktualnosci.objects.get(id = appid)
			title_text = a.news_title
		
	except:
		return render_to_response('bug.html', {'bug': _('No such entry')}, context_instance=RequestContext(request))
        
	if request.method == 'POST':
		form = CommentForm(request.POST)
		if form.is_valid():
			data = form.cleaned_data
			text = html2safehtml(data['text'] ,valid_tags=())
			co = Comment(title_text = title_text,title_com=data['title_com'],appid = appid, text = text, author = str(request.user.get_full_name()), ip = request.META['REMOTE_ADDR'], apptype = apptype)
			co.save()
			#mail_admins('Komentarz Dodany', 'Dodano komentarz: http://www.' + settings.SITE_KEY, fail_silently=True)
			return HttpResponseRedirect('/com/' + str(appid) + '/' + str(apptype) + '/')
		else:
			if str(form.errors).find('Captha Error') >= 0:
				if not 'imgtext' in form.errors:
					form.errors['imgtext'] = []
				form.errors['imgtext'].append(_('Captcha Error'))
			return render_to_response(
				'boxcomments/comments.html',
				{'hash': imghash,'header':'Dodaj komentarz','add':add, 'form': form, 'com': com, 'appid': appid, 'apptype': apptype, 'a': a, 'ban': ban, 'title':title_text},
				context_instance=RequestContext(request))

	if quoteid:
                #return HttpResponse(str(quoteid))
		q = Comment.objects.get(id=quoteid)
		#return HttpResponse(str(q.author))
		form =  CommentForm({'text':'[quote][b]@' + q.author + '[/b]\n' + q.text + '[/quote]\n\n'})
	else:
		form =  CommentForm()
	
        return object_list(request,
                           queryset=com,
                           paginate_by = 5,
                           page = page,
                           extra_context={'hash': imghash,'header':header,'add':add,'form': form, 'com': com, 'appid': appid, 'apptype': apptype, 'a': a, 'ban': ban, 'title':title_text},
                           template_name = 'boxcomments/comments.html')
Ejemplo n.º 15
0
 def to_python(self, value, state):
     return html2safehtml(super(SafeHTML, self).to_python(value, state))
Ejemplo n.º 16
0
 def clean_description(self):
     """Strip HTML from the description."""
     return html2safehtml(self.cleaned_data['description'], safeTags)
Ejemplo n.º 17
0
def add_post(request, topic_id, post_id = False):
        if not request.user.is_authenticated():return HttpResponseRedirect('/')
	"""
	add post
	
	* topic_id - id of a Topic entry
	* post_id - id of a Post entry to be quoted
	"""
	k = form_for_model(Post)
	topic = Topic.objects.values('is_locked').get(id=topic_id)
	if topic['is_locked']:
		return render_to_response('bug.html', {'bug': _('Topic is closed')}, context_instance=RequestContext(request))

	# check who made the last post.
	lastpost = Post.objects.order_by('-post_date').filter(post_topic=topic_id)[:1]
	is_staff = request.user.is_staff
	# if the last poster is the current one (login) and he isn't staff then we don't let him post after his post
	if str(lastpost[0].post_author) == str(request.user.get_full_name()) and not is_staff:
		return render_to_response('bug.html', {'bug': _('You can\'t post after your post')}, context_instance=RequestContext(request))
	
	lastpost = Post.objects.filter(post_topic=topic_id).order_by('-id')[:10]
	if request.POST:
		page_data = request.POST.copy()
		page_data['post_author'] = str(request.user.get_full_name())
		tags = findall( r'(?xs)\[code\](.*?)\[/code\]''', page_data['post_text'])
		for i in tags:
			page_data['post_text'] = page_data['post_text'].replace(u'[code]'+i+u'[/code]', u'[code]'+base64.encodestring(i)+u'[/code]')
		page_data['post_text'] = html2safehtml(page_data['post_text'] ,valid_tags=settings.VALID_TAGS)
		tags = findall( r'(?xs)\[code\](.*?)\[/code\]''', page_data['post_text'])
		for i in tags:
			page_data['post_text'] = page_data['post_text'].replace(u'[code]'+i+u'[/code]', u'[code]'+base64.decodestring(i)+u'[/code]')
		
		page_data['post_ip'] = request.META['REMOTE_ADDR']
		page_data['post_topic'] = topic_id
		page_data['post_date'] = datetime.now()
		#form = AddPostForm(page_data)
		form = k(page_data)
		if form.is_valid():
			form.save()
		
			topic = Topic.objects.get(id=topic_id)
			posts = Post.objects.filter(post_topic=topic_id).count()
			
			pmax =  posts/10
			pmaxten =  posts%10
			if pmaxten != 0:
				pmax = pmax+1
				topic.topic_last_pagination_page = pmax
			elif pmax > 0:
				topic.topic_last_pagination_page = pmax
			else:
				pmax = 1
				topic.topic_last_pagination_page = 1
			topic.topic_posts = posts
			topic.topic_lastpost = str(request.user.get_full_name())+'<br />' + str(datetime.today())[:-10]
			topic.save()
			
			forum = Forum.objects.get(id=topic.topic_forum.id)
			forum.forum_posts = forum.forum_posts +1
			
			forum.forum_lastpost = str(request.user.get_full_name())+' (' + str(datetime.today())[:-10] + ')<br /><a href="/forum/topic/' + str(pmax) + '/' + str(topic.id) + '/">' + topic.topic_name + '</a>'
			forum.save()
			
			#mail_admins('Post Dodany', "Dodano Post: http://www." + settings.SITE_KEY + "/forum/topic/" + str(pmax) + "/" + topic_id +"/", fail_silently=True)
			return HttpResponseRedirect("/forum/topic/" + str(pmax) + "/" + topic_id +"/")
		else:
			return render_to_response(
				'myghtyboard/add_post.html',
				{'lastpost': lastpost,'header':header, 'perms': list_perms(request), 'form':form},
				context_instance=RequestContext(request))
	else:
                
		if post_id:
			quote = Post.objects.get(id=post_id)
			quote_text = '<blockquote><b>' + quote.post_author + _(' wrote') + ':</b><br /><cite>' + quote.post_text + '</cite></blockquote>\n\n'
		else:
			quote_text = ''
	return render_to_response(
		'myghtyboard/add_post.html',
		{'quote_text': quote_text,'header':header, 'lastpost': lastpost, 'perms': list_perms(request)},
		context_instance=RequestContext(request))
Ejemplo n.º 18
0
def HTML2SafeHTML( text, convert_br=True ):
    text =  html2safehtml( text, valid_tags=('b', 'a', 'i', 'br', 'p'))
    if convert_br:
        return newline_to_br(text)
    else:
        return text
Ejemplo n.º 19
0
 def clean(self, value):
     if '<' in value:
         value = html2safehtml(value, self.SAFE_TAGS)
     if not value:
         raise forms.ValidationError(['This field is required'])
     return value
Ejemplo n.º 20
0
                for attach in item['attachements']:
                    message += " %s" % attach['src']
            if message:
                if tw.post(message):
                    print 'Twitter f****d'

        if destination.sn_type.code == 'fb':
            fb_settings['redirect_uri'] = "%s%s" % (HTTP_HOST, reverse('my.views.syncfacebook', args=[sync.id]))
            fb = FB(fb_settings, code=destination.access_token)
            fb.login()
            message = ""
            text = ""
            if 'title' in item:
                message = "%s" % (item['title'])
            if 'text' in item:
                text = html2safehtml(item['text'])
            if text:
                message += " - " + text
            if 'attachements' in item:
                for attach in item['attachements']:
                    message += " %s" % attach['src']
            if message:
                message = message.encode('utf-8')
                if destination.userid:
                    profile = destination.userid
                else:
                    profile = "me"
                fb.wallPost(message=message, profile_id=str(profile))
            print 'Facebook f****d'

        if destination.sn_type.code == 'lj':