Пример #1
0
def updateblog(request):
    # Get feed
    url = 'http://blog.instanssi.org/feeds/posts/default'
    feed = feedparser.parse(url)

    # Delete old entries
    BlogEntry.objects.filter(locked=False).delete()

    # Get items that have changed
    for item in feed['items']:
        locked = False
        try:
            oldentry = BlogEntry.objects.get(title=item['title'])
            locked = oldentry.locked
        except BlogEntry.DoesNotExist:
            pass

        if not locked:
            timestamp = datetime.fromtimestamp(
                time.mktime(item['published_parsed'])) + timedelta(hours=2)
            entry = BlogEntry()
            entry.title = item['title']
            entry.summary = item['summary']
            entry.date = timestamp
            entry.link = item['link']
            entry.name = item['authors'][0]['name']
            entry.save()

    # Just return "ok"
    return HttpResponse("ok")
Пример #2
0
 def create_sample_blog_entries(klass, count=50):
     """
     Create N number of sample blog entries where N = the count parameter.
     Text in posts till be random lorem ipsum text. Author will be a 
     randomly selected author from the system, and date will be a random date
     from the last 2 years. All test entries will be marked "published".
     """
     klass._setup(BlogEntry, count)
     while count > 0:
         headline = words(randrange(3,12), common=False).capitalize()
         slug = klass._check_slug(slugify(headline)[:klass.field_len])
         b = BlogEntry(
             headline = headline,
             slug = slug,
             intro = klass._join_paras(
                 paragraphs(randrange(1,3), common=False)
             ),
             body = klass._join_paras(
                 paragraphs(randrange(2,5), common=False)
             ),
             pub_date = klass._get_rand_date(),
             status = BloggingSettings.PUBLISHED_ENTRY_STATES[0],
             author = Author.objects.order_by('?')[0]
         )
         b.save()
         count += -1
Пример #3
0
 def test_publication_logic(self):
     """
     Verify that unpublished entries cannot be viewed
     """
     unpub_state = filter(
         lambda s: s[0] not in BloggingSettings.PUBLISHED_ENTRY_STATES,
         BloggingSettings.PUB_STATES
     )[0][0]
     pub_state = BloggingSettings.PUBLISHED_ENTRY_STATES[0]
     slug = 'publication-test'
     # Start by creating a new, unpublished entry:
     entry = BlogEntry(
         slug=slug,
         headline='Headline TKTK',
         intro='Loren ipsum...',
         author=Author.objects.all()[0], #any author is fine...
         status=unpub_state,
     )
     entry.save()
     # Trying to view it should show a 404:
     response = self.client.get(entry.get_absolute_url())
     self.assertTrue(response.status_code == 404)
     # Now publish it:
     entry.status = pub_state
     entry.save()
     # Should be visible:
     response = self.client.get(entry.get_absolute_url())
     self.assertTrue(response.status_code == 200)
    def testEditBlogEntry(self):
        # Given there is a blog entry in the database
        entry = BlogEntry(title='entry1', text='entry1')
        entry.save()
        self.assertEqual(1, BlogEntry.all().count())
        # And I am signed in as admin
        self.signInAsAdmin()
        # When I edit the blog entry
        handler = self.createEditBlogEntryHandler()
        handler.request.GET['id'] = entry.key().id()
        handler.get()
        result = str(handler.response.out)
        # And I should see an input for "title"
        self.assertRegexpMatches(result, r'<[^>]+ name="title"[^>]*>')
        self.assertRegexpMatches(result, r'<[^>]+ value="entry1"[^>]*>')
        # And I should see an input for "text"
        self.assertRegexpMatches(result, r'<[^>]+ name="text"[^>]*>')
        self.assertRegexpMatches(result, r'<textarea[^>]*>entry1<')
        # And I should see a "Save" button
        self.assertRegexpMatches(result, r'<button[^>]*>Save</')

        # And I fill out the "title" field with "new title"
        handler = self.createEditBlogEntryHandler()
        handler.request.POST['id'] = entry.key().id()
        handler.request.POST['title'] = 'new title'
        # And I fill out the "text" field with "new text"
        handler.request.POST['text'] = 'new text'
        # And I click on the "Save" button
        handler.post()
        # And I should see the blog entry with "title": "new title"
        self.assertEqual(1, BlogEntry.all().count())
        entry = BlogEntry.all().get()
        self.assertEqual('new title', entry.title)
        # And I should see the blog entry with "text": "new text"
        self.assertEqual('new text', entry.text)
Пример #5
0
def updateblog(request):
    # Get feed
    url = "http://blog.instanssi.org/feeds/posts/default"
    feed = feedparser.parse(url)

    # Delete old entries
    BlogEntry.objects.filter(locked=False).delete()

    # Get items that have changed
    for item in feed["items"]:
        locked = False
        try:
            oldentry = BlogEntry.objects.get(title=item["title"])
            locked = oldentry.locked
        except BlogEntry.DoesNotExist:
            pass

        if not locked:
            timestamp = datetime.fromtimestamp(time.mktime(item["published_parsed"])) + timedelta(hours=2)
            entry = BlogEntry()
            entry.title = item["title"]
            entry.summary = item["summary"]
            entry.date = timestamp
            entry.link = item["link"]
            entry.name = item["authors"][0]["name"]
            entry.save()

    # Just return "ok"
    return HttpResponse("ok")
Пример #6
0
def save_post(request, idee):
    if request.method == 'POST':
        submit_names = ('save', 'publish', 'quit')
        submit = [i for i in request.POST if i in submit_names][0]
        author = request.user
        form = BlogEntryForm(request.POST)

        if form.is_valid():
            if idee:
                entry = get_object_or_404(BlogEntry, pk=idee, author=author)
                entry.title = form.cleaned_data['title']
                entry.content = form.cleaned_data['content']
                entry.updated = entry.updated.now()
            else:
                entry = BlogEntry(author=author)
                entry.title=form.cleaned_data['title']
                entry.name = flatten(entry.title) + '.html'
                entry.content = form.cleaned_data['content']
                # We need a pk before settings tag_names below
                entry.save()
            Tag.objects.update_tags(entry, form.cleaned_data['tags'])
            if submit == "publish":
                entry.published = True
                entry.posted = datetime.now()
                entry.save()
                return HttpResponseRedirect(reverse('index'))
            elif submit == "save":
                entry.save()
                return render_to_response('edit_post.html', {'form': form,
                        'entry': entry})
            else:
                entry.save()
                return HttpResponseRedirect(reverse('admin'))
        elif submit == "quit":
            return HttpResponseRedirect(reverse('admin'))
    else:
        form = BlogEntryForm()
    return render_to_response('edit_post.html', {'form': form})
Пример #7
0
 def test_comments_logic(self):
     """
     Verify that comments are closed as expected
     """
     pub_state = BloggingSettings.PUBLISHED_ENTRY_STATES[0]
     # Create a published entry, set 'comments_allowed' off:
     entry = BlogEntry(
         slug='test-comments-entry',
         headline='Headline TKTK',
         intro='Loren ipsum...',
         author=Author.objects.all()[0], #any author is fine...
         status=pub_state,
         allow_comments=False
     )
     entry.save()
     self.assertTrue(entry.allow_comments == False)
     entry.allow_comments = True
     entry.save()
     self.assertTrue(entry.comments_enabled)
     # Now set date to just before BloggingSettings.DAYS_COMMENTS_OPEN:
     pd = entry.pub_date - timedelta(BloggingSettings.DAYS_COMMENTS_OPEN + 1)
     entry.pub_date = pd
     entry.save()
     self.assertTrue(entry.comments_enabled == False)