def complain(request): _user = request.user user = User.objects.filter(uid=user["uid"]) user = user[0] oid = request.POST.get("oid", None) notes = request.POST.get("notes", None) if not oid or not notes: return Jsonify({"status":False, "error":"1101", "error_message":u"输入信息不足。"}) oid = int(oid) _order = Order.objects.filter(oid=oid) if not _order: return Jsonify({"status":False, "error":"1302", "error_message":u"订单不存在。"}) else: _order = _order[0] if _order.state!=5: return Jsonify({"status":False, "error":"1303", "error_message":u"用户无权进行此操作。"}) else: comp = Complaint(order_id=oid, user_id=_user["uid"], notes=notes, state=0) comp.save() _order.state = 9 itemList = _order.itemList thingList = getThingList(itemList) address = Address.objects.filter(adid=_order.addr_id) if address: address = address[0] address = address.toDict() else: address="" _order.save() return Jsonify({"status":True, "error":"", "error_message":"", "order":_order.toDict(), "thinglist":thingList, "address":address, "detail":u"同仓存取快递费: 6元。"})
def AddComplaint(request) : context = RequestContext(request) c = Complaint() # <to-do-some-sanity-checking> if request.method == 'GET' : c = Complaint() # figure out the userid c.complainant = GetUserFromRequest(request) c.location = request.GET.get('location', 'unknown') c.complaint_time = datetime.datetime.now() c.status = 'OPEN' if 'informer' in request.GET : c.informer = request.GET.get('informer') c.save() return HttpResponseRedirect('/sos_action/update/%s' % (c.id))
class ComplaintResourceTestCase(unittest.TestCase): def setUp(self): # Rinnegan.app.config['TESTING'] = True # Rinnegan.app.config['MAIL_SUPPRESS_SEND'] = True self.app = Rinnegan.app.test_client() self.mail = Rinnegan.mail self.complainant = Complainant(account_handle="goyal_arush", account_type="twitter") self.complainant.save() self.supervisor = Supervisor(email="*****@*****.**", password="******") self.supervisor.save() self.complaint = Complaint(text="random text", timestamp=datetime.datetime.now(), status="waiting", complainant_id=self.complainant.id) self.complaint.save() def get_complaints(self, skip, limit): return self.app.get('/v1/complaints/ofstatus/all/' + str(skip) + '/' + str(limit)) def get_complaint(self, c_id): return self.app.get('/v1/complaints/' + c_id) def set_complaint_status(self, c_id, status): posted_dict = {'status': status} return self.app.post('/v1/complaints/' + c_id + '/status', data=json.dumps(posted_dict), content_type='application/json') def login(self, email, password): posted_dict = {'email': email, 'password': password} return self.app.post('/v1/login', data=json.dumps(posted_dict), content_type='application/json') def logout(self): return self.app.post('/v1/logout', content_type='application/json') def comment(self, c_id, text): posted_dict = {'text': text} return self.app.post('/v1/complaints/' + c_id + '/comments', data=json.dumps(posted_dict), content_type='application/json') def dejsonify(self, string): obj = json.loads(string.decode('utf-8')) return obj def test_get_complaints(self): rv = self.get_complaints(0, 5) j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) self.login(self.supervisor.email, self.supervisor.password) rv = self.get_complaints(0, 5) j = self.dejsonify(rv.data) self.assertEqual(j['success'], True) rv = self.get_complaints(100, 200) j = self.dejsonify(rv.data) self.assertEqual(j['success'], True) self.assertEqual(len(j['complaints']), 0) def test_get_complaint(self): rv = self.get_complaint(self.complaint.id) j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) self.login(self.supervisor.email, self.supervisor.password) rv = self.get_complaint(self.complaint.id) j = self.dejsonify(rv.data) self.assertEqual(j['success'], True) rv = self.get_complaint("random_string") j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) def test_set_complaint_status(self): rv = self.set_complaint_status(self.complaint.id, "rejected") j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) self.login(self.supervisor.email, self.supervisor.password) rv = self.set_complaint_status("randomid", "rejected") j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) rv = self.set_complaint_status(self.complaint.id, "somestatus") j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) rv = self.set_complaint_status(self.complaint.id, "rejected") j = self.dejsonify(rv.data) self.assertEqual(j['success'], True) rv = self.get_complaint(self.complaint.id) j = self.dejsonify(rv.data) self.assertEqual(j['complaint']['status'], "rejected") def test_comment(self): comment_text = "Hey Bro!" rv = self.comment(self.complaint.id, comment_text) j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) self.login(self.supervisor.email, self.supervisor.password) rv = self.comment("randomid", comment_text) j = self.dejsonify(rv.data) self.assertEqual(j['success'], False) rv = self.comment(self.complaint.id, comment_text) j = self.dejsonify(rv.data) self.assertEqual(j['success'], True) self.complaint = Complaint.get(self.complaint.id) latest_comment = self.complaint.get_latest_comment() self.assertEqual(comment_text, latest_comment.text) def tearDown(self): self.logout() self.supervisor.delete() self.complaint.delete() self.complainant.delete()
def complaint_send(request): u=request.session['user'] lab_name=request.session['lab'] description=request.POST['describe'] computer=request.session['computer'] type_of_complaint=request.session['type_of_complaint'] if type_of_complaint == "Hardware" or type_of_complaint=="Software": selected= request.POST['selection'] else: selected="other" construct_complaint=[] conn = connect() cur = conn.cursor() cur.execute ("select dead_stock_no,ip_address,mac_address from account_computer where computer_name='%s'"%computer) for row in cur.fetchall (): construct_complaint.append (row[0]) construct_complaint.append (row[1]) construct_complaint.append (row[2]) #Update Logic------------------------------ comp=Computer.objects.get(computer_name=computer) l=Lab.objects.get(name=lab_name) l.complaints_made=l.complaints_made+1 incharge=l.incharge assistant=l.assistant l.save() if type_of_complaint == "Software" or type_of_complaint== "Hardware": fatal=CommonComplaints.objects.get(complaint=selected) if 'Printer' in fatal.complaint: p=Printers.objects.get(computer=comp.id) p.complaints_made=p.complaints_made+1 p.status='OFF' p.save() if 'Scanner' in fatal.complaint: s=Scanners.objects.get(computer=comp.id) s.complaints_made=s.complaints_made+1 s.status='OFF' s.save() complaint_update=Complaint(lab=l,computer_name=comp,complaint=CommonComplaints.objects.get(complaint=selected),\ date=time.strftime("%Y-%m-%d"),status='Pending') complaint_update.save() if fatal.critical == 1: comp.status='OFF' comp.complaints_made=comp.complaints_made+1 comp.description=comp.description+':\nCompalint'+selected+' '+description comp.save() mailContent= '\nlab:'+lab_name+ '\nComputer: ' + computer+'\nType:'+type_of_complaint+'\nComplaint:'+selected+ '\n'+ description +\ '\nDeadStock No.:'+ str(construct_complaint[0])+'\nIP:'+ str(construct_complaint[1])+'\nMAC:'+ \ str(construct_complaint[2]) + '\n' \ + '\n\n\nThis is an auto-generated email from our website.' send_mail('Complaint from:' + u, mailContent, '*****@*****.**',[incharge,assistant], fail_silently=False) return HttpResponseRedirect('http://kedark7893.pythonanywhere.com/Thank-You')