Beispiel #1
0
def create_articles(quantity=20, language='en'):
    activate(language)
    app_config = NewsBlogConfig.objects.first()
    m = Mockup()
    for x in range(quantity):
        m.create_article(
            is_published=True,
            app_config=app_config,
        )
Beispiel #2
0
def create_cms_pages():
    mockup = Mockup()
    site_id = Site.objects.first().id

    mockup.get_or_create_page(
        reverse_id=u'Noticias',
        template=u'base.jade',
        site_id=site_id,
    )
Beispiel #3
0
def create_admin_user():
    m = Mockup()
    user = m.get_or_create_user(email='*****@*****.**')[0]
    user.set_password('admin')
    user.is_staff = True
    user.is_active = True
    user.is_superuser = True
    user.status = user.STATUS_ACCEPTED
    user.save()
    return user
Beispiel #4
0
def create_ministry(datetime=None, quantity=10):
    m = Mockup()
    government_structure = get_current_government_structure()

    for x in range(quantity):
        minister = m.create_public_servant(
            government_structure=government_structure,
        )
        m.create_ministry(
            minister=minister,
            government_structure=government_structure,
        )
Beispiel #5
0
    def setUp(self):
        # cons
        self.total_users = randint(80, 100)
        self.page = 5
        self.newsletter = Newsletter.get_newsletter()

        # mockup
        self.mockup = Mockup()

        # create users
        for i in range(self.total_users):
            self.mockup.create_user(status=UserEnum.STATUS_ACCEPTED)

        self.users = User.objects.all()
Beispiel #6
0
def create_notifications(user=None):
    m = Mockup()

    if user is None:
        user = User.objects.order_by('-last_activity').first()

    event = m.create_event(start_date=timezone.now())

    for kind, name in NotificationKinds.choices:
        m.create_notification(
            user=user,
            kind=kind,
            event=event,
            comment=m.create_comment(event=event),
            from_user=m.create_user(),
        )
Beispiel #7
0
def create_sociocultural_department():
    m = Mockup()
    government_structure = get_current_government_structure()
    m.create_sociocultural_department(
        government_structure=government_structure)
Beispiel #8
0
def create_presidency():
    m = Mockup()
    government_structure = get_current_government_structure()
    m.create_presidency(government_structure=government_structure)
Beispiel #9
0
def get_current_government_structure():
    mockup = Mockup()

    return mockup.get_or_create_government_structure(
        current_government=True
    )[0]
Beispiel #10
0
def load_data_from_digital_gob_api(ministry_with_minister=False):

    # get or create current government structure
    m = Mockup()
    government_structure = get_current_government_structure()

    # Get ministries from public json
    headers = {
        'User-Agent': 'Mozilla/5.0',
    }
    url = 'https://apis.digital.gob.cl/misc/instituciones/_search?size=1000'
    ministries = requests.get(url, headers=headers)
    ministries = ministries.json()['hits']['hits']
    PublicService.objects.filter(name=None).delete()

    for ministry in ministries:
        source = ministry['_source']
        name = source['nombre']

        # see if name starts with "ministerio"
        if name.lower().startswith('ministerio'):
            description = source.get('mision', '')
            defaults = {'description': description}

            if ministry_with_minister:

                # create a minister dummy by ministry
                minister = m.create_public_servant(
                    government_structure=government_structure,
                )
                defaults['minister'] = minister

            # get or create ministry by government structure and name
            ministry_obj = Ministry.objects.get_or_create(
                government_structure=government_structure,
                name=name,
                defaults=defaults,
            )[0]
            if not ministry_obj.name_es:
                ministry_obj.name_es = name

            if not ministry_obj.name_en:
                ministry_obj.name_en = name

            ministry_obj.save()

            '''
            If rest has "servicios dependientes"
            get or create PublicService
            '''
            for service in source.get('servicios_dependientes'):
                name = service.get('nombre')
                url = service.get('url', None)

                if not url:
                    continue

                public_service = PublicService.objects.get_or_create(
                    name=name.strip(),
                    ministry=ministry_obj,
                    defaults={
                        'name_es': name.strip(),
                        'url': url,
                    }
                )[0]

                if not public_service.name_en:
                    public_service.name_en = name

                public_service.save()
Beispiel #11
0
class NewsletterTest(TestCase):
    def setUp(self):
        # cons
        self.total_users = randint(80, 100)
        self.page = 5
        self.newsletter = Newsletter.get_newsletter()

        # mockup
        self.mockup = Mockup()

        # create users
        for i in range(self.total_users):
            self.mockup.create_user(status=UserEnum.STATUS_ACCEPTED)

        self.users = User.objects.all()

    def test_send_newsletter(self):
        """ Test send_newsletter sends emails to users """
        # emails count
        count = 0
        for i in range(int(math.ceil(self.total_users * 1.0 / self.page))):

            # how many emails will be send
            page_user = User.objects.members().exclude(
                newsletters__newsletter__in=[self.newsletter], )[:5].count()

            # sends emails
            Newsletter.send_todays_newsletter()

            # check email box and compare with emails count
            self.assertEqual(len(mail.outbox), count + page_user)

            # update emails count
            count += page_user

        page_user = User.objects.members().exclude(
            newsletters__newsletter__in=[self.newsletter], )[:5].count()

        # no remaining users to send emails
        self.assertEqual(page_user, 0)

        # already sended emails
        self.assertEqual(len(mail.outbox), self.total_users)

    def test_already_sended_newsletter(self):
        """ Test already send_newsletter sends emails to users """
        # has not been sent the newsletter
        total_emails_not_sended = User.objects.members().exclude(
            newsletters__newsletter__in=[self.newsletter], ).count()
        self.assertEqual(total_emails_not_sended, self.total_users)

        # the next bulk create implies the sending of a newsletter
        SentNewsletter.objects.bulk_create([
            SentNewsletter(user=user, newsletter=self.newsletter)
            for user in self.users
        ])

        # has been sent the newsletter
        total_emails_not_sended = User.objects.members().exclude(
            newsletters__newsletter__in=[self.newsletter], ).count()

        # no remaining users to send emails
        self.assertEqual(total_emails_not_sended, 0)