def check_reached_submit_limit(self): if not self.is_under_limit: return False daily_submit_count = MediaSubmitArticleLog.objects( media_id=str(self.id), date=str(time_utils.get_india_now().date())).count() return daily_submit_count >= self.daily_submit_limit
def is_under_limit(self): if not self.limit_end_at: return False now = time_utils.get_india_now() if now > self.limit_end_at: return False return True
def add_submit_log(self, article_id): try: MediaSubmitArticleLog.objects.create( media_id=str(self.id), article_id=article_id, date=str(time_utils.get_india_now().date())) except NotUniqueError: return
def check_internship_submit_limit(self, article_id=None): if not self.is_internship: return False if article_id: article_submit_count = MediaSubmitArticleLog.objects( media_id=str(self.id), article_id=str(article_id)).count() if article_submit_count > 0: return False daily_submit_count = MediaSubmitArticleLog.objects( media_id=str(self.id), date=str(time_utils.get_india_now().date())).count() return daily_submit_count >= self.daily_submit_limit
def process_get_params(self, request): days = int(request.GET.get('days', 7)) count = int(request.GET.get('count', 10)) end_date_str = request.GET.get('end_date') if end_date_str: end_time = datetime.datetime.strptime(end_date_str, '%Y-%m-%d') end_time += ONE_DAY else: india_now = time_utils.get_india_now() end_time = datetime.datetime(india_now.year, india_now.month, india_now.day, 0, 0, 0) end_time += ONE_DAY start_time = end_time - datetime.timedelta(days) return start_time, end_time, count
def limit_media(self, request, limit_days, daily_limit, limit_reason): limit_end_time = time_utils.get_india_now() + datetime.timedelta( int(limit_days)) self.limit_end_at = datetime.datetime(limit_end_time.year, limit_end_time.month, limit_end_time.day) self.limit_reason = limit_reason self.daily_submit_limit = daily_limit self.save() notify_utils.create_media_limit_notification(self) content = MEDIA_AMDIN_OPERATE_LIMIT_POST_CONTENT_TEMPL % (daily_limit, limit_days) MediaAdminOperateLog.generate_log(request, str(self.id), MEDIA_AMDIN_OPERATE_TYPE_LIMIT_POST, content) mpu = MediaPromotionUser.objects(media_id=str(self.id)).first() mpu.banned_promotion_user()
def post(self, request): data = request.DATA india_now = time_utils.get_india_now() if india_now.day > MEDIA_WITHDRAW_TIME[ 'upper'] or india_now.day < MEDIA_WITHDRAW_TIME['lower']: raise MediaAccountWithDrawNotInTime if not data: raise ParamError amount = float(data.get('amount', 0)) if self.media_account.has_paytm(): if amount <= 0: raise ParamError else: if amount <= BANKCARD_WITHDRAW_BASE_LINE: raise ParamError total_revenue = self.media_account.total_revenue or 0 total_withdraw = self.media_account.total_withdraw or 0 _, _, total_balance = MediaAccount.calc_balance( total_revenue, total_withdraw) if amount > total_balance: raise ParamError payment_info = self.media_account.payment_info if not payment_info or not all(payment_info.values()): raise MediaBankInfoNotExist MediaAccount.objects(id=str(self.media_account.id)).update( inc__total_withdraw=amount) now = datetime.datetime.utcnow() with_draw = WithDraw.objects.create(media_id=str( self.media_account.id), user_id=str(request.user.id), payment_info=payment_info, amount=amount, create_at=now, status=WD_STATUS_SUMBMITTED) self.media_account = MediaAccount.objects( id=str(self.media_account.id)).first() withdraw_stat = self.media_account.withdraw_stat() withdraw_stat['id'] = str(with_draw.id) return withdraw_stat