class UserFactory(factory.django.DjangoModelFactory): class Meta: model = 'auth.User' django_get_or_create = ('username', ) username = factory.Sequence(lambda n: 'username_{}'.format(n)) first_name = factory.Faker('first_name') last_name = factory.Faker('last_name') email = factory.LazyAttribute(generate_email) password = factory.PostGenerationMethodCall('set_password', 'password123') is_active = True is_staff = False is_superuser = False last_login = factory.LazyAttribute( lambda _o: datetime.datetime(2000, 1, 1, tzinfo=get_tzinfo())) date_joined = factory.LazyAttribute( lambda _o: datetime.datetime(1999, 1, 1, tzinfo=get_tzinfo())) class Params: superuser = factory.Trait( username=factory.Sequence(lambda n: 'superusername_{0}'.format(n)), is_superuser=True, is_staff=True, is_active=True)
class LearningContainerFactory(factory.django.DjangoModelFactory): class Meta: model = "base.LearningContainer" external_id = factory.Sequence(lambda n: '10000000%02d' % n) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo()))
class LearningUnitYearFactory(DjangoModelFactory): class Meta: model = "base.LearningUnitYear" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) academic_year = factory.SubFactory(AcademicYearFactory) learning_unit = factory.SubFactory(LearningUnitFactory) learning_container_year = factory.SubFactory(LearningContainerYearFactory) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) acronym = factory.Sequence(lambda n: 'LFAC%04d' % n) specific_title = factory.Sequence(lambda n: 'Learning unit year - %d' % n) specific_title_english = factory.Sequence( lambda n: 'Learning unit year english - %d' % n) subtype = factory.Iterator( learning_unit_year_subtypes.LEARNING_UNIT_YEAR_SUBTYPES, getter=operator.itemgetter(0)) credits = factory.fuzzy.FuzzyDecimal(MINIMUM_CREDITS, MAXIMUM_CREDITS) decimal_scores = False status = True session = factory.Iterator( learning_unit_year_session.LEARNING_UNIT_YEAR_SESSION, getter=operator.itemgetter(0)) quadrimester = factory.Iterator( learning_unit_year_quadrimesters.LEARNING_UNIT_YEAR_QUADRIMESTERS, getter=operator.itemgetter(0)) attribution_procedure = None
class AcademicYearFactory(DjangoModelFactory): class Meta: model = "base.AcademicYear" django_get_or_create = ('year', ) external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) year = factory.fuzzy.FuzzyInteger(1950, timezone.now().year) start_date = factory.LazyAttribute( lambda obj: datetime.date(obj.year, 9, 15)) end_date = factory.LazyAttribute( lambda obj: datetime.date(obj.year + 1, 9, 30)) @staticmethod def produce_in_past(from_year=None, quantity=3): if not from_year: from_year = datetime.date.today().year i = 0 while i < quantity: AcademicYearFactory(year=from_year - i) i += 1 @staticmethod def produce_in_future(current_year, quantity=10): i = 1 academic_years = [] while i < quantity + 1: academic_years.append( AcademicYearFactory.build(year=current_year + i)) i += 1 AcademicYear.objects.bulk_create(academic_years)
class TutorFactory(factory.DjangoModelFactory): class Meta: model = 'base.Tutor' external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) person = factory.SubFactory(PersonFactory)
class OfferFactory(factory.django.DjangoModelFactory): class Meta: model = "base.Offer" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) title = factory.Sequence(lambda n: 'Offer %d' %n)
def generate_end_date(offer_year_calendar): if offer_year_calendar.academic_calendar: return datetime.datetime(offer_year_calendar.academic_calendar.end_date.year, offer_year_calendar.academic_calendar.end_date.month, offer_year_calendar.academic_calendar.end_date.day, tzinfo=get_tzinfo()) else: return datetime.datetime(2099, 1, 1, tzinfo=get_tzinfo())
class CampusFactory(factory.DjangoModelFactory): class Meta: model = 'base.Campus' external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) name = factory.Faker('first_name') organization = factory.SubFactory(OrganizationFactory)
def generate_end_date(abstract_calendar): if abstract_calendar.academic_calendar: return datetime.datetime( abstract_calendar.academic_calendar.end_date.year, abstract_calendar.academic_calendar.end_date.month, abstract_calendar.academic_calendar.end_date.day, tzinfo=get_tzinfo()) else: return datetime.datetime(2099, 1, 1, tzinfo=get_tzinfo())
class LearningUnitEnrollmentFactory(factory.django.DjangoModelFactory): class Meta: model = "base.LearningUnitEnrollment" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) date_enrollment = datetime.datetime.now(tz=get_tzinfo()) learning_unit_year = factory.SubFactory(LearningUnitYearFactory) offer_enrollment = factory.SubFactory(OfferEnrollmentFactory)
class ProgramManagerFactory(factory.django.DjangoModelFactory): class Meta: model = "base.ProgramManager" django_get_or_create = ('person', 'offer_year') external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) person = factory.SubFactory(PersonFactory) offer_year = factory.SubFactory(OfferYearFactory)
class AcademicYearFakerFactory(DjangoModelFactory): class Meta: model = "base.AcademicYear" django_get_or_create = ('year',) external_id = factory.Sequence(lambda n: '10000000%02d' % n) changed = fake.date_time_this_decade(before_now=True, after_now=True, tzinfo=get_tzinfo()) start_date = fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=get_tzinfo()) end_date = fake.date_time_this_decade(before_now=False, after_now=True, tzinfo=get_tzinfo()) year = factory.SelfAttribute('start_date.year')
class StudentFactory(factory.DjangoModelFactory): class Meta: model = 'base.Student' django_get_or_create = ('registration_id', ) external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) registration_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) person = factory.SubFactory(PersonFactory)
class SessionExamFactory(factory.DjangoModelFactory): class Meta: model = 'base.SessionExam' external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) number_session = factory.fuzzy.FuzzyInteger(1000) learning_unit_year = factory.SubFactory(LearningUnitYear)
class GroupElementYearFactory(factory.django.DjangoModelFactory): class Meta: model = "base.GroupElementYear" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) parent = factory.SubFactory(EducationGroupYearFactory) child_branch = factory.SubFactory(EducationGroupYearFactory)
class ProposalFolderFactory(factory.django.DjangoModelFactory): class Meta: model = "base.ProposalFolder" django_get_or_create = ('entity', ) external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) entity = factory.SubFactory(EntityFactory) folder_id = factory.fuzzy.FuzzyInteger(100)
class EducationGroupFactory(factory.django.DjangoModelFactory): class Meta: model = "base.EducationGroup" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) start_year = factory.fuzzy.FuzzyInteger(2000, timezone.now().year) end_year = factory.fuzzy.FuzzyInteger(2000, timezone.now().year)
class OfferEnrollmentFactory(factory.django.DjangoModelFactory): class Meta: model = "base.OfferEnrollment" date_enrollment = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) offer_year = factory.SubFactory(OfferYearFactory) student = factory.SubFactory(StudentFactory) enrollment_state = offer_enrollment_state.SUBSCRIBED
class EntityComponentYearFactory(factory.django.DjangoModelFactory): class Meta: model = "base.EntityComponentYear" changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) entity_container_year = factory.SubFactory(EntityContainerYearFactory) learning_component_year = factory.SubFactory(LearningComponentYearFactory) repartition_volume = factory.fuzzy.FuzzyDecimal(9)
class MandateFactory(DjangoModelFactory): class Meta: model = "base.Mandate" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) education_group = factory.SubFactory(EducationGroupFactory) function = factory.Iterator(mandate_types.MANDATE_TYPES, getter=operator.itemgetter(0)) qualification = factory.Sequence(lambda n: 'qualification - %d' % n)
class LearningComponentYearFactory(factory.django.DjangoModelFactory): class Meta: model = "base.LearningComponentYear" external_id = factory.Sequence(lambda n: '10000000%02d' % n) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) learning_unit_year = factory.SubFactory(LearningUnitYearFactory) acronym = factory.Sequence(lambda n: 'A%d' % n) type = factory.Iterator(learning_component_year_type.LEARNING_COMPONENT_YEAR_TYPES, getter=operator.itemgetter(0)) volume_declared_vacant = factory.fuzzy.FuzzyDecimal(0, 50, precision=1)
class EntityCalendarFactory(factory.django.DjangoModelFactory): class Meta: model = "base.EntityCalendar" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) academic_calendar = factory.SubFactory(AcademicCalendarFactory) entity = factory.SubFactory(EntityFactory) start_date = factory.LazyAttribute(generate_start_date) end_date = factory.LazyAttribute(generate_end_date)
class LearningContainerYearFactory(factory.django.DjangoModelFactory): class Meta: model = "base.LearningContainerYear" external_id = factory.Sequence(lambda n: '10000000%02d' % n) academic_year = factory.SubFactory(AcademicYearFactory) learning_container = factory.SubFactory(LearningContainerFactory) container_type = factory.Iterator(learning_container_year_types.LEARNING_CONTAINER_YEAR_TYPES, getter=operator.itemgetter(0)) title = factory.Sequence(lambda n: 'Learning container year - %d' % n) acronym = factory.Sequence(lambda n: 'LCY-%d' % n) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo()))
class SessionExamFactory(factory.DjangoModelFactory): class Meta: model = 'base.SessionExam' external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) number_session = factory.Iterator(number_session_enum.NUMBERS_SESSION, getter=operator.itemgetter(0)) learning_unit_year = factory.SubFactory(LearningUnitYear) offer_year = factory.SubFactory(OfferYearFactory)
class OfferYearEntityFactory(factory.DjangoModelFactory): class Meta: model = 'base.OfferYearEntity' external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) offer_year = factory.SubFactory(OfferYearFactory) entity = factory.SubFactory(EntityFactory) type = factory.Iterator(offer_year_entity_type.TYPES, getter=operator.itemgetter(0))
class LearningContainerYearFactory(factory.django.DjangoModelFactory): class Meta: model = "base.LearningContainerYear" external_id = factory.Sequence(lambda n: '10000000%02d' % n) changed = factory.fuzzy.FuzzyDateTime(datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) acronym = factory.Sequence(lambda n: 'LCY-%d' % n) academic_year = factory.SubFactory(AcademicYearFactory) common_title = factory.Sequence(lambda n: 'Learning container year - %d' % n) common_title_english = factory.Sequence(lambda n: 'Learning container year - %d' % n) type_declaration_vacant = vacant_declaration_type.RESERVED_FOR_INTERNS
class EntityContainerYearFactory(factory.django.DjangoModelFactory): class Meta: model = "base.EntityContainerYear" changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) entity = factory.SubFactory(EntityFactory) learning_container_year = factory.SubFactory(LearningContainerYearFactory) type = factory.Iterator( entity_container_year_link_type.ENTITY_CONTAINER_YEAR_LINK_TYPES, getter=operator.itemgetter(0))
class MandataryFactory(DjangoModelFactory): class Meta: model = "base.Mandatary" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) mandate = factory.SubFactory(MandateFactory) person = factory.SubFactory(PersonFactory) start_date = factory.LazyAttribute(generate_start_date) end_date = factory.LazyAttribute(generate_end_date)
class SessionExamCalendarFactory(factory.DjangoModelFactory): class Meta: model = "base.SessionExamCalendar" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) number_session = factory.Iterator(number_session.NUMBERS_SESSION, getter=operator.itemgetter(0)) academic_calendar = factory.SubFactory( AcademicCalendarFactory, reference=academic_calendar_type.SCORES_EXAM_SUBMISSION)
class OfferYearCalendarFactory(factory.django.DjangoModelFactory): class Meta: model = "base.OfferYearCalendar" external_id = factory.fuzzy.FuzzyText(length=10, chars=string.digits) changed = factory.fuzzy.FuzzyDateTime( datetime.datetime(2016, 1, 1, tzinfo=get_tzinfo()), datetime.datetime(2017, 3, 1, tzinfo=get_tzinfo())) academic_calendar = factory.SubFactory(AcademicCalendarFactory) offer_year = factory.SubFactory(OfferYearFactory) start_date = factory.LazyAttribute(generate_start_date) end_date = factory.LazyAttribute(generate_end_date) education_group_year = factory.SubFactory(EducationGroupYearFactory)
def find_last_entity_version_by_learning_unit_year_id(learning_unit_year_id, entity_type): now = datetime.datetime.now(get_tzinfo()) try: return EntityVersion.objects.current(now).\ filter(entity__entitycontaineryear__learning_container_year__learningunityear__id=learning_unit_year_id, entity__entitycontaineryear__type=entity_type). \ latest('start_date') except EntityVersion.DoesNotExist: return None
def _is_calendar_opened_to_edit_educational_information(*, learning_unit_year_id, **kwargs): submission_dates = find_educational_information_submission_dates_of_learning_unit_year(learning_unit_year_id) permission_denied_msg = _("Not in period to edit description fiche.") if not submission_dates: raise PermissionDenied(permission_denied_msg) now = datetime.datetime.now(tz=get_tzinfo()) value = convert_date_to_datetime(submission_dates["start_date"]) <= now <= \ convert_date_to_datetime(submission_dates["end_date"]) if not value: raise PermissionDenied(permission_denied_msg)
def find_all_current_entities_version(): now = datetime.datetime.now(get_tzinfo()) return find_latest_version(date=now)