def new_card(id): new_card = Card( user_id=current_user.id, card_type=id, ) db.session.add(new_card) db.session.commit() return new_card.to_dict()
def gen(request): if request.user.is_staff: if not request.POST: form = CardForm() return render(request, "card/generate.html", locals()) else: form = CardForm(request.POST) if form.is_valid(): card = Card() card.name = form.cleaned_data["name"] card.value = form.cleaned_data["value"] card.long_desc = form.cleaned_data["long_desc"] card.active = form.cleaned_data["active"] card.issuer = request.user card.save() record = History(action=1, user=request.user, card=card) record.save() return render( request, "submit.html", { "success": True, "title": "一張卡片就此誕生!", "content": "生成了一張卡片 %s 含有 %d 點" % (card.name, card.value), "next_page": reverse('generate card'), }) else: raise PermissionDenied
def test_get_cards_filter_today(test_client: TestClient, test_db_session: Session): new_stack = Stack(name="stack1") add_commit_refresh(test_db_session, new_stack) card_one_info = { "name": "card1", "stack_id": new_stack.id, "quality": 3, "prev_easiness": 2.5, "easiness": 2.36, "prev_interval": 1, "interval": 1, "prev_repetitions": 1, "repetitions": 2, "prev_review_date": str(date.today() - timedelta(days=1)), "review_date": str(date.today()), } card_two_info = { "name": "card2", "stack_id": new_stack.id, "quality": 3, "prev_easiness": 2.5, "easiness": 2.36, "prev_interval": 1, "interval": 6, "prev_repetitions": 2, "repetitions": 3, "prev_review_date": str(date.today() - timedelta(days=10)), "review_date": str(date.today() - timedelta(days=4)), } card_three_info = { "name": "card3", "stack_id": new_stack.id, "quality": 3, "prev_easiness": 2.5, "easiness": 2.36, "prev_interval": 1, "interval": 6, "prev_repetitions": 2, "repetitions": 3, "prev_review_date": str(date.today()), "review_date": str(date.today() + timedelta(days=1)), } card_one = Card(**card_one_info) card_two = Card(**card_two_info) card_three = Card(**card_three_info) add_commit_refresh(test_db_session, card_one, card_two, card_three) response = test_client.get("/cards?filter=today") assert response.status_code == 200 data = response.json() # only card_one and card_two would be included assert len(data) == 2 assert {"id": card_one.id, **card_one_info} in data assert {"id": card_two.id, **card_two_info} in data assert {"id": card_three.id, **card_three_info} not in data
def search(): Set.reindex() Card.reindex() search_term = request.args.get('search_term') sets_query, sets_total = Set.search(search_term, 1, 5) cards_query, cards_total = Card.search(search_term, 1, 10) sets = sets_query.all() cards = cards_query.all() print(cards) return { 'sets': [set.to_dict() for set in sets], 'cards': [card.to_dict() for card in cards] }
def gen(request): if request.user.has_perm('app.add_card'): # only teamleader can use if not request.POST: form = CardForm() return render(request, "card/generate.html", locals()) else: form = CardForm(request.POST) if form.is_valid(): with transaction.atomic(): card = Card() card.name = form.cleaned_data["name"] card.value = form.cleaned_data["value"] card.long_desc = form.cleaned_data["long_desc"] card.active = form.cleaned_data["active"] card.issuer = request.user card.save() record = History(action=1, user=request.user, card=card) record.save() return render( request, "submit.html", { "success": True, "title": "一張卡片就此誕生!", "content": "生成了一張卡片 %s 含有 %d 點" % (card.name, card.value), "next_page": reverse('view card', args=[card.cid]), }) else: return render(request, "submit.html", { "success": False, "title": "產生卡片失敗", "content": "要不要去戳戳系統管理員呢?" "(如果是POST奇怪的資料,可能會收到彈力繩喔ˊ_>ˋ)" }) else: raise PermissionDenied
def edit(request, id=None): if not request.user.is_staff: raise PermissionDenied else: try: user = User.objects.get(username=id) except ObjectDoesNotExist: return render(request, "submit.html", {"content":"<h1>Wrong user</h1><meta http-equiv=\"refresh\" content=\"3; url=/\">", "title":"錯誤!"}, status=404) if not is_player(user): return render(request, "submit.html", {"content":"<h1>Wrong user</h1><meta http-equiv=\"refresh\" content=\"3; url=/\">", "title":"錯誤!"}, status=404) else: if not request.POST: form = PlayerForm({"name": user.username, "value": card.value, "long_desc": card.long_desc, "active": card.active, "retrieved": card.retrieved, "modified_reason": ""}) return render(request, "card/edit.html", locals()) else: form = CardForm(request.POST) if form.is_valid(): card = Card() card.name = form.cleaned_data["name"] card.value = form.cleaned_data["value"] card.long_desc = form.cleaned_data["long_desc"] card.active = form.cleaned_data["active"] card.modified_reason = form.cleaned_data["modified_reason"] card.save() return render(request, "submit.html", {"content": "<h1>Submitted.</h1><meta http-equiv=\"refresh\" content=\"3; url=/card/" + card.cid + "\">"})
def booster_pack(): req = request.json for card in req['cards']: new_card = Card(user_id=current_user.id, card_type=int(card)) db.session.add(new_card) db.session.commit() return {'success': True}
def sign_up(): """ Creates a new user and logs them in """ form = SignUpForm() form['csrf_token'].data = request.cookies['csrf_token'] if form.validate_on_submit(): user = User(username=form.data['username'], email=form.data['email'], password=form.data['password'], free_currency=1000) db.session.add(user) db.session.commit() new_deck = Deck(user_id=user.to_dict()['id'], name=f"{user.to_dict()['username']}'s deck") db.session.add(new_deck) db.session.commit() card_arr = random.choice(decks) for card in card_arr: new_card = Card( user_id=user.to_dict()['id'], card_type=card, deck_id=new_deck.to_dict_lite()['id'], ) db.session.add(new_card) db.session.commit() login_user(user) return user.to_dict() return {'errors': validation_errors_to_error_messages(form.errors)}, 401
def seed_deck(): tarot_cards = [ Card( name=data['name'], deck=data['deck'], suit=data['suit'], value=data['value'], img=data['img'], description=data['description'], upright_keywords=data['uprightKeywords'], upright_general_meaning=data['uprightGeneralMeaning'], upright_genereal_quote=data['uprightGeneralQuote'], upright_career_keywords=data['uprightCareerKeywords'], upright_love_keywords=data['uprightLoveKeywords'], upright_finances_keywords=data['uprightFinancesKeywords'], upright_career_meaning=data['uprightCareerMeaning'], upright_love_meaning=data['uprightLoveMeaning'], upright_finances_meaning=data['uprightFinancesMeaning'], reversed_keywords=data['reversedKeywords'], reversed_general_meaning=data['reversedGeneralMeaning'], reversed_genereal_quote=data['reversedGeneralQuote'], reversed_career_keywords=data['reversedCareerKeywords'], reversed_love_keywords=data['reversedLoveKeywords'], reversed_finances_keywords=data['reversedFinancesKeywords'], reversed_career_meaning=data['reversedCareerMeaning'], reversed_love_meaning=data['reversedLoveMeaning'], reversed_finances_meaning=data['reversedFinancesMeaning'], astrology=data['astrology'], element=data['element'], zodiac=data['zodiac'], ) for data in tarot_card_data ] db.session.add_all(tarot_cards)
def create_card(project_id, username): project = Project.query.get_or_404(project_id) # Right now, status is being set to backlog because that's where the button is that leads to this route form = CardForm() if form.validate_on_submit(): card = Card(title=form.title.data, description=form.description.data, author=project) db.session.add(card) db.session.commit() ident = card.id flash('You have successfully created a new card', 'success') socketio.emit('cardCreate', { 'card_id': ident, 'priority': 'black', 'title': form.title.data, 'project_id': project_id }, broadcast=True) return redirect( url_for('project', project_id=project.id, username=current_user.username)) return render_template('create_card.html', title='Create Card', form=form, legend='Create Card')
def test_card(app): card = Card( title='My card', description='Some awesome card', ) assert card.title == 'My card' assert card.description == 'Some awesome card'
def post(self): # Create Card data = parser.parse_args() title = data['title'] description = data['description'] owner_id = data['owner_id'] try: new_card = CardModel(title=title, description=description, owner_id=uuid.UUID(owner_id)) new_card.save() return {'card': marshal(new_card, permitted)}, HTTPStatus.CREATED except Exception as error: return {'message': str(error)}, HTTPStatus.INTERNAL_SERVER_ERROR
def gift(request): if user_permission(request.user) < 3: raise PermissionDenied if request.method == 'GET': return render(request, 'staff/gift.html', {"form": FastSendForm()}) else: form = FastSendForm(request.POST) if form.is_valid(): player = form.cleaned_data['player'] card = Card() # hard code present = request.user.first_name if present == "": present = '祝福' with transaction.atomic(): card.name = "來自 %s 的%s" % (request.user.last_name, present) card.value = form.cleaned_data['point'] card.comment = form.cleaned_data['message'] card.active = True card.retrieved = True card.issuer = request.user card.capturer = player card.save() record_reciever = History( action=0xfeed, user=player.user, card=card, comment="從 %s 收到一張卡片" % request.user.get_full_name()) record_reciever.save() record_sender = History( action=0xfeed, user=request.user, card=card, comment="給了 %s (%s)" % (player.user.get_full_name(), player.user.username)) record_sender.save() return render( request, "submit.html", { "success": True, "title": "成功發送卡片", "content": "成功將卡片送給 %s 了!" % player.user.get_full_name(), }) else: return render( request, "submit.html", { "success": False, "title": "發送卡片失敗", "content": "要不要去戳戳系統管理員呢?" "(如果是POST奇怪的資料,可能會收到彈力繩喔ˊ_>ˋ)" })
def create_card(): """ 写一个新的卡片 把卡片绑定到卡集 参数: 卡片的问题 卡片的答案 卡片的类型 卡集的id 用户的手机号 :return: """ req_json = request.get_json() question = req_json.get("question") answer = req_json.get("answer") answer_html = req_json.get("answer_html") delta = req_json.get("delta") box_id = req_json.get("box_id") color = req_json.get("color") user_id = g.user_id # 用于身份认证,或许可以缓存session验证或者token if not all([question, answer, box_id, color, delta,answer_html]): return jsonify(code=4000, msg="参数不完整") msg_data = question + "内容的过度" + answer access_token = g.access_token if msg_unsafe(access_token, msg_data): return jsonify(code=4010, msg="提交含有敏感内容") try: # 查找卡集 box = Box.query.filter_by(id=box_id, user_id=user_id, is_active=True).first() if box is None: return jsonify(code=4002, msg="卡集不存在或者你不是卡集拥有者") delta = json.dumps(delta) # 将对象转换为字符串存到数据库 在前端可以通过 JSON.parse(delta) 字符串转换为json对象 # 创建卡片 card = Card(question=question, answer=answer, color=color, delta=delta,answer_html=answer_html) # card = Card(question=question, answer=answer, color=color) box.cards.append(card) db.session.add(card) db.session.add(box) # 提交数据更改 try: db.session.commit() except Exception as e: print(e) db.session.rollback() return jsonify(code=4003, msg="提交数据失败。数据库出现异常") return jsonify(code=200, msg="创建成功", card_id=card.id, card_question=card.question) except Exception as e: print(e) db.session.rollback() return jsonify(code=4004, msg="创建失误")
def test_update_card(test_client: TestClient, test_db_session: Session): new_stack = Stack(name="stack1") add_commit_refresh(test_db_session, new_stack) new_card = { "name": "card1", "stack_id": new_stack.id, "quality": 3, "prev_easiness": 2.5, "easiness": 2.36, "prev_interval": 1, "interval": 1, "prev_repetitions": 1, "repetitions": 2, "prev_review_date": "2021-01-01", "review_date": "2021-01-02", } new_card = Card(**new_card) add_commit_refresh(test_db_session, new_card) test_request_data = { "name": "new_card", "quality": 5, "prev_review_date": "2021-01-02" } response = test_client.patch(f"/cards/{new_card.id}", json=test_request_data) assert response.status_code == 200 data = response.json() verify_resp_data_against_req_data(test_request_data, data) assert data["prev_easiness"] == 2.5 assert data["prev_interval"] == 1 assert data["prev_repetitions"] == 1 assert data["prev_review_date"] == "2021-01-02" assert data["easiness"] == 2.6 assert data["interval"] == 1 assert data["repetitions"] == 2 assert data["review_date"] == "2021-01-03" assert "id" in data card_id = data["id"] response = test_client.get(f"/cards/{card_id}") assert response.status_code == 200 data = response.json() verify_resp_data_against_req_data(test_request_data, data) assert data["prev_easiness"] == 2.5 assert data["prev_interval"] == 1 assert data["prev_repetitions"] == 1 assert data["prev_review_date"] == "2021-01-02" assert data["easiness"] == 2.6 assert data["interval"] == 1 assert data["repetitions"] == 2 assert data["review_date"] == "2021-01-03" assert data["id"] == card_id
def post(data): lane = Lane.objects.filter(id=ObjectId(data.get('lane_id'))).first() card = Card() card.title = data.get('title') card.description = data.get('description', None) card.lane = lane card.save() lane.update(add_to_set__cards=card) return card
def czar_select(text): player = Player.query.get( session['player'] ) if player.czar: old_czar = player.id player.game.stage = 'selecting' for p in player.game.players.order_by(func.random()): if not p.uuid == player.uuid: card_text = p.hand.filter(Card.playing).first().card.text if card_text == text: p.points += 1 emit('round_win', (p.uuid, ), room=player.game.id) break else: return point_board = {} for p in player.game.players.order_by(Player.id): p.hand.filter(Card.playing).delete(synchronize_session='fetch') p.czar = False point_board[p.uuid] = p.points while p.hand.count() < 8: c = Card(card=WhiteCards.query.order_by(func.random()).first(), hand=p) db.session.add(c) player.game.card = BlackCards.query.order_by(func.random()).first() new_czar = player.game.players.order_by(func.random()).first() while new_czar.id == old_czar: new_czar = player.game.players.order_by(func.random()).first() new_czar.czar = True db.session.commit() for p in player.game.players: p.ready = False print(p.nickname) cards = '\t'.join([x.card.text for x in p.hand.order_by(Card.id)]) emit('refresh', (cards, new_czar.uuid, player.game.card.text, point_board, ), room=p.sid) db.session.commit()
def add_card(): form = AddCard() if form.validate_on_submit(): card = Card(type=1, front=form.front.data, back=form.back.data, author=current_user) db.session.commit() flash('added card') return redirect(url_for('cards', username=current_user.username)) return render_template('add.html', form=form)
def CreateCard(roomid): #Get all Squares allSquares = db.session.query(Square).all() s = [] for curSquare in allSquares: s.append(curSquare.id) random.shuffle(s) randID = GetRandID() cr = Card(id=randID,s11=s[0],s12=s[1],s13=s[2],s14=s[3],s15=s[4],s21=s[5],s22=s[6],s23=s[7],s24=s[8],s25=s[9],s31=s[10],s32=s[11],s33=s[12],s34=s[13],s35=s[14],s41=s[15],s42=s[16],s43=s[17],s44=s[18],s45=s[19],s51=s[20],s52=s[21],s53=s[22],s54=s[23],s55=s[24]) db.session.add(cr) db.session.commit() return cr
def cardform(): form = AddCardForm() if form.validate_on_submit(): card = Card(addressState=form.addressState.data,expMonth=form.expMonth.data, expYear=form.expYear.data, addressCity=form.addressCity.data,addressZip=form.addressZip.data,cvv=form.cvv.data, number=form.number.data) db.session.add(card) db.session.commit() flash ('Card was added succesfully!') # flash('Add requested for the card {}'.format( # form.number.data)) return redirect(url_for('index')) return render_template('addCardForm.html',title='Add Card', form=form)
def card(card_id): if request.method == "GET": card = Card.query.get(card_id) return jsonify(card.to_dict()) # return jsonify(card) elif request.method == "POST": if (card_id) == '': # No sanitization card = Card(request.form) else: card = Card.query.get(card_id) # No sanitization data = request.form card.json_data = json.dumps(request.form) card.save() return json.dumps({ 'success': True, 'id': card.id }), 200, { 'ContentType': 'application/json' }
def new_card(): if request.method == "GET": return render_template("new.html") else: u = User.query.get(current_user.id) question = request.form["question"] topic = request.form["topic"] print("here") card = Card(question, topic, author=u) print("here2") db.session.add(card) db.session.commit() return redirect("/")
def seed_ai_decks(): for d in decks: new_deck = Deck( user_id=1, name='Default Deck', ) db.session.add(new_deck) db.session.commit() for card in d: new_card = Card(user_id=1, card_type=card, deck_id=new_deck.to_dict()['id']) db.session.add(new_card) db.session.commit()
def populate_customers(): #This will populate the customers and the cards of them. data = [ (1, u'Ben', u'Ashby',u'+447845775449', u'5 Magna Close', u'AL51RH',123412341234121,2018,3,121,1999), (2, u'Taran', u'Bola', u'+447400832054', u'6 Winfield Place', u'LS23AB',123412341234122,2021,21,134,2005), (3, u'Dan', u'Aves', u'+447803849940', u'15 Beckett Garden', u'AL69JE',123412341234123,2019,6,156,2000), (4, u'Matt', u'Cutts', u'+447908858831', u'6 Alistair Drive', u'CH630LH',123412341234124,2020,3,987,1956), (5, u'Till', u'System', u'+447999999999', u'Osprey Cinema', u'LS2 9BE',123412341234125,2020,3,987,1927) ] for d in data: customer = Customer(customer_id=d[0], customer_f_name=d[1], customer_s_name=d[2],customer_dob=datetime.date(d[10],2,22),customer_mobile=d[3],customer_address=d[4], customer_postcode=d[5]) customer.card.append(Card(card_number=encode(d[6]), card_expiry=encode(int(str(d[7]) + str(d[8]) )),card_cvv=encode(d[9]))) db.session.add(customer) db.session.commit()
def gift(request): if request.method == 'GET': return render(request, 'staff/gift.html', {"form": FastSendForm()}) else: form = FastSendForm(request.POST) if form.is_valid(): player = form.cleaned_data['player'] card = Card() card.name = "來自 %s 的祝福" % request.user.get_full_name() card.value = form.cleaned_data['point'] card.comment = form.cleaned_data['message'] card.active = True card.retrieved = True card.issuer = request.user card.capturer = player card.save() record_reciever = History( action=0xfeed, user=player.user, card=card, comment="從 %s 收到一張卡片" % request.user.get_full_name()) record_reciever.save() record_sender = History( action=0xfeed, user=request.user, card=card, comment="給了 %s (%s)" % (player.user.get_full_name(), player.user.username)) record_sender.save() return render( request, "submit.html", { "success": True, "title": "成功發送卡片", "content": "成功將卡片送給 %s 了!" % player.user.get_full_name(), }) else: return render( request, "submit.html", { "success": False, "title": "發送卡片失敗", "content": "要不要去戳戳系統管理員呢?" })
def init_db(test_client): with test_client: db.create_all() u = User(username='******', email='*****@*****.**') u.set_password('password') d1 = Deck(deckname='Fall Out Boy songs', user=u) Card(term='This is side one.', definition='Flip me over.', deck=d1) Card(term='I know I am not your favorite record.', definition='But the songs you grow to like.', deck=d1) d2 = Deck(deckname='Feels Like This songs', user=u) Card(term='No more stuttering.', definition='Two hearts fluttering.', deck=d2) Card(term='This Narrow Gate.', definition='But by this grace, there is room for two.', deck=d2) db.session.add(u) db.session.commit() # TODO must admit I don't understand how yield is applicable, pytest. yield db # what does this fixture have in common with generators? db.drop_all()
def add_people(request): people = People() people.name = '后羿%d' % random.randrange(100) people.sex = '男' people.save() card = Card() card.num = random.randrange(100000, 200000) card.cid = people card.save() return HttpResponse('添加成功')
def create_card( client, creator=None, name="Test Card", description="Test description", image="yay.jpg", ): with client.application.test_request_context(): if not creator: creator = create_admin(client) card = Card( name=name, description=description, image=image, creator=creator ) db.session.add(card) db.session.commit() return card
def add_person(request): per = Person() per.name = '郭靖%d' % random.randrange(100) per.sex = '男' per.age = '%d' % random.randrange(18, 40) per.save() card = Card() card.num = '413016199701219876' card.pid = per card.save() return HttpResponse('数据关联成功')
def lite(request, tt=None): denomination = [32, 64, 128, 256, -128, -32, -64] if not request.user.has_perm('app.gen_card'): raise PermissionDenied if tt is not None: try: tt = int(tt) except: return render( request, "submit.html", { "success": False, "title": "發送卡片失敗", "content": "我幫你綁好繩子了," "你要自己跳還是我推你跳呢?(本繩載重20g)" }) if tt not in range(0, len(denomination)): return render( request, "submit.html", { "success": False, "title": "發送卡片失敗", "content": "要不要去戳戳系統管理員呢?" "(如果是POST奇怪的資料,可能會收到彈力繩喔ˊ_>ˋ)" }) with transaction.atomic(): card = Card() present = request.user.first_name if present == "": present = '祝福' card.name = "來自 %s 的%s" % (request.user.last_name, present) card.value = denomination[tt] card.active = True card.retrieved = False card.issuer = request.user card.save() record = History(action=1, user=request.user, card=card) record.save() return redirect('view card', card.cid) else: return render(request, 'staff/lite.html', locals())
def index(): form = CardForm() if form.validate_on_submit(): score = Card(number=form.card.data, user_id=current_user.id, about=form.about.data, type=form.type.data, money=form.money.data, time_end=form.time_end.data) if Card.query.filter_by(number=score.number).first(): flash('Your number is not correct!') else: db.session.add(score) flash('Your number is correct!') db.session.commit() return redirect(url_for('index')) return render_template("index.html", title='New card', form=form)
def admin_add_card(): check_admin() form = AddCardForm() if form.validate_on_submit(): find_card = db.session.query(Card).filter_by( user_id=form.uid.data).first() find_user = db.session.query(User).filter_by(id=form.uid.data).first() if find_user is None: flash('Fail! No such user.') elif find_card is None: card = Card(user_id=form.uid.data, borrow_num=form.ceil.data) db.session.add(card) db.session.commit() flash('Succeed to add card for user {}'.format(form.uid.data)) else: flash('The user already has a card!') return render_template('admin_add_card.html', form=form)
def newcard(boardid, listid): form = NewCardForm() if form.validate_on_submit(): board = Board.query.filter_by(id=boardid).first_or_404() listx = List.query.filter_by(id=listid).first_or_404() card = Card(name=form.name.data, desc=form.desc.data, timestart=form.timestart.data, deadline=form.deadline.data, list_id=listx.id, priority=form.priority.data.upper()) listx.cards.append(card) db.session.add(card) db.session.commit() flash('New card created!') return redirect(url_for('showlist', boardid=boardid, listid=listid)) return render_template('newcard.html', title='Create new card', form=form)
def create_card(): if request.method == "GET": return render_template("create.html") else: if request.form: title = request.form.get("title") content = request.form.get("content") receiver = request.form.get("receiver") writer = request.form.get("writer") img = request.files["img"] img_url = _s3_img_upload(img) card = Card(title, content, receiver, writer, img_url) db.session.add(card) db.session.commit() return render_template("test.html", img=img_url)
def gen(request): if request.user.is_staff: if not request.POST: form = CardForm() return render(request, "card/generate.html", locals()) else: form = CardForm(request.POST) if form.is_valid(): card = Card() card.name = form.cleaned_data["name"] card.value = form.cleaned_data["value"] card.long_desc = form.cleaned_data["long_desc"] card.active = form.cleaned_data["active"] card.modified_reason = form.cleaned_data["modified_reason"] card.save() return render( request, "submit.html", {"content": '<h1>Submitted.</h1><meta http-equiv="refresh" content="3; url=/card/' + card.cid + '">'}, ) else: raise PermissionDenied
def lite(request, tt=None): denomination = [32, 64, 128, 256, -128, -32, -64] if user_permission(request.user) < 2: raise PermissionDenied if tt is not None: try: tt = int(tt) except: return render( request, "submit.html", { "success": False, "title": "發送卡片失敗", "content": "我幫你綁好繩子了," "你要自己跳還是我推你跳呢?(本繩載重20g)"}) if tt not in range(0, len(denomination)): return render( request, "submit.html", { "success": False, "title": "發送卡片失敗", "content": "要不要去戳戳系統管理員呢?" "(如果是POST奇怪的資料,可能會收到彈力繩喔ˊ_>ˋ)" }) with transaction.atomic(): card = Card() present = request.user.first_name if present == "": present = '祝福' card.name = "來自 %s 的%s" % (request.user.last_name, present) card.value = denomination[tt] card.active = True card.retrieved = False card.issuer = request.user card.save() record = History(action=1, user=request.user, card=card) record.save() return redirect('view card', card.cid) else: return render(request, 'staff/lite.html',locals())