def create_requests_search_set(requester, other_requester): """ Generate 216 unique requests. Every combination of title content, description content, agency description content, title privacy, agency description privacy, and requester is guaranteed to be unique. """ agency_eins = [ ein[0] for ein in Agencies.query.with_entities(Agencies.ein).all() ] for title_private, agency_request_summary_private, is_requester in product( range(2), repeat=3): for title, description, agency_request_summary in product( ("foo", "bar", "qux"), repeat=3): agency_ein = random.choice(agency_eins) date_created = get_random_date(datetime(2015, 1, 1), datetime(2016, 1, 1)) date_submitted = get_following_date(date_created) # TODO: use rf = RequestsFactory() request = Requests(generate_request_id(agency_ein), title=title, description=description, agency_ein=agency_ein, date_created=date_created, date_submitted=date_submitted, due_date=get_due_date(date_submitted, ACKNOWLEDGMENT_DAYS_DUE, 'US/Eastern'), submission=submission_methods.DIRECT_INPUT, status=random.choice( (request_status.OPEN, request_status.CLOSED, request_status.OVERDUE, request_status.IN_PROGRESS, request_status.DUE_SOON)), privacy={ 'title': bool(title_private), 'agency_request_summary': bool(agency_request_summary_private) }) request.agency_request_summary = agency_request_summary create_object(request) user_request = UserRequests( user_guid=(requester.guid if is_requester else other_requester.guid), auth_user_type=(requester.auth_user_type if is_requester else other_requester.auth_user_type), request_id=request.id, request_user_type=user_type_request.REQUESTER, permissions=11) create_object(user_request)
def __init__(self, request_id=None, clean=True): """ :param request_id: request FOIL id :param clean: reset data? """ self.clean = clean date_created = datetime.utcnow() date_submitted = get_following_date(date_created) agency_ein = '0860' self.request = Requests( request_id or generate_request_id(agency_ein), title="I would like my vital essence.", description="Someone has taken my vital essence " "and I would like it back.", agency_ein=agency_ein, date_created=date_created, date_submitted=date_submitted, due_date=get_due_date(date_submitted, ACKNOWLEDGMENT_DAYS_DUE), submission=submission_methods.DIRECT_INPUT, status=request_status.OPEN) create_object(self.request) self.requester = Users( guid=generate_user_guid(user_type_auth.PUBLIC_USER_NYC_ID), auth_user_type=user_type_auth.PUBLIC_USER_NYC_ID, agency_ein=agency_ein, first_name='Jane', last_name='Doe', email='*****@*****.**', email_validated=True, terms_of_use_accepted=True, title='The Janest') create_object(self.requester) self.user_request = UserRequests( user_guid=self.requester.guid, auth_user_type=self.requester.auth_user_type, request_id=self.request.id, request_user_type=user_type_request.REQUESTER, permissions=Roles.query.filter_by( name=PUBLIC_REQUESTER).first().permissions) create_object(self.user_request)
def create_request( self, user, title=None, description=None, agency_request_summary=None, # TODO: agency_request_summary_release_date agency_ein=None, date_created=None, date_submitted=None, due_date=None, category=None, title_privacy=True, agency_request_summary_privacy=True, submission=None, status=request_status.OPEN, tz_name=current_app.config["APP_TIMEZONE"]): """ Create a request as the supplied user. An anonymous requester will be created if the supplied user is an agency user. :rtype: RequestWrapper """ # check due date if (date_created is not None or date_submitted is not None) and due_date is not None: def assert_date(date, date_var_str): assert ( due_date - date ).days >= 1, "due_date must be at least 1 day after " + date_var_str if date_created is not None: assert_date(date_created, "date_created") if date_submitted is not None: assert_date(date_submitted, "date_submitted") # check agency_ein if (agency_ein is not None or self.agency_ein is not None) \ and user.auth_user_type == user_type_auth.AGENCY_USER: assert (agency_ein or self.agency_ein) == user.agency_ein, \ "user's agency ein must match supplied agency ein" agency_ein = agency_ein or self.agency_ein or user.agency_ein or get_random_agency( ).ein # create dates date_created_local = utc_to_local(date_created or datetime.utcnow(), tz_name) date_submitted_local = date_submitted or get_following_date( date_created_local) due_date = due_date or get_due_date(date_submitted_local, ACKNOWLEDGMENT_DAYS_DUE, tz_name) date_created = date_created or local_to_utc(date_created_local, tz_name) date_submitted = date_submitted or local_to_utc( date_submitted_local, tz_name) # create request request = Requests( generate_request_id(agency_ein), title or fake.title(), description or fake.description(), agency_ein=agency_ein, date_created=date_created or datetime.utcnow(), date_submitted=date_submitted, due_date=due_date, category=category, privacy={ "title": title_privacy, "agency_request_summary": agency_request_summary_privacy }, submission=submission or random.choice(submission_methods.ALL), status=status, ) if agency_request_summary is not None: request.agency_request_summary = agency_request_summary if agency_request_summary_privacy is not None: request.agency_request_summary_release_date = calendar.addbusdays( datetime.utcnow(), RELEASE_PUBLIC_DAYS ) if not agency_request_summary_privacy else None create_object(request) request = RequestWrapper(request, self.agency_user) # create events timestamp = datetime.utcnow() create_object( Events(user_guid=user.guid, auth_user_type=user.auth_user_type, request_id=request.id, type_=event_type.REQ_CREATED, timestamp=timestamp, new_value=request.val_for_events)) if user.is_agency: create_object( Events(user_guid=user.guid, auth_user_type=user.auth_user_type, request_id=request.id, type_=event_type.AGENCY_REQ_CREATED, timestamp=timestamp)) # add users if user.is_public or user.is_anonymous_requester: request.add_user(user) if user.is_agency: # then create and add anonymous requester request.add_user(self.__uf.create_anonymous_user()) for admin in Agencies.query.filter_by( ein=agency_ein).one().administrators: request.add_user(admin) # create request doc now that requester is set request.es_create() return request