def add_feed(request): add_form = forms.AddFeedForm(request.GET) if not add_form.is_valid(): return HttpResponseBadRequest( add_form['feed_url'].errors.as_text()) feed_url = add_form.cleaned_data['feed_url'] parsed_feed = add_form.cleaned_data['parsed_feed'] title = getattr(parsed_feed.feed, 'title', '') or feed_url for regexp in VIDEO_SERVICE_TITLES: match = regexp.match(title) if match: title = match.group(1) break defaults = { 'name': title, 'feed_url': feed_url, 'webpage': parsed_feed.feed.get('link', ''), 'description': parsed_feed.feed.get('summary', ''), 'when_submitted': datetime.datetime.now(), 'last_updated': datetime.datetime.now(), 'status': models.FEED_STATUS_UNAPPROVED, 'user': request.user, 'etag': '', 'auto_approve': bool(request.POST.get('auto_approve', False))} video_count = bulk_import.video_count(feed_url, parsed_feed) if request.method == 'POST': if 'cancel' in request.POST: return HttpResponseRedirect(reverse('localtv_admin_manage_page')) form = forms.SourceForm(request.POST, instance=models.Feed(**defaults)) if form.is_valid(): feed, created = models.Feed.objects.get_or_create( feed_url=defaults['feed_url'], site=request.sitelocation.site, defaults=defaults) if not created: for key, value in defaults.items(): setattr(feed, key, value) for key, value in form.cleaned_data.items(): setattr(feed, key, value) thumbnail_url = util.get_thumbnail_url(parsed_feed.feed) if thumbnail_url: try: thumbnail_file = ContentFile( urllib2.urlopen( util.quote_unicode_url(thumbnail_url)).read()) except IOError: # couldn't get the thumbnail pass else: feed.save_thumbnail_from_file(thumbnail_file) if feed.video_service(): user, created = User.objects.get_or_create( username=feed.name[:30], defaults={'email': ''}) if created: user.set_unusable_password() Profile.objects.create( user=user, website=defaults['webpage']) user.save() feed.auto_authors.add(user) feed.save() return HttpResponseRedirect(reverse('localtv_admin_feed_add_done', args=[feed.pk])) else: form = forms.SourceForm(instance=models.Feed(**defaults)) return render_to_response('localtv/admin/add_feed.html', {'form': form, 'video_count': video_count}, context_instance=RequestContext(request))
def add_feed(request): add_form = forms.AddFeedForm(request.GET) if not add_form.is_valid(): return HttpResponseBadRequest(add_form['feed_url'].errors.as_text()) feed_url = add_form.cleaned_data['feed_url'] parsed_feed = add_form.cleaned_data['parsed_feed'] title = getattr(parsed_feed.feed, 'title', '') or feed_url for regexp in VIDEO_SERVICE_TITLES: match = regexp.match(title) if match: title = match.group(1) break defaults = { 'name': title, 'feed_url': feed_url, 'webpage': parsed_feed.feed.get('link', ''), 'description': parsed_feed.feed.get('summary', ''), 'when_submitted': datetime.datetime.now(), 'last_updated': datetime.datetime.now(), 'status': models.FEED_STATUS_UNAPPROVED, 'user': request.user, 'etag': '', 'auto_approve': bool(request.POST.get('auto_approve', False)) } video_count = bulk_import.video_count(feed_url, parsed_feed) if request.method == 'POST': if 'cancel' in request.POST: return HttpResponseRedirect(reverse('localtv_admin_manage_page')) form = forms.SourceForm(request.POST, instance=models.Feed(**defaults)) if form.is_valid(): feed, created = models.Feed.objects.get_or_create( feed_url=defaults['feed_url'], site=request.sitelocation().site, defaults=defaults) if not created: for key, value in defaults.items(): setattr(feed, key, value) for key, value in form.cleaned_data.items(): setattr(feed, key, value) thumbnail_url = util.get_thumbnail_url(parsed_feed.feed) if thumbnail_url: try: thumbnail_file = ContentFile( urllib2.urlopen( util.quote_unicode_url(thumbnail_url)).read()) except IOError: # couldn't get the thumbnail pass else: feed.save_thumbnail_from_file(thumbnail_file) if feed.video_service(): user, created = User.objects.get_or_create( username=feed.name[:30], defaults={'email': ''}) if created: user.set_unusable_password() Profile.objects.create(user=user, website=defaults['webpage']) user.save() feed.auto_authors.add(user) feed.save() return HttpResponseRedirect( reverse('localtv_admin_feed_add_done', args=[feed.pk])) else: form = forms.SourceForm(instance=models.Feed(**defaults)) return render_to_response('localtv/admin/add_feed.html', { 'form': form, 'video_count': video_count }, context_instance=RequestContext(request))