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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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))
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")
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))
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 )
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))
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))
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))
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))
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)
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))
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)
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))
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))
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))
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))
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))
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))
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)
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))
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))
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))
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))
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, {}))
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);
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})
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))
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)
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)
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);
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)
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))
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))
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))
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))
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 })
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))
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))
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)
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
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))
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")
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);