Пример #1
0
    def fill_articles(self):
        if Article.objects.count() > 0:
            return

        fake = Faker()
        tags_set = Tags.objects.all()
        print()
        for i in range(40):
            post = Article()
            post.title = fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)
            post.text = fake.text(max_nb_chars=3000, ext_word_list=None)
            post.creationDate = fake.date(pattern="%Y-%m-%d", end_datetime=None)
            post.departureDate = fake.date(pattern="%Y-%m-%d", end_datetime=None)
            post.returnDate = fake.date(pattern="%Y-%m-%d", end_datetime=None)
            post.shortDescription = fake.text(max_nb_chars=100, ext_word_list=None)
            post.image = random.choice(photos)
            post.id = i
            post.location = fake.sentence(nb_words=1, variable_nb_words=True, ext_word_list=None)
            post.save()

            # заполениение поля ManyToManyField() должно происходить после сохранения записи в базу (после post.save())
            # иначе будет  instance is on database "None", value is on database "default" - невозможно связать с несуществующей записью

            for j in range(3):
                t = random.choice(tags_set)
                post.tags.add(t)
                self.stdout.write('add tag [%s] in article [%d]' % (t, i))

            self.stdout.write('add article [%d]' % post.id)
Пример #2
0
def create_article(request):
    """ Upload images """

    from PIL import Image

    form = ArticleForm(request.POST, request.FILES)

    if form.is_valid():

        # insert the article into db
        article = Article(client=request.user,
                          title=form.cleaned_data['title'],
                          body=form.cleaned_data['body'],
                          image=form.cleaned_data['image'])

        article.save()

        # getting article topics
        article_topics = request.POST.get('article-topics', '')
        article_topics = json.loads(article_topics)

        # add topics to article
        for key, value in article_topics.iteritems():
            topic_id = key.split('_')[-1]

            if value:
                topic = Topic.objects.get(id=topic_id)
                article.topics.add(topic)

        article.save()

        # IMAGE tasks

        # get article after inserting it
        article = Article.objects.latest('pk')

        # image article, extension and path
        image = article.image
        ext = image.name.split('.')[-1].lower()
        path = image.path

        # resize image
        image = Image.open(image)
        image = image.resize((800, 500))
        image.save('blog/static/blog/img/articles/{}.{}'.format(
            article.id, ext))
        article.image = 'blog/img/articles/{}.{}'.format(article.id, ext)
        article.save()

        # delete old image
        if os.path.exists(path):
            os.remove(path)

    return HttpResponseRedirect(reverse('blog:index'))
Пример #3
0
def write(request):
    if request.method == 'GET':
        aform = ArticleForm()
        return render(request, 'write.html', context={'aform': aform})
    else:
        aform = ArticleForm(request.POST)
        print(aform)
        if aform.is_valid():
            data = aform.cleaned_data
            article = Article()
            article.title = data.get('title')
            article.desc = data.get('desc')
            article.content = data.get('content')
            article.image = data.get('image')
            article.user = data.get('user')  #1对多,可直接赋值
            article.save()
            article.tags.set(data.get('tags'))  #多对多,必须文章生成后有了文章id才能添加标签
            return redirect(reverse('blog:index'))
        else:
            print('校验失败')
        return HttpResponse('TEST')