def form_valid(self, form): news = form.save() photos_formset = NewsPhotoImageSet(self.request.POST, self.request.FILES, instance=news) is_valid = all([photos_formset.is_valid()]) if is_valid: photos_formset.save() #save preview to redis photos = news.news_photos.all() preview = NewsPreview(news.id,news.title, photos[0].thumbnail.url if photos.count() > 0 else '', news.slug, news.event_date, news.deadline_date,news.description, photos[0].preview.url if photos.count() > 0 else '') preview_serialized = pickle.dumps(preview) redis_adapter.set(RedisKeys.preview_news_key % news.id, preview_serialized) return HttpResponseRedirect(self.get_success_url()) messages.error(self.request, _("Your submitted data was not valid - please " "correct the below errors")) news.delete() ctx = self.get_context_data(form=form, photo_formset=photos_formset) return self.render_to_response(ctx)
def pop_news_list(context): if str(context['city_id']) != str(FIESTA_NEWS_CITY_SLUG['spb']): pop_news_idlist = redis_adapter.zrevrange(RedisKeys.pop_news_by_city % context['city_id'],0,2) else: pop_news_idlist = redis_adapter.zrevrange(RedisKeys.pop_news,0,2) result = [] if len(pop_news_idlist) > 0: pipe = redis_adapter.pipeline() for id in pop_news_idlist: pipe.get(RedisKeys.preview_news_key % id) exec_res = pipe.execute() if len(exec_res) > 0: for ind,preview_serialized in enumerate(exec_res): if preview_serialized is not None: result.append(pickle.loads(preview_serialized)) else: id = pop_news_idlist[ind] if len(pop_news_idlist) > ind else 0 if id is not None and id != 'None' and id > 0: news = News.objects.get(pk=id) photos = news.news_photos.all() preview = NewsPreview(news.id,news.title, photos[0].thumbnail.url if photos.count() > 0 else '', news.slug, news.event_date, news.deadline_date,news.description,photos[0].preview.url if photos.count() > 0 else '') preview_serialized = pickle.dumps(preview) redis_adapter.set(RedisKeys.preview_news_key % news.id, preview_serialized) result.append(preview) return {'pop_news': result}
def form_valid(self, form): news = form.save() photos_formset = NewsPhotoImageSet(self.request.POST, self.request.FILES, instance=news) is_valid = all([photos_formset.is_valid()]) if is_valid: photos_formset.save() #save preview to redis photos = news.news_photos.all() preview = NewsPreview(news.id,news.title, photos[0].thumbnail.url if photos.count() > 0 else '', news.slug, news.event_date, news.deadline_date,news.description, photos[0].preview.url if photos.count() > 0 else '') preview_serialized = pickle.dumps(preview) redis_adapter.set(RedisKeys.preview_news_key % news.id, preview_serialized) if not news.is_displayed or news.is_archive: redis_adapter.zrem(RedisKeys.pop_news, news.id) elif news.date_added + timedelta(days=settings.TOP_NEWS_LIVETIME) > utc.localize(datetime.today()): redis_adapter.zadd(RedisKeys.pop_news, news.id, news.views_count) return HttpResponseRedirect(self.get_success_url()) messages.error(self.request, _("Your submitted data was not valid - please " "correct the below errors")) news.delete() ctx = self.get_context_data(form=form, photo_formset=photos_formset) return self.render_to_response(ctx)
def set_preview_by_id(id): news = News.objects.get(pk=id) photos = news.news_photos.all() preview = NewsPreview(news.id,news.title, photos[0].thumbnail.url if photos.count() > 0 else '', news.slug, news.event_date, news.deadline_date,news.description,photos[0].preview.url if photos.count() > 0 else '') preview_serialized = pickle.dumps(preview) redis_adapter.set(RedisKeys.preview_news_key % news.id, preview_serialized) return preview