Exemple #1
0
def edit_entry(request, entry_id):
	"""Edit an existing entry.
	"""
	entry = EntryType.objects.with_id(entry_id)
	if not entry:
		return HttpResponseRedirect(reverse('admin'))

	# Select correct form for entry type
	form_class = entry.AdminForm

	if request.method == 'POST':
		form = form_class(request.POST)
		if form.is_valid():
			# Get necessary post data from the form
			for field, value in form.cleaned_data.items():
				if field in entry._fields.keys():
					entry[field] = value
			entry.save()
			return HttpResponseRedirect(entry.get_absolute_url())
	else:
		fields = entry._fields.keys()
		field_dict = dict([(name, entry[name]) for name in fields])

		# tags are stored as a list in the db, convert them back to a string
		field_dict['tags'] = ', '.join(field_dict['tags'])

		# publish_time and expiry_time are not initialised as they
		# don't have a field in the DB
		field_dict['publish_time'] = time(
			hour=entry.publish_date.hour,
			minute=entry.publish_date.minute,
			second=entry.publish_date.second,
		)
		if field_dict['expiry_date']:
			field_dict['expiry_time'] = time(
				hour=entry.expiry_date.hour,
				minute=entry.expiry_date.minute,
				second=entry.expiry_date.second,
			)
		form = form_class(field_dict)

	link_url = reverse('add-entry', args=['Link'])
	video_url = reverse('add-entry', args=['Video'])
	context = {
		'title': 'Edit an entry',
		'type': type,
		'form': form,
		'link_url': request.build_absolute_uri(link_url),
		'video_url': request.build_absolute_uri(video_url),
	}
	return render_to_response(_lookup_template('add_entry'), context,
							  context_instance=RequestContext(request))
Exemple #2
0
def add_entry(request, type):
	"""Display the 'Add an entry' form when GET is used, and add an entry to
	the database when POST is used.
	"""
	# 'type' must be a valid entry type (e.g. html, image, etc..)
	if type.lower() not in EntryType._types:
		raise Http404

	# Use correct entry type Document class
	entry_type = EntryType._types[type.lower()]
	# Select correct form for entry type
	form_class = entry_type.AdminForm

	if request.method == 'POST':
		form = form_class(request.POST)
		if form.is_valid():
			entry = entry_type(**form.cleaned_data)

			# Save the entry to the DB
			entry.save()
			return HttpResponseRedirect(entry.get_absolute_url())
	else:
		initial = {
			'publish_date': datetime.now(),
			'publish_time': datetime.now().time(),
			'comments_enabled': True,
		}
		# Pass in inital values from query string - added by bookmarklet
		for field, value in request.GET.items():
			if field in form_class.base_fields:
				initial[field] = value

		if 'title' in initial:
			initial['slug'] = defaultfilters.slugify(initial['title'])

		form = form_class(initial=initial)

	link_url = reverse('add-entry', args=['Link'])
	video_url = reverse('add-entry', args=['Video'])
	context = {
		'title': 'Add %s Entry' % type,
		'type': type,
		'form': form,
		'link_url': request.build_absolute_uri(link_url),
		'video_url': request.build_absolute_uri(video_url),
	}
	return render_to_response(_lookup_template('add_entry'), context,
							  context_instance=RequestContext(request))
Exemple #3
0
def edit_track(request, track_id):
    username = request.user.username
    track = request.user.tracks.get(id=track_id)
    if request.method == "POST":
        form = TrackEditForm(request.POST, request.FILES, instance=track)
        if form.is_valid():
            track = form.save()
            update_audiofile_metadata(track)
            if 'delete_image' in request.POST:
                track.image = None
                track.save()
            messages.add_message(request, messages.INFO,
                                 ugettext('Your changes have been saved.'))
            redirect_url = urlresolvers.reverse('user_index', args=[username])
            return HttpResponseRedirect(redirect_url)
    else:
        form = TrackEditForm(instance=track, )
    track_url_args = ['']
    track_url_args.insert(0, username)
    track_detail_url = urlresolvers.reverse('track_detail',
                                            args=track_url_args)
    track_url_prefix = request.build_absolute_uri(track_detail_url)
    track_filename = os.path.basename(track.audio_file.name)
    return render_to_response("audiotracks/edit.html", {
        'form': form,
        'track': track,
        'track_url_prefix': track_url_prefix,
        'track_filename': track_filename,
    }, context_instance=RequestContext(request))