def main(): trans_time = datetime.datetime(2015, 9, 16) old_expire_time = trans_time + relativedelta(months=3) user_vip_query = UserVip.objects.select_related( 'user', 'vip_role', ).filter(is_active=True, ).exclude(vip_role__code_name='experience_user', ) for user_vip in user_vip_query: vip_role = user_vip.vip_role active_time = user_vip.active_time if active_time < trans_time: expire_time = old_expire_time else: expire_time = active_time + relativedelta(months=3) if active_time < trans_time and vip_role.code_name == 'self_a': price = 1 elif active_time < trans_time and vip_role.code_name == 'self_b': price = 10 else: price = vip_role.price user_vip.expire_time = expire_time user_vip.total_price = price user_vip.save() PackageUtils.update_uservip_package(user_vip) print 'trans user {0} vip type {1} success'.format( user_vip.user.username, vip_role.vip_name, )
def test_expire_uservip(self): uservip = UserVip.objects.get(user__username='******') PackageUtils.update_uservip_package(uservip) expire_time = uservip.expire_time user = uservip.user has_feed = user.feed_set.filter(expire_time=expire_time).exists() self.assertTrue(has_feed)
def set_experience_user(cls, user): ''' 将用户设置成体验用户 如果用户有正在使用的自助套餐,将正在使用的自助套餐失效,将用户设置成体验用户 ''' # 失效用户当前正在使用的套餐 user_vip_query = UserVip.objects.select_related( 'user', 'vip_role', ).filter( user=user, is_active=True, ).exclude( vip_role__code_name='experience_user', ) if user_vip_query: user_vip = user_vip_query[0] user_vip.custom_feed = 0 user_vip.custom_point = 0 user_vip.is_active = False user_vip.save() point_utils.deduction_self_point(user, user_vip) PackageUtils.expire_uservip_package(user) # 体验用户生效 experience_vip_query = UserVip.objects.select_related( 'user', 'vip_role', ).filter( vip_role__code_name='experience_user', user=user, ) if experience_vip_query: experience_vip = experience_vip_query[0] else: experience_service = VipRoleUtils.get_experience_vip() experience_vip = UserVip( user=user, vip_role=experience_service, apply_status='success', ) experience_vip.is_active = True experience_vip.expire_time experience_vip.expire_time += relativedelta( months=3 ) experience_vip.custom_feed = 0 experience_vip.custom_point = 0 experience_vip.save() PackageUtils.set_uservip_pkg_feed(experience_vip) return experience_vip
def get(self, request): user = request.user now = datetime.datetime.now() charge_pkgs = UserChargePackage.objects.select_related( 'resume_package', ).filter( user=user, package_type=1, pay_status='finished', resume_end_time__gt=now, ).order_by('-resume_end_time') user_feeds = UserChargePackage.objects.select_related( 'feed_package', ).filter( user=user, package_type=2, pay_status='finished', extra_feed_num__gt=0, feed_end_time__gt=now, ).order_by('-id') has_pkg = UserChargePackage.objects.filter( user=user, package_type=1, pay_status='finished', resume_end_time__gt=now, ) user_point = point_utils.get_user_pinbot_point(user) pinbot_point = point_utils._get_pinbot_point(user) current_vip = VipRoleUtils.get_current_vip(user) highest_vip_level = VipRoleUtils.get_highest_vip_level() unsign_vip = VipRoleUtils.get_unsign_vip(user) rest_feed_count = PackageUtils.rest_feed_count(user) coin_stat = coin_utils.get_coin_statistic(user) withdraw_data = json.dumps( WithdrawUtils.get_withdraw_status(user), ensure_ascii=False ) is_partner = PartnerUtils.is_partner(user) return render( request, self.template, { 'charge_pkgs': charge_pkgs, 'user_feeds': user_feeds, 'user_point': user_point, 'pinbot_point': pinbot_point, 'current_vip': current_vip, 'highest_vip_level': highest_vip_level, 'unsign_vip': unsign_vip, 'rest_feed_count': rest_feed_count, 'has_pkg': has_pkg, 'coin_stat': coin_stat, 'withdraw_data': withdraw_data, 'is_partner': is_partner, }, )
def dispatch(self, request, *args, **kwargs): user = request.user if not user.is_superuser and PackageUtils.has_base_pkg(user): return redirect( self.redirect_url ) return super(VipUserRequiredMixin, self).dispatch(request, *args, **kwargs)
def renew(cls): today = get_today() expire_time = today + datetime.timedelta(days=15) user_vip_query = UserVip.objects.select_related('user', ).filter( is_active=True, vip_role__code_name='experience_user', expire_time__lt=expire_time, ) for user_vip in user_vip_query: user_vip.expire_time += relativedelta(months=3) user_vip.save() PackageUtils.update_uservip_package(user_vip) return user_vip_query.count()
def renew(cls): today = get_today() expire_time = today + datetime.timedelta(days=15) user_vip_query = UserVip.objects.select_related( 'user', ).filter( is_active=True, vip_role__code_name='experience_user', expire_time__lt=expire_time, ) for user_vip in user_vip_query: user_vip.expire_time += relativedelta( months=3 ) user_vip.save() PackageUtils.update_uservip_package(user_vip) return user_vip_query.count()
def main(): trans_time = datetime.datetime(2015, 9, 16) old_expire_time = trans_time + relativedelta(months=3) user_vip_query = UserVip.objects.select_related( 'user', 'vip_role', ).filter( is_active=True, ).exclude( vip_role__code_name='experience_user', ) for user_vip in user_vip_query: vip_role = user_vip.vip_role active_time = user_vip.active_time if active_time < trans_time: expire_time = old_expire_time else: expire_time = active_time + relativedelta(months=3) if active_time < trans_time and vip_role.code_name == 'self_a': price = 1 elif active_time < trans_time and vip_role.code_name == 'self_b': price = 10 else: price = vip_role.price user_vip.expire_time = expire_time user_vip.total_price = price user_vip.save() PackageUtils.update_uservip_package(user_vip) print 'trans user {0} vip type {1} success'.format( user_vip.user.username, vip_role.vip_name, )
def update_vip_pkg(self, user_vip, admin=False): vip_role = user_vip.vip_role user = user_vip.user vip_feed_pkg = PackageUtils.get_vip_feed_pkg(user) if user_vip.vip_role.auto_active or admin: feed_count = vip_role.feed_count if not user_vip.custom_feed else user_vip.custom_feed add_count = feed_count - vip_feed_pkg.extra_feed_num if add_count > 0: vip_feed_pkg.rest_feed += add_count vip_feed_pkg.extra_feed_num += add_count vip_feed_pkg.pay_status = 'finished' vip_feed_pkg.feed_end_time = user_vip.expire_time vip_feed_pkg.save() return vip_feed_pkg
def dispatch(self, request, *args, **kwargs): user = request.user if not user.is_superuser and PackageUtils.has_base_pkg(user): return redirect(self.redirect_url) return super(VipUserRequiredMixin, self).dispatch(request, *args, **kwargs)
def add_card_pkg(): company_list = [ 520, 519, 518, 517, 512, 515, 514, 513, 511, 510, 509, 505, 503, 219, 502, 501, 390, 499, 498, 496, 45, 343, 495, 483, 494, 363, 258, 270, 493, 492, 400, 490, 115, 489, 488, 312, 47, 487, 486, 485, 484, 482, 481, 480, 479, 95, 5, 478, 427, 26, 307, 96, 67, 477, 476, 475, 474, 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, 429, 167, 428, 426, 342, 424, 423, 422, 421, 419, 418, 417, 416, 403, 415, 414, 413, 412, 411, 410, 409, 408, 407, 406, 405, 404, 340, 402, 401, 399, 398, 397, 396, 395, 394, 393, 392, 391, 389, 388, 387, 386, 385, 384, 383, 382, 381, 380, 379, 378, 377, 267, 287, 289, 376, 375, 374, 373, 372, 371, 370, 369, 367, 366, 365, 364, 362, 361, 360, 359, 358, 357, 356, 354, 355, 352, 351, 350, 349, 348, 347, 346, 345, 344, 341, 339, 338, 141, 337, 336, 335, 334, 333, 332, 331, 330, 329, 328, 327, 326, 322, 325, 324, 323, 321, 320, 319, 264, 318, 317, 316, 315, 314, 313, 310, 309, 308, 306, 305, 304, 303, 302, 301, 300, 299, 298, 297, 296, 295, 294, 293, 57, 292, 291, 290, 288, 286, 285, 284, 283, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 272, 66, 271, 269, 268, 266, 265, 253, 263, 262, 261, 260, 87, 259, 257, 256, 255, 254, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 241, 242, 240, 239, 238, 237, 236, 68, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, 223, 222, 221, 220, 218, 217, 192, 216, 140, 215, 214, 213, 212, 211, 210, 209, 208, 207, 206, 1, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 139, 177, 176, 175, 174, 173, 171, 107, 170, 169, 168, 166, 164, 163, 162, 161, 160, 159, 7, 158, 157, 156, 155, 153, 13, 152, 151, 150, 149, 148, 147, 146, 145, 144, 143, 142, 138, 137, 136, 135, 134, 133, 132, 131, 128, 130, 129, 127, 126, 125, 105, 124, 123, 122, 121, 120, 119, 118, 117, 116, 114, 113, 112, 111, 110, 109, 108, 106, 91, 104, 103, 102, 101, 100, 99, 98, 97, 94, 2, 93, 92, 90, 89, 88, 86, 85, 84, 83, 82, 81, 80, 14, 79, 78, 77, 75, 74, 73, 72, 71, 70, 69, 27, 65, 64, 63, 62, 59, 61, 60, 58, 56, 55, 54, 53, 52, 51, 50, 48, 49, 46, 44, 43, 42, 30, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 29, 28, 25, 23, 22, 21, 20, 19, 18, 17, 16, 15, 11, 12, 10, 9, 8, 6, 4, 3, ] for company_id in company_list: company = get_object_or_none( Company, id=company_id, ) if not company: print 'company id %s not found in pinbot' % company_id continue user = company.user with transaction.atomic(): point_utils.add_card_point(user) PackageUtils.add_feed(user, FEED_SERVICE_NAME) print 'company id %s add company card package success' % company_id
def active_service(self): self.renew_user_vip() PackageUtils.update_uservip_package(self.user_vip) return self.service