def parse(self): logger.info("start parsing: %s", self.name) downloaded_news = self.download() queries = [] for data in downloaded_news['items']: news_data = self.formatNews(data) try: query = News( id=news_data['id'], datetime=datetime.fromtimestamp(news_data['datetime'], pytz.utc), title=news_data['title'], content=news_data['content'], source_title=news_data['source_title'], source_url=news_data['source_url'], referrer=news_data['referrer'], ) except Exception as e: logger.error("%s: %s", e, str(data)) queries.append(query) logger.info("done parsing: %s, %s queries were parsed", self.name, len(queries)) return queries
def post(self): user = g.user if not user: return jsonify(errno=RET.SESSIONERR, errmsg="用户未登录") # POST 提交,执行发布新闻操作 # 1. 获取要提交的数据 title = request.form.get("title") source = "个人发布" digest = request.form.get("digest") content = request.form.get("content") index_image = request.files.get("index_image") category_id = request.form.get("category_id") # 1.1 判断数据是否有值 if not all([title, source, digest, content, index_image, category_id]): return jsonify(errno=RET.PARAMERR, errmsg="参数有误") try: category_id = int(category_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.PARAMERR, errmsg="参数有误") key = "https://beishufudeyu.github.io/images/%E5%88%86%E5%B8%83%E5%BC%8F%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6.png" if index_image is not None: # 2. 将标题图片上传到七牛 try: index_image_data = index_image.read() key = storage(index_image_data) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.THIRDERR, errmsg="上传图片错误") # 3. 初始化新闻模型,并设置相关数据 news = News() news.title = title news.digest = digest news.source = source news.content = content if index_image: news.index_image_url = constants.QINIU_DOMIN_PREFIX + key else: news.index_image_url = key news.category_id = category_id news.user_id = g.user.id # 1代表待审核状态 news.status = 1 # 4. 保存到数据库 try: db.session.add(news) db.session.commit() except Exception as e: db.session.rollback() current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg="保存数据失败") # 5. 返回结果 return jsonify(errno=RET.OK, errmsg="发布成功,等待审核")
def generate_random_news(category, new=randint(1, 6), old=randint(1, 6)): ns = [] author_user = UserFactory() for i in range(new): n = News(title="news", body="news body", date=datetime.now() - timedelta(days=randint(0, 6)), author_id=author_user.pk) n.category = category n.save() ns.append(n) for i in range(old): n = News(title="old news", body="news body", date=datetime.now() - timedelta(days=randint(8, 20)), author_id=author_user.pk) n.category = category n.save() ns.append(n) return (new, old, ns)
def exist_a_news(step): for news_hashes in step.hashes: author = User.objects.get(username__exact=news_hashes.get('author')) date, hour = news_hashes.get('date_and_time').split() day, month, year = date.split('/') hours, minutes = hour.split(':') date_time = datetime(int(year), int(month), int(day), int(hours), int(minutes)) News(title=news_hashes.get('title'), summary=news_hashes.get('summary'), body=news_hashes.get('body'), image=news_hashes.get('image'), author=author, date_and_time=date_time).save() file_name = news_hashes.get('image').split('/')[-1] shutil.copy2(os.path.join(settings.PROJECT_ROOT_PATH, 'apps', 'news', 'features', 'resources', file_name), os.path.join(settings.MEDIA_ROOT, 'test', 'images', 'news'))
def test_get_successive_news(self): ns = [] for i in range(12): n = News(title="news", body="news body", author_id=1, date=datetime.now() - timedelta(days=12 - i)) n.save() ns.append(n) self.assertEqual(0, len(News.objects.get_successive_news('-', 0, 0))) self.assertEqual( 0, len(News.objects.get_successive_news('-', randint(0, 11), 0))) self.assertEqual(12, len(News.objects.get_successive_news('-', 0, 20))) nss = News.objects.get_successive_news('-', 3, 6) for i in range(0, 6): self.assertEqual(nss[i].id, ns[8 - i].id) for n in ns: n.delete()
def create(self, validate_data): news =News(**validate_data) news.author=self.request.user news.save() return news
def test_creating_news(self): n1 = News(title="news test", body="news body") self.assertEqual(str(n1), "news test")