def buyer_dashboard_briefs(app, request, buyer_dashboard_users, supplier_user):
    with app.app_context():
        for user in buyer_dashboard_users:
            for status in ['draft', 'live', 'closed']:
                brief = Brief(
                    data=COMPLETE_DIGITAL_SPECIALISTS_BRIEF.copy(),
                    framework=Framework.query.filter(Framework.slug == "digital-outcomes-and-specialists").first(),
                    lot=Lot.query.filter(Lot.slug == 'digital-specialists').first(),
                    published_at=None,
                    closed_at=None,
                    questions_closed_at=None,
                    withdrawn_at=None
                )
                db.session.add(brief)
                db.session.flush()

                if status == 'live':
                    brief.published_at = utcnow()
                    brief.questions_closed_at = utcnow().add(days=1)
                    brief.closed_at = utcnow().add(days=2)
                elif status == 'closed':
                    brief.published_at = utcnow().subtract(weeks=1)
                    brief.questions_closed_at = utcnow().subtract(days=2)
                    brief.closed_at = utcnow().subtract(days=1)

                brief_user = BriefUser(
                    brief_id=brief.id,
                    user_id=user.id
                )
                db.session.add(brief_user)
                db.session.flush()

                # Link briefs with responses and work orders when they're live or closed
                if status == 'live' or status == 'closed':
                    db.session.add(BriefResponse(
                        brief_id=brief.id,
                        supplier_code=supplier_user.supplier_code,
                        data={}
                    ))

                    db.session.add(WorkOrder(
                        brief_id=brief.id,
                        supplier_code=supplier_user.supplier_code,
                        created_at=utcnow(),
                        data={}
                    ))

        db.session.commit()

        yield Brief.query.all()
    def brief(self, app, users):
        with app.app_context():
            now = pendulum.now('utc')
            framework = frameworks_service.find(
                slug='digital-marketplace').one_or_none()
            specialist_lot = lots_service.find(slug='specialist').one_or_none()

            brief = Brief(id=1,
                          data={
                              'openTo': 'selected',
                              'sellers': {
                                  '123': {
                                      'name': 'FriendFace'
                                  },
                                  '456': {
                                      'name': 'FriendFlutter'
                                  }
                              }
                          },
                          framework=framework,
                          lot=specialist_lot,
                          users=users,
                          published_at=now.subtract(days=2),
                          withdrawn_at=None)

            brief.questions_closed_at = now.add(days=3)
            brief.closed_at = now.add(days=5)
            db.session.add(brief)

            db.session.commit()
            yield db.session.query(Brief).first()
Example #3
0
def overview_briefs(app, users):
    now = pendulum.now('utc')
    framework = frameworks_service.find(
        slug='digital-marketplace').one_or_none()
    atm_lot = lots_service.find(slug='atm').one_or_none()
    rfx_lot = lots_service.find(slug='rfx').one_or_none()
    specialist_lot = lots_service.find(slug='specialist').one_or_none()
    training_lot = lots_service.find(slug='training2').one_or_none()

    with app.app_context():
        db.session.add(
            Brief(id=5,
                  data={},
                  framework=framework,
                  lot=specialist_lot,
                  users=users,
                  published_at=None,
                  withdrawn_at=None))

        published_atm = Brief(id=6,
                              data={},
                              framework=framework,
                              lot=atm_lot,
                              users=users,
                              published_at=now.subtract(days=2),
                              withdrawn_at=None)

        published_atm.questions_closed_at = now.add(days=3)
        published_atm.closed_at = now.add(days=5)
        db.session.add(published_atm)

        published_rfx_open_to_one = Brief(id=7,
                                          data={
                                              'sellerSelector': 'oneSeller',
                                              'sellers': {
                                                  '2': {
                                                      'name': 'FriendFace'
                                                  }
                                              }
                                          },
                                          framework=framework,
                                          lot=rfx_lot,
                                          users=users,
                                          published_at=now.subtract(days=2),
                                          withdrawn_at=None)

        published_rfx_open_to_one.questions_closed_at = now.add(days=3)
        published_rfx_open_to_one.closed_at = now.add(days=5)
        db.session.add(published_rfx_open_to_one)

        published_training_open_to_one = Brief(
            id=8,
            data={
                'sellerSelector': 'oneSeller',
                'sellers': {
                    '2': {
                        'name': 'FriendFace'
                    }
                }
            },
            framework=framework,
            lot=training_lot,
            users=users,
            published_at=now.subtract(days=2),
            withdrawn_at=None)

        published_training_open_to_one.questions_closed_at = now.add(days=3)
        published_training_open_to_one.closed_at = now.add(days=5)
        db.session.add(published_training_open_to_one)

        published_specialist_open_to_some = Brief(
            id=9,
            data={
                'numberOfSuppliers': '3',
                'sellerSelector': 'someSellers',
                'sellers': {
                    '2': {
                        'name': 'FriendFace'
                    }
                }
            },
            framework=framework,
            lot=specialist_lot,
            users=users,
            published_at=now.subtract(days=2),
            withdrawn_at=None)

        published_specialist_open_to_some.questions_closed_at = now.add(days=3)
        published_specialist_open_to_some.closed_at = now.add(days=5)
        db.session.add(published_specialist_open_to_some)

        closed_specialist = Brief(id=10,
                                  data={},
                                  framework=framework,
                                  lot=specialist_lot,
                                  users=users,
                                  created_at=now.subtract(days=3),
                                  published_at=now.subtract(days=3),
                                  withdrawn_at=None)

        closed_specialist.questions_closed_at = now.subtract(days=2)
        closed_specialist.closed_at = now.subtract(days=1)
        db.session.add(closed_specialist)

        withdrawn_specialist = Brief(id=11,
                                     data={},
                                     framework=framework,
                                     lot=specialist_lot,
                                     users=users,
                                     created_at=now.subtract(days=2),
                                     published_at=now.subtract(days=3),
                                     withdrawn_at=None)

        withdrawn_specialist.questions_closed_at = now.add(days=3)
        withdrawn_specialist.closed_at = now.add(days=5)
        withdrawn_specialist.withdrawn_at = now
        db.session.add(withdrawn_specialist)

        db.session.commit()
        yield db.session.query(Brief).all()
    def briefs(self, app, users, suppliers):
        framework = frameworks_service.find(slug='digital-marketplace').one_or_none()
        atm_lot = lots_service.find(slug='atm').one_or_none()
        specialist_lot = lots_service.find(slug='specialist').one_or_none()
        rfx_lot = lots_service.find(slug='rfx').one_or_none()
        now = pendulum.now('utc')

        with app.app_context():
            atm_brief = Brief(
                id=1,
                data={
                    'title': 'ATM title',
                    'closedAt': pendulum.today(tz='Australia/Sydney').add(days=14).format('%Y-%m-%d'),
                    'organisation': 'ABC',
                    'summary': 'My ATM summary',
                    'location': [
                        'New South Wales'
                    ],
                    'sellerCategory': '',
                    'openTo': 'all',
                    'requestMoreInfo': 'yes',
                    'evaluationType': [
                        'References',
                        'Case study',
                    ],
                    'attachments': [
                        'TEST3.pdf'
                    ],
                    'industryBriefing': 'TEST',
                    'startDate': 'ASAP',
                    'includeWeightings': True,
                    'evaluationCriteria': [
                        {
                            'criteria': 'TEST',
                            'weighting': '55'
                        },
                        {
                            'criteria': 'TEST 2',
                            'weighting': '45'
                        }
                    ],
                    'contactNumber': '0263635544',
                    'timeframeConstraints': 'TEST',
                    'backgroundInformation': 'TEST',
                    'outcome': 'TEST',
                    'endUsers': 'TEST',
                    'workAlreadyDone': 'TEST'
                },
                framework=framework,
                lot=atm_lot,
                users=users,
                published_at=now,
                withdrawn_at=None
            )

            atm_brief.questions_closed_at = now.add(days=3)
            atm_brief.closed_at = now.add(days=5)
            db.session.add(atm_brief)

            specialist_brief = Brief(
                id=2,
                data={
                    'areaOfExpertise': 'Software engineering and Development',
                    'attachments': [],
                    'budgetRange': '',
                    'closedAt': pendulum.today(tz='Australia/Sydney').add(days=14).format('%Y-%m-%d'),
                    'contactNumber': '0123456789',
                    'contractExtensions': '',
                    'contractLength': '1 year',
                    'comprehensiveTerms': True,
                    'essentialRequirements': [
                        {
                            'criteria': 'TEST',
                            'weighting': '55'
                        },
                        {
                            'criteria': 'TEST 2',
                            'weighting': '45'
                        }
                    ],
                    'evaluationType': [
                        'Responses to selection criteria',
                        'Résumés'.decode('utf-8')
                    ],
                    'includeWeightingsEssential': False,
                    'includeWeightingsNiceToHave': False,
                    'internalReference': '',
                    'location': [
                        'Australian Capital Territory'
                    ],
                    'maxRate': '123',
                    'niceToHaveRequirements': [
                        {
                            'criteria': 'Code review',
                            'weighting': '0'
                        }
                    ],
                    'numberOfSuppliers': '3',
                    'openTo': 'selected',
                    'organisation': 'Digital Transformation Agency',
                    'preferredFormatForRates': 'dailyRate',
                    'securityClearance': 'noneRequired',
                    'securityClearanceCurrent': '',
                    'securityClearanceObtain': '',
                    'securityClearanceOther': '',
                    'sellers': {
                        '1': {
                            'name': 'Seller 1'
                        }
                    },
                    'sellerCategory': '6',
                    'sellerSelector': 'oneSeller',
                    'startDate': pendulum.today(tz='Australia/Sydney').add(days=14).format('%Y-%m-%d'),
                    'summary': 'My specialist summary',
                    'title': 'Specialist title'
                },
                framework=framework,
                lot=specialist_lot,
                users=users,
                published_at=now,
                withdrawn_at=None
            )

            specialist_brief.questions_closed_at = now.add(days=3)
            specialist_brief.closed_at = now.add(days=5)
            db.session.add(specialist_brief)

            rfx_brief = Brief(
                id=3,
                data={
                    'title': 'TEST',
                    'closedAt': pendulum.today(tz='Australia/Sydney').add(days=14).format('%Y-%m-%d'),
                    'organisation': 'ABC',
                    'summary': 'TEST',
                    'workingArrangements': 'TEST',
                    'location': [
                        'New South Wales'
                    ],
                    'sellerCategory': '1',
                    'sellers': {
                        '1': {
                            'name': 'Seller 1'
                        }
                    },
                    'evaluationType': [
                        'Response template',
                        'Written proposal'
                    ],
                    'proposalType': [
                        'Breakdown of costs'
                    ],
                    'requirementsDocument': [
                        'TEST.pdf'
                    ],
                    'responseTemplate': [
                        'TEST2.pdf'
                    ],
                    'startDate': 'ASAP',
                    'contractLength': 'TEST',
                    'includeWeightings': True,
                    'essentialRequirements': [
                        {
                            'criteria': 'TEST',
                            'weighting': '55'
                        },
                        {
                            'criteria': 'TEST 2',
                            'weighting': '45'
                        }
                    ],
                    'niceToHaveRequirements': [],
                    'contactNumber': '0263635544'
                },
                framework=framework,
                lot=specialist_lot,
                users=users,
                published_at=now,
                withdrawn_at=None
            )

            rfx_brief.questions_closed_at = now.add(days=3)
            rfx_brief.closed_at = now.add(days=5)
            db.session.add(rfx_brief)

            yield db.session.query(Brief).all()