def test_subscribing_not_loggedin_not_registered(self): ''' tests the creation of a subcription if the user is not registered checks if the anoynomous user creation along with a subscription to this event ''' user = User(**self.user) event = Event(author=user,**self.event) user.save() event.save() ev = Event.objects.filter(title=self.event['title']) response = self.client.post( '/events/'+str(ev[0].id), data={ 'username': '******', 'email': '*****@*****.**', 'comment': 'some absurd comment' }) users = User.objects.filter(username='******',email='*****@*****.**') self.assertEqual(len(users),1) subs = Subscription.objects.all() self.assertEqual(len(subs),1) self.assertEqual(subs[0].subscriber, users[0]) self.assertEqual(subs[0].event.author, user) self.assertTrue(response.url,'/events/'+str(ev[0].id))
def login_google_callback(request): url = "https://www.googleapis.com/oauth2/v3/token?code=" url += request.GET.get("code") url += "&client_id=" url += settings.GA_CLIENT_ID url += "&client_secret=" url += settings.GA_CLIENT_SECRET url += "&redirect_uri=" url += request.build_absolute_uri(reverse("login_google_callback")) url += "&grant_type=authorization_code" r = requests.post(url) jwt = verify_id_token(r.json().get("id_token"), settings.GA_CLIENT_ID) email = jwt.get("email").lower() try: user = User.objects.get(email=email) except User.DoesNotExist: user = User(email=email) user.save() user.backend = "django.contrib.auth.backends.ModelBackend" try: connection = UserConnection.objects.get(token=request.GET.get("state"), user__isnull=True) except UserConnection.DoesNotExist: return redirect("home") manual_login(request, user) connection.user = user connection.save() if connection.referrer_path: return redirect(connection.referrer_path) return redirect("home")
def invite_post(request): if not request.user.can_invite: return render(request, "errors/403.html", status=403) email = request.POST.get("email") try: user = User.objects.get(email=email) if user.account: return HttpResponseRedirect(reverse("accounts_invite") + "?success=0") user.account = request.user.account except User.DoesNotExist: user = User(email=email, account=request.user.account) if request.POST.get("send") == "yes": subject = "Welcome to a colorful world!" body = transform( loader.render_to_string( "emails/invite.html", dict(user=user, me=request.user, message=request.POST.get("message")) ) ) email_message = EmailMultiAlternatives(subject, body, "Master Yoda <*****@*****.**>", [user.email]) html_email = transform( loader.render_to_string( "emails/invite.html", dict(user=user, me=request.user, message=request.POST.get("message")) ) ) email_message.attach_alternative(html_email, "text/html") email_message.send() user.save() return HttpResponseRedirect(reverse("accounts_invite") + "?success=1")
def login_google_callback(request): url = 'https://www.googleapis.com/oauth2/v3/token?code=' url += request.GET.get('code') url += '&client_id=' url += settings.GA_CLIENT_ID url += '&client_secret=' url += settings.GA_CLIENT_SECRET url += '&redirect_uri=' url += request.build_absolute_uri(reverse('login_google_callback')) url += '&grant_type=authorization_code' r = requests.post(url) jwt = verify_id_token(r.json().get('id_token'), settings.GA_CLIENT_ID) email = jwt.get('email').lower() try: user = User.objects.get(email=email) except User.DoesNotExist: user = User(email=email) user.save() user.backend = 'django.contrib.auth.backends.ModelBackend' try: connection = UserConnection.objects.get(token=request.GET.get('state'), user__isnull=True) except UserConnection.DoesNotExist: return redirect('home') manual_login(request, user) connection.user = user connection.save() if connection.referrer_path: return redirect(connection.referrer_path) return redirect('home')
def invite_post(request): if not request.user.can_invite: return render(request, 'errors/403.html', status=403) email = request.POST.get('email') try: user = User.objects.get(email=email) if user.account: return HttpResponseRedirect( reverse('accounts_invite') + '?success=0') user.account = request.user.account except User.DoesNotExist: user = User(email=email, account=request.user.account) if request.POST.get('send') == 'yes': subject = 'Welcome to a colorful world!' body = transform( loader.render_to_string( 'emails/invite.html', dict(user=user, me=request.user, message=request.POST.get('message')))) email_message = EmailMultiAlternatives( subject, body, 'Master Yoda <*****@*****.**>', [user.email]) html_email = transform( loader.render_to_string( 'emails/invite.html', dict(user=user, me=request.user, message=request.POST.get('message')))) email_message.attach_alternative(html_email, 'text/html') email_message.send() user.save() return HttpResponseRedirect(reverse('accounts_invite') + '?success=1')
def test_event_form(self): response = self.client.get('/events/create') html = response.content.decode('utf-8') user = User(**self.user) event = Event(author=user, **self.event) form = EventForm(instance=event)
def test_valid_password(self): self.assertEquals(True, User.is_valid_password('asdASD123!@#')) self.assertEquals(False, User.is_valid_password('aA1#')) self.assertEquals(False, User.is_valid_password('aaaaaaaaaaa')) self.assertEquals(False, User.is_valid_password('AAAAAAAAAAA')) self.assertEquals(False, User.is_valid_password('11111111111')) self.assertEquals(False, User.is_valid_password('!!!!!!!!!!!')) self.assertEquals(False, User.is_valid_password('asdASD123!@# '))
def setUp(self): self.uniq_valid_user = User(username="******", email="*****@*****.**", password="******") self.dup_valid_username = User(username="******", email="*****@*****.**", password="******") self.dup_valid_email = User(username="******", email="*****@*****.**", password="******") self.dup_invalid_password = User( username="******", email="*****@*****.**", password="******" ## below minimum size )
def UserEditView(request, userid=None): form = None user = None passForm = None rolesForm = None if userid == None: user = request.user elif has_permission(request.user, p.EDIT_USERS) or request.user.id == userid: try: user = User.objects.get(id=userid) except ObjectDoesNotExist as e: raise Http404("User Does Not Exist") else: raise PermissionDenied( "You do not have permission to edit/view this user") if has_permission(request.user, p.EDIT_USERS): roles = [] for x in get_user_roles(user): roles.append(x.display_name) rolesForm = RolesForm({'roles': roles}) form = UserForm(user=request.user, instance=user) passForm = PasswordChangeForm(user) if request.method == "POST": if 'user-submit' in request.POST: form = UserForm(user=request.user, data=request.POST or None, files=request.FILES or None, instance=user) if form.is_valid(): form.save() if 'password-change' in request.POST: passForm = PasswordChangeForm(user, request.POST or None) if passForm.is_valid(): passForm.save() update_session_auth_hash(request, user) if 'change-role' in request.POST: rolesForm = RolesForm(request.POST or None) if rolesForm.is_valid(): User().change_user_role(user, rolesForm.cleaned_data['roles']) return render( request, "dashboard/edit-user.html", { 'form': form, 'user_context': user, 'passform': passForm, 'rolesForm': rolesForm })
def handle(self, **options): from apps.accounts.models import User from faker import Faker print("Create superuser") data = { 'email': '*****@*****.**', 'first_name': 'Truong', 'last_name': 'Tran' } superuser = User(**data) superuser.set_password('truong77') superuser.is_active = True superuser.is_superuser = True superuser.save()
def test_subscribing_not_loggedin_registered(self): ''' tests the creation of a subcription if the user is registered and doesn't have a subscription on this event ''' user = User(**self.user) event = Event(author=user,**self.event) user.save() event.save() ev = Event.objects.filter(title=self.event['title']) response = self.client.post( '/events/'+str(ev[0].id), data={ 'username': self.user['username'], 'email': self.user['email'], 'comment': 'some absurd comment' }) sub = Subscription.objects.all() self.assertEqual(len(sub),1) self.assertTrue(response.url,'/events/'+str(ev[0].id))
def create(self, validate_data): profile_data = validate_data.pop("profile") raw_password = validate_data.pop("password") user = User(**validate_data) user.set_password(raw_password) user.save() UserProfile.objects.create(**profile_data, user=user) return user
def register_new_user(cls, user_data, is_active=False): """Creates an user instance.""" plain_password = user_data.pop('password') if 'username' not in user_data and 'email' in user_data: user_data['username'] = user_data['email'] user = User(**user_data) user.is_active = is_active user.set_password(plain_password) user.save() return user
def get(self, request, username): data = validate_data(GetUserDataSerializer, data={"username": username}) username = data.get("username") user = request.user if user.username == username: target_user = user else: target_user = User.get_with_username(username=username) user_serializer = UserInfoSerializer(target_user, context={"request": request}) return Response(user_serializer.data, status=status.HTTP_200_OK)
def is_Authorization(self, request): """ Validate is a valid token """ auth_header = request.headers.get('Authorization') if auth_header: auth_token = auth_header.split(" ")[0] else: auth_token = '' if auth_token: resp = User.decode_auth_token(auth_token) if not isinstance(resp, str): return True return False else: return False
def handle(self, **options): from apps.accounts.models import User, Staff from faker import Faker fake = Faker() print("Create staffs") num = Staff.objects.count() for i in range(num, num + 3): data = { 'email': 'staff' + str(i) + '@gmail.com', 'first_name': fake.first_name(), 'last_name': fake.last_name() } staff = User(**data) staff.set_password('truong77') staff.is_staff = True staff.save() Staff.objects.create(user=staff)
def user_add(): form = AddUserForm() if request.method == "POST" and form.validate_on_submit(): try: for field in ['name', 'cname', 'phone_number', 'email']: form = form.verify_field(form, field) if form.errors: return render_template('accounts/user_add.html', form=form) data = form.data data.pop('csrf_token') data.pop('password2') new_user = User(**data) db.session.add(new_user) db.session.commit() return redirect(url_for("users_blueprint.user_list")) except Exception as E: db.session.rollback() return {"messages": "内部错误,请联系管理员!"} return render_template('accounts/user_add.html', form=form)
def load_data_user(): print("Start import data into user table....") users_df = pd.read_csv(os.path.join(workpath, "data/users.csv"), low_memory=False) bulk_mgr = BulkCreateManager(chunk_size=10) for user in users_df.itertuples(): bulk_mgr.add( User( username=user.username, password=user.password, email=user.email, birthday=datetime.strptime(user.birthday, "%Y/%m/%d").strftime("%Y-%m-%d"), gender=user.gender, occupation=user.occupation, )) bulk_mgr.done() print("Finished import date user table.")
def confirm(request): cart = request.cart form = AddOrderForm(request.POST) if form.is_valid(): cart.status = Cart.CLOSED cart.save() obj = form.save(commit=False) obj.cart = cart if request.user.is_authenticated(): obj.user = request.user else: first_name = form.cleaned_data['first_name'] last_name = form.cleaned_data['last_name'] email = form.cleaned_data['email'] user = User.create_user_order(first_name, last_name, email) cart.user = user cart.save() obj.save() return render(request, 'confirm.html') else: return render(request, 'order.html', {'form': form})
def handle(self, **options): from apps.accounts.models import User, Trainer print("Create trainers") data1 = { 'email': '*****@*****.**', 'first_name': 'Phượng', 'last_name': 'Nguyễn', 'image': '/seeds/images/trainers/chi_phuong.jpg' } user1 = User(**data1) user1.set_password('truong77') user1.is_trainer = True user1.save() trainer1 = Trainer.objects.create(user=user1) trainer1.introduction = '''Phấn đấu là một huấn luyện viên được mọi người săn đón. Tôi không ngừng học hỏi, trau dồi kiến thức dinh dưỡng, tập luyện để áp dụng cho bản thân qua đó truyền cảm hứng, động lực cho học viên có một lối sống tích cực, khoa học, thói quen tập luyện đều đặn và đạt được kết quả sớm nhất trong việc tập luyện.''' trainer1.experience = '''<ul><li>8 năm luyện tập Yoga.</li><li>5 năm giảng dạy Yoga ở nhiều trung tâm khác nhau.</li></ul>''' trainer1.achievements = '''<p>Tham gia các cuộc thi Yoga ở thành phố Hồ Chí Minh và đạt được nhiều thành tích.</p><p>Đạt <strong>Giải nhất </strong>Yoga đơn/đôi năm 2015</p><p><img alt="" src="/media/seeds/achievements/chi_phuong_anh_tan.jpg" /></p>''' trainer1.save() user1.certificates.create( name='Chứng nhận hoàn thành khóa đào tạo Hướng dẫn viên cơ bản Yoga', image='/seeds/images/trainers/chi-phuong/chung-nhan-da-hoan-thanh-khoa-dao-tao-huong-dan-vien-yoga.jpg') user1.certificates.create( name='Chứng nhận Giải Nhất Festival Yoga Hồ Chí Minh mở rộng lần 1 năm 2017', image='/seeds/images/trainers/chi-phuong/festival-yoga-thanh-pho-hcm.jpg') user1.certificates.create( name='Chứng nhận Giải Nhất Festival Yoga Hồ Chí Minh mở rộng lần 2 năm 2018', image='/seeds/images/trainers/chi-phuong/giai-nhat-yoga-mo-rong-lan2-nam-2018.jpg')
def sync_user_relations(user: User, attrs: dict): dn = attrs.get('distinguishedName')[0] user.is_active = True user.save(update_fields=['is_active']) dn_parts = dn.lower().split(',') if 'ou=zaci' in dn_parts: class_ = dn.split(',')[1].split('=')[1].replace(' ', '') user.school_class = class_ user.groups.add(_group_cache['student']) user.save(update_fields=['school_class']) elif 'ou=ucitele' in dn_parts: user.groups.add(_group_cache['teacher']) elif 'ou=zaci-zakazani' in dn_parts: pass # RIP else: logger.info("Not group assigned for user: %s.", dn_parts)
def get_current_user(self): email = self.get_secure_cookie('user') if email is None: return None return User.objects(email=email).first()
def getTableDataForUsers(enabled_columns=None, search=None, sort_by=None, sort_order=None, start=-1, end=-1): t = TableData() users = User.filter_user_data(search=search, sort_by=sort_by, sort_order=sort_order, start=start, end=end) if search != None: t.addMetaField("search", search) if sort_by != None: t.addMetaField("sorted_by", sort_by) t.addMetaField("sort_order", sort_order) if enabled_columns == None: t.addField("avatar", "...", "w-1") t.addField("first_name", "First Name") t.addField("last_name", "Last Name") t.addField("email", "Email") else: for col in enabled_columns: field = User._meta.get_field(col) if field.name == "avatar": label = "..." else: label = field.verbose_name t.addField(field.name, label) ignored_fields = ['password', 'groups', 'user_permissions', 'is_superuser'] non_sortable_fields = ignored_fields + ['avatar'] for field in User._meta.get_fields(): if type(field) != ManyToOneRel: if field.name not in ignored_fields: t.addAvailableField(field.name, field.verbose_name) if field.name not in non_sortable_fields: t.addSortableField(field.name, field.verbose_name) counter = 0 for user in users: t.addRow(user.id) if enabled_columns == None: t.addCellToRow(counter, "avatar", "", "", {"url": user.avatar.url if user.avatar else ""}) t.addCellToRow(counter, 'text', user.first_name) t.addCellToRow(counter, 'text', user.last_name) t.addCellToRow(counter, "text-secondary", user.email) else: for col in enabled_columns: field = User._meta.get_field(col) param = {} cell_type = "" text = "" subtext = "" if field.name == "avatar": param = {"url": user.avatar.url if user.avatar else ""} cell_type = "avatar" else: text = getattr(user, field.name) cell_type = "text" t.addCellToRow(counter, cell_type, text, subtext, param) t.addActionButtonToRow(counter, reverse('dashboard:edit-user', args=[user.id]), "Edit", "btn-secondary") if user.is_active: t.addActionButtonToRow( counter, reverse('dashboard:suspend-user', args=[user.id]), "Suspend", "btn-danger") else: t.addActionButtonToRow( counter, reverse('dashboard:enable-user', args=[user.id]), "Enable", "btn-primary") counter += 1 return t.getObject()
def email_not_taken_validator(email): if User.is_email_taken(email): raise ValidationError("An account for the email already exists.")
def setUp(self): super().setUp() self.my_user = User(username=UserFormTestData.my_user["username"], email=UserFormTestData.my_user["email"], password=UserFormTestData.my_user["password"]) translation.activate('pt') # class language activation
def setUp(self): super().setUp() self.my_user = User(username=UserFormTestData.my_user["username"], email=UserFormTestData.my_user["email"], password=UserFormTestData.my_user["password"])
def set_pasword(cls, user: User, plain_password: str) -> None: """Configures a user password.""" user.set_password(plain_password) user.save()
def username_not_taken_validator(username): if User.is_username_taken(username): raise ValidationError("The username is already taken.")
def create(self, validated_data): if validated_data.get('is_seller') == True: print(validated_data) profile_data = validated_data.pop('vendor') password = validated_data.pop('password') image = validated_data.pop('image') email = validated_data.pop('email') username = validated_data.pop('username') first_name = validated_data.pop('first_name') last_name = validated_data.pop('last_name') is_seller = validated_data.pop('is_seller') address_line_1 = validated_data.pop('address_line_1') address_line_2 = validated_data.pop('address_line_2') phone = validated_data.pop('phone') user = User(email=email, username=username, image=image, first_name=first_name, last_name=last_name, is_seller=is_seller, address_line_1=address_line_1, address_line_2=address_line_2, phone=phone) user.set_password(password) user.save() Vendor.objects.create(user=user, **profile_data) return user else: profile_data = validated_data.pop('customer') password = validated_data.pop('password') email = validated_data.pop('email') username = validated_data.pop('username') is_seller = validated_data.pop('is_seller') address_line_1 = validated_data.pop('address_line_1') address_line_2 = validated_data.pop('address_line_2') phone = validated_data.pop('phone') user = User(email=email, username=username, address_line_1=address_line_1, address_line_2=address_line_2, phone=phone, is_seller=is_seller) user.set_password(password) user.save() Customer.objects.create(user=user, **profile_data) return user
def setUp(self): # setup User (seller) cu = User(first_name='bb', last_name='bb', email='*****@*****.**', demand_safety_factor=100, excess_production_safety_factor=100) cu.save() # setup user (buyer) bu1 = User( first_name='buyer1b', last_name='buyer1b', email='*****@*****.**', demand_safety_factor=100, excess_production_safety_factor=100, ) bu1.save() # date range of interest, latest 12 months w/ no credit transfers eom_date_range = pd.date_range( # makes it at end of month for some reason start='2020-01-01', end='2020-12-01', freq='M') # date before date range of interest b1 = Bill(user=cu, date_end=pd.to_datetime('2019-12-31'), total_cost=50, excess_production_cost=15) b1.save() for date_entry in eom_date_range: # seller bills w/ just excess production b1 = Bill(user=cu, date_end=date_entry, total_cost=100, excess_production_cost=30) b1.save() # dates after range of interest, will contain credit transfers eom_date_range2 = pd.date_range( # makes it at end of month for some reason start='2021-01-01', end='2021-12-01', freq='M') for date_entry in eom_date_range2: # seller bill's w/ credit transfers seller_bill = Bill(user=cu, date_end=date_entry, total_cost=110, excess_production_cost=20, total_transferred_credit=10) seller_bill.save() # buyer1 bill w/ credit transfer buyer1_bill = Bill( user=bu1, date_end=date_entry, total_cost=40, ) buyer1_bill.save() # buyer1 credit transfer c1 = CreditTransfer(seller_bill=seller_bill, buyer_bill=buyer1_bill, transferred_credit=5) c1.save()
def user_username_exists(username): if not User.user_with_username_exists(username=username): raise NotFound("No user with the provided username exists.")
def handle(self, **options): from getenv import env from apps.blog.models import PostCategory, Post from apps.classes.models import YogaClass, PaymentPeriod from apps.courses.models import Course, TRAINING_COURSE from apps.accounts.models import User, Trainer from apps.rooms.models import Room # new class in the future data_hoang_anh = { 'email': '*****@*****.**', 'first_name': 'Anh', 'last_name': 'Hoàng', 'image': '/seeds/images/trainers/thay_hoang_anh.jpg' } user_hoang_anh = User(**data_hoang_anh) user_hoang_anh.set_password('truong77') user_hoang_anh.is_trainer = True user_hoang_anh.save() thay_hoang_anh = Trainer.objects.create(user=user_hoang_anh) thay_hoang_anh.introduction = '''Phấn đấu là một huấn luyện viên được mọi người săn đón. Tôi không ngừng học hỏi, trau dồi kiến thức dinh dưỡng, tập luyện để áp dụng cho bản thân qua đó truyền cảm hứng, động lực cho học viên có một lối sống tích cực, khoa học, thói quen tập luyện đều đặn và đạt được kết quả sớm nhất trong việc tập luyện.''' thay_hoang_anh.experience = '''<ul><li>10 năm luyện tập Yoga.</li><li>8 năm giảng dạy Yoga ở nhiều trung tâm khác nhau.</li></ul>''' thay_hoang_anh.achievements = '''<p>Tham gia các cuộc thi Yoga ở thành phố Hồ Chí Minh và đạt được nhiều thành tích.</p><p>Đạt <strong>Giải nhất </strong>Yoga đơn/đôi năm 2015</p><p><img alt="" src="/media/seeds/achievements/all.jpg" /></p>''' thay_hoang_anh.save() thay_hoang_anh.user.certificates.create( name='Chứng chỉ trị liệu Yoga cấp bởi Indian Board of Alternative Medicines') thay_hoang_anh.user.certificates.create( name='Chứng nhận đã hoàn thành khóa đào tạo Huấn luyện viên Yoga của CLB Yoga Hương Tre') thay_hoang_anh.user.certificates.create( name='Bằng thạc sĩ khoa học Yoga của Đại Học Haridwar, Ấn Độ năm 2012') thay_hoang_anh.user.certificates.create( name='Huy chương vàng cuộc thi Master Yoga Science & Holistic Health') print("Create <TRAINING YOGA TRAINER> COURSES") training_yoga_trainer_course_data = { 'name': 'Đào tạo huấn luyện viên', 'description': '''Yoga Hương Tre mang đến những kiến thức từ cơ bản đến nâng cao, từ đạo đức, triết lý nghề nghiệp. Đạo tạo ra một người giáo viên Yoga chân chính, tâm huyết với nghề. Chứ không phải chỉ là một người huấn luyện viên chỉ biết đưa các bài học động tác cho học''', 'content': '''<p>⭐️ Đội ngũ Giáo viên đào tạo nhiều năm kinh nghiệm.</p> <p>⭐️ Giáo trình bài bản khoa học, đảm bảo kỹ năng đứng lớp, chất lượng giảng dạy ưu tiên hàng đầu.</p> <p>⭐️ Được nhận <strong>GIẤY CHỨNG NHẬN</strong> sau khi hoàn thành khóa học từ Trung Tâm Yoga Hương Tre.</p> <p>⭐️ Học viên sau khi tốt nghiệp được giới thiệu việc làm hoặc được giảng dạy tại Trung Tâm Yoga Hương Tre.</p> <p>⭐️ Hỗ trợ về kỹ thuật, định hướng, thương hiệu, xây dựng phòng tập yoga nếu mở trung tâm riêng.</p> <p>⭐️ Hỗ trợ học viên đủ điều kiện tham gia học, nhận chứng chỉ Liên Đoàn Yoga Việt Nam.</p> <p><img alt="💥" src="https://static.xx.fbcdn.net/images/emoji.php/v9/t99/1.5/16/1f4a5.png" style="height:16px; width:16px" /> Lựa chọn Nghề HLV YOGA bạn không chỉ bảo vệ cho chính sức khỏe của bản thân bạn mà còn cho chính những người thân và cộng đồng xung quanh bạn.</p> <p><img alt="💯" src="https://static.xx.fbcdn.net/images/emoji.php/v9/t4a/1.5/16/1f4af.png" style="height:16px; width:16px" /> KHÔNG NHỮNG MANG LẠI GIÁ TRỊ VỀ SỨC KHỎE, NGHỀ HLV YOGA CÒN GIÚP BẠN CÓ THU NHẬP CAO.</p> <p><img alt="‼" src="https://static.xx.fbcdn.net/images/emoji.php/v9/tfe/1.5/16/203c.png" style="height:16px; width:16px" /> Đây là việc hiếm hoi mà bạn vừa có thể kiếm tiền vừa có thể giúp người khác khỏe mạnh, sống tích cực hơn.</p> <p><img alt="‼" src="https://static.xx.fbcdn.net/images/emoji.php/v9/tfe/1.5/16/203c.png" style="height:16px; width:16px" /> Việc trở thành một giáo viên Yoga sẽ khiến bạn có thể làm việc ở khắp mọi nơi. Vì sau khi học xong bạn sẽ được Bằng Yoga có giá trị toàn quốc</p> <p>===================</p> <p>Giấy chứng nhận hoàn thành khóa học</p> <p><img alt="" src="/media/seeds/2020/07/03/hlv/giay-chung-nhan-hlv-2.jpg" style="height:526px; width:870px" /></p> <p>===================</p> <p><img alt="⚡" src="https://static.xx.fbcdn.net/images/emoji.php/v9/te4/1.5/16/26a1.png" style="height:16px; width:16px" /><img alt="⚡" src="https://static.xx.fbcdn.net/images/emoji.php/v9/te4/1.5/16/26a1.png" style="height:16px; width:16px" /><img alt="⚡" src="https://static.xx.fbcdn.net/images/emoji.php/v9/te4/1.5/16/26a1.png" style="height:16px; width:16px" /> NHANH TAY ĐĂNG KÝ NGAY KHÓA HỌC HUẤN LUYỆN VIÊN YOGA ĐỂ TRỞ THÀNH HUẤN LUYỆN VIÊN YOGA TRONG TƯƠNG LAI</p> <p>===================</p> <p>Khóa Đào tạo Huấn luyện viên Yoga là khóa học dành cho những ai muốn theo đuổi sự nghiệp giảng dạy Yoga chuyên nghiệp. </p> <p>Khóa học là một khởi đầu vững chắc cho bạn trên con đường tiếp theo trong sự nghiệp giảng dạy Yoga sau này.</p> <p>Nghề giáo viên Yoga cho bạn một sức khỏe, một tinh thần thoải mái. Biết lắng nghe, hiểu cơ thể mình đang muốn gì. Bạn sẽ luôn thấy một sức khỏe dồi dào, một cơ thể dẻo dai ở mỗi người huấn luyện viên Yoga. Người tập sẽ được hướng dẫn chi tiết, cẩn thận để từng động tác luôn chính xác. Cơ thể từ người tập đến người hướng dẫn đều được cải thiện.</p> <p>CLB Yoga Hương Tre mang đến những kiến thức từ cơ bản đến nâng cao, từ đạo đức, triết lý nghề nghiệp. Đạo tạo ra một người giáo viên Yoga chân chính, tâm huyết với nghề. Chứ không phải chỉ là một người huấn luyện viên chỉ biết đưa các bài học động tác cho học viên. Đã có rất nhiều học viên tìm đến nơi đây trên cả nước với mong muốn thay đổi bản thân, muốn có một nghề nghiệp mới và đã thành công.</p> <p>Vậy thì còn bạn, bạn đã thực sự sẵn sàng để trở thành một giáo viên Yoga hay chưa?</p> <p><img alt="" src="/media/seeds/2020/07/03/hlv/trung-tam-dao-tao-huan-luyen-vien-yoga-uy-tin-2.jpg" style="height:716px; width:960px" /></p> <h3>Một số hình ảnh về lớp huấn luyện viên Yoga</h3> <p><img alt="" src="/media/seeds/2020/07/03/hlv/phong-dao-tao-hlv.jpg" style="height:656px; width:875px" /></p> <p><img alt="" src="/media/seeds/2020/07/03/hlv/1.jpg" style="height:656px; width:875px" /></p> <h3>Trao chứng nhận hoàn thành khóa học</h3> <p><img alt="" src="/media/seeds/2020/07/03/hlv/le-trao-chung-nhan-2.jpg" style="height:720px; width:960px" /></p> <p><img alt="" src="/media/seeds/2020/07/03/hlv/le-trao-chung-nhan-4.jpg" style="height:720px; width:960px" /></p> <p><img alt="" src="/media/seeds/2020/07/03/hlv/trao-chung-nhan-1.jpg" style="height:686px; width:960px" /></p> ''', 'course_type': TRAINING_COURSE, 'image': 'seeds/images/courses/huan_luyen_vien_yoga.jpg', 'price_for_training_class': 20000000, 'wages_per_lesson': 500000 } training_yoga_trainer_course = Course( **training_yoga_trainer_course_data) training_yoga_trainer_course.save() room3_data = { "name": "Phòng 3", "location": "Lầu 3", "max_people": 15 } room3 = Room.objects.create(**room3_data) # TRAINING CLASS _today = timezone.now() _start_of_week = _today - timedelta(days=_today.weekday()) # Monday t_21h = '21:00' _saturday = (_start_of_week + timedelta(days=5)).date() training_class_thay_hoang_anh = training_yoga_trainer_course.classes.create( name='Lớp đào tạo thầy Hoàng Anh 18h tối thứ 7 - KDT2', price_for_training_class=20000000, start_at=_saturday + timedelta(days=14), end_at=_saturday + timedelta(days=14 + 28*3), trainer=thay_hoang_anh, ) t_18h = '18:00' for i in range(0, 12): count_date = 7 * i + 14 training_class_thay_hoang_anh.lessons.create(**{ "room_id": room3.pk, "date": _saturday + timedelta(days=count_date), "start_time": t_18h, "end_time": t_21h }) period1 = training_class_thay_hoang_anh.payment_periods.create(**{ 'name': 'Đợt thanh toán 1', 'amount': 12000000, 'end_at': datetime.combine(_saturday + timedelta(days=14), time.max, _today.tzinfo) }) period2 = training_class_thay_hoang_anh.payment_periods.create(**{ 'name': 'Đợt thanh toán 2', 'amount': 10000000, 'end_at': datetime.combine(_saturday + timedelta(days=(14 + 7*7)), time.max, _today.tzinfo) })