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))
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))
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))