from __future__ import unicode_literals

from django.db import migrations
from django.conf import settings


def add_missing_employee_vouches(apps, schema_editor):
    UserProfile = apps.get_model('users', 'UserProfile')
    IdpProfile = apps.get_model('users', 'IdpProfile')

    for profile in UserProfile.objects.all():
        emails = [idp.email for idp in IdpProfile.objects.filter(profile=profile)]

        email_exists = any([email for email in set(emails)
                            if email.split('@')[1] in settings.AUTO_VOUCH_DOMAINS])
        if email_exists and not profile.vouches_received.filter(
                description=settings.AUTO_VOUCH_REASON, autovouch=True).exists():
            profile.vouch(None, settings.AUTO_VOUCH_REASON, autovouch=True)


def backwards(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('users', '0037_auto_20180720_0305'),
    ]

    operations = [
        migrations.RunPython(add_missing_employee_vouches, backwards),
    ]

from __future__ import unicode_literals

from django.db import migrations
from django.conf import settings
from django.utils.timezone import now


def add_missing_employee_vouches(apps, schema_editor):
    UserProfile = apps.get_model('users', 'UserProfile')
    IdpProfile = apps.get_model('users', 'IdpProfile')

    for profile in UserProfile.objects.all():
        emails = [idp.email for idp in IdpProfile.objects.filter(profile=profile)]

        email_exists = any([email for email in set(emails)
                            if email.split('@')[1] in settings.AUTO_VOUCH_DOMAINS])
        if email_exists and not profile.vouches_received.filter(
                description=settings.AUTO_VOUCH_REASON, autovouch=True).exists():

            profile.vouches_received.create(
                voucher=None,
                date=now(),
                description=settings.AUTO_VOUCH_REASON,
                autovouch=True
            )


def backwards(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('users', '0037_auto_20180720_0305'),
    ]

    operations = [
        migrations.RunPython(add_missing_employee_vouches, backwards),
    ]

Fix datamigration definition, model methods not available when migrating.
Fix datamigration definition, model methods not available when migrating.

  from __future__ import unicode_literals
  
  from django.db import migrations
  from django.conf import settings
+ from django.utils.timezone import now
  
  
  def add_missing_employee_vouches(apps, schema_editor):
      UserProfile = apps.get_model('users', 'UserProfile')
      IdpProfile = apps.get_model('users', 'IdpProfile')
  
      for profile in UserProfile.objects.all():
          emails = [idp.email for idp in IdpProfile.objects.filter(profile=profile)]
  
          email_exists = any([email for email in set(emails)
                              if email.split('@')[1] in settings.AUTO_VOUCH_DOMAINS])
          if email_exists and not profile.vouches_received.filter(
                  description=settings.AUTO_VOUCH_REASON, autovouch=True).exists():
-             profile.vouch(None, settings.AUTO_VOUCH_REASON, autovouch=True)
+ 
+             profile.vouches_received.create(
+                 voucher=None,
+                 date=now(),
+                 description=settings.AUTO_VOUCH_REASON,
+                 autovouch=True
+             )
  
  
  def backwards(apps, schema_editor):
      pass
  
  
  class Migration(migrations.Migration):
  
      dependencies = [
          ('users', '0037_auto_20180720_0305'),
      ]
  
      operations = [
          migrations.RunPython(add_missing_employee_vouches, backwards),
      ]
  
Fix datamigration definition, model methods not available when migrating.
## Code Before:
from __future__ import unicode_literals

from django.db import migrations
from django.conf import settings


def add_missing_employee_vouches(apps, schema_editor):
    UserProfile = apps.get_model('users', 'UserProfile')
    IdpProfile = apps.get_model('users', 'IdpProfile')

    for profile in UserProfile.objects.all():
        emails = [idp.email for idp in IdpProfile.objects.filter(profile=profile)]

        email_exists = any([email for email in set(emails)
                            if email.split('@')[1] in settings.AUTO_VOUCH_DOMAINS])
        if email_exists and not profile.vouches_received.filter(
                description=settings.AUTO_VOUCH_REASON, autovouch=True).exists():
            profile.vouch(None, settings.AUTO_VOUCH_REASON, autovouch=True)


def backwards(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('users', '0037_auto_20180720_0305'),
    ]

    operations = [
        migrations.RunPython(add_missing_employee_vouches, backwards),
    ]

## Instruction:
Fix datamigration definition, model methods not available when migrating.
## Code After:
from __future__ import unicode_literals

from django.db import migrations
from django.conf import settings
from django.utils.timezone import now


def add_missing_employee_vouches(apps, schema_editor):
    UserProfile = apps.get_model('users', 'UserProfile')
    IdpProfile = apps.get_model('users', 'IdpProfile')

    for profile in UserProfile.objects.all():
        emails = [idp.email for idp in IdpProfile.objects.filter(profile=profile)]

        email_exists = any([email for email in set(emails)
                            if email.split('@')[1] in settings.AUTO_VOUCH_DOMAINS])
        if email_exists and not profile.vouches_received.filter(
                description=settings.AUTO_VOUCH_REASON, autovouch=True).exists():

            profile.vouches_received.create(
                voucher=None,
                date=now(),
                description=settings.AUTO_VOUCH_REASON,
                autovouch=True
            )


def backwards(apps, schema_editor):
    pass


class Migration(migrations.Migration):

    dependencies = [
        ('users', '0037_auto_20180720_0305'),
    ]

    operations = [
        migrations.RunPython(add_missing_employee_vouches, backwards),
    ]
