def promote(request, group_id, user_id): group = Group.objects.get(pk=group_id) user = User.objects.get(pk=user_id) if request.user == group.owner: if user == group.owner: alert = Alert(user=request.user, text="You cannot alter the owner's permissions", color=Alert.getYellow()) alert.saveIP(request) return redirect('/groups/' + str(group_id)) if user in group.pendingUsers.all(): group.pendingUsers.remove(user) group.volunteers.add(user) alert = Alert(user=request.user, text=user.username + " is now a volunteer", color=Alert.getYellow()) alert.saveIP(request) return redirect('/groups/' + str(group_id)) if user in group.volunteers.all(): group.volunteers.remove(user) group.organizers.add(user) alert = Alert(user=request.user, text=user.username + " is now an organizer", color=Alert.getYellow()) alert.saveIP(request) return redirect('/groups/' + str(group_id)) return redirect('/groups/' + str(group_id)) else: return render(request, 'not_authorized.html')
def edit_profile(request): profile = request.user.profile if request.POST: form = EditProfileForm(request.POST, profile=profile) form2 = EditUserForm(request.POST, instance=request.user) if form.is_valid() and form2.is_valid(): data = form.save(commit=False) profile.bio = data['bio'] profile.slotName = data['slotName'] profile.eventName = data['eventName'] profile.save() form2.save() alert = Alert(user=request.user, text="Profile updated", color=Alert.getYellow()) alert.saveIP(request) return redirect('/accounts/profile/') form = EditProfileForm( initial={ 'bio': profile.bio, 'slotName': profile.slotName, 'eventName': profile.eventName }) form2 = EditUserForm(instance=request.user) return render(request, 'accounts/edit_profile.html', { "form": form, 'profile': profile, "form2": form2 })
def edit_password(request): user = request.user form = PasswordChangeForm(user=request.user, data=request.POST) if request.POST: if form.is_valid(): form.save() update_session_auth_hash(request, user) alert = Alert(user=request.user, text="Password updated", color=Alert.getYellow()) alert.saveIP(request) return redirect('/accounts/profile') return render(request, 'accounts/edit_password.html', {"form": form})
def signin(request, user_slot_id): next = request.GET.get('next') user_slot = User_Slot.objects.get(id=user_slot_id) group = user_slot.parentSlot.get_group() if (user_slot.volunteer != None and group.get_is_organzer(request.user)): user_slot.signin = get_dt() user_slot.save() alert = Alert(user=request.user, text="Signed in " + user_slot.volunteer.username, color=Alert.getYellow()) alert.saveIP(request) return redirect(next)
def signup(request): # Checks if the user is sending their data (POST) or getting the form (GET) if (request.method == 'POST'): form = SignupForm(request.POST) # Makes sure the user filled out the form correctly as dictated by forms.py if form.is_valid(): user = form.save(commit=False) # Sets the user to deactive until they confirm email user.is_active = False # Saves the user to the server user.save() # Gets the current domain in order to send the email current_site = get_current_site(request) # Sends the user an email based on the email template and the info passed in here message = render_to_string( 'emails/activate_account.html', { 'user': user, 'domain': current_site.domain, 'uid': urlsafe_base64_encode(force_bytes(user.pk)), 'token': account_activation_token.make_token(user), }) mail_subject = 'Activate your Sapphire Account!' to_email = form.cleaned_data.get('email') email = EmailMultiAlternatives(mail_subject, message, to=[to_email]) email.content_subtype = 'html' email.mixed_subtype = 'related' fp = open('static/img/logos.ico/ms-icon-70x70.png', 'rb') logo = MIMEImage(fp.read()) logo.add_header('Content-ID', '<logo>') email.attach(logo) email.send() alert = Alert( user=user, text= "Click on the link sent to your email to confirm your account", color=Alert.getYellow()) alert.saveIP(request) return redirect('/login') #return render(request, 'accounts/please_confirm.html') else: form = SignupForm() return render(request, 'accounts/signup.html', {'form': form})
def signout(request, user_slot_id): next = request.GET.get('next') user_slot = User_Slot.objects.get(id=user_slot_id) if (user_slot.parentSlot.parentEvent != None): group = user_slot.parentSlot.parentEvent.parentGroup else: group = user_slot.parentSlot.parentGroup if (user_slot.volunteer != None and group.get_is_organzer(request.user)): user_slot.signout = get_dt() user_slot.save() user_slot.updateDeltaTimes() alert = Alert(user=request.user, text="Signed out " + user_slot.volunteer.username, color=Alert.getYellow()) alert.saveIP(request) return redirect(next)
def signup_foruser(request, group_id, user_slot_id): # Checks if the user is sending their data (POST) or getting the form (GET) if (request.method == 'POST'): form = SignupForm(request.POST) # Makes sure the user filled out the form correctly as dictated by forms.py if form.is_valid(): user = form.save(commit=False) # Sets the user to deactive until they confirm email user.is_active = False # Saves the user to the server user.save() # Gets the current domain in order to send the email current_site = get_current_site(request) # Sends the user an email based on the email template and the info passed in here message = render_to_string( 'emails/activate_account.html', { 'user': user, 'domain': current_site.domain, 'uid': urlsafe_base64_encode(force_bytes(user.pk)), 'token': account_activation_token.make_token(user), }) mail_subject = 'Activate your Sapphire account (named by Armaan Goel).' to_email = form.cleaned_data.get('email') email = EmailMessage(mail_subject, message, to=[to_email]) email.send() alert = Alert( user=user, text= "Click on the link sent to your email to confirm your account", color=Alert.getYellow()) alert.saveIP(request) return redirect('/login') #return render(request, 'accounts/please_confirm.html') else: form = SignupForm() return render(request, 'accounts/signup.html', {'form': form})