示例#1
0
    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)
示例#2
0
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}
示例#3
0
    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)
示例#4
0
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