예제 #1
0
    def test_body_required_robert(self):
        pf = PostForm({ 'body' : 'yay' })
        self.assertTrue(pf.is_valid())

        pf = PostForm({ 'body' : '' })
        self.assertFalse(pf.is_valid())

        pf = PostForm({ 'body' : ' \t \t \n\n\n' })
        self.assertFalse(pf.is_valid())
예제 #2
0
파일: tests.py 프로젝트: ewaru/gamedevid
    def test_reply_no_title(self):
        author = User.objects.get(username = '******')
        form = PostForm({'title' : 'This is a title', 'content' : 'This is a content'}, author = author)
        self.assertTrue(form.is_valid())
        post = form.save()

        author_reply = User.objects.get(username = '******')
        form_reply = PostForm({'content' : 'This is a reply content'}, author = author_reply, parent = post)
        self.assertTrue(form_reply.is_valid())
예제 #3
0
파일: tests.py 프로젝트: omkz/gamedevid
    def test_reply_no_parent(self):
        author = User.objects.get(username = '******')
        form = PostForm({'title' : 'This is a title 1234567890', 'content' : 'This is a content 123456789012345678901234567890'}, author = author)
        self.assertTrue(form.is_valid())
        post = form.save()

        author_reply = User.objects.get(username = '******')
        form_reply = PostForm({'content' : 'This is a content 123456789012345678901234567890'}, author = author_reply)
        self.assertFalse(form_reply.is_valid())
예제 #4
0
파일: tests.py 프로젝트: omkz/gamedevid
    def test_edit_post(self):
        author = User.objects.get(username = '******')

        form = PostForm({'title' : 'This is title 1234567890', 'content' : 'This is content 123456789012345678901234567890',
                         } , author = author)
        self.assertTrue(form.is_valid())
        post = form.save()
        
        form = PostForm({'title' : 'This is another title 1234567890', 'content' : 'This is another content 123456789012345678901234567890'},
                         instance = post, author = author)
        self.assertTrue(form.is_valid())
예제 #5
0
파일: tests.py 프로젝트: ewaru/gamedevid
    def test_edit_post_different_user_normal(self):
        author = User.objects.get(username = '******')

        form = PostForm({'title' : 'This is title', 'content' : 'This is content',
                         } , author = author)
        self.assertTrue(form.is_valid())
        post = form.save()
        
        author_normal = User.objects.get(username = '******')
        form = PostForm({'title' : 'This is another title', 'content' : 'This is another content'},
                         instance = post, author = author_normal)
        self.assertFalse(form.is_valid())
예제 #6
0
파일: tests.py 프로젝트: omkz/gamedevid
    def test_duplicated_content_regardless_author(self): 
        author = User.objects.get(username = '******')
        form1 = PostForm({'title' : 'This is title 1234567890', 'content' : 'This is content 123456789012345678901234567890',
                          } , author = author)
        
        form2 = PostForm({'title' : 'This is title 1234567890', 'content' : 'This is content 123456789012345678901234567890',
                          } , author = author)

        self.assertTrue(form1.is_valid())
        form1.save()

        self.assertFalse(form2.is_valid())
예제 #7
0
파일: tests.py 프로젝트: omkz/gamedevid
    def test_edit_reply_different_user_normal(self):
        author = User.objects.get(username = '******')
        form = PostForm({'title' : 'This is a title 1234567890', 'content' : 'This is a content 123456789012345678901234567890'}, author = author)
        self.assertTrue(form.is_valid())
        post = form.save()

        author_reply = User.objects.get(username = '******')
        form_reply = PostForm({'content' : 'This is a reply content 123456789012345678901234567890'}, author = author_reply, parent = post)
        self.assertTrue(form_reply.is_valid())
        reply = form_reply.save()

        author_reply_normal = User.objects.get(username = '******')
        form_reply2 = PostForm({'content' : 'This is another reply content 123456789012345678901234567890'}, instance = reply, author = author_reply_normal)
        self.assertFalse(form_reply2.is_valid())
예제 #8
0
파일: tests.py 프로젝트: omkz/gamedevid
    def test_reply_duplicated_content_regardless_author(self):
        author = User.objects.get(username = '******')
        form = PostForm({'title' : 'This is a title 1234567890', 'content' : 'This is a content 123456789012345678901234567890'}, author = author)
        self.assertTrue(form.is_valid())
        post = form.save()

        author_reply = User.objects.get(username = '******')
        form_reply = PostForm({'content' : 'This is a reply content 123456789012345678901234567890'}, author = author_reply, parent = post)
        self.assertTrue(form_reply.is_valid())
        form_reply.save()

        author_reply2 = User.objects.get(username = '******')
        form_reply2 = PostForm({'content' : 'This is a reply content 123456789012345678901234567890'}, author = author_reply2, parent = post)
        self.assertFalse(form_reply2.is_valid())
예제 #9
0
파일: views.py 프로젝트: vvolodin/djgidd
def submit(request):
	"""Submit new post view"""
	if request.method == 'POST':
		form = PostForm(request.POST)
		if form.is_valid():
			#Process form data
			#u = User.objects.get(username = "******")
			#u = request.user
			p = Post(subject = form.cleaned_data['subject'], text = form.cleaned_data['text'], user = request.user)
			p.slug = slugify(form.cleaned_data['subject'])
			raise AttributeError
			p.save()
			urlredirect = '/posts/%s' % p.slug
			#return render_to_response('posts/view.html', {'post': p, 'user': request.user})
			return redirect_to(request, urlredirect)
	else:
		form = PostForm()
	return render_to_response('posts/submit.html', {'form': form, 'user': request.user})
	
#@login_required
#def my_post_comment(request):
#	"""Wrapper for django's comments/post"""
#	if request.user.is_authenticated():
#		return post_comment(request)
#	return HttpResponseRedirect('/login/?next=%s' % request.path)
#	return (HttpResponse)
예제 #10
0
def add_post(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            s = form.cleaned_data['title']
            i = s.split(" ")
            slug = "-".join(i)
            post = Post(
                title = form.cleaned_data['title'],
                body = form.cleaned_data['body'],
                slug = slug,
                user = request.user,
            )
            post.save()
            return redirect("/%s" % post.slug)
        else:
            # form validation did not go so well.
            pass
    else:
        # assuming GET
        form = PostForm()
    return render_to_response(
        'posts/addpost.html', 
        {'form': form},
        context_instance=RequestContext(request))
예제 #11
0
def post(request, board_type, post_id=None):

    var = {
        'page': board_type,
        'board_type': BoardType.objects.get(type=board_type)
    }

    post = None

    #if post_id is not None:
    #    post = Post.objects.get(pk=post_id)

    if request.method == 'POST':
        form = PostForm(data=request.POST, files=request.FILES)

        if form.is_valid():

            form.save()
            return redirect(board_type)
        else:
            var['form'] = form

    elif post is not None and request.user == post.author:
        var['form'] = PostForm(instance=post)

    else:
        var['form'] = PostForm()





    return render(request, 'post.html', var)
예제 #12
0
파일: views.py 프로젝트: jorgemaciel/iellos
def elo_posts_scroll(request, slug, page):
    try:
        elo = Elo.objects.filter(Q(tipo='A') | Q(membros=request.user.id)).filter(slug=slug)[0]
    except:
        raise Http404()

    posts_list = Post.objects.filter(elos=elo).order_by('-data_de_atualizacao', '-data_de_criacao')
    
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            form.instance.user = request.user
            form.save()
            form.instance.elos.add(elo)
        else:
            raise Http404()
    else:
        post_id = request.GET.get('post_id')
        if post_id:
            posts_list = posts_list.filter(id=post_id)

    paginator = Paginator(posts_list, 10)
    try:
        posts = paginator.page(int(page))
    except InvalidPage:
        raise Http404()
    return direct_to_template(request, 'posts/user_posts_scroll.html', {'posts': posts,})
예제 #13
0
파일: views.py 프로젝트: donilan/study
def sign(request):
    form = PostForm(request.POST)
    if form.is_valid():
        post = Post(author=form.cleaned_data["author"], message=form.cleaned_data["message"])
        post.put()

    return HttpResponseRedirect("/")
예제 #14
0
파일: views.py 프로젝트: mughrabi/arch-pl
def add_thread(request, template="forum/add_thread.html"):
    "Create new thread and first post"
    def get_slug(text, numb=0):
        "Create unique slug"
        text = text[:110]
        if numb:
            text = text.rsplit("_", 1)[0] + "_%d" % numb
        s = slugify(text)
        if Thread.objects.filter(slug=s).count():
            return get_slug(text, numb + 1)
        return s
    u = request.user
    tf = ThreadForm()
    pf = PostForm()
    if request.POST:
        t = Thread(author=u, latest_post_author=u,
                slug=get_slug(request.POST['title']))
        tf = ThreadForm(request.POST, instance=t)
        if tf.is_valid():
            tfins = tf.save()
            p = Post(thread=tfins, author=u)
            pf = PostForm(request.POST, instance=p)
            if pf.is_valid():
                pfins = pf.save()
                return HttpResponseRedirect(tfins.get_absolute_url())
            else:
                tfins.delete()
    return render_to_response(template, {
        "t_form": tf,
        "p_form": pf,
        }, context_instance=RequestContext(request))
예제 #15
0
def create_post(request):
    # Get the context from the request.
    context = RequestContext(request)

    # A HTTP POST?
    if request.method == 'POST':
        form = PostForm(request.POST)

        # Have we been provided with a valid form?
        if form.is_valid():
            # Save the new category to the database.
            form.save(commit=True)

            # Now call the index() view.
            # The user will be shown the homepage.
            return HttpResponseRedirect('/')
        else:
            # The supplied form contained errors - just print them to the terminal.
            print form.errors
    else:
        # If the request was not a POST, display the form to enter details.
        form = PostForm()

    # Bad form (or form details), no form supplied...
    # Render the form with error messages (if any).
    return render_to_response('posts/create_post.html', {'form': form}, context)
예제 #16
0
def new_post(request, thread_id):
    thread = get_object_or_404(Thread, pk=thread_id)

    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(False)
            post.thread = thread
            post.user = request.user
            post.save()

            messages.success(request, "Your post has been added to the thread!")

            return redirect(reverse('thread', args={thread.pk}))
    else:
        form = PostForm()

    args = {
        'form': form,
        'form_action': reverse('new_post', args={thread.id}),
        'button_text': 'Update Post'
    }
    args.update(csrf(request))

    return render(request, 'forum/post_form.html', args)
예제 #17
0
def post_new(request, category_id=None):
    category = None
    if request.method == 'POST':
        post_form = PostForm(request.POST)
        if post_form.is_valid():
            post = post_form.save(commit=False)
            post.user = request.user
            post.is_comment = False
            post.forum = Forum.objects.all()[0]
            post.post_ip = request.META.get('REMOTE_ADDR', "0.0.0.0")
            post.save()
            post_form.save_m2m()
            return HttpResponseRedirect(reverse("post", args=[post.pk]))
    else:
        if category_id is not None and category_id != '':
            category = Category.objects.get(pk=category_id)
            post_form = PostForm(initial={'categories': [category]})
        else:
            post_form = PostForm()

    return render_to_response("forum/form.html", {
        'form': post_form,
        'category': category,
        'categories': Category.objects.all()
    }, context_instance=RequestContext(request))
예제 #18
0
def add_post(request):
    if request.method == "POST":
        post_form = PostForm(request.POST, request.FILES)
        if post_form.is_valid():
            title = post_form.cleaned_data['title']
            keywords = post_form.cleaned_data['keywords']
            description = post_form.cleaned_data['description']
            image = post_form.cleaned_data['image']
            text = post_form.cleaned_data['text']
            slug = title

            new_post = Post(title=title,
                                userid=request.user,
                                slug=slug,
                                keywords=keywords,
                                image=image,
                                text=text,
                                description=description,
                                date=datetime.now())
            new_post.save()
            post_form = PostForm()
            return render(request,
                              'blog/add_post.html',
                              {'post_form': post_form})

    else:
        post_form = PostForm()
    ctx = {'post_form': post_form}
    return render(request,
                  'blog/add_post.html',
                  ctx, )
예제 #19
0
def post(request):
	if request.method == 'POST':
		post_form = PostForm(request.POST)
		username = str(request.user)

		if post_form.is_valid():
			title = post_form.cleaned_data.get('title','')
			body = post_form.cleaned_data.get('body','')

			new_post = {
				'title':title,
				'body':body,
				'author':username,
				'time':time.time(),
				'show':True,
				'type':'post',
				'comments':[],
			}

			post_id = make_post(new_post)	
			user_post(username,post_id)
		else:
			print "form was not valid"

	return HttpResponseRedirect(reverse('forum:home'))
예제 #20
0
def new_thread(request, subject_id):
    subject = get_object_or_404(Subject, pk=subject_id)
    if request.method == "POST":
        thread_form = ThreadForm(request.POST)
        post_form = PostForm(request.POST)
        if thread_form.is_valid() and post_form.is_valid():
            thread = thread_form.save(False)
            thread.subject = subject
            thread.user = request.user
            thread.save()

            post = post_form.save(False)
            post.user = request.user
            post.thread = thread
            post.save()

            messages.success(request, "You have create a new thread!")

            return redirect(reverse('thread', args={thread.pk}))
    else:
        thread_form = ThreadForm()
        post_form = PostForm(request.POST)

    args = {
        'thread_form': thread_form,
        'post_form': post_form,
        'subject': subject,
    }
    args.update(csrf(request))

    return render(request, 'forum/thread_form.html', args)
예제 #21
0
def newpost(request):

    args = {}
    args.update(csrf(request))

    #info gathering--------------------------------------------------------
    m = get_object_or_404(Member, user=request.user.profile)

    #making some fun stuff-----------------------------------------------
    if request.POST:
        form = PostForm(request.POST, request.FILES)
        if form.is_valid():
            form = form.save(commit=False)
            form.user = m
            form.save()

            return HttpResponseRedirect(reverse('allposts'))
    else:
        form = PostForm()

    #packing bags and fly--------------------------------------------------
    args.update({'form': form})
    template = 'newpost.html'
    context = RequestContext(request)
    return render_to_response(template, args, context_instance=context)
예제 #22
0
def editpost(request, post_id):

    args = {}
    args.update(csrf(request))

    #info gathering--------------------------------------------------------
    m = get_object_or_404(Member, user=request.user.profile)
    p = Post.objects.get(id=post_id)

    #making some fun stuff-----------------------------------------------
    if m == p.user:
        if request.method == 'POST':
            form = PostForm(request.POST, request.FILES, instance=p)
            if form.is_valid():
                form.save()
                return HttpResponseRedirect(reverse('post', kwargs={"post_id": post_id}))
        else:
            form = PostForm(instance=p)
    else:
        raise Http404

    #packing bags and fly--------------------------------------------------
    args.update({'form': form})
    template = 'editpost.html'
    context = RequestContext(request)
    return render_to_response(template, args, context_instance=context)
예제 #23
0
def post_edit(request, track_id=None, point_id=None):
    if track_id is not None:
        track = get_object_or_404(Track, id=track_id)
        url_name = 'manager_tracks'
    elif point_id is not None:
        track = get_object_or_404(Point, id=point_id)
        url_name = 'manager_points'
    else:
        return HttpResponseNotFound()
    if track.post is None:
        post = Post(title=track.name,
                    text='')
        post.save()
        track.post = post
        track.save()
    else:
        post = track.post
    if request.method == "POST":
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            form.save()
            if request.POST.get('submit', 'to_current_page') == 'to_section':
                return HttpResponseRedirect(reverse(url_name))

    else:
        form = PostForm(instance=post)
    title = u'Редактирование "%s"' % post.title

    return render_to_response('post_edit.html',
                              {'form': form,
                               'title': title,
                               'back_url': reverse(url_name)
                               },
                              RequestContext(request))
예제 #24
0
파일: message.py 프로젝트: Yomi0/hyperkitty
def new_message(request, mlist_fqdn):
    """ Sends a new thread-starting message to the list.
    TODO: unit tests
    """
    store = get_store(request)
    mlist = store.get_list(mlist_fqdn)
    failure = None
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            today = datetime.date.today()
            redirect_url = reverse(
                    'archives_with_month', kwargs={
                        "mlist_fqdn": mlist_fqdn,
                        'year': today.year,
                        'month': today.month})
            redirect_url += "?msg=sent-ok"
            try:
                post_to_list(request, mlist, form.cleaned_data['subject'],
                             form.cleaned_data["message"],
                             attachments=request.FILES.getlist("attachment"))
            except PostingFailed, e:
                failure = str(e)
            else:
                return redirect(redirect_url)
예제 #25
0
파일: views.py 프로젝트: mughrabi/arch-pl
def add_post(request, thread_slug, post_id=None,
        template="forum/add_post.html"):
    "Add new post"
    t = get_object_or_404(Thread, slug=thread_slug)
    u = request.user
    if t.closed:
        return HttpResponseRedirect(t.get_absolute_url())
    if t.latest_post.author == u:
        return edit_post(request, thread_slug, t.latest_post.id)
        #return HttpResponseRedirect(t.get_absolute_url())
    if request.POST:
        p = Post(thread=t, author=u)
        f = PostForm(request.POST, instance=p)
        if f.is_valid():
            f.save()
            return HttpResponseRedirect(t.get_absolute_url())
    else:
        data = {}
        if post_id:
            q_post = t.post_set.get(id=post_id)
            q_info = u">**%s powiedział:**\n>" % q_post.author.username
            q_info = [q_info, ]
            q_msg = [l for l in q_post.text.split("\n")]
            data['text'] = "\n> ".join(q_info + q_msg) + "\n\n"
        f = PostForm(data)
    return render_to_response(template, {
        "topic": t,
        "form": f,
        }, context_instance=RequestContext(request))
예제 #26
0
파일: views.py 프로젝트: NSkelsey/cvf
def sub_post(request, id_num): #for nested posts
    pform = PostForm(request.POST or None)
    parent = get_object_or_404(Post, pk=id_num)
    if (request.method == 'POST'
        and request.user.is_authenticated()):
        if pform.is_valid():
            title = pform.cleaned_data["title"]
            check = Post.objects.filter(title=title).order_by("-identifier")
            check_int = 0
            if len(check) > 0:
                check_int = check[0].identifier + 1
            post = Post(title=title,
                        body=pform.cleaned_data["body"],
                        parent=parent,
                        user=request.user,
                        identifier=check_int)
            post.save()
            messages.success(request, "Post submitted correctly")
        else:
        ### meaningful errors here would be helpful
        ### messages.error(request, pform.errors)
            return render_to_response("post_form.html",
                    {'pform' : pform, 'post':parent},
                    RequestContext(request))
    return HttpResponseRedirect("/posts/"+id_num)
예제 #27
0
def new_message(request, mlist_fqdn):
    """ Sends a new thread-starting message to the list.
    TODO: unit tests
    """
    store = get_store(request)
    mlist = store.get_list(mlist_fqdn)
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            _send_email(request, mlist, form.cleaned_data['subject'],
                        form.cleaned_data["message"])
            today = datetime.date.today()
            redirect_url = reverse(
                    'archives_with_month', kwargs={
                        "mlist_fqdn": mlist_fqdn,
                        'year': today.year,
                        'month': today.month})
            redirect_url += "?msg=sent-ok"
            return redirect(redirect_url)
    else:
        form = PostForm()
    context = {
        "mlist": mlist,
        "post_form": form,
        'months_list': get_months(store, mlist.name),
    }
    return render(request, "message_new.html", context)
예제 #28
0
def post_new(request):
    """新建文章"""
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            # 开始处理标签
            print post.author
            ptags = request.POST['tags'].strip()
            all_tags = []
            if ptags:
                tags = ptags.split(',')
                for tag in tags:
                    try:
                        t = Tag.objects.get(name=tag)
                    except Tag.DoesNotExist:
                        t = Tag(name=tag)
                        t.save()
                    all_tags.append(t)
            post.save()
            for tg in all_tags:
                post.tags.add(tg)
            return redirect('blog.views.post_detail', pk=post.pk)
    else:
        form = PostForm()
    return render_to_response('post_edit.html', {'form': form, 'is_new': True},context_instance=RequestContext(request))
예제 #29
0
def addpost(request):
	if request.POST:
		#files = upload_receive(request)
		form = PostForm(request.POST, request.FILES)
		if form.is_valid():
			f2 = form.save(commit=False)
			f2.pub_date = datetime.now()
			f2.save()
			tags = f2.tags
			tags = tags.split(',')
			tagobjs = Tag.objects.all()
			taglist=[]
			for i in tagobjs:					#Adding new tags
				taglist.append(i.name)
			for i in tags:
				if i not in taglist:
					obj = Tag(name=i)
					obj.save()
					print 'saved'
					print obj
					print obj.name
					taglist.append(i)
			return HttpResponseRedirect('/blog/viewposts/')
		else:
			args = {}
			args.update(csrf(request))
			args['form']=form
			args['error']='Some error in form'
			return render_to_response('addpost.html',args)
				
	else:
		args = {}
		args.update(csrf(request))
		args['form'] = PostForm()
		return render_to_response('addpost.html',args)
예제 #30
0
파일: views.py 프로젝트: caylan/Bulletin
    def post(self, request, grpid):
        '''
        make a post for given group and render
        '''
        try:
            post_author = request.user.membership_set.get(group__pk=grpid)
        except:
            return HttpResponseForbidden()

        if request.method == 'POST':
            form = PostForm(request.POST)
            if form.is_valid():
                post = form.save(commit=False)
                # author = from the current user's set of memberships, the one that
                #          has a group with matching group id (pk)
                post.author = post_author
                post.save()
                # is anybody listening?
                # if so, send new post to everyone and reset
                grpid = int(grpid)

                # Send notifications.
                uid = request.user.id
                self._send_notifications(
                    uid, grpid, PostNotification, post)
                if grpid in self.group_event:
                    self.group_event[grpid].set(post)
                    # self.group_event = None
                    del self.group_event[grpid]
                return render(request, 'group_post.html', {'post': post})
        return HttpResponseBadRequest()
예제 #31
0
def new_thread(request, subject_id):
    """
    Allows logged in users to create a new thread and post at the same time.
    Also, gives the option of creating a poll when creating a new thread.
    """
    subject = get_object_or_404(Subject, pk=subject_id)
    poll_subject_formset = formset_factory(
        PollSubjectForm, extra=3)  # makes a set of 3 forms in this case.

    if request.method == "POST":
        thread_form = ThreadForm(request.POST)
        post_form = PostForm(request.POST)
        poll_form = PollForm(request.POST)
        poll_subject_formset = poll_subject_formset(request.POST)

        # When calling the is_valid, the formset will validate all forms in
        # one go, so you can effectively treat them like they are one form.
        if thread_form.is_valid() and post_form.is_valid(
        ) and poll_form.is_valid() and poll_subject_formset.is_valid():
            thread = thread_form.save(
                False)  # get memory only version of the model
            thread.subject = subject
            thread.user = request.user
            thread.save()

            post = post_form.save(False)
            post.user = request.user
            post.thread = thread  # newly created thread id
            post.save()

            if request.POST.get('is_a_poll', None):
                poll = poll_form.save(False)
                poll.thread = thread
                poll.save()

                # To pull out the values from each form, loop through each one.
                # It is the same when rendering.
                for subject_form in poll_subject_formset:
                    subject = subject_form.save(False)
                    subject.poll = poll
                    subject.save()

            messages.success(request, "You have created a new thread!")

            return redirect(reverse('thread', args={thread.pk}))
    else:
        thread_form = ThreadForm()
        post_form = PostForm(request.POST)
        poll_form = PollForm()
        poll_subject_formset = poll_subject_formset()

        args = {
            'thread_form': thread_form,
            'post_form': post_form,
            'subject': subject,
            'poll_form': poll_form,
            'poll_subject_formset':
            poll_subject_formset,  # loop through the formset of 3 forms when rendering.
        }

        args.update(csrf(request))

        return render(request, 'forum/thread_form.html', args)
예제 #32
0
def blacklist(request, messages=None):
    """
    generates the blacklist: either in plain html or in website
    :param request: request
    :return:
    """
    content = None

    if not messages:
        messages = {
            'errors': [],
            'successes': [],
            'warnings': [],
        }
    valid_formats = ['f2b', 'firewall', 'pan']
    if request.GET:
        outputFormat = request.GET.get('format')
        if outputFormat:
            if outputFormat == 'firewall' or outputFormat == 'pan':
                blacklist = generate_blacklist('firewall')
                return render(request, 'blacklist_firewall.html', {
                    'format': outputFormat,
                    'blacklist': blacklist
                })
            elif outputFormat == 'f2b':
                blacklist = generate_blacklist('firewall')
                return render(request, 'blacklist_firewall.html', {
                    'format': outputFormat,
                    'blacklist': blacklist
                })
            else:
                blacklist = "Invalid format parameter format=%s. Please use the following %s" % (
                    outputFormat, valid_formats)
                messages['errors'].append(blacklist)

    if request.method == 'POST':
        try:
            form = PostForm(request.POST)
            form1 = UploadFileForm(request.POST, request.FILES)
            if form.is_valid():
                ban_option = True
                time = datetime.utcnow().replace(tzinfo=pytz.utc)
                ip = request.POST.get('ip')
                ban_duration = request.POST.get('blacklist_duration')
                reason = request.POST.get('reason')
                tag = request.POST.get('tag')
                ban_offender(ip,
                             'ban_User',
                             reason,
                             time,
                             ban_option,
                             ban_duration,
                             forceBan=True)
                print ip
                print ban_duration
                print reason
                print tag
                return HttpResponseRedirect('/blacklist')
            if form1.is_valid() and request.FILES:
                ban_option = True
                user = '******'
                reason = 'superReason'
                uploadFile = request.FILES['file']
                # banOffendersAsync.delay(uploadFile, user, reason, ban_option)
                ban_offenders(uploadFile, user, reason, ban_option)
                return HttpResponseRedirect('/blacklist')
            else:
                return HttpResponseRedirect('/blacklist')
        except OverflowError:
            return HttpResponseRedirect('/blacklist')
    else:
        form = PostForm(request.POST)
        form1 = UploadFileForm(request.POST, request.FILES)
        blacklist = generate_blacklist()
        offenders = list(
            Offenders.objects.filter(blacklisted=True).values(
                'ip', 'strikes', 'total_strikes', 'last_offense_date',
                'last_offense_target', 'blacklisted', 'subnet_mask',
                'last_blacklisted_date', 'last_blacklist_remove_date',
                'blacklist_duration', 'blacklist_removal_date', 'tag'))

        blackListers = Offenders.objects.filter(blacklisted=True)
        entries = []
        for offender in blackListers:
            entry = {
                'min': {
                    'ip': offender.ip,
                    'subnet': offender.subnet_mask,
                    'blacklisted': offender.blacklisted,
                    'strikes': offender.strikes,
                    'total_strikes': offender.total_strikes,
                    'last_offense_date': offender.last_offense_date,
                },
                'verbose': {
                    'last_offense_target': offender.last_offense_target,
                    'last_blacklisted_date': offender.last_blacklisted_date,
                    'last_blacklist_remove_date':
                    offender.last_blacklist_remove_date,
                    'blacklist_removal_date': offender.blacklist_removal_date,
                    'blacklist_duration': offender.blacklist_duration,
                    'tag': offender.tag,
                }
            }
            entries.append(entry)

        if entries and entries[0]:
            header = [
                'IP',
                'Subnet',
                'Blacklisted',
                'Strikes',
                'Total Strikes',
                'Last Offense',
            ]
        else:
            header = None

        return render(
            request, 'responsive.html', {
                'blacklistedIP': entries,
                'header': header,
                'errors': messages['errors']
            })
예제 #33
0
def thread_detail(request, category_slug, slug, pk=None):
    if pk is not None:
        edit_post = Post.objects.get(pk=pk)
        if edit_post.author.user != request.user:
            raise PermissionDenied
    else:
        edit_post = None

    try:
        thread = Thread.objects.get(slug=slug)
        post_list = Post.objects.filter(thread=thread.pk)
    except Thread.DoesNotExist:
        raise Http404("Thread does not exist!")

    if request.method == 'POST':

        if 'edit-post' in request.POST:
            edit_post_form = PostForm(request.POST, instance=edit_post)

            if edit_post_form.is_valid():
                edit_post_form.save()
                return redirect(thread.get_absolute_url())
            else:
                return render(
                    request, 'thread.html', {
                        'thread': thread,
                        'post_list': post_list,
                        'edit_post_form': edit_post_form,
                        'category_slug': category_slug,
                        'slug': slug,
                        'pk': edit_post.pk,
                        'edit_post': edit_post,
                    })

        elif 'new-post' in request.POST:
            form = PostForm(request.POST)

            if form.is_valid():
                post = form.save(commit=False)
                post.author = UserProfile.objects.get(user=request.user)
                post.thread = thread
                post.save()

                return redirect(thread.get_absolute_url())
            else:
                return render(
                    request, 'thread.html', {
                        'thread': thread,
                        'post_list': post_list,
                        'form': form,
                        'slug': slug,
                        'category_slug': category_slug,
                        'edit_post': edit_post,
                    })
    data = {
        'thread': thread,
        'post_list': post_list,
        'form': PostForm(),
        'slug': slug,
        'category_slug': category_slug,
    }

    if edit_post is not None:
        edit_post_form = PostForm(instance=edit_post)
        data['edit_post_form'] = edit_post_form
        data['pk'] = edit_post.pk
        data['edit_post'] = edit_post
        return render(request, 'thread.html', data)
    else:
        return render(request, 'thread.html', data)
예제 #34
0
def answer(request):
    '''
    Adds an answer from a user to a topic
    '''
    try:
        topic_pk = request.GET['sujet']
    except KeyError:
        raise Http404

    g_topic = get_object_or_404(Topic, pk=topic_pk)

    if not g_topic.forum.can_read(request.user):
        raise Http404

    posts = Post.objects.filter(topic=g_topic).order_by('-pubdate')[:3]
    last_post_pk = g_topic.last_message.pk

    # Making sure posting is allowed
    if g_topic.is_locked:
        raise Http404

    # Check that the user isn't spamming
    if g_topic.antispam(request.user):
        raise Http404

    # If we just sent data
    if request.method == 'POST':
        data = request.POST
        newpost = last_post_pk != int(data['last_post'])

        # Using the « preview button », the « more » button or new post
        if 'preview' in data or 'more' in data or newpost:
            return render_template(
                'forum/answer.html', {
                    'text': data['text'],
                    'topic': g_topic,
                    'posts': posts,
                    'last_post_pk': last_post_pk,
                    'newpost': newpost
                })

        # Saving the message
        else:
            form = PostForm(request.POST)
            if form.is_valid() and data['text'].strip() != '':
                data = form.data

                post = Post()
                post.topic = g_topic
                post.author = request.user
                post.text = data['text']
                post.text_html = emarkdown(data['text'])
                post.pubdate = datetime.now()
                post.position = g_topic.get_post_count() + 1
                post.ip_address = get_client_ip(request)
                post.save()

                g_topic.last_message = post
                g_topic.save()

                # Follow topic on answering
                if not g_topic.is_followed():
                    follow(g_topic)

                return redirect(post.get_absolute_url())
            else:
                raise Http404

    else:
        text = ''

        # Using the quote button
        if 'cite' in request.GET:
            post_cite_pk = request.GET['cite']
            post_cite = Post.objects.get(pk=post_cite_pk)

            for line in post_cite.text.splitlines():
                text = text + '> ' + line + '\n'

            text = u'**{0} a écrit :**\n{1}\n'.format(
                post_cite.author.username, text)

        return render_template(
            'forum/answer.html', {
                'topic': g_topic,
                'text': text,
                'posts': posts,
                'last_post_pk': last_post_pk
            })