def order(request): # TODO Needs docstring template_var = base_template_vals(request) template_var["tags"] = Tag.objects.all() if request.method == "POST": order = Order() order.client_name = request.POST["client_name"] order.client_phone = request.POST["client_phone"] order.client_email = request.POST["client_email"] order.client_org = request.POST["client_org"] order.client_is_sponsored = request.POST["client_is_sponsored"] order.project_name = request.POST["project_name"] #order.project_deadline = request.POST["project_deadline"] order.event_location = request.POST["event_location"] #order.event_time = request.POST["event_time"] order.design_text = request.POST["design_text"] order.design_concept = request.POST["design_concept"] event_date = request.POST["event_date"] event_time = request.POST["event_time"] event_datetime = event_date + ' ' + event_time order.event_time = datetime.strptime(event_datetime, '%m/%d/%Y %H:%M') order.project_deadline = datetime.strptime(request.POST["project_deadline"], '%m/%d/%Y') project_types = request.POST.getlist("project_type") for project_type in project_types: if(project_type == "type_poster"): order.is_poster = True elif(project_type == "type_flyer"): order.is_flyer = True elif(project_type == "type_handbill"): order.is_handbill = True elif(project_type == "type_businesscard"): order.is_businesscard = True elif(project_type == "type_invitation"): order.is_invitation = True elif(project_type == "type_logo"): order.is_logo = True elif(project_type == "type_banner"): order.is_banner = True elif(project_type == "type_other"): order.is_other = True elif(project_type == "project_other"): order.project_other = True order.is_approved = False; order.save() return HttpResponseRedirect(reverse("index")) template_var = base_template_vals(request) return render_to_response("event/event_order.html", template_var, context_instance=RequestContext(request))
def remove_friend(request, pk): """remove targeted user from the friend-list of the current user. Only works if current user is authenticated. Retrieves the current user and the targeted user's (user_id = pk) UserProfile objects, check if they are friends already; if so, remove their. Friendship from database. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: Parameter in URL, representing targeted user's UserProfile id. Returns: HttpResponseRedirect, to the homepage (index) with no parameters. Raises: None. """ #global template_var template_var = base_template_vals(request) if request.user.is_authenticated(): from_user = UserProfile.objects.get(django_user=request.user) to_user = UserProfile.objects.get(id=pk) size = len(Friendship.objects.filter( friend_from=from_user, friend_to=to_user)) if(size != 0): f = Friendship.objects.filter( friend_from=from_user, friend_to=to_user)[0] f.delete() return HttpResponseRedirect(reverse('index'))
def overview(request): """Provides an overview for superuser to manage the site. Displays number of pending order forms, admin requests and event submissions, and the detailed list below. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: HttpResponseRedirect, to the homepage (index) with no parameters. Raises: None. """ template_var = base_template_vals(request) user = template_var["u"] if user.is_superuser: # Retrieve objects if its "affiliation_msg" string length > 1 # http://stackoverflow.com/questions/15708416/django-lookup-by-length-of-text-field template_var["user_list"] = UserProfile.objects.filter( affiliation_msg__iregex=r'^.{1,}$').filter( is_approved=False) template_var["user_num"] = len(template_var["user_list"]) template_var["event_list"] = Event.objects.filter(is_approved=False) template_var["event_num"] = len(template_var["event_list"]) return render_to_response("mgmt/overview.html", template_var, context_instance=RequestContext(request)) else: return HttpResponseRedirect(reverse('index'))
def index(request): """Creates standard index page view for Don's Affairs. Gets user profile object and its list of "Like" objects, list of "Event" objects in order of creation and formats each event object to its title. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: event/index.html with template_vars. Raises: Http404 error. """ template_var = base_template_vals(request) up = UserProfile.objects.filter(django_user=request.user) template_var["likes"] = Like.objects.filter(user=up[0]) try: event_list = Event.objects.all().order_by('id') except Event.DoesNotExist: raise Http404 output = ', '.join([e.title for e in event_list]) template_var["events"] = output return render_to_response("event/index.html", template_var, context_instance=RequestContext(request))
def unlike_event(request, pk): """unlike a saved event. remove a Like object which contains the User who liked the event. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: ID of event receiving the "Like". Returns: redirect to index. Raises: None. """ template_var = base_template_vals(request) previousLike = Like.objects.filter(event=Event.objects.get(id=pk), user=UserProfile.objects.filter( django_user=request.user)[0]) if(len(previousLike) != 0): like = previousLike[0] like.delete() return redirect('index')
def show_friends(request, pk): """show friends for given user Only works if current user is authenticated. Retrieves the the targeted user's (user_id = pk) UserProfile object, list of friends, list of friends' saved events, a new friendship object and store it in database. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: Parameter in URL, representing targeted user's UserProfile id. Returns: accounts/public_profile.html with template_vars. Raises: None. """ template_var = base_template_vals(request) if request.user.is_authenticated(): template_var["user"] = UserProfile.objects.get(id=pk) # Retrieve list of friends of current user. friends = Friendship.objects.filter(friend_from=template_var["user"]) friends = list(friends) # Cast queryset to list to avoid u("") template_var["friends"] = friends template_var["friends_num"] = len(friends) return render_to_response("accounts/show_friends.html", template_var, context_instance=RequestContext(request))
def like_event(request, pk): """Adds a like to an event. Creates and saves a Like object which contains the User who liked the event. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: ID of event receiving the "Like". Returns: redirect to index. Raises: None. """ template_var = base_template_vals(request) previousLike = Like.objects.filter(event=Event.objects.get(id=pk), user=UserProfile.objects.filter( django_user=request.user)[0]) if(len(previousLike) == 0): like = Like(event=Event.objects.get(id=pk)) like.user = UserProfile.objects.filter(django_user=request.user)[0] like.save() #sys notification from_user = UserProfile.objects.get(django_user = User.objects.get( username__exact='admin')) to_user = UserProfile.objects.get(django_user=request.user) event_id = pk sys_notification(to_user, "save_event", from_user, event_id) return redirect('index')
def add_comment(request, pk, pk2): """Posts comment to specific event. Checks if the request has "content" and the user is authenticated. If they both are "True", creates and saves comment object. Then sends a notification to the event poster with the sys_notification function. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: ID for event that's recieving comment. pk2: ID for user posting the comment. Returns: Calls "single"" function passing in "request" from input args Raises: None. """ template_var = base_template_vals(request) p = request.POST if p.has_key("content") and p["content"]: if request.user.is_authenticated(): comment = Comment(event=Event.objects.get(id=pk)) comment.user = UserProfile.objects.get(django_user=request.user) comment.content = p["content"] comment.save() # Sys notification from_user = UserProfile.objects.get(django_user=pk2) # Who's event that is commented on to_user = Event.objects.get(id=pk).author event_id = pk sys_notification(to_user, "add_comment", from_user, event_id) return single(request, pk)
def tagpage(request, tag): """Gathers list of events based on a specific tag. Gets a list of "Event" obejcts based on tag passed in as argument. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ tag: Tag to show results for. Returns: event/tag_single.html with template_vars. Raises: Http404 error. """ template_var = base_template_vals(request) template_var["tag"] = tag try: template_var["events"] = Event.objects.filter(is_approved=True ).filter(tags__name__in = [tag]) except Event.DoesNotExist: raise Http404 return render_to_response("event/tag_single.html", template_var, context_instance=RequestContext(request))
def save_event(request): """Saves event to profile for later access. Creates a message object that is sent to the user about the event. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: IF REQUEST IS POST: HttpResponseRedirect to /events/msg/ ELSE: event/message_send.html with template_vars Raises: None. """ template_var = base_template_vals(request) template_var["allusers"] = UserProfile.objects.all() if request.method == "POST": if request.user.is_authenticated(): message = Message() message.msg_from = UserProfile.objects.filter( django_user=request.user)[0] message.msg_to = UserProfile.objects.filter( id__exact=request.POST["msg_to_django_user_id"])[0] message.content = request.POST["content"] message.save() return HttpResponseRedirect("/events/msg/") return render_to_response("event/message_send.html", template_var, context_instance=RequestContext(request))
def msg_open(request, pk): """Loads single message view. Collects message object based on pk, sets the message as read and saves the message. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: ID of message. Returns: HttpResponse with the message's content. Raises: None. """ template_var = base_template_vals(request) current_user_profile = UserProfile.objects.filter( django_user=request.user)[0] msg = Message.objects.get(msg_to=current_user_profile, id=pk) if(msg): msg.is_read = True msg.save() template_var["msg"] = msg return HttpResponse(msg.content)
def edit(request, pk): """Edit an event's info. Creates and saves a Like object which contains the User who liked the event. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: ID of event receiving the edit. Returns: redirect to index. Raises: None. """ template_var = base_template_vals(request) user = template_var["u"] event = Event.objects.get(id=pk) template_var["e"] = event if user.is_superuser or user.is_moderator: if request.method == 'POST': title = request.POST['title'] refer = request.POST['refer'] date = request.POST['date'] time = request.POST['time'] loc = request.POST['loc'] body = request.POST['body'] # Deal with time field try: event_datetime = date + ' ' + time print event_datetime event_datetime = datetime.strptime(event_datetime, '%m/%d/%Y %H:%M') except ValueError: print "Error when processing time field" # Deal with tags checkbox list tags = request.POST.getlist("tags") if len(tags) == 0: event.tags.add("untagged") else: taglist = list(tags) for t in taglist: event.tags.add(t) event.title = title event.refer = refer event.event_time = event_datetime event.location = loc event.body = body event.save() return single(request, pk) return render_to_response("event/event_edit.html", template_var, context_instance=RequestContext(request)) else : return redirect('index')
def login(request): """Completes login procedure to login registered users to their account. Checks first, if user is already logged in, if so redirects user to index. If user isn't logged in, checks for 'POST' method and validates form. Upon validation, calls login_helper to login user if the email password pair belongs to a user. If form is valid, check if there's an auto redirect URL and return to that. Otherwise returns user to index. If form is invalid returns user to login page. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: VALID LOGIN: HttpResponseRedirect, to the homepage (index) with no parameters. INVALID LOGIN: accounts/login.html with template_vars. Raises: None. """ template_var = base_template_vals(request) if request.user.is_authenticated(): return HttpResponseRedirect(reverse("index")) if request.method == 'POST': email = strip_tags(request.POST['email']) password = request.POST['password'] results = sanitize_login(email, password) if all(results) == False: old_input = {} if len(email) > 0: old_input['email'] = email if len(password) > 0: old_input['password'] = password old_input['errors'] = results return render_to_response("accounts/login.html", old_input, context_instance=RequestContext(request)) if login_helper(request, email, password): if len(request.GET) > 0: next_url = request.GET["next"] if next_url: return HttpResponseRedirect(next_url) return HttpResponseRedirect(reverse("index")) else: old_input = {} if len(email) > 0: old_input['email'] = email if len(password) > 0: old_input['password'] = password old_input['errors'] = [False, False] return render_to_response("accounts/login.html", old_input, context_instance=RequestContext(request)) return render_to_response("accounts/login.html", template_var, context_instance=RequestContext(request))
def post(request): """Posts an event, only moderators can access. Processes the event form and has exceptions to handle invalid time input and lack of picture. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: IF POST SUCCESSFUL: HttpResponseRedirect to index ELSE: event/event_post.html with template_vars Raises: None. """ template_var = base_template_vals(request) user = template_var["u"] from_user = UserProfile.objects.get(django_user=request.user) if user.is_moderator or user.is_superuser: if request.method == "POST": title_ = strip_tags(request.POST["title"]) body_ = strip_tags(request.POST["body"]) refer_ = strip_tags(request.POST["refer"]) date_ = request.POST["date"] try: time.strptime(date_, '%m/%d/%Y') except ValueError: current_day = datetime.now().strftime("%Y-%m-%d %H:%M") date_ = datetime.strptime(current_day, '%Y-%m-%d %H:%M') loc_ = strip_tags(request.POST["loc"]) tags_ = request.POST.getlist("tags") if(len(tags_) == 0): tags_ = "untagged" try: image1_ = request.FILES["picture"] event = Event(title=title_, body=body_, location=loc_, refer=refer_, event_time=date_, image1=image1_, author=from_user) except: event = Event(title=title_, body=body_, location=loc_, refer=refer_, event_time=date_, author=from_user) event.save() tags = list(tags_) for tag in tags: event.tags.add(tag) event.save() return HttpResponseRedirect(reverse("index")) else: return HttpResponseRedirect(reverse("index")) return render_to_response("event/event_post.html", template_var, context_instance=RequestContext(request))
def index(request): """Processes data needed for public index, or an user's private profile. If current user is NOT authenticated, display a general index page. Private profile only works if current user is authenticated. Retrieves the the current user's UserProfile object, and messages / notifications, saved events, friends, friends' saved events' list of the current user. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: accounts/profile.html with template_vars. Raises: None. """ template_var = base_template_vals(request) if request.user.is_authenticated(): # Retrieve data for current user's private profile up = UserProfile.objects.filter(django_user=request.user) if len(up) == 0: # no userprofile, say root user created in terminal return render_to_response("accounts/profile.html", template_var, context_instance=RequestContext(request)) template_var["up"] = up[0] # Retrieve message / notification related lists of current user current_user_profile = UserProfile.objects.filter( django_user=request.user)[0] template_var["msg_sent_list"] = Message.objects.filter( msg_from=current_user_profile) template_var["msg_received_list"] = Message.objects.filter( msg_to=current_user_profile) # Retrieve likes (saved events) list of current user template_var["saved_events"] = see_saved_events(template_var, False) # Retrieve friend list of current user friends = Friendship.objects.filter(friend_from=up[0]) friends = list(friends) # Cast queryset to list to avoid u("") template_var["friends"] = friends template_var["friends_num"] = len(friends) # Retrieve and parse friends' saved events' list of current user template_var["friends_events"] = see_friends_events(request, template_var, False, False) return render_to_response("accounts/profile.html", template_var, context_instance=RequestContext(request))
def see_more_saved_events(request, pk): template_var = base_template_vals(request) if request.user.is_authenticated(): # Retrieve data for current user's private profile up = UserProfile.objects.filter(id=pk) if len(up) == 0: # no userprofile, say root user created in terminal return render_to_response("accounts/profile.html", template_var, context_instance=RequestContext(request)) template_var["up"] = up[0] # Retrieve likes (saved events) list of current user template_var["saved_events"] = see_saved_events(template_var, True) return render_to_response("accounts/see_more_saved_events.html", template_var, context_instance=RequestContext(request))
def public_profile(request, pk): """Processes data needed for an user's public profile. Only works if current user is authenticated. Retrieves the the targeted user's (user_id = pk) UserProfile object, list of friends, list of friends' saved events, a new friendship object and store it in database. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: Parameter in URL, representing targeted user's UserProfile id. Returns: accounts/public_profile.html with template_vars, if the querying user exists; if user try to access public profile of non-existent users, redirect back to index. Raises: None. """ template_var = base_template_vals(request) if request.user.is_authenticated(): try: template_var["up"] = UserProfile.objects.get(id=pk) template_var["user"] = template_var["up"] except UserProfile.DoesNotExist: return HttpResponseRedirect(reverse('index')) # Retrieve list of friends of current user. friends = Friendship.objects.filter(friend_from=template_var["up"]) friends = list(friends) # Cast queryset to list to avoid u("") template_var["friends"] = friends template_var["friends_num"] = len(friends) template_var["saved_events"] = see_saved_events(template_var, False) # Retrieve list of friends' saved events of current user. template_var["friends_saved_entries"] = see_friends_events(request, template_var, False, True) #checck if current login user follow selected public profile user or not currentUser = UserProfile.objects.filter(django_user=request.user) isAlreadyFollowed = Friendship.objects.filter(friend_from=currentUser, friend_to=template_var["up"]) if(len(isAlreadyFollowed) != 0): template_var["isAlreadyFollowed"] = True; else: template_var["isAlreadyFollowed"] = False; return render_to_response("accounts/public_profile.html", template_var, context_instance=RequestContext(request))
def approve_event(request, pk): template_var = base_template_vals(request) user = template_var["u"] if user.is_superuser: approved_event = Event.objects.get(id=pk) approved_event.is_approved = True approved_event.save() #system notification to_user = approved_event.author from_user = template_var["u"] event_id = pk sys_notification(to_user, "approve_event", from_user, event_id) return HttpResponseRedirect(reverse('overview')) else: return HttpResponseRedirect(reverse('index'))
def approve_user(request, pk): template_var = base_template_vals(request) user = template_var["u"] if user.is_superuser: approved_user = UserProfile.objects.get(id=pk) approved_user.affiliation_msg = "" approved_user.is_moderator = True approved_user.is_approved = True approved_user.save() #system notification to_user = approved_user from_user = template_var["u"] event_id = 0 sys_notification(to_user, "approve_user", from_user, event_id) return HttpResponseRedirect(reverse('overview')) else: return HttpResponseRedirect(reverse('index'))
def see_more_friends_events(request, pk): template_var = base_template_vals(request) if request.user.is_authenticated(): # Retrieve data for current user's private profile up = UserProfile.objects.filter(id=pk) if len(up) == 0: # no userprofile, say root user created in terminal return render_to_response("accounts/profile.html", template_var, context_instance=RequestContext(request)) template_var["up"] = up[0] # Retrieve friend list of current user friends = Friendship.objects.filter(friend_from=up[0]) friends = list(friends) # Cast queryset to list to avoid u("") template_var["friends"] = friends #friends' saved event template_var["friends_saved_entries"] = see_friends_events(request, template_var, True, True) return render_to_response("accounts/see_more_friends_events.html", template_var, context_instance=RequestContext(request))
def add_friend(request, pk): """Adds targeted user as a friend of the current user. Only works if current user is authenticated. Retrieves the current user and the targeted user's (user_id = pk) UserProfile objects, check if they are friends already; and if not, create a new friendship object and store it in database. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: Parameter in URL, representing targeted user's UserProfile id. Returns: HttpResponseRedirect, to the homepage (index) with no parameters. Raises: Http404, if either of the friendship participants is non-existent. """ template_var = base_template_vals(request) try: from_user = UserProfile.objects.get(django_user=request.user) except UserProfile.DoesNotExist: raise Http404 try: to_user = UserProfile.objects.get(id=pk) except UserProfile.DoesNotExist: raise Http404 if(from_user == to_user):#should not follow self return HttpResponseRedirect(reverse('index')) size = len(Friendship.objects.filter(friend_from=from_user, friend_to=to_user)) if(size == 0): f = Friendship(friend_from=from_user, friend_to=to_user) f.save() # System notification event_id = 0 # Should be nothing in this case print str(to_user) print str(from_user) sys_notification(to_user, "followed", from_user, event_id) return HttpResponseRedirect(reverse('index'))
def single(request, pk): """Gathers data for single event object. Attempts to find event object based on pk argument and then gathers any comments if they exist. Then collects all the "User" and "UserProfile" objects necessary for "save the date" info. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: The specific event's numerical ID. Returns: event/event_single.html with template_vars. Raises: Http404 error, if event can't be found or isn't approved yet. """ template_var = base_template_vals(request) try: e = Event.objects.get(pk=int(pk)) if e.is_approved is False: raise Http404 template_var['event'] = e except Event.DoesNotExist: raise Http404 try: template_var['comments'] = Comment.objects.filter(event=e) except Comment.DoesNotExist: template_var['comments'] = [] # Save the date related template_var["allusers"] = UserProfile.objects.all() template_var["auth_users"] = User.objects.all() like = Like.objects.filter(event=Event.objects.get(id=pk), user = UserProfile.objects.filter(django_user=request.user)[0]) if(len(like) == 0): template_var["isAlreadySaved"] = False else: template_var["isAlreadySaved"] = True return render_to_response("event/event_single.html", template_var, context_instance=RequestContext(request))
def msg_send(request): """Sends message from one user to another. Fills template vars and creates and saves message object. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: IF MESSAGE SEND SUCCESSFUL: HttpResponseRedirect to /events/msg/ ELSE: event/message_send.html with template_vars Raises: None. """ template_var = base_template_vals(request) template_var["allusers"] = UserProfile.objects.all() current_django_user = UserProfile.objects.filter( django_user=request.user)[0] template_var["msg_sent_list"] = Message.objects.filter( msg_from=current_django_user) template_var["msg_received_list"] = Message.objects.filter( msg_to=current_django_user) if request.method == "POST": if request.user.is_authenticated(): message = Message() message.msg_from = UserProfile.objects.filter( django_user=request.user)[0] message.msg_to = UserProfile.objects.filter( id__exact=request.POST["msg_to_django_user_id"])[0] message.content = request.POST["content"] message.save() return HttpResponseRedirect("/events/msg/") return render_to_response("event/message_send.html", template_var, context_instance=RequestContext(request))
def edit_profile(request): """edit current user's profile. Modify user's profile Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: HttpResponseRedirect, to the homepage (index) with no parameters. Raises: None. """ template_var = base_template_vals(request) current_user_profile = template_var["u"] if request.method == 'POST': firstname = request.POST['firstname'] lastname = request.POST['lastname'] bio_ = request.POST['bio'] affmsg_ = request.POST['affmsg'] current_user_profile.firstname = firstname current_user_profile.lastname = lastname current_user_profile.bio = bio_ current_user_profile.affmsg = affmsg_ current_user_profile.save() try: avatar_ = request.FILES["picture"] current_user_profile.avatar = avatar_ current_user_profile.save() except: print "no pics" return HttpResponseRedirect(reverse("index")) return render_to_response("accounts/edit_profile.html", template_var, context_instance=RequestContext(request))
def msg_box(request): """Loads user's messages inbox. Gathers and displays user's recieved messages. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: notification/msg_box.html with template_vars Raises: None. """ template_var = base_template_vals(request) current_user_profile = UserProfile.objects.filter( django_user=request.user)[0] template_var["msg_received_list"] = Message.objects.filter( msg_to=current_user_profile) return render_to_response("notification/msg_box.html", template_var, context_instance=RequestContext(request))
def homepage(request): """Creates standard homepage view for Don's Affairs. Gets user profile object and its list of "Like" objects, list of "Event" objects inorder of creation and formats each event object to its title. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: event/event_homepage.html with template_vars. Raises: None. """ template_var = base_template_vals(request) template_var["events"] = Event.objects.filter(is_approved=True ).order_by("-created") return render_to_response("event/event_homepage.html", template_var, context_instance=RequestContext(request))
def archives(request): """Gathers archive list of all events for list_view of events. Gets list of "Event" objects in order of event occurance. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: event/event_listview.html with template_vars. Raises: Http404 error. """ template_var = base_template_vals(request) try: template_var["events"] = Event.objects.all().filter( is_approved=True).order_by("-event_time") except Event.DoesNotExist: raise Http404 return render_to_response("event/event_listview.html", template_var, context_instance=RequestContext(request))
def db_init(request): """Initialize the global database, fill in pre-set content and taxonomies. Creates default tags, which serves as categories. You should only visit this URL when server first starts up. Creates a temporary event entry, fills in the tags, then deletes the event. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: HttpResponseRedirect, to the homepage (index) with no parameters. Raises: None. """ template_var = base_template_vals(request) user = template_var["u"] """ if user.is_superuser: return render_to_response("mgmt/init.html", template_var, context_instance=RequestContext(request)) else: """ event = Event.objects.create(author=UserProfile.objects.all()[0]) event.tags.add("art") event.tags.add("music") event.tags.add("threater") event.tags.add("sports") event.tags.add("festivals") event.tags.add("holiday") event.tags.add("community") event.tags.add("miscellaneous") event.delete() return HttpResponseRedirect(reverse('index'))
def share_email(request, pk): """Shares an Event via email with another user. Collects address to send email to and link for event from request. Then builds message content and sends email. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ pk: ? ? ? #TODO: Bin unused variable. Returns: redirect to index. Raises: None. """ template_var = base_template_vals(request) subject = 'Your friend shared an event with you on Dons Affairs!' from_email = '*****@*****.**' to = '*****@*****.**' to = request.POST["email_to"] #default is sending to self '*****@*****.**' link = request.POST["abs_url"] text_content = 'This is an important message.' text_content += 'Your friend shared an event link with you. ' + link html_content = '<p>Hi Dear,</p>' html_content += '<p>Your friend shared an exciting event with you on ' html_content += '<a href="http://mtk.im/usf">Don\'s Affairs</a>!</p>' html_content += '<p><a href="' + link + '"> ' html_content += 'Here is the link to the event.</a>' html_content += '<br>Feel free to check it out!</p>' + '<p><br>With love,' html_content += '<br>Don\'s Affairs Team</p>' msg = EmailMultiAlternatives(subject, text_content, from_email, [to]) msg.attach_alternative(html_content, "text/html") msg.send() return redirect('index')
def register(request): """Handles user registration. If current user is authenticated, redirect the user to index / homepage. Registration only works if current user is NOT authenticated. Captures the HTTP POST object and parse associated fields. Combines first and last name to create username. Args: request: Django's HttpRequest object that contains metadata. https://docs.djangoproject.com/en/dev/ref/request-response/ Returns: USER LOGGED IN: HttpResponseRedirect, to the homepage (index) with no parameters. REGISTRATION SUCCESSFUL: HttpResponseRedirect, to the homepage (index) with no parameters. NO POST REQUEST: accounts/register.html with template_vars. Raises: None. """ template_var = base_template_vals(request) grad_years = [] for y in range(date.today().year, date.today().year + 5): grad_years.append(y) template_var["grad_years"] = grad_years template_var["errors"] = None if request.user.is_authenticated(): return HttpResponseRedirect(reverse("index")) if request.method == "POST": print request.POST # TODO: don't assume all these fields are in the POST! Check if exist. if "-" in request.POST['firstname']: new = [] firstname = request.POST['firstname'].split("-") for name in firstname: name = strip_tags(name) new.append(name) firstname = "-".join(new) else: firstname = strip_tags(request.POST['firstname']) print "firstname stripped", firstname if "-" in request.POST['lastname']: new = [] lastname = request.POST['lastname'].split("-") for name in lastname: name = strip_tags(name) new.append(name) lastname = "-".join(new) else: lastname = strip_tags(request.POST['lastname']) username = firstname + "_" + lastname email = strip_tags(request.POST['email']) password = request.POST['password'] grad_ = request.POST['grad_year'] major = request.POST['major'] bio_ = strip_tags(request.POST['bio']) print "bio_", bio_ aff_test = False if 'aff' in request.POST: aff_ = request.POST['aff'] aff_test = True affmsg_ = strip_tags(request.POST['affmsg']) # Check for clean input results = sanitize(firstname, lastname, email, bio_, password) print "results ", results if all(results) and aff_test is True: #all tests passed print "tests passed" firstname = " ".join(firstname.split()) print "firstname ", firstname lastname = " ".join(lastname.split()) print "lastname ", lastname bio_ = " ".join(bio_.split()) print "bio_ ", bio_ affmsg_ = " ".join(affmsg_.split()) print "affmsg_ ", affmsg_ else: # gotta kick back print "tests failed" results.insert(-1, aff_test) errors = results print "errors ", errors old_input = {} template = "accounts/register.html" if len(firstname) > 0: old_input['firstname'] = firstname if len(lastname) > 0: old_input['lastname'] = lastname if len(email) > 0: old_input['email'] = email if len(password) > 0: old_input['password'] = password old_input['grad_year'] = grad_ if len(bio_) > 0: old_input['bio'] = bio_ if aff_test is True: old_input['aff'] = aff_ if len(affmsg_) > 0: old_input['affmsg'] = affmsg_ old_input['errors'] = errors old_input['grad_years'] = template_var["grad_years"] print "old input ", old_input return render_to_response(template, old_input, context_instance=RequestContext(request)) # Does this username already exist in user database? Prepare to check i = 0 queryname = str(username) + "_" + str(i) # If username "first_last_i" already exists... while (len(User.objects.filter(username = queryname)) > 0): i = i + 1 # Check "first_last_i++" queryname = str(username) + "_" + str(i) user = User.objects.create_user(queryname, email, password) user.save() try: try: avatar_ = request.FILES["picture"] profile = UserProfile(django_user=user, firstname=firstname, lastname=lastname, major=major, graduation_year=grad_, affiliation_type=aff_, affiliation_msg=affmsg_, bio=bio_, avatar=avatar_) except: profile = UserProfile(django_user=user, firstname=firstname, lastname=lastname, major=major, graduation_year=grad_, affiliation_type=aff_, affiliation_msg=affmsg_, bio=bio_) profile.save() login_helper(request, email, password) return HttpResponseRedirect(reverse("index")) except Exception: # If we can not finish saving userprofile, delete the user object # Because we don't want users without userprofiles attached user.delete() return render_to_response("accounts/register.html", template_var, context_instance=RequestContext(request))