def get_win_breakdowns(win_id, request): url = settings.BREAKDOWNS_AP + '?win__id=' + win_id resp = rabbit.get(url, request=request) if resp.status_code != 200: raise Http404 else: return resp.json()['results']
def get_win_advisors(win_id, request): url = settings.ADVISORS_AP + '?win__id=' + win_id resp = rabbit.get(url, request=request) if resp.status_code != 200: raise Http404 else: return resp.json()['results']
def _get_valid_win(self, pk, request): """ Raise SecurityException if Win not valid, else return Win dict """ win_resp = get_limited_win(pk, request) # likely because already submitted if not win_resp.status_code == 200: raise self.SecurityException( """Sorry, this record is not available. If the form has already been submitted, then the record cannot be viewed or resubmitted. """) win_dict = win_resp.json() # is it within security window? created = date_parser(win_dict["created"]) window_extent = created + relativedelta(days=self.ACCEPTANCE_WINDOW) now = timezone.now() if now > window_extent: raise self.SecurityException( "Sorry, this record is no longer available for review.") # is the confirmation already completed? confirmation_url = "{}?win={}".format( settings.CONFIRMATIONS_AP, win_dict['id'], ) confirmation_dict = rabbit.get(confirmation_url).json() if confirmation_dict["count"]: raise self.SecurityException( "Sorry, this confirmation was already completed.") return win_dict
def get_win(win_id, request): url = settings.WINS_AP + '?id=' + win_id resp = rabbit.get(url, request=request) if resp.status_code != 200: raise Http404 else: return resp.json()['results'][0]
def get(self, request): data_response = rabbit.get(settings.CSV_AP, request=request) today_date = datetime.datetime.utcnow().strftime('%Y-%m-%d') filename = 'ew-data-{}.zip'.format(today_date) resp = HttpResponse(data_response, content_type='application/zip') resp['Content-Disposition'] = 'attachment; filename=' + filename return resp
def get(self, request): data_response = rabbit.get(settings.CSV_AP, request=request, stream=True) today_date = datetime.datetime.utcnow().strftime('%Y-%m-%d') filename = 'ew-data-{}.zip'.format(today_date) data_iter = data_response.iter_content(8192) resp = StreamingHttpResponse(data_iter, content_type='application/zip') resp['Content-Disposition'] = 'attachment; filename=' + filename return resp
def dispatch(self, request, *args, **kwargs): response = rabbit.get(settings.IS_LOGGED_IN_AP, request=request) is_logged_in = response.json() if not request.alice_id or not is_logged_in: return self.redirect_to_login(self.request.get_full_path(), force_text(settings.LOGIN_URL)) return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): response = rabbit.get(settings.IS_LOGGED_IN_AP, request=request) is_logged_in = response.json() if not request.alice_id or not is_logged_in: return self.redirect_to_login( self.request.get_full_path(), force_text(settings.LOGIN_URL) ) return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
def get(self, request): data_response = rabbit.get(settings.EW_CSV_AP, request=request) today = datetime.datetime.utcnow() today_str = today.strftime('%Y-%m-%d') if today.month < 4: fy = '{}-{}'.format(today.year-1, today.year) else: fy = '{}-{}'.format(today.year, today.year+1) filename = 'ew-{}-wins-{}.csv'.format(fy, today_str) resp = HttpResponse(data_response.content, content_type='text/csv') resp['Content-Disposition'] = 'attachment; filename=' + filename return resp
def _get_advisor_fields(self): """ Make list of lists of advisor field names and specs """ advisor_schema = rabbit.get(settings.ADVISORS_AP + "schema/").json() advisor_fields = [] num_advisor_fields = 5 for i in range(0, num_advisor_fields): instance_fields = [] for name, spec in advisor_schema.items(): if name == 'win': # don't want a field for the foreign key in the form continue field_name = "advisor_{}_{}".format(i, name) instance_fields.append((name, field_name, spec)) advisor_fields.append(instance_fields) return advisor_fields
def get_context_data(self, **kwargs): context = TemplateView.get_context_data(self, **kwargs) # get all user's wins url = settings.WINS_AP + '?user__id=' + str(self.request.user.id) win_response = rabbit.get(url, request=self.request).json() wins = win_response['results'] # parse dates for win in wins: win['created'] = date_parser(win['created']) win['date'] = date_parser(win['date']) if win['updated']: win['updated'] = date_parser(win['updated']) win['sent'] = [date_parser(d) for d in win['sent']] if win['responded']: win['responded']['created'] = ( date_parser(win['responded']['created']) ) win['last_modified'] = win['updated'] or win['created'] # split wins up for user into unsent, sent and responded unsent = [w for w in wins if not w['complete']] context['unsent'] = sorted(unsent, key=lambda w: w['last_modified']) responded = [w for w in wins if w['responded']] context['responded'] = sorted( responded, key=lambda w: w['company_name'], ) # skip ones that weren't yet sent as well as not responded yet # better to show not sent wins as a seperate table in UI sent = [ w for w in wins if w['complete'] and w['sent'] and w not in context['responded'] ] context['sent'] = sorted( sent, key=lambda w: w['sent'][0], reverse=True, ) return context
def get_context_data(self, **kwargs): context = TemplateView.get_context_data(self, **kwargs) # get all user's wins url = settings.WINS_AP + '?user__id=' + str(self.request.user.id) win_response = rabbit.get(url, request=self.request).json() wins = win_response['results'] # parse dates for win in wins: win['created'] = date_parser(win['created']) win['date'] = date_parser(win['date']) if win['updated']: win['updated'] = date_parser(win['updated']) win['sent'] = [date_parser(d) for d in win['sent']] if win['responded']: win['responded']['created'] = (date_parser( win['responded']['created'])) win['last_modified'] = win['updated'] or win['created'] # split wins up for user into unsent, sent and responded unsent = [w for w in wins if not w['complete']] context['unsent'] = sorted(unsent, key=lambda w: w['last_modified']) responded = [w for w in wins if w['responded']] context['responded'] = sorted( responded, key=lambda w: w['company_name'], ) sent = [ w for w in wins if w['complete'] and w not in context['responded'] ] context['sent'] = sorted( sent, key=lambda w: w['sent'][0], reverse=True, ) return context
def _get_valid_win(self, pk, request): """ Raise SecurityException if Win not valid, else return Win dict """ win_resp = get_limited_win(pk, request) # likely because already submitted if not win_resp.status_code == 200: raise self.SecurityException( """Sorry, this record is not available. If the form has already been submitted, then the record cannot be viewed or resubmitted. """ ) win_dict = win_resp.json() # is it within security window? created = date_parser(win_dict["created"]) window_extent = created + relativedelta(days=self.ACCEPTANCE_WINDOW) now = timezone.now() if now > window_extent: raise self.SecurityException( "Sorry, this record is no longer available for review." ) # is the confirmation already completed? confirmation_url = "{}?win={}".format( settings.CONFIRMATIONS_AP, win_dict['id'], ) confirmation_dict = rabbit.get(confirmation_url).json() if confirmation_dict["count"]: raise self.SecurityException( "Sorry, this confirmation was already completed." ) return win_dict
def get_win_details(win_id, request): url = "{}{}/".format(settings.WIN_DETAILS_AP, win_id) resp = rabbit.get(url, request=request) return resp
def get_limited_win(win_id, request): url = "{}{}/".format(settings.LIMITED_WINS_AP, win_id) resp = rabbit.get(url, request=request) return resp
def get(self, request, *args, **kwargs): rabbit.get(settings.LOGOUT_AP, request=request) # Data server log out response = RedirectView.get(self, request, *args, **kwargs) response.delete_cookie("alice", domain=cookie_domain()) return response