def get(self, request, feed_id): if self.is_malice_user(feed_id): return JsonResponse({ 'status': 'error', 'msg': u'你的请求有误,查询失败', }) feed_oid = get_oid(feed_id) user_feed = UserFeed2.objects( feed=feed_oid, is_deleted=False, ).first() if not (user_feed and self.feed_expire_status(user_feed.feed)): return JsonResponse({'status': 'ok', 'msg': u'订阅未过期,不需要重置'}) feed_expire_time = after7day() Feed2.objects(id=feed_oid).update( set__feed_expire_time=feed_expire_time) Feed.objects.filter(feed_obj_id=feed_id).update( feed_expire_time=feed_expire_time) CeleryUtils.user_feed_task(feed_id) return JsonResponse({ 'status': 'ok', 'msg': u'设置成功', })
def set_feed_time(self, feed_id): now = datetime.datetime.now() feed_oid = get_oid(feed_id) feed_expire_time = after7day() Feed2.objects(id=feed_oid).update( set__last_click_time=now, set__feed_expire_time=feed_expire_time, ) Feed.objects.filter(feed_obj_id=str(feed_id)).update( last_click_time=now, feed_expire_time=feed_expire_time, ) return True
def add_email_data(self, feed_oid, resume_oids): if not resume_oids: return False feed = Feed2.objects(id=feed_oid)[0] email = feed.username pub_admin = self.request.user.username email_feed = EmailFeedData.objects( feed=feed_oid, is_send=False, ).first() if email_feed: EmailFeedData.objects( feed=feed_oid, is_send=False, ).update( set__pub_admin=pub_admin, add_to_set__resumes=resume_oids, ) else: email_feed = EmailFeedData( email=email, pub_admin=pub_admin, feed=feed_oid, resumes=resume_oids, ) email_feed.save() return True
def main(): today = get_today() tomorrow = get_tomommow() expire_feeds = Feed2.objects( feed_expire_time__gte=today, feed_expire_time__lt=tomorrow, feed_type=1, ) for feed in expire_feeds: if is_deleted_feed(feed): continue email = feed.username subject = get_email_subject(feed) message = render_to_string( 'email-template/activate_tips.html', {'feed': feed} ) result = asyn_bat_mail( email, subject, message, ) if result.get('status') == 'success': print '%s send email success' % email else: print '%s send email error, result %s' % (email, result)
def feed_not_expire(self, feed_oid): now = datetime.datetime.now() feed = Feed2.objects( id=feed_oid, username=self.request.user.username, expire_time__gt=now, ) return True if feed else False
def make_mongo_feed_expire(cls, feed, expire_time): feed_oid = get_oid(feed.feed_obj_id) mongo_feed = Feed2.objects(id=feed_oid).first() mongo_feed.expire_time = expire_time UserFeed2.objects.filter( feed=mongo_feed, ).update(set__expire_time=expire_time) mongo_feed.save() return True
def make_mongo_feed_expire(cls, feed, expire_time): feed_oid = get_oid(feed.feed_obj_id) mongo_feed = Feed2.objects(id=feed_oid).first() mongo_feed.expire_time = expire_time UserFeed2.objects.filter( feed=mongo_feed, ).update( set__expire_time=expire_time ) mongo_feed.save() return True
def main(): mongo_feeds = Feed2.objects(__raw__={ 'title': { '$ne': '' }, 'feed_type': 1, 'deleted': False, }) for mf in mongo_feeds: title = mf.title if not title: continue sid = str(mf.id) Feed.objects.filter(feed_obj_id=sid).update(title=title) print title, sid, 'update success'
def get_feed_data(send_user): username = send_user.user.username weixin_openid = send_user.openid user_pub_feeds = EmailFeedData.objects( email=username, is_send=False, ).select_related() total_num = 0 keyword_list = [] feed_id = None for pub_feed in user_pub_feeds: feed_id = pub_feed.feed.id feed = Feed2.objects(id=feed_id, deleted=False).first() if not feed: continue resumes_count = len(pub_feed.resumes) total_num += resumes_count keywords = feed.title if feed.title else feed.keywords if total_num > 1 or len(user_pub_feeds) > 1: keywords = '{0}({1})'.format( keywords, resumes_count ) keyword_list.append(keywords.replace(u',', ',')) keyword_list = ', '.join(keyword_list).split(',') if len(keyword_list) > 3: keyword_list[3] = '...' keywords = ','.join(keyword_list[:4]) feed_data = {} feed_data['openid'] = weixin_openid feed_data['username'] = username feed_data['reco_num'] = 0 feed_data['feed_id'] = str(feed_id) feed_data['title'] = keywords feed_data['reco_num'] = total_num feed_data['display_time'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M") return feed_data
def add_pub_data(self, feed_oid, resume_oids, display_time): if not resume_oids: return False today = get_today() tomorrow = get_tomommow() feed = Feed2.objects(id=feed_oid)[0] email = feed.username pub_admin = self.request.user.username pub_feed = PubFeedData.objects( feed=feed_oid, pub_time__gte=today, pub_time__lt=tomorrow, ).first() if pub_feed: if display_time == tomorrow: update_kwargs = { 'set__display_time': tomorrow, } else: update_kwargs = {} PubFeedData.objects( feed=feed_oid, pub_time__gte=today, pub_time__lt=tomorrow, ).update(set__pub_admin=pub_admin, add_to_set__resumes=resume_oids, **update_kwargs) else: pub_feed = PubFeedData( email=email, pub_admin=pub_admin, feed=feed_oid, resumes=resume_oids, pub_time=datetime.datetime.now(), display_time=display_time, ) pub_feed.save() return True
def main(): feeds = Feed2.objects() for feed in feeds: add_update_cache(feed)
def renewal_feed(self, feed_oid): feed_id = str(feed_oid) user = self.request.user now = datetime.datetime.now() user_charge_pkg = UserChargePackage.objects.filter( user=user, feed_end_time__gte=now, pay_status='finished', rest_feed__gt=0, pkg_source=1, )[0] mongo_feed = Feed2.objects(id=feed_oid).first() mysql_feed = get_object_or_none( Feed, feed_obj_id=feed_id, ) old_mongo_user_feed = UserFeed2.objects( feed=mongo_feed, username=user.username, is_deleted=False, ).first() expire_time = user_charge_pkg.feed_end_time mongo_feed.expire_time = expire_time mysql_feed.expire_time = expire_time mysql_user_feed = UserFeed( feed=mysql_feed, user=user, user_charge_pkg=user_charge_pkg, add_time=now, expire_time=expire_time, ) mongo_user_feed = UserFeed2( username=user.username, feed=mongo_feed, expire_time=expire_time, read_id_list=old_mongo_user_feed.read_id_list, read_count=old_mongo_user_feed.read_count, ) with transaction.atomic(): result = UserChargePackage.objects.filter( id=user_charge_pkg.id, rest_feed__gt=0, ).update(rest_feed=F('rest_feed') - 1) if result: UserFeed2.objects( feed=mongo_feed, is_deleted=False, username=user.username, ).update(set__is_deleted=True) mongo_feed.save() mongo_user_feed.save() UserFeed.objects.filter( feed=mysql_feed, is_deleted=False, user=user, ).update(is_deleted=True) mysql_feed.save() mysql_user_feed.save() return True
def main(): feeds = Feed2.objects(deleted=False) for feed in feeds: convert2pub_data(feed)
def get_email_data(pub_feed): after_tomorrow = get_tomommow() + datetime.timedelta(days=1) username = pub_feed.email last_send_info = EmailSendInfo.objects(username=username).first() if last_send_info: send_frequency = last_send_info.sendFrequency last_send_date = last_send_info.lastSendDate need_send = ( send_frequency and last_send_date + datetime.timedelta(days=send_frequency) <= after_tomorrow ) else: user = User.objects.filter(username=username)[0] last_send_info = EmailSendInfo( user=user.id, username=username, ) need_send = True if not need_send: return False user_pub_feeds = EmailFeedData.objects( email=username, is_send=False, ).select_related() if not user_pub_feeds: return False feed_info_list = [] total_num = 0 keyword_list = [] for pub_feed in user_pub_feeds: feed_id = pub_feed.feed.id feed = Feed2.objects(id=feed_id, deleted=False).first() if not feed: continue keywords = feed.title if feed.title else feed.keywords keyword_list.append(keywords.replace(u',', ',')) resume_num = len(pub_feed.resumes) feed.feed_resumes = get_display_resumes(feed_id, pub_feed.resumes) feed.feed_result_num = resume_num feed.token = get_email_token(username, feed_id) total_num += resume_num feed_info_list.append(feed) keyword_list = ','.join(keyword_list).split(',') if len(keyword_list) > 5: keyword_list[4] = '...' keywords = ','.join(keyword_list[:5]) subject = u'聘宝为你推荐人才-%s' % keywords return { 'username': username, 'subject': subject, 'feed_info_list': feed_info_list, 'total_num': total_num, 'email_send_info': last_send_info, }