Exemplo n.º 1
0
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)) 
Exemplo n.º 2
0
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'))
Exemplo n.º 3
0
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'))
Exemplo n.º 4
0
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))
Exemplo n.º 5
0
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')
Exemplo n.º 6
0
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))
Exemplo n.º 7
0
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')
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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))
Exemplo n.º 10
0
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))
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
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')
Exemplo n.º 13
0
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))
Exemplo n.º 14
0
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))
Exemplo n.º 15
0
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))
Exemplo n.º 16
0
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))
Exemplo n.º 17
0
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))
Exemplo n.º 18
0
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'))
Exemplo n.º 19
0
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'))
Exemplo n.º 20
0
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))
Exemplo n.º 21
0
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'))
Exemplo n.º 22
0
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))
Exemplo n.º 23
0
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))
Exemplo n.º 24
0
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))
Exemplo n.º 25
0
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))
Exemplo n.º 26
0
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))
Exemplo n.º 27
0
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))
Exemplo n.º 28
0
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'))
Exemplo n.º 29
0
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')
Exemplo n.º 30
0
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))