예제 #1
0
def edit_profile(request):
    """
    Allows users to edit their own profile
    
    Tests:
       None yet
    """
    if request.method == 'GET':
        #Show the edit form
        form = UserForm({'email' : request.user.email})
        var_dict = { 'form' : form }
        template = 'users/edit_profile.html'
        return rtr(template, var_dict, context_instance=RC(request))
    elif request.method == 'POST':
        #Apply changes
        form = UserForm(request.POST)
        if form.is_valid():
            request.user.email = form.cleaned_data['email']
            request.user.save()
            return HttpResponseRedirect(reverse('cube.users.views.profile'))
        if not form.is_valid():
            # The form has bad data. send the user back
            var_dict = {'form' : form}
            template = 'users/edit_profile.html'
            return rtr(template, var_dict, context_instance=RC(request))
예제 #2
0
def add_new_book(request):
    """
    Tests:
        - GETTest
        - AddNewBookTest
        - SecurityTest
        - NotAllowedTest
    """
    if not request.method == 'POST':
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    if request.POST.get("Action", '') == 'Add':
        form = NewBookForm(request.POST)
        if form.is_valid():
            # This came from the add_book view, and we need to
            # create a book and a metabook
            barcode = form.cleaned_data['barcode']
            price = form.cleaned_data['price']
            sid = form.cleaned_data['seller']
            author = form.cleaned_data['author']
            title = form.cleaned_data['title']
            ed = form.cleaned_data['edition']
            dept = form.cleaned_data['department']
            course_num = form.cleaned_data['course_number']

            metabook = MetaBook(barcode=barcode, author=author, title=title, edition=ed)
            metabook.save()
            goc = Course.objects.get_or_create
            course, created = goc(department=dept, number=course_num)
            metabook.courses.add(course)
            metabook.save()
            try:
                seller = User.objects.get(pk=sid)
            except User.DoesNotExist:
                seller = import_user(sid)
                if seller == None:
                    message = "Invalid Student ID: %s" % sid
                    return tidy_error(request, message)
            book = Book(seller=seller, price=Decimal(price), metabook=metabook)
            book.status = 'F'
            book.save()
            Log(book=book, who=request.user, action='A').save()

            var_dict = {
                'title' : metabook.title,
                'author' : metabook.author,
                'seller_name' : seller.get_full_name(),
                'book_id' : book.id,
            }
            template = 'books/update_book/added.html'
            return rtr(template, var_dict, context_instance=RC(request))
        var_dict = {'form' : form}
        template = 'books/add_new_book.html'
        return rtr(template, var_dict, context_instance=RC(request))
예제 #3
0
def books_sold_within_date(request):
    """
    Shows a list of all books sold within a given date range
    
    Test:
        - GETTest
        - SecurityTest
    """
    if not request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    date_range_form = DateRangeForm(request.POST)
    if not date_range_form.is_valid():
        var_dict = {
            'date_range_form' : date_range_form,
        }
        return rtr('books/reports/menu.html', var_dict, context_instance=RC(request))
    
    to_date = date_range_form.cleaned_data['to_date']
    from_date = date_range_form.cleaned_data['from_date']
    book_sale_logs = Log.objects.filter(action='S', when__gte=from_date).exclude(when__gt=to_date)
    var_dict = {
        'book_sale_logs' : book_sale_logs.order_by('book__sell_date'),
        'from_date' : from_date,
        'to_date' : to_date,
    }
    return rtr('books/reports/books_sold_within_date.html', var_dict, context_instance=RC(request))
예제 #4
0
def add_book(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    if request.method == "POST":
        form = BookForm(request.POST)
        if form.is_valid():
            student_id = form.cleaned_data['seller']
            price = form.cleaned_data['price']
            barcode = form.cleaned_data['barcode']
            try:
                metabook = MetaBook.objects.get(barcode=barcode)
            except MetaBook.DoesNotExist:
                initial = {
                    'barcode': barcode,
                    'seller': student_id,
                    'price': price,
                    'edition': '1',
                }
                form = NewBookForm(initial=initial)
                var_dict = {'form': form}
                template = 'books/add_new_book.html'
                return rtr(template, var_dict, context_instance=RC(request))
            try:
                seller = User.objects.get(id=student_id)
            except User.DoesNotExist:
                seller = import_user(student_id)
                if seller == None:
                    message = "Invalid Student ID: %s" % student_id
                    return tidy_error(request, message)
            book = Book(price=price,
                        status="F",
                        metabook=metabook,
                        seller=seller)
            book.save()
            Log(book=book, who=request.user, action='A').save()
            var_dict = {'title': metabook.title, 'book_id': book.id}
            template = 'books/update_book/added.html'
            return rtr(template, var_dict, context_instance=RC(request))
        # the form isn't valid. send the user back.
        var_dict = {'form': form}
        template = 'books/add_book.html'
        return rtr(template, var_dict, context_instance=RC(request))
    else:
        # the user is hitting the page for the first time
        form = BookForm()
        var_dict = {'form': form}
        template = 'books/add_book.html'
        return rtr(template, var_dict, context_instance=RC(request))
예제 #5
0
def add_book(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    if request.method == "POST":
        form = BookForm(request.POST)
        if form.is_valid():
            student_id = form.cleaned_data['seller']
            price = form.cleaned_data['price']
            barcode = form.cleaned_data['barcode']
            try:
                metabook = MetaBook.objects.get(barcode=barcode)
            except MetaBook.DoesNotExist: 
                initial = {
                    'barcode' : barcode,
                    'seller' : student_id,
                    'price' : price,
                    'edition' : '1',
                }
                form = NewBookForm(initial=initial)
                var_dict = {'form' : form}
                template = 'books/add_new_book.html'
                return rtr(template, var_dict, context_instance=RC(request))
            try:
                seller = User.objects.get(id=student_id)
            except User.DoesNotExist:
                seller = import_user(student_id)
                if seller == None:
                    message = "Invalid Student ID: %s" % student_id
                    return tidy_error(request, message)
            book = Book(price=price, status="F", metabook=metabook, seller=seller)
            book.save()
            Log(book=book, who=request.user, action='A').save()
            var_dict = {
                'title' : metabook.title,
                'book_id' : book.id
            }
            template = 'books/update_book/added.html'
            return rtr(template, var_dict, context_instance=RC(request))
        # the form isn't valid. send the user back.
        var_dict = {'form' : form}
        template = 'books/add_book.html'
        return rtr(template, var_dict, context_instance=RC(request))
    else:
        # the user is hitting the page for the first time
        form = BookForm()
        var_dict = {'form' : form}
        template = 'books/add_book.html'
        return rtr(template, var_dict, context_instance=RC(request))
예제 #6
0
def staff_list(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    users = User.objects.all().order_by('last_name')
    page_num = get_number(request.GET, 'page', PAGE_NUM)
    users_per_page = get_number(request.GET, 'per_page', PER_PAGE)
    paginator = Paginator(users, users_per_page)
    try:
        page_of_users = paginator.page(page_num)
    except (EmptyPage, InvalidPage):
        page_of_users = paginator.page(paginator.num_pages)
    if request.GET.get('dir', '') == 'asc': dir = 'desc'
    else: dir = 'asc'
    var_dict = {
        'users': page_of_users,
        'per_page': users_per_page,
        'page': page_num,
        'field': request.GET.get('field', 'any_field'),
        'filter_text': request.GET.get('filter', ''),
        'dir': dir,
    }
    template = 'books/staff.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #7
0
def metabook(request, metabook_id):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    if request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    try:
        metabook = MetaBook.objects.get(id=metabook_id)
    except MetaBook.DoesNotExist:
        message = "Invalid MetaBook Ref #: %s" % metabook_id
        return tidy_error(request, message)
    var_dict = {
    'metabook' : metabook,
    'books' : Book.objects.filter(metabook=metabook).order_by('list_date'),
    }
    return rtr('books/reports/metabook.html', var_dict, context_instance=RC(request))
예제 #8
0
def per_status(request):
    """
    Shows the number of books per status
    
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    var_dict = {
        "for_sale": Book.objects.filter(status='F').count(),
        "missing": Book.objects.filter(status='M').count(),
        "on_hold": Book.objects.filter(status='O').count(),
        "seller_paid": Book.objects.filter(status='P').count(),
        "sold": Book.objects.filter(status='S').count(),
        "to_be_deleted": Book.objects.filter(status='T').count(),
        "deleted": Book.objects.filter(status='D').count(),
    }
    return rtr('books/reports/per_status.html',
               var_dict,
               context_instance=RC(request))
예제 #9
0
def holds_by_user(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    if request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    books_on_hold = Book.objects.filter(status='O')
    user_dict = {}
    for book in books_on_hold:
        if not user_dict.has_key(book.holder):
            user_dict[book.holder] = Book.objects.filter(
                status='O', holder=book.holder).count()
    user_list_by_user = user_dict.items()
    user_list_by_count = []
    for item in user_list_by_user:
        user_list_by_count.append((item[1], item[0]))
    user_list_by_count.sort(reverse=True)
    var_dict = {'user_list': user_list_by_count}
    return rtr('books/reports/holds_by_user.html',
               var_dict,
               context_instance=RC(request))
예제 #10
0
def metabook(request, metabook_id):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    if request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    try:
        metabook = MetaBook.objects.get(id=metabook_id)
    except MetaBook.DoesNotExist:
        message = "Invalid MetaBook Ref #: %s" % metabook_id
        return tidy_error(request, message)
    var_dict = {
        'metabook': metabook,
        'books': Book.objects.filter(metabook=metabook).order_by('list_date'),
    }
    return rtr('books/reports/metabook.html',
               var_dict,
               context_instance=RC(request))
예제 #11
0
def holds_by_user(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    if request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    books_on_hold = Book.objects.filter(status='O')
    user_dict = {}
    for book in books_on_hold:
        if not user_dict.has_key(book.holder):
            user_dict[book.holder] = Book.objects.filter(status='O', holder=book.holder).count()
    user_list_by_user = user_dict.items()
    user_list_by_count = []
    for item in user_list_by_user:
        user_list_by_count.append((item[1], item[0]))
    user_list_by_count.sort(reverse=True)
    var_dict = {'user_list': user_list_by_count}
    return rtr('books/reports/holds_by_user.html', var_dict, context_instance=RC(request))
예제 #12
0
def user(request, user_id):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    if request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    try:
        user_obj = User.objects.get(id=user_id)
    except User.DoesNotExist:
        user_obj = import_user(user_id)
    if user_obj == None:
        message = "Invalid Student ID: %s" % user_id
        return tidy_error(request, message)
    logs_of_books_for_sale = Log.objects.filter(book__seller=user_obj).filter(
        action='A')
    var_dict = {
        'user_obj': user_obj,
        'logs': Log.objects.filter(who=user_obj).order_by('when'),
        'logs_of_books_for_sale': logs_of_books_for_sale,
    }
    return rtr('books/reports/user.html',
               var_dict,
               context_instance=RC(request))
예제 #13
0
def movie_detail_2(request, movie_id):
    try:
        movie = Movie.objects.get(id=movie_id)
    except Movie.DoesNotExist:
        return HttpResponseNotFound("NOT FOUND!")
    context = {"movie": movie}
    return rtr("movie_detail.html", context, context_instance=RequestContext(request))
예제 #14
0
파일: views.py 프로젝트: israfilkara/blog
def show(request, slug):
    query = Post.objects.filter(slug=slug)
    if query.count() == 1:
        query = query[0]
    else:
        pass
    return rtr("posts/show.html", locals(), context_instance=Rqc(request))
예제 #15
0
def user(request, user_id):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    if request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    try:
        user_obj = User.objects.get(id=user_id)
    except User.DoesNotExist:
        user_obj = import_user(user_id)
    if user_obj == None:
        message = "Invalid Student ID: %s" % user_id
        return tidy_error(request, message)
    logs_of_books_for_sale = Log.objects.filter(book__seller=user_obj).filter(action='A')
    var_dict = {
    'user_obj' : user_obj,
    'logs' : Log.objects.filter(who=user_obj).order_by('when'),
    'logs_of_books_for_sale' : logs_of_books_for_sale,
    }
    return rtr('books/reports/user.html', var_dict, context_instance=RC(request))
예제 #16
0
파일: views.py 프로젝트: israfilkara/blog
def show(request, slug):
    query = Page.objects.filter(slug=slug)
    if query.count() == 1:
        page = query[0]
    else:
        messages.error(request, _(u"İstenilen Sayfa Getirilemedi"))
    return rtr("pages/show.html", locals(), context_instance=Rqc(request))
예제 #17
0
파일: views.py 프로젝트: own2pwn/zihigh
def vpicstoday(request, template='default.html', extra_context=None):
    context = RequestContext(request)
    now = datetime.now()
    ilps = ImgLinkPage.objects.all()
    ilps1 = []
    total_img_count = len(ilps)
    for c in range(total_img_count):
        if ilps[c].parsetime.year == now.year and ilps[
                c].parsetime.month == now.month and ilps[
                    c].parsetime.day == now.day:
            ilps1.append(ilps[c])
    tgc = 100
    total_img_count = len(ilps1)
    chosen_list = random.sample(xrange(total_img_count),
                                int(total_img_count * 0.8))
    pics = []
    collected_img = 0
    for c in chosen_list:
        if collected_img > tgc:
            break
        ilp = ilps[c]
        ic = len(ilp.imglist)
        sample_n = random.randint(0, ic - 1)
        pics.extend(ilp.sample_image(sample_n))
        collected_img = collected_img + sample_n

    context['pics'] = pics
    return rtr(template,
               context,
               context_instance=extra_context,
               mimetype="application/xhtml+xml")
예제 #18
0
def staff_list(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    users = User.objects.filter(is_staff = True)
    page_num = get_number(request.GET, 'page', PAGE_NUM)
    users_per_page = get_number(request.GET, 'per_page', PER_PAGE)
    paginator = Paginator(users, users_per_page)
    try:
        page_of_users = paginator.page(page_num)
    except (EmptyPage, InvalidPage):
        page_of_users = paginator.page(paginator.num_pages)
    if request.GET.get('dir', '') == 'asc': dir = 'desc'
    else: dir = 'asc'
    var_dict = {
        'users' : page_of_users,
        'per_page' : users_per_page,
        'page' : page_num,
        'field' : request.GET.get('field', 'any_field'),
        'filter_text' : request.GET.get('filter', ''),
        'dir' : dir, 
    }
    template = 'books/staff.html'
    return rtr(template, var_dict,  context_instance=RC(request))
예제 #19
0
 def wrapped(request, *args, **kwargs):
     uea = request.META['USER_EMAIL'];
     q = UserAccount.all().filter('email =',uea );
     if q.count() > 0 or users.is_current_user_admin():
         return view(request, *args, **kwargs)
     context = RequestContext(request);
     return rtr( 'access_limited.html', context,None )
예제 #20
0
def bad_unholds(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # TODO bad method of identifying the superuser. Start using django's groups
    if not request.user == User.objects.get(pk=1):
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    entries = []
    for book in Book.objects.all():
        logs = Log.objects.filter(book=book)
        for r_log in logs.filter(action='R'):
            bad_actions = ['M', 'P', 'S', 'T', 'D']
            bad_logs = logs.filter(action__in=bad_actions,
                                   when__lte=r_log.when)
            if bad_logs.count() > 0:
                # If a book has been marked as Missing, On Hold, Sold
                # To Be Deleted of Deleted before having a hold removed
                entry = []
                for log in logs:
                    entry.append((log, True if log == r_log else False))
                entries.append(entry)
    var_dict = {
        'entries': entries,
    }
    return rtr('books/admin/bad_unholds.html',
               var_dict,
               context_instance=RC(request))
예제 #21
0
def remove_holds_by_user(request):
    """
    Tests:
        - GETTest
        - SecurityTest
        - NotAllowedTest
    """
    if not request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    for key, value in request.POST.items():
        if "holder_id" == key:
            holder = User.objects.get(pk=int(value))
            break
    books = Book.objects.filter(holder=holder, status='O')
    for book in books:
        Log(action='R', book=book, who=request.user).save()
    var_dict = {'removed': books.count()}
    books.update(status='F', hold_date=None, holder=None)
    template = 'books/update_book/remove_holds.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #22
0
def bad_unholds(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # TODO bad method of identifying the superuser. Start using django's groups
    if not request.user == User.objects.get(pk=1):
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    entries = []
    for book in Book.objects.all():
        logs = Log.objects.filter(book=book) 
        for r_log in logs.filter(action='R'):
            bad_actions = ['M', 'P', 'S', 'T', 'D']
            bad_logs = logs.filter(action__in=bad_actions, when__lte=r_log.when)
            if bad_logs.count() > 0:
                # If a book has been marked as Missing, On Hold, Sold
                # To Be Deleted of Deleted before having a hold removed
                entry = []
                for log in logs: entry.append((log, True if log == r_log else False))
                entries.append(entry)
    var_dict = {
        'entries' : entries,
    }
    return rtr('books/admin/bad_unholds.html', var_dict, context_instance=RC(request)) 
예제 #23
0
def remove_holds_by_user(request):
    """
    Tests:
        - GETTest
        - SecurityTest
        - NotAllowedTest
    """
    if not request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    for key, value in request.POST.items():
        if "holder_id" == key:
            holder = User.objects.get(pk=int(value))
            break
    books = Book.objects.filter(holder=holder, status='O')
    for book in books:
        Log(action='R', book=book, who=request.user).save()
    var_dict = {'removed' : books.count()}
    books.update(status='F', hold_date=None, holder=None)
    template = 'books/update_book/remove_holds.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #24
0
파일: __init__.py 프로젝트: zandeez/gchecky
def render_to_response(template, context, request, *args, **kwargs):
    """
    Custom version of render_to_response helper that uses RequestContext
    instead of the dummy Context class.
    """
    from django.shortcuts import render_to_response as rtr
    from django.template import RequestContext
    return rtr(template, context, context_instance=RequestContext(request), *args, **kwargs)
예제 #25
0
def books_sold_within_date(request):
    """
    Shows a list of all books sold within a given date range
    
    Test:
        - GETTest
        - SecurityTest
    """
    if not request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    date_range_form = DateRangeForm(request.POST)
    if not date_range_form.is_valid():
        var_dict = {
            'date_range_form': date_range_form,
        }
        return rtr('books/reports/menu.html',
                   var_dict,
                   context_instance=RC(request))

    to_date = date_range_form.cleaned_data['to_date']
    from_date = date_range_form.cleaned_data['from_date']
    book_sale_logs = Log.objects.filter(
        action='S', when__gte=from_date).exclude(when__gt=to_date)

    # Find all the books for the related Logs
    books_sold = Book.objects.filter(id__in=book_sale_logs.values('book_id'))

    # Sum up the price of all the books retrieved previously
    total_money = books_sold.aggregate(total=Sum('price'))['total']

    var_dict = {
        'book_sale_logs': book_sale_logs.order_by('book__sell_date'),
        'total_money': total_money,
        'from_date': from_date,
        'to_date': to_date,
    }
    return rtr('books/reports/books_sold_within_date.html',
               var_dict,
               context_instance=RC(request))
예제 #26
0
 def wrapped(request, *args, **kwargs):
     if 'X-AppEngine-Cron' in request.META:
         return view(request, *args, **kwargs)
     elif users.is_current_user_admin():
         return view(request, *args, **kwargs)
     context = RequestContext(request)
     logging.info('Cron Attempt failed due to auth fail')
     return rtr('limit.html', context, None)
예제 #27
0
def attach_book(request):
    """
    Tests:
        - GETTest
        - SecurityTest
        - NotAllowedTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    if not request.method == 'POST':
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    form = NewBookForm(request.POST)
    if not form.is_valid():
        # The form has bad data. send the user back
        var_dict = {'form': form}
        template = 'books/attach_book.html'
        return rtr(template, var_dict, context_instance=RC(request))
    # shorten our code line lengths below
    goc = Course.objects.get_or_create
    cd = form.cleaned_data

    # Get the course if it exists, otherwise create it.
    tpl = goc(department=cd['department'], number=cd['course_number'])
    course = tpl[0]

    metabook = MetaBook()
    metabook.title = form.cleaned_data['title']
    metabook.author = form.cleaned_data['author']
    metabook.barcode = form.cleaned_data['barcode']
    metabook.edition = form.cleaned_data['edition']
    metabook.save()
    metabook.courses.add(course)
    metabook.save()

    book = Book.objects.get(pk=form.cleaned_data['book_id'])
    book.metabook = metabook
    book.save()
    var_dict = {'book': book}
    template = 'books/attached.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #28
0
def save_setting(request):
    """
    Applies changes to an AppSetting on the edit page
    
    Tests:
    """
    if not request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    form = SettingForm(request.POST)
    if form.is_valid():
        id_to_edit = request.POST.get('IdToEdit')
        try:
            setting = AppSetting.objects.get(id=id_to_edit)
        except AppSetting.DoesNotExist:
            message = 'Application Setting with ref# "%s" does not exist' % id_to_edit
            return tidy_error(request, message)

        setting.name = form.cleaned_data['name']
        setting.value = form.cleaned_data['value']
        setting.description = form.cleaned_data['description']
        setting.save()

        var_dict = {'appsetting': setting}
        template = 'appsettings/update/edited.html'
        return rtr(template, var_dict, context_instance=RC(request))

    elif request.POST.get('IdToEdit'):
        # form isn't valid, but we have an id to work with. send user back
        id_to_edit = request.POST.get('IdToEdit')
        var_dict = {
            'form': form,
            #            'too_many' : False,
            'id': id_to_edit,
            #            'logs' : Log.objects.filter(setting=id_to_edit),
        }

        template = 'appsettings/update/edit.html'
        return rtr(template, var_dict, context_instance=RC(request))
예제 #29
0
def save_setting(request):
    """
    Applies changes to an AppSetting on the edit page
    
    Tests:
    """
    if not request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    form = SettingForm(request.POST)
    if form.is_valid():
        id_to_edit = request.POST.get('IdToEdit')
        try:
            setting = AppSetting.objects.get(id=id_to_edit)
        except AppSetting.DoesNotExist:
            message = 'Application Setting with ref# "%s" does not exist' % id_to_edit
            return tidy_error(request, message)

        setting.name = form.cleaned_data['name']
        setting.value = form.cleaned_data['value']
        setting.description = form.cleaned_data['description']
        setting.save()

        var_dict = { 'appsetting' : setting }
        template = 'appsettings/update/edited.html'
        return rtr(template, var_dict, context_instance=RC(request))

    elif request.POST.get('IdToEdit'):
        # form isn't valid, but we have an id to work with. send user back
        id_to_edit = request.POST.get('IdToEdit')
        var_dict = {
            'form' : form,
#            'too_many' : False,
            'id' : id_to_edit,
#            'logs' : Log.objects.filter(setting=id_to_edit),
        }
        
        template = 'appsettings/update/edit.html'
        return rtr(template, var_dict, context_instance=RC(request))
예제 #30
0
def attach_book(request):
    """
    Tests:
        - GETTest
        - SecurityTest
        - NotAllowedTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    if not request.method == 'POST':
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])
    form = NewBookForm(request.POST)
    if not form.is_valid():
        # The form has bad data. send the user back
        var_dict = {'form' : form}
        template = 'books/attach_book.html'
        return rtr(template, var_dict, context_instance=RC(request))
    # shorten our code line lengths below
    goc = Course.objects.get_or_create
    cd = form.cleaned_data

    # Get the course if it exists, otherwise create it.
    tpl = goc(department=cd['department'], number=cd['course_number'])
    course = tpl[0]

    metabook = MetaBook()
    metabook.title = form.cleaned_data['title']
    metabook.author = form.cleaned_data['author']
    metabook.barcode = form.cleaned_data['barcode']
    metabook.edition = form.cleaned_data['edition']
    metabook.save()
    metabook.courses.add(course)
    metabook.save()

    book = Book.objects.get(pk=form.cleaned_data['book_id'])
    book.metabook = metabook
    book.save()
    var_dict = {'book' : book}
    template = 'books/attached.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #31
0
def book_list(request):
    """
    Shows a list of all the books listed.
    Does pagination, sorting and filtering.
    
    Tests:
        - GETTest
        - SearchBookTest
        - SortBookTest
    """
    house_cleaning()
    # Filter for the search box
    if request.method == 'GET':
        filter_form = FilterForm(request.GET)
        if filter_form.is_valid():
            cd = filter_form.cleaned_data
            all_books = Book.objects.all()
            books = book_filter(cd['filter'], cd['field'], all_books)
        elif request.GET.has_key("sort_by") and request.GET.has_key("dir"):
            books = book_sort(request.GET["sort_by"], request.GET["dir"])
        else:
            books = Book.objects.all()

    # Filter according to permissions
    if not request.user.is_staff:
        # Non staff can only see books which are for sale.
        books = filter(lambda x: x.status == 'F', books)
    # Staff want to see the unsold books first so if we sort them ascending, that should do
    else:
        # This alphabet is the order in which book statuses should be displayed
        alphabet = "AFOPMTSD"
        # Sort by the index value of the book status in the alphabet
        books = sorted(books, key=lambda book: [alphabet.index(book.status)])

    # Pagination
    page_num = get_number(request.GET, 'page', PAGE_NUM)
    books_per_page = get_number(request.GET, 'per_page', PER_PAGE)

    paginator = Paginator(books, books_per_page)
    try:
        page_of_books = paginator.page(page_num)
    except (EmptyPage, InvalidPage):
        page_of_books = paginator.page(paginator.num_pages)

    # Template time
    if request.GET.get('dir', '') == 'asc': dir = 'desc'
    else: dir = 'asc'
    var_dict = {
        'books' : page_of_books,
        'per_page' : books_per_page,
        'page' : page_num,
        'field' : request.GET.get('field', 'any_field'),
        'filter_text' : request.GET.get('filter', ''),
        'dir' : dir
    }
    return rtr('books/book_list.html', var_dict, context_instance=RC(request))
예제 #32
0
def book_list(request):
    """
    Shows a list of all the books listed.
    Does pagination, sorting and filtering.
    
    Tests:
        - GETTest
        - SearchBookTest
        - SortBookTest
    """
    house_cleaning()
    # Filter for the search box
    if request.method == 'GET':
        filter_form = FilterForm(request.GET)
        if filter_form.is_valid():
            cd = filter_form.cleaned_data
            all_books = Book.objects.all()
            books = book_filter(cd['filter'], cd['field'], all_books)
        elif request.GET.has_key("sort_by") and request.GET.has_key("dir"):
            books = book_sort(request.GET["sort_by"], request.GET["dir"])
        else:
            books = Book.objects.all()

    # Filter according to permissions
    if not request.user.is_staff:
        # Non staff can only see books which are for sale.
        books = filter(lambda x: x.status == 'F', books)
    # Staff want to see the unsold books first so if we sort them ascending, that should do
    else:
        # This alphabet is the order in which book statuses should be displayed
        alphabet = "AFOPMTSD"
        # Sort by the index value of the book status in the alphabet
        books = sorted(books, key=lambda book: [alphabet.index(book.status)])

    # Pagination
    page_num = get_number(request.GET, 'page', PAGE_NUM)
    books_per_page = get_number(request.GET, 'per_page', PER_PAGE)

    paginator = Paginator(books, books_per_page)
    try:
        page_of_books = paginator.page(page_num)
    except (EmptyPage, InvalidPage):
        page_of_books = paginator.page(paginator.num_pages)

    # Template time
    if request.GET.get('dir', '') == 'asc': dir = 'desc'
    else: dir = 'asc'
    var_dict = {
        'books': page_of_books,
        'per_page': books_per_page,
        'page': page_num,
        'field': request.GET.get('field', 'any_field'),
        'filter_text': request.GET.get('filter', ''),
        'dir': dir
    }
    return rtr('books/book_list.html', var_dict, context_instance=RC(request))
예제 #33
0
파일: views.py 프로젝트: own2pwn/zihigh
def view_src_page(request, template='default.html', extra_context=None):
    context = RequestContext(request)
    if ('id' in request.GET):
        fid = request.GET['id']
        ilp = get_object_or_404(ImgLinkPage, id=fid)
        context['link'] = ilp.getPageInfo()
        ilp.visitcount = ilp.visitcount + 1
        ilp.save()

    return rtr(template, context, context_instance=extra_context)
예제 #34
0
def profile(request):
    """
    Allow users to view their profile
    """
    if not request.method == "GET":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['GET'])
    template = 'users/profile.html'
    return rtr(template, {}, context_instance=RC(request))
예제 #35
0
def movie_detail(request, movie_id):
    avglist = []
    try:
        movie = Movie.objects.get(id=movie_id)
        rats = Movie.objects.filter(id=movie_id).values_list('rating__rating', flat=True)
        avgrat = sum(rats)/len(rats)
        uovie = User.objects.filter(rating__movie=movie)
    except Movie.DoesNotExist:
        return HttpResponseNotFound("NOT FOUND!")
    context = {"movie": movie, "average": avgrat, "uovie": uovie}
    return rtr("movie_detail.html", context, context_instance=RequestContext(request))
예제 #36
0
def registration(request):
    if request.POST:
        username = request.POST['username']
        password1 = request.POST['password1']
        password2 = request.POST['password2']
        user_form = UserCreationForm({
            'username': username,
            'password1': password1,
            'password2': password2
        })
        try:
            user_form.save(commit=True)
            return HttpResponseRedirect("home")
        except ValueError:
            return rtr("registration/create_user.html",
                       {'form': user_form},
                       context_instance=RequestContext(request))
    return rtr("registration/create_user.html",
               {'form': UserCreationForm()},
               context_instance=RequestContext(request))
예제 #37
0
파일: views.py 프로젝트: israfilkara/blog
def query_requst(request, query):
    paginator = Paginator(query, 2)
    page = request.GET.get("page")
    try:
        query = paginator.page(page)
    except PageNotAnInteger:
        query = paginator.page(1)
    except EmptyPage:
        query = paginator.page(paginator.num_pages)

    return rtr("index.html", locals(), context_instance=Rqc(request))
예제 #38
0
파일: views.py 프로젝트: rainysun/rainy
def register(req):
	if req.method == 'POST':
		form = Register(req.POST)
		if form.is_valid():
			try:
				user = User.objects.get(username = req.POST.get('name'))
			except:
				user = None
			if user is not None:
				form = Register()
				return rtr('register.html', {
					'error': 'User name already exist!',
					'form': form
					}, RequestContext(req, {}))
			return redirect('/')
	else:
		form = Register()
	return rtr('register.html', {
		'form': form
	}, RequestContext(req, {}))
예제 #39
0
def setup(request, template='setup.html', extra_context=None):
	context = RequestContext(request); 
	Group( name = "3303" ).save();
	Group( name = "5216" ).save();
	Player( name = u"张智勇" , groups=['3303']  ).save();
	Player( name = u"谌尧" , groups=['3303']  ).save();
	Player( name = u"赖宏辉" , groups=['3303']  ).save();
	Player( name = u"丁磊" , groups=['3303']  ).save();
	Player( name = u"张嫣蕾" , groups=['3303']  ).save();
	Player( name = u"苏弟" , groups=['3303']  ).save();
	
	return rtr(template, context,extra_context);
예제 #40
0
def index(request):
    try:
        if request.POST["which_form"] == "signup":
            return HttpResponse("SIGNUP")
        elif request.POST["which_form"] == "login":
            loginform = LoginForm(request.POST)
            signupform = SignUpForm()

            # return HttpResponse(login(request, request.POST['login_email'], request.POST['login_password']))
    except KeyError:
        loginform = LoginForm()
        signupform = SignUpForm()
    return rtr("index.html", {"loginform": loginform, "signupform": signupform})
예제 #41
0
def setting_list(request):
    """
    Shows a list of all the application settings.
    Does pagination, sorting and filtering.
    
    Tests:
    """
    house_cleaning()
    # Filter for the search box
    if request.method == 'GET':
        filter_form = FilterForm(request.GET)
        if filter_form.is_valid():
            cd = filter_form.cleaned_data
            all_settings = AppSetting.objects.all()
            settings = settings_filter(cd['filter'], cd['field'], all_settings)
        elif request.GET.has_key("sort_by") and request.GET.has_key("dir"):
            settings = setting_sort(request.GET["sort_by"], request.GET["dir"])
        else:
            settings = AppSetting.objects.all()


# This filter for permissions was copied from the books view but probably isn't needed here
# Filter according to permissions
#    if not request.user.is_staff:
# Non staff can only see books which are for sale.
#        books = filter(lambda x: x.status == 'F', books)

# Pagination
    page_num = get_number(request.GET, 'page', PAGE_NUM)
    settings_per_page = get_number(request.GET, 'per_page', PER_PAGE)

    paginator = Paginator(settings, settings_per_page)
    try:
        page_of_settings = paginator.page(page_num)
    except (EmptyPage, InvalidPage):
        page_of_settings = paginator.page(paginator.num_pages)

    # Template time
    if request.GET.get('dir', '') == 'asc': dir = 'desc'
    else: dir = 'asc'
    var_dict = {
        'appsettings': page_of_settings,
        'per_page': settings_per_page,
        'page': page_num,
        'field': request.GET.get('field', 'any_field'),
        'filter_text': request.GET.get('filter', ''),
        'dir': dir
    }
    return rtr('appsettings/settings_list.html',
               var_dict,
               context_instance=RC(request))
예제 #42
0
파일: views.py 프로젝트: own2pwn/zihigh
def vpicos(request, template='default.html', extra_context=None):
    context = RequestContext(request)
    ilps = ImgLinkPage.objects.all()
    imglist = []
    for ilp in ilps:
        imglist.extend(ilp.imglist)
    iup = ilps[0].config.ifp
    pics = []

    for fid in imglist:
        purl = iup % (fid)
        pics.append(purl)
    context['pics'] = pics[0:100]
    return rtr(template, context, context_instance=extra_context)
예제 #43
0
파일: views.py 프로젝트: kirnhans/cmuprints
def index(request):
    # Request the context of the request.
    # The context contains information such as the client's machine details, for example.
    context = RequestContext(request)

    # Construct a dictionary to pass to the template engine as its context.
    #updateData()
    Printers.updateData()
    printer_list = Printers.plist
    context_dict = {'printers':printer_list}

    # Return a rendered response to send to the client.
    # We make use of the shortcut function to make our lives easier.
    # Note that the first parameter is the template we wish to use.
    return rtr('index/index.html', context_dict, context)
예제 #44
0
def view_parsing_status(request, template='status.html', extra_context=None):
    context = RequestContext(request); 
    sbpclist = SBPC.objects.all().order_by( 'rank' );
    status_dsc = [ 'danger', 'success', 'danger', 'warning'];
    success_count = 0
    for pc in sbpclist:
        pc.statusinfo = status_dsc[ pc.status ];
        pc.parseconfig = eval( pc.parseconfig );
        success_count += 1 if pc.statusinfo=='success' else 0
    context['schools'] = sbpclist;
    context['count'] = len(sbpclist);
    context['progress'] = (float)(success_count) / (float)(len(sbpclist)) * 100
    context_instance=RequestContext(request);
    context_instance.autoescape=False;
    return rtr(template, context,context_instance);
예제 #45
0
파일: views.py 프로젝트: own2pwn/zihigh
def gae_piclink_cron(request, template='default.html', extra_context=None):
    context = RequestContext(request)
    parser = ImageParser()
    expected_parse_time = 500
    total_parse_time = 0
    cs = ImgParseConfig.objects.all()
    logmsglist = ''
    for c in cs:
        if total_parse_time + expected_parse_time > parse_time_limit: break
        (delta, msg) = parser.parseImageConfig(c.toDict(), c)
        total_parse_time += delta
        logmsglist += msg + '\n'
    logmsglist += 'successfully parsed'
    context['msg'] = logmsglist
    return rtr(template, context, context_instance=extra_context)
예제 #46
0
def menu(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    var_dict = {
        'date_range_form': DateRangeForm(),
    }
    return rtr('books/reports/menu.html', var_dict, context_instance=RC(request))
예제 #47
0
def staff_edit(request):
    """
    Displays an edit page for user permissions
    If the data needs to be updated (e.g. delete or save)
    then it passes the request on to update_staff

    Tests:
        - GETTest
        - StaffTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    if request.method == "POST":
        users = []
        too_many = False
        if request.POST.get('Action', '') == "Delete":
            return update_staff(request)
        users = []
        if request.POST.get('Action', '') == "Edit":
            edit = True
            for key, value in request.POST.items():
                if "idToEdit" in key:
                    users.append(User.objects.get(id=value))
            if len(users) > 1: too_many = True
            if len(users) == 0:
                # They clicked edit without selecting any users. How silly.
                return staff_list(request)
        else:
            users.append(User())
            edit = False
    else:
        too_many = False
        users = [User()]
        edit = False
    var_dict = {
        'edit': edit,
        'too_many': too_many,
        'name': users[0].get_full_name(),
        'student_id': users[0].id,
        'email': users[0].email,
        'current_role': 'admin' if users[0].is_superuser else 'staff'
    }
    template = 'books/staff_edit.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #48
0
def setting_list(request):
    """
    Shows a list of all the application settings.
    Does pagination, sorting and filtering.
    
    Tests:
    """
    house_cleaning()
    # Filter for the search box
    if request.method == 'GET':
        filter_form = FilterForm(request.GET)
        if filter_form.is_valid():
            cd = filter_form.cleaned_data
            all_settings = AppSetting.objects.all()
            settings = settings_filter(cd['filter'], cd['field'], all_settings)
        elif request.GET.has_key("sort_by") and request.GET.has_key("dir"):
            settings = setting_sort(request.GET["sort_by"], request.GET["dir"])
        else:
            settings = AppSetting.objects.all()

# This filter for permissions was copied from the books view but probably isn't needed here
    # Filter according to permissions
#    if not request.user.is_staff:
        # Non staff can only see books which are for sale.
#        books = filter(lambda x: x.status == 'F', books)

    # Pagination
    page_num = get_number(request.GET, 'page', PAGE_NUM)
    settings_per_page = get_number(request.GET, 'per_page', PER_PAGE)

    paginator = Paginator(settings, settings_per_page)
    try:
        page_of_settings = paginator.page(page_num)
    except (EmptyPage, InvalidPage):
        page_of_settings = paginator.page(paginator.num_pages)

    # Template time
    if request.GET.get('dir', '') == 'asc': dir = 'desc'
    else: dir = 'asc'
    var_dict = {
        'appsettings' : page_of_settings,
        'per_page' : settings_per_page,
        'page' : page_num,
        'field' : request.GET.get('field', 'any_field'),
        'filter_text' : request.GET.get('filter', ''),
        'dir' : dir
    }
    return rtr('appsettings/settings_list.html', var_dict, context_instance=RC(request))
예제 #49
0
def staff_edit(request):
    """
    Displays an edit page for user permissions
    If the data needs to be updated (e.g. delete or save)
    then it passes the request on to update_staff

    Tests:
        - GETTest
        - StaffTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    if request.method == "POST":
        users = []
        too_many = False
        if request.POST.get('Action', '') == "Delete":
            return update_staff(request)
        users = []
        if request.POST.get('Action', '') == "Edit":
            edit = True
            for key, value in request.POST.items():
                if "idToEdit" in key:
                    users.append(User.objects.get(id=value))
            if len(users) > 1: too_many = True
            if len(users) == 0:
                # They clicked edit without selecting any users. How silly.
                return staff_list(request)
        else:
            users.append(User())
            edit = False
    else:
        too_many = False
        users = [User()]
        edit = False
    var_dict = {
        'edit' : edit,
        'too_many' : too_many,
        'name' : users[0].get_full_name(),
        'student_id' : users[0].id,
        'email' : users[0].email,
        'current_role' : 'admin' if users[0].is_superuser else 'staff' 
    }
    template = 'books/staff_edit.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #50
0
def index(request):
	try:
		if request.POST['which_form'] == "signup":
			return HttpResponse("SIGNUP")
		elif request.POST['which_form'] == "login":
			loginform = LoginForm(request.POST)
			signupform = SignUpForm()
			
			# return HttpResponse(login(request, request.POST['login_email'], request.POST['login_password']))
	except KeyError:
		loginform = LoginForm()
		signupform = SignUpForm()
	return rtr("index.html",{
		'loginform': loginform,
		'signupform': signupform
	})
예제 #51
0
def user_detail(request, user_id):
    try:
        user = User.objects.get(id=user_id)
        muser = Movie.objects.filter(rating__user=user)
    except User.DoesNotExist:
        return HttpResponseNotFound("NOT FOUND!")
    context = {"user": user, "muser": muser}
    #  I don't quite understand this code yet.
    """if request.user == user.rater:
        if request.POST:
            rating_instance = Rating(user=user)
            form = RatingForm(request.POST, instance=rating_instance)
            if form.is_valid():
                form.save()
            return HttpResponseRedirect(reverse("splat_list"))"""
    return rtr("user_detail.html", context, context_instance=RequestContext(request))
예제 #52
0
def menu(request):
    """
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    var_dict = {
        'date_range_form': DateRangeForm(),
    }
    return rtr('books/reports/menu.html',
               var_dict,
               context_instance=RC(request))
예제 #53
0
def edit_setting(request, setting_id):
    """
    This view is used to update the values for an Application Setting
    
    Tests:
        - GETTest
        - SecurityTest
    """

    if request.method == "POST":
        t = loader.get_template('405.html')
        c = RC(request)
        return HttpResponseNotAllowed(t.render(c), ['POST'])

    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request, {})
        return HttpResponseForbidden(t.render(c))
    try:
        setting_obj = AppSetting.objects.get(id=setting_id)
    except AppSetting.DoesNotExist:
        # We need at least 1 thing to edit, otherwise bad things can happen
        var_dict = {
            'message': "Didn't get any settings to process",
        }
        t = loader.get_template('400.html')
        c = RC(request, var_dict)
        return HttpResponseBadRequest(t.render(c))

    initial = {
        'name': setting_obj.name,
        'value': setting_obj.value,
        'description': setting_obj.description,
    }

    form = SettingForm(initial)
    var_dict = {
        'form': form,
        'name': setting_obj.name,
        'value': setting_obj.value,
        'description': setting_obj.description,
        'id': setting_obj.id,
    }
    template = 'appsettings/update/edit.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #54
0
파일: views.py 프로젝트: own2pwn/zihigh
def gae_picagent_cron(request, template='default.html', extra_context=None):
    context = RequestContext(request)
    ia = ImageAgent()
    expected_parse_time = 100
    total_parse_time = 0
    logmsglist = ''
    ps = ImgParseConfig.objects.filter(type=1)
    for p in ps:
        if total_parse_time + expected_parse_time > parse_time_limit: break
        ilps = ImgLinkPage.objects.filter(config=p, visitcount=-1)
        for ilp in ilps:
            if total_parse_time + expected_parse_time > parse_time_limit: break
            (delta, msg) = ia.cron_ilp_agent(ilp)
            total_parse_time += delta
            logmsglist += msg + '\n'
    logmsglist += 'successfully parsed'
    context['msg'] = logmsglist
    return rtr(template, context, context_instance=extra_context)
예제 #55
0
파일: views.py 프로젝트: own2pwn/zihigh
def admin_db_op(request, template='default.html', extra_context=None):
    context = RequestContext(request)
    if ('op' in request.GET and 'nm' in request.GET):
        op = request.GET['op']
        bn = request.GET['nm']

        if op == 'add':
            try:
                cc = ImgParseConfig.objects.get(bbs=bn)
            except Exception, e:
                c = filter(lambda x: x['bbs'] == bn, BbsBoardParseConfig)
                if len(c) > 0: c = c[0]
                else: raise Http404
                c['config'] = repr(c['config'])
                ImgParseConfig(**c).save()
                msg = 'Admin add config %s from web request successfully added' % (
                    bn)
                logging.info(msg)
                context['msg'] = msg
                return rtr(template, context, context_instance=extra_context)
            msg = 'Admin add config %s from web request failed because record exist' % (
                bn)
            logging.info(msg)
            raise Http404
        elif op == 'update':
            try:
                cc = ImgParseConfig.objects.get(bbs=bn)
                c = filter(lambda x: x['bbs'] == bn, BbsBoardParseConfig)
                if len(c) > 0: c = c[0]
                cc.schoolname = c['schoolname']
                cc.config = repr(c['config'])
                cc.save()
            except Exception, e:
                msg = ' Admin Getting bbs pic board config from web request with name %s failed' % (
                    bn)
                logging.info(msg)
                raise Http404
            msg = 'config for %s updated from web request successfully' % (bn)
            logging.info(msg)
            context['msg'] = msg
예제 #56
0
def metabook_list(request):
    """
    List all metabooks in the database
    
    Tests:
        - GETTest
        - SecurityTest
    """
    # User must be staff or admin to get to this page
    if not request.user.is_staff:
        t = loader.get_template('403.html')
        c = RC(request)
        return HttpResponseForbidden(t.render(c))
    if request.GET.has_key("sort_by") and request.GET.has_key("dir"):
        metabooks = metabook_sort(request.GET["sort_by"], request.GET["dir"])
    else: metabooks = MetaBook.objects.all()

    # Pagination
    page_num = get_number(request.GET, 'page', PAGE_NUM)
    metabooks_per_page = get_number(request.GET, 'per_page', PER_PAGE)

    paginator = Paginator(metabooks, metabooks_per_page)
    try:
        page_of_metabooks = paginator.page(page_num)
    except (EmptyPage, InvalidPage):
        page_of_metabooks = paginator.page(paginator.num_pages)

    # Template time
    if request.GET.get('dir', '') == 'asc': dir = 'desc'
    else: dir = 'asc'
    var_dict = {
        'metabooks' : page_of_metabooks,
        'per_page' : metabooks_per_page,
        'page' : page_num,
        'dir' : 'desc' if request.GET.get('dir', '') == 'asc' else 'asc'
    }

    template = 'books/list_metabooks.html'
    return rtr(template, var_dict, context_instance=RC(request))
예제 #57
0
파일: views.py 프로젝트: own2pwn/zihigh
def vpics(request, template='default.html', extra_context=None):
    context = RequestContext(request)
    ilps = ImgLinkPage.objects.all()
    total_img_count = len(ilps)
    tgc = 100
    chosen_list = random.sample(xrange(total_img_count),
                                int(total_img_count * 0.8))
    pics = []
    collected_img = 0
    for c in chosen_list:
        if collected_img > tgc:
            break
        ilp = ilps[c]
        ic = len(ilp.imglist)
        sample_n = random.randint(0, ic - 1)
        pics.extend(ilp.sample_image(sample_n))
        collected_img = collected_img + sample_n

    context['pics'] = pics
    return rtr(template,
               context,
               context_instance=extra_context,
               mimetype="application/xhtml+xml")
예제 #58
0
def start_newgame(request, template='jljs.html', extra_context=None):
	context = RequestContext(request); 
	playerlist = [];
	playeridlist = [];
	for k,v in request.POST.items():
		if len(k) <= 5:#remove the annoying form WSCR....
			playeridlist.append( v );

	for playerid in playeridlist:
		player = Player.objects.get( id=int(playerid) );
		playerlist.append( player );
	#context['playerlist'] = map( palyer2dict, playerlist );
	game = Game(createtime=datetime.now(),playerlist=playeridlist,ip = request.META['REMOTE_ADDR']);
	game.save();
	precordlist = [];
	for player in playerlist:
		precord = PlayRecord( player = player, game = game );
		precord.save();
		precordlist.append( precord );
	context['game'] = game;
	context['plist'] = combine_pr_dict( playerlist, precordlist );


	return rtr(template, context,extra_context);