def plan_logbook_entry(request, *args, **kwargs): goal = args[0] plan = args[1] try: pk = args[2] except IndexError: pk = kwargs.get('id') entry = get_object_or_404( LogEntry, plan = plan, pk = pk ) if entry.kind == 'c': if not request.user.is_authenticated(): if not entry.comment.is_approved: return HttpResponseRedirect( '%s?next=%s' % ( reverse('login'), request.path ) ) elif request.user != plan.user: if not entry.comment.is_approved: return HttpResponseRedirect( '%s?next=%s' % ( reverse('login'), request.path ) ) action = kwargs.get('action') if action == 'delete': entry.delete() request.user.message_set.create( message = 'This %s has been deleted.' % entry.get_kind_display() ) return HttpResponseRedirect( reverse('plan_logbook', args = [goal.slug]) ) elif action == 'approve': entry.comment.is_approved = True entry.comment.is_spam = False entry.comment.save() request.user.message_set.create( message = 'This %s has been approved.' % entry.get_kind_display() ) return HttpResponseRedirect( reverse('plan_logbook', args = [goal.slug]) ) can_delete = request.user == plan.user try: profile = plan.user.get_profile() except Profile.DoesNotExist: profile = None return render_to_response( 'plan/entry.html', { 'entry': entry, 'greeting': helpers.get_greeting(request), 'user': plan.user, 'plan': plan, 'goal': goal, 'can_delete': can_delete, 'profile': profile, 'meta_title': (entry.body, plan.user.username, goal.name) }, RequestContext(request) )
def plan_logbook(request, *args, **kwargs): goal = args[0] plan = args[1] forms = [] extra_context = {} if request.user != plan.user: comment = Comment(plan = plan) if request.user.is_authenticated(): comment.name = request.user.get_full_name() or request.user.username comment.email = request.user.email try: profile = request.user.get_profile() comment.website = profile.website except Profile.DoesNotExist: pass forms.append(CommentForm(instance = comment)) action = reverse( 'plan_comment_add', args = [ goal.slug, plan.user.username ] ) extra_context['meta_title'] = ( '%s\'s %s logbook' % ( plan.user.username, goal.name ) ) elif request.user.is_authenticated(): for form_class in (ActionEntryForm, LogEntryForm): forms.append( form_class( instance = form_class._meta.model( plan = plan ) ) ) action = reverse('plan_logbook_add', args = [goal.slug]) extra_context.update( { 'actions_serialized': helpers.serialise_actions(plan), 'measurements_serialized': helpers.serialise_measurements(), 'greeting': helpers.get_greeting(request), 'meta_title': ( '%s\'s %s logbook' % (plan.user.username, goal.name) ) } ) else: return HttpResponseRedirect( reverse('start_plan', args = [goal]) ) if request.user != plan.user: entries = plan.log_entries.approved() else: entries = plan.log_entries.not_spam() entries = helpers.paginated(entries, request) if request.user != plan.user: try: profile = get_object_or_404( Profile, user = plan.user ) if not profile.public: from django.conf import settings return HttpResponseRedirect( '%s?next=%s' % ( getattr(settings, 'LOGIN_URL'), request.path ) ) user = profile.user if profile.gender == 'm': gender = 'he' elif profile.gender == 'f': gender = 'she' else: gender = 'they' except Profile.DoesNotExist: raise Http404() next_milestone = None else: from datetime import datetime gender = None milestones = plan.milestones.filter( deadline__gt = datetime.now(), reached__isnull = True )[:1] if milestones.count() > 0: next_milestone = milestones[0] else: next_milestone = None extra_context.update( { 'goal': goal, 'plan': plan, 'forms': forms, 'entries': entries, 'user': plan.user, 'gender': gender, 'next_milestone': next_milestone, 'action': action } ) return render_to_response( 'plan/logbook.html', extra_context, RequestContext(request) )