예제 #1
0
파일: core.py 프로젝트: pixellaz/pixelcms
def entry_detail(request, date, slug):
    """Display one entry with the given slug and date.
    """
    try:
        today = datetime.strptime(date, "%Y/%b/%d")
        tomorrow = today + timedelta(days=1)
    except:
        raise Http404

    try:
        entry = EntryType.objects(publish_date__gte=today, 
                                  publish_date__lt=tomorrow, slug=slug)[0]
    except IndexError:
        raise Http404

    # Select correct form for entry type
    form_class = Comment.CommentForm

    if request.method == 'POST':
        form = form_class(request.user, request.POST)
        if form.is_valid():
            # Get necessary post data from the form
            comment = HtmlComment(**form.cleaned_data)
            if request.user.is_authenticated():
                comment.is_admin = True
            # Update entry with comment
            q = EntryType.objects(id=entry.id)
            comment.rendered_content = markup(comment.body, escape=True,
                                              small_headings=True)
            q.update(push__comments=comment)

            return HttpResponseRedirect(entry.get_absolute_url()+'#comments')
    else:
        form = form_class(request.user)

    # Check for comment expiry
    comments_expired = False
    if entry.comments_expiry_date:
        if entry.comments_expiry_date < datetime.now():
            comments_expired = True

    context = {
        'entry': entry,
        'form': form,
        'comments_expired': comments_expired,
		'datenow': datetime.now(),
    }
    return render_to_response(_lookup_template('entry_detail'), context,
                              context_instance=RequestContext(request))
예제 #2
0
파일: admin.py 프로젝트: pixellaz/pixelcms
def delete_comment(request):
	"""Delete a comment from the database.
	"""
	comment_id = request.POST.get('comment_id', None)
	if request.method == 'POST' and comment_id:
		# Delete matching comment from entry
		entry = EntryType.objects(comments__id=comment_id).first()
		if entry:
			entry.comments = [c for c in entry.comments if c.id != comment_id]
			entry.save()
		return HttpResponseRedirect(entry.get_absolute_url()+'#comments')
	return HttpResponseRedirect(reverse('recent-entries'))
예제 #3
0
파일: core.py 프로젝트: pixellaz/pixelcms
def recent_entries(request, page_number=1):
    """Show the [n] most recent entries.
    """
    num = getattr(settings, 'PIXELCMS_NUM_ENTRIES_PER_PAGE', 10)
    entry_list = EntryType.live_entries()
    paginator = Paginator(entry_list, num)
    try:
        entries = paginator.page(page_number)
    except (EmptyPage, InvalidPage):
        entries = paginator.page(paginator.num_pages)
    context = {
        'title': 'Recent Entries',
        'entries': entries,
        'no_entries_messages': NO_ENTRIES_MESSAGES,
    }
    return render_to_response(_lookup_template('list_entries'), context,
                              context_instance=RequestContext(request))
예제 #4
0
파일: core.py 프로젝트: pixellaz/pixelcms
def tagged_entries(request, tag=None, page_number=1):
    """Show a list of all entries with the given tag.
    """
    tag = tag.strip().lower()
    num = getattr(settings, 'PIXELCMS_NUM_ENTRIES_PER_PAGE', 10)
    entry_list = EntryType.live_entries(tags=tag)
    paginator = Paginator(entry_list, num)
    try:
        entries = paginator.page(page_number)
    except (EmptyPage, InvalidPage):
        entries = paginator.page(paginator.num_pages)
    context = {
        'title': 'Entries Tagged "%s"' % tag,
        'entries': entries,
        'no_entries_messages': NO_ENTRIES_MESSAGES,
    }
    return render_to_response(_lookup_template('list_entries'), context,
                              context_instance=RequestContext(request))
예제 #5
0
파일: core.py 프로젝트: pixellaz/pixelcms
    }

    embed_patterns = (
        ('youtube', r'youtube\.com\/watch\?v=([A-Za-z0-9._%-]+)[&\w;=\+_\-]*'),
        ('vimeo', r'vimeo\.com\/(\d+)'),
    )

    def rendered_content(self):
        video_url = self.video_url
        for source, pattern in VideoEntry.embed_patterns:
            id = re.findall(pattern, video_url)
            if id:
                embed = VideoEntry.embed_codes[source]
                html = embed.replace('{{!ID}}', id[0])
                break
        else:
            html = 'Video: <a href="video_url">%s</a>' % video_url

        if self.description:
            html += markup(self.description)
        return html

    class AdminForm(EntryType.AdminForm):
        video_url = forms.URLField()
        description = forms.CharField(widget=forms.Textarea, required=False)

EntryType.register(TextEntry)
EntryType.register(LinkEntry)
EntryType.register(ImageEntry)
EntryType.register(VideoEntry)
예제 #6
0
 def render(self, context):
     context[self.var_name] = list(EntryType.live_entries()[:self.num])
     return ''