def post(self, request): try: podcasts = self._get_podcasts(request) except InvalidPodcast as ip: messages.error(request, _('No podcast with URL {url}').format(url=str(ip))) grouper = PodcastGrouper(podcasts) features = {} for key, feature in request.POST.items(): m = self.RE_EPISODE.match(key) if m: episode_id = m.group(1) features[episode_id] = feature get_features = lambda (e_id, e): (features[e_id], e_id) num_groups = grouper.group(get_features) if 'renew' in request.POST: return render(request, 'admin/merge-grouping.html', { 'podcasts': podcasts, 'groups': num_groups, }) elif 'merge' in request.POST: actions = Counter() try: # merge podcast, reassign episodes pm = PodcastMerger(podcasts, actions, num_groups) pm.merge() except IncorrectMergeException as ime: messages.error(request, str(ime)) return HttpResponseRedirect(reverse('admin-merge')) return render(request, 'admin/merge-finished.html', { 'actions': actions.items(), 'podcast': podcasts[0], })
def post(self, request): try: podcasts = self._get_podcasts(request) except InvalidPodcast as ip: messages.error(request, _('No podcast with URL {url}').format(url=str(ip))) grouper = PodcastGrouper(podcasts) get_features = lambda (e_id, e): ((e.url, e.title), e_id) num_groups = grouper.group(get_features) return self.render_to_response({ 'podcasts': podcasts, 'groups': num_groups, })
def post(self, request): try: podcasts = self._get_podcasts(request) except InvalidPodcast as ip: messages.error(request, _('No podcast with URL {url}').format(url=str(ip))) grouper = PodcastGrouper(podcasts) features = {} for key, feature in request.POST.items(): m = self.RE_EPISODE.match(key) if m: episode_id = m.group(1) features[episode_id] = feature get_features = lambda (e_id, e): (features.get(e_id, e_id), e_id) num_groups = grouper.group(get_features) if 'renew' in request.POST: return render(request, 'admin/merge-grouping.html', { 'podcasts': podcasts, 'groups': num_groups, }) elif 'merge' in request.POST: podcast_ids = [p.get_id() for p in podcasts] num_groups = list(num_groups) res = merge_podcasts.delay(podcast_ids, num_groups) return HttpResponseRedirect(reverse('admin-merge-status', args=[res.task_id]))