Esempio n. 1
0
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元。"})
Esempio n. 2
0
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()
Esempio n. 4
0
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')