def __init__(self, challenge=None, mobile_access=False): self.id = challenge if (is_integer(challenge) or challenge is None) else challenge.id self.challenge_repository = ChallengeRepository() self.mobile_access = mobile_access challenge = self.challenge # properties self.title = editor.Property(u'').validate(validators.non_empty_string) self.short_title = editor.Property(u'').validate( validators.non_empty_string) self.created_by = editor.Property(u'').validate( lambda t: validators.user_email(t, True)) self.organization = editor.Property(u'').validate( validators.non_empty_string) self.associated_dis = editor.Property(u'').validate( validators.user_email_list) self.starting_date = editor.Property(u'').validate( validators.non_empty_date) self.ending_date = editor.Property(u'').validate( validators.non_empty_date) self.summary = editor.Property(u'').validate( validators.non_empty_string) self.description = editor.Property(u'').validate( validators.non_empty_string) self.mobile_description = editor.Property(u'') self.outcome = editor.Property(u'').validate(validators.string) self.tags = editor.Property(u'').validate( lambda t: validators.word_list(t, duplicates='remove')) if challenge: self.title.set(challenge.title) self.short_title.set(challenge.short_title) self.created_by.set(challenge.created_by.email) self.organization.set(challenge.organization) associated_dis_email = ','.join( user.email for user in challenge.associated_dis) self.associated_dis.set(associated_dis_email) self.starting_date.set( challenge.starting_date.date().strftime('%d/%m/%Y')) self.ending_date.set( challenge.ending_date.date().strftime('%d/%m/%Y')) self.summary.set(challenge.summary) self.description.set(challenge.description) self.mobile_description.set(challenge.mobile_description) self.outcome.set(challenge.outcome) self.tags.set(u', '.join(challenge.tags)) # Because the mobile description is optional in each eureka instance # and the validator will be triggered if we do this before self.mobile_description.validate(validators.non_empty_string)
def __init__(self, idea): self.idea_id = idea if is_integer(idea) else idea.id # first form (context) self.title = editor.Property(self.data.title).validate( validators.non_empty_string) self.description = editor.Property(self.data.description).validate( validators.non_empty_string) self.impact = editor.Property(self.data.impact).validate( validators.non_empty_string) self.benefit_department = editor.Property(self.idea.benefit_department or '') # second form (expert) self.expert_email = editor.Property('').validate( lambda t: validators.user_email(t, required=True)) self.comment = editor.Property('').validate( validators.non_empty_string) # form (evaluation) if self.data.target_date: self.target_date = editor.Property( datetime.strftime(self.data.target_date, '%d/%m/%Y')) else: self.target_date = editor.Property('') self.goal = editor.Property(self.data.goal).validate( validators.FloatValidator) self.revenues_first_year = editor.Property( self.data.revenues_first_year) self.revenues_first_year_value = editor.Property( self.data.revenues_first_year_value).validate( validators.FloatValidator) self.revenues_second_year = editor.Property( self.data.revenues_second_year) self.revenues_second_year_value = editor.Property( self.data.revenues_second_year_value).validate( validators.FloatValidator) self.expenses_first_year = editor.Property( self.data.expenses_first_year) self.expenses_first_year_value = editor.Property( self.data.expenses_first_year_value) self.expenses_second_year = editor.Property( self.data.expenses_second_year) self.expenses_second_year_value = editor.Property( self.data.expenses_second_year_value) self.evaluation_impact = editor.Property(self.data.evaluation_impact) # third form (benefit) self.financial_gain = editor.Property(self.data.financial_gain) self.customer_satisfaction = editor.Property( self.data.customer_satisfaction) self.process_tier_down = editor.Property(self.data.process_tier_down) self.public_image = editor.Property(self.data.public_image) self.environment_improvement = editor.Property( self.data.environment_improvement) self.other_impact = editor.Property(self.data.other_impact) # fourth form (potential) self.innovation_scale = editor.Property( self.data.innovation_scale or 1).validate(validators.integer) self.complexity_scale = editor.Property( self.data.complexity_scale or 1).validate(validators.integer) self.duplicate = editor.Property(self.data.duplicate).validate( validators.integer) self.localization = editor.Property(self.data.localization).validate( validators.integer) self.selected_item = editor.Property('')