def viewallquests(request): """Shows all the active quests so far""" pagetype = "loggedin" user = request.user userdetails = user_handler.getQuestrDetails(user.id) pagetitle = "Active Quests" if userdetails.is_shipper: return redirect('home') else: quests = Quests.objects.filter( ishidden=False, isaccepted=False, questrs_id=userdetails.id, ).order_by('-creation_date') return render(request, 'allquestsviews.html', locals())
def viewDeliveries(request): """Shows all the active quests so far""" pagetype = "loggedin" user = request.user # userdetails = user_handler.getQuestrDetails(user.id) pagetitle = "Deliveries" userdetails = user_handler.getQuestrDetails(user.id) if userdetails.is_shipper: alert_message = request.session.get('alert_message') if request.session.has_key('alert_message'): del request.session['alert_message'] activequests = Quests.objects.filter( ishidden=False, isaccepted=True, shipper=userdetails.id, is_complete=False).order_by('-creation_date')[:10] pastquests = Quests.objects.filter( ishidden=False, is_complete=True, isaccepted=True, shipper=userdetails.id).order_by('-creation_date')[:10] return render(request, 'deliveries.html', locals()) elif userdetails.is_superuser: alert_message = request.session.get('alert_message') if request.session.has_key('alert_message'): del request.session['alert_message'] allquests = Quests.objects.filter( ishidden=False, isaccepted=True, shipper=0).order_by('-creation_date')[:10] return render(request, 'deliveries.html', locals()) else: alert_message = request.session.get('alert_message') if request.session.has_key('alert_message'): del request.session['alert_message'] activequests = Quests.objects.filter( ishidden=False, isaccepted=True, is_complete=False, questrs_id=userdetails.id).order_by('-creation_date')[:10] pastquests = Quests.objects.filter( ishidden=False, is_complete=True, questrs_id=userdetails.id).order_by('-creation_date')[:10] return render(request, 'deliveries.html', locals()) return render(request, 'deliveries.html', locals())
def activate_shipper(courier_id): """Activates Shipper, this should only be used after a shipper doesn't ack a request""" courier = user_handler.getQuestrDetails(int(courier_id)) user_handler.updateCourierAvailability(courier, True) logger.warn("Courier availability set to True")
def accept_quest(request, quest_code): """ Verifies email of the user and redirect to the home page """ user = request.user logger.debug(quest_code) if quest_code: try: transcational = QuestTransactional.objects.get( quest_code__regex=r'^%s' % quest_code) opptransaction = QuestTransactional.objects.get(quest_id=transcational.quest_id, \ shipper_id=transcational.shipper_id, transaction_type=0, status=False) logger.debug("quest transactional") logger.debug(transcational) if transcational: logger.debug("transactional status") logger.debug(transcational.status) if not transcational.status: try: quest = Quests.objects.get( id=int(transcational.quest_id)) questr = user_handler.getQuestrDetails( quest.questrs_id) courier = QuestrUserProfile.objects.get( id=int(transcational.shipper_id)) logger.debug( "%s is the requesting user, where %s is the courier for %s quest" % (request.user, courier, quest)) if quest and courier and request.user == courier: # Set status to true so it won't be used again transcational.status = True # Set rejection status to true so it won't be used again opptransaction.status = True # Set Courier status to available so he can accept multiple quests if he wants to. courier.is_available = True # change this to False if you want to keep a courier as occupied # Set quest's courier to respective courier quest.shipper = courier.id # Set quest as accepted quest.isaccepted = True quest.status = "Accepted" ##Save all the details transcational.save() courier.save() opptransaction.save() quest.save() from libs.twilio_handler import twclient tw = twclient() alert_message = tw.load_acceptquest_notif(quest) logger.warn(alert_message) tw.sendmessage(courier.phone, alert_message) tw.sendmessage( questr.phone, os.environ['SMS_COURIERACCEPTANCE_MSG']) # After 30 minutes send the guy a message asking if the quest is complete send_complete_quest_link.apply_async( (courier.id, quest.id), countdown=1800) couriermanager = user_handler.CourierManager() couriermanager.informCourierAfterAcceptance( courier, quest) couriermanager.informQuestrAfterAcceptance( courier, questr, quest) eventmanager = quest_handler.QuestEventManager() extrainfo = dict( designated_courier=courier.id, detail="quest accepted by courier") eventmanager.setevent(quest, 4, extrainfo) request.session['alert_message'] = dict( type="success", message= "Congratulations! You have accepted the quest!" ) # Setting status of all considered couriers to True considered_couriers = json.loads( quest.considered_couriers.strip(',')) for courier in considered_couriers: courier = user_handler.getQuestrDetails( courier) courier.is_available = True courier.save() return render(request, 'questaccepted.html', locals()) # return redirect('home') except QuestrUserProfile.DoesNotExist: logger.debug('User does not exist') return redirect('home') else: request.session['alert_message'] = dict( type="warning", message= "The link has expired, perhaps you were too late to respond." ) return render(request, 'questtimeout.html', locals()) except QuestTransactional.DoesNotExist: return redirect('home') return redirect('home')