def test_profile_form_valid_zip(self): data = { 'gender': 'male', 'zip_code': 7030 } form = ProfileForm(data=data) self.assertTrue(form.is_valid())
def test_profile_form_invalid_zip(self): data = { 'gender': 'male', 'zip_code': 123 } form = ProfileForm(data=data) self.assertFalse(form.is_valid())
def edit_profile(request): context = _create_profile_context(request) context["active_tab"] = "edit" if request.method == "POST": user_profile_form = ProfileForm(request.POST, instance=request.user) context["user_profile_form"] = user_profile_form if not user_profile_form.is_valid(): messages.error(request, _("Noen av de påkrevde feltene mangler")) else: user_profile_form.save() messages.success(request, _("Brukerprofilen din ble endret")) return render(request, "profiles/index.html", context)
def settings(request): """Handles new interests, notifications, and event preferences""" interests = Interest.objects.filter(profile=request.user) # based on selected user only profile = Profile.objects.get(id=request.user.id) cities = UserCity.objects.filter(profile=request.user) if 'interest' in request.POST: interest_form = InterestForm(request.POST, prefix='interest') if interest_form.is_valid(): interest = interest_form.save(commit=False) interest.profile = request.user interest.save() return redirect("/settings") else: interest_form = InterestForm(prefix='interest') if 'notification' in request.POST: profile_form = ProfileForm(request.POST, prefix='notification', instance=request.user) if profile_form.is_valid(): profile = profile_form.save(commit=False) profile.save() return redirect("/settings") else: profile_form = ProfileForm(prefix='notification', instance=profile) if 'city' in request.POST: city_form = UserCityForm(request.POST, prefix='city') if city_form.is_valid(): city = city_form.save(commit=False) city.profile = request.user city.save() return redirect("/settings") else: city_form = UserCityForm(prefix='city') data = {'user': request.user, 'interests': interests, 'profile': profile, 'interest_form': interest_form, 'profile_form': profile_form, 'cities': cities, 'city_form': city_form } return render(request, 'settings.html', data)
def settings(request): """Handles new interests, notifications, and event preferences""" interests = Interest.objects.filter( profile=request.user) # based on selected user only profile = Profile.objects.get(id=request.user.id) cities = UserCity.objects.filter(profile=request.user) if 'interest' in request.POST: interest_form = InterestForm(request.POST, prefix='interest') if interest_form.is_valid(): interest = interest_form.save(commit=False) interest.profile = request.user interest.save() return redirect("/settings") else: interest_form = InterestForm(prefix='interest') if 'notification' in request.POST: profile_form = ProfileForm(request.POST, prefix='notification', instance=request.user) if profile_form.is_valid(): profile = profile_form.save(commit=False) profile.save() return redirect("/settings") else: profile_form = ProfileForm(prefix='notification', instance=profile) if 'city' in request.POST: city_form = UserCityForm(request.POST, prefix='city') if city_form.is_valid(): city = city_form.save(commit=False) city.profile = request.user city.save() return redirect("/settings") else: city_form = UserCityForm(prefix='city') data = { 'user': request.user, 'interests': interests, 'profile': profile, 'interest_form': interest_form, 'profile_form': profile_form, 'cities': cities, 'city_form': city_form } return render(request, 'settings.html', data)
def test_profile_form_invalid_zip(self): data = {"gender": "male", "zip_code": 123} form = ProfileForm(data=data) self.assertFalse(form.is_valid())
def test_profile_form_valid_zip(self): data = {"gender": "male", "zip_code": 7030} form = ProfileForm(data=data) self.assertTrue(form.is_valid())
def _create_profile_context(request): groups = Group.objects.all() Privacy.objects.get_or_create(user=request.user) # This is a hack """ To make sure a privacy exists when visiting /profiles/privacy/. Until now, it has been generated upon loading models.py, which is a bit hacky. The code is refactored to use Django signals, so whenever a user is created, a privacy-property is set up. """ if request.user.is_staff and not request.user.online_mail: create_online_mail_alias(request.user) context = { # edit "position_form": PositionForm(), "user_profile_form": ProfileForm(instance=request.user), # positions "groups": groups, # privacy "privacy_form": PrivacyForm(instance=request.user.privacy), # nibble information "transactions": PaymentTransaction.objects.filter(user=request.user), "orders": Order.objects.filter(order_line__user=request.user).order_by( "-order_line__datetime" ), # SSO / OAuth2 approved apps "connected_apps": AccessToken.objects.filter( user=request.user, expires__gte=timezone.now() ).order_by("expires"), # marks "mark_rule_set": MarkRuleSet.get_current_rule_set(), "mark_rules_accepted": request.user.mark_rules_accepted, "marks": [ # Tuple syntax ('title', list_of_marks, is_collapsed) (_("aktive prikker"), Mark.marks.active(request.user), False), (_("inaktive prikker"), Mark.marks.inactive(request.user), True), ], "suspensions": [ # Tuple syntax ('title', list_of_marks, is_collapsed) ( _("aktive suspensjoner"), Suspension.objects.filter(user=request.user, active=True), False, ), ( _("inaktive suspensjoner"), Suspension.objects.filter(user=request.user, active=False), True, ), ], # password "password_change_form": PasswordChangeForm(request.user), # email "new_email": NewEmailForm(), # approvals "field_of_study_application": FieldOfStudyApplicationForm(), "has_active_approvals": MembershipApproval.objects.filter( applicant=request.user, processed=False ).count() > 0, "approvals": [ # Tuple syntax ('title', list_of_approvals, is_collapsed) ( _("aktive søknader"), MembershipApproval.objects.filter( applicant=request.user, processed=False ), False, ), ( _("avslåtte søknader"), MembershipApproval.objects.filter( applicant=request.user, processed=True, approved=False ), True, ), ( _("godkjente søknader"), MembershipApproval.objects.filter( applicant=request.user, processed=True ), True, ), ], "payments": [ ( _("ubetalt"), PaymentDelay.objects.all().filter(user=request.user, active=True), False, ), ( _("betalt"), PaymentRelation.objects.all().filter(user=request.user), True, ), ], "internal_services_form": InternalServicesForm(), "in_comittee": has_access(request), "enable_dataporten_application": settings.DATAPORTEN.get("STUDY").get("ENABLED") or settings.DATAPORTEN.get("STUDY").get("TESTING"), } return context
def _create_profile_context(request): groups = Group.objects.all() Privacy.objects.get_or_create(user=request.user) # This is a hack """ To make sure a privacy exists when visiting /profiles/privacy/. Until now, it has been generated upon loading models.py, which is a bit hacky. The code is refactored to use Django signals, so whenever a user is created, a privacy-property is set up. """ if request.user.is_staff and not request.user.online_mail: create_online_mail_alias(request.user) context = { # edit 'position_form': PositionForm(), 'user_profile_form': ProfileForm(instance=request.user), # positions 'groups': groups, # privacy 'privacy_form': PrivacyForm(instance=request.user.privacy), # nibble information 'transactions': PaymentTransaction.objects.filter(user=request.user), 'orders': Order.objects.filter( order_line__user=request.user).order_by('-order_line__datetime'), # SSO / OAuth2 approved apps 'connected_apps': AccessToken.objects.filter( user=request.user, expires__gte=timezone.now()).order_by('expires'), # marks 'mark_rules_accepted': request.user.mark_rules, 'marks': [ # Tuple syntax ('title', list_of_marks, is_collapsed) (_('aktive prikker'), Mark.marks.active(request.user), False), (_('inaktive prikker'), Mark.marks.inactive(request.user), True), ], 'suspensions': [ # Tuple syntax ('title', list_of_marks, is_collapsed) (_('aktive suspensjoner'), Suspension.objects.filter(user=request.user, active=True), False), (_('inaktive suspensjoner'), Suspension.objects.filter(user=request.user, active=False), True), ], # password 'password_change_form': PasswordChangeForm(request.user), # email 'new_email': NewEmailForm(), # approvals 'field_of_study_application': FieldOfStudyApplicationForm(), 'has_active_approvals': MembershipApproval.objects.filter(applicant=request.user, processed=False).count() > 0, 'approvals': [ # Tuple syntax ('title', list_of_approvals, is_collapsed) (_("aktive søknader"), MembershipApproval.objects.filter(applicant=request.user, processed=False), False), (_("avslåtte søknader"), MembershipApproval.objects.filter(applicant=request.user, processed=True, approved=False), True), (_("godkjente søknader"), MembershipApproval.objects.filter(applicant=request.user, processed=True), True), ], 'payments': [ (_('ubetalt'), PaymentDelay.objects.all().filter(user=request.user, active=True), False), (_('betalt'), PaymentRelation.objects.all().filter(user=request.user), True), ], 'internal_services_form': InternalServicesForm(), 'in_comittee': has_access(request) } return context