Пример #1
0
    def __init__(self, election_instance, *args, **kwargs):
        self.election_instance = election_instance

        # Updates Council contact information
        step1 = Step('election_details',
                     forms={'election_details': ElectionInstanceForm},
                     template='backoffice/wizard/council/edit/step1.html',
                     initial={'election_details': self.election_instance},
                     extra_context={
                         'instance': self.election_instance,
                     })
        step2 = Step('council_contact_information',
                     forms={
                         'council_contact_information':
                         CouncilContactInformationForm
                     },
                     template='backoffice/wizard/council/edit/step2.html',
                     initial={
                         'council_contact_information': {
                             'name': self.election_instance.council.name,
                             'address': {
                                 'street':
                                 self.election_instance.council.street,
                                 'number':
                                 self.election_instance.council.house_num,
                                 'postalcode':
                                 self.election_instance.council.postcode,
                                 'city': self.election_instance.council.town,
                             },
                             'website': self.election_instance.council.website,
                             'email': self.election_instance.council.email,
                         }
                     },
                     extra_context={
                         'instance': self.election_instance,
                     })
        # Updates Council additional information
        step3 = Step('council_additional_information',
                     forms={'council_additional_information': CouncilForm},
                     template='backoffice/wizard/council/edit/step3.html',
                     initial={
                         'council_additional_information':
                         self.election_instance.council
                     },
                     extra_context={
                         'instance': self.election_instance,
                     })
        # Updates Council styling setup
        # step4 = Step('council_styling_setup',
        #                      forms={'council_styling_setup': CouncilStylingSetupForm},
        #                      template='backoffice/wizard/council/edit/step4.html',
        #                      initial={'council_styling_setup': self.election_instance.council},
        #                      extra_context={'instance':self.election_instance, })

        #scenario_tree = step1.next(step2.next(step3.next(step4)))
        scenario_tree = step1.next(step2.next(step3))

        template = 'backoffice/wizard/council/edit/base.html',

        super(self.__class__, self).__init__(scenario_tree, template)
Пример #2
0
    def __init__(self, election_instance, *args, **kwargs):
        self.election_instance = election_instance

        # Updates Council contact information
        step1 = Step('election_details',
                     forms={'election_details': ElectionInstanceForm},
                     template='backoffice/wizard/council/edit/step1.html',
                     initial={'election_details': self.election_instance},
                     extra_context={'instance':self.election_instance, })
        step2 = Step('council_contact_information',
                     forms={'council_contact_information': CouncilContactInformationForm},
                     template='backoffice/wizard/council/edit/step2.html',
                     initial={'council_contact_information': {'name': self.election_instance.council.name,
                                                               'address': {'street': self.election_instance.council.street,
                                                                            'number': self.election_instance.council.house_num,
                                                                            'postalcode': self.election_instance.council.postcode,
                                                                            'city': self.election_instance.council.town,
                                                                           },
                                                                'website': self.election_instance.council.website,
                                                                'email': self.election_instance.council.email,}},
                     extra_context={'instance':self.election_instance, })
        # Updates Council additional information
        step3 = Step('council_additional_information',
                     forms={'council_additional_information': CouncilForm},
                     template='backoffice/wizard/council/edit/step3.html',
                     initial={'council_additional_information': self.election_instance.council},
                     extra_context={'instance':self.election_instance, })
        # Updates Council styling setup
        # step4 = Step('council_styling_setup',
        #                      forms={'council_styling_setup': CouncilStylingSetupForm},
        #                      template='backoffice/wizard/council/edit/step4.html',
        #                      initial={'council_styling_setup': self.election_instance.council},
        #                      extra_context={'instance':self.election_instance, })

        #scenario_tree = step1.next(step2.next(step3.next(step4)))
        scenario_tree = step1.next(step2.next(step3))

        template = 'backoffice/wizard/council/edit/base.html',

        super(self.__class__, self).__init__(scenario_tree, template)
Пример #3
0
    def __init__(self, eip, *args, **kwargs):
        self.eip = eip
        self.election_instance = self.eip.election_instance
        step1_forms = dict(
            election_party_contact_form=ElectionPartyContactForm
        )
        step2_forms = dict(
            election_party_additional_form=ElectionPartyAdditionalForm
        )
        step3_forms = dict(
            election_party_description_form=ElectionPartyDescriptionForm
        )
      

        initial = copy.deepcopy(eip.party.__dict__)
        initial.update({'list_length': eip.list_length})
        initial.update({'address': eip.party.address})

        step1 = Step('election_party_contact_form',
                    forms=step1_forms,
                    initial={'election_party_contact_form': initial},
                    template='backoffice/wizard/setupelectionparty/step1.html',
                    extra_context={'instance':self.election_instance, 'eip':self.eip })
        step2 = Step('election_party_additional_form',
                    forms=step2_forms,
                    initial={'election_party_additional_form': initial},
                    template='backoffice/wizard/setupelectionparty/step2.html',
                    extra_context={'instance':self.election_instance, 'eip':self.eip },
                    )
        step3 = Step('election_party_description_form',
                    forms=step3_forms,
                    initial={'election_party_description_form': initial},
                    template='backoffice/wizard/setupelectionparty/step3.html',
                    extra_context={'instance':self.election_instance, 'eip':self.eip })


        template = 'backoffice/wizard/election_party_setup/base.html',
        super(ElectionPartyEditWizard, self).__init__(step1.next(step2.next(step3)), template, *args, **kwargs)
Пример #4
0
 def __init__(self, *args, **kwargs):
     step1_forms = dict(
         initial_ei=InitialElectionInstanceForm,
     )
     # Get the form(s) for inviting a council admin and add them to step1_forms
     idx = 0;
     for profile_form in get_profile_forms('council_admin', 'invite'):
         step1_forms.update({'invite_contact_%s' % idx : profile_form})
         idx += 1
     
     #add step1
     step1 = Step('electioninstance', 
         forms=step1_forms,
         template='backoffice/wizard/addelection/step1.html',
     )
     #default template is the base, each step can override it as needed (for buttons)
     template = 'backoffice/wizard/addelection/base.html',
     super(AddElectionInstanceWizard, self).__init__(step1, template, *args, **kwargs)
Пример #5
0
 def __init__(self, election_instance_id, *args, **kwargs):
     self.election_instance_id = election_instance_id
     self.election_instance = get_object_or_404(ElectionInstance, id=self.election_instance_id)
     step1_forms = dict(
         editei=EditElectionInstanceForm,
     )
     
     step1 = Step('editelectioninstance',
         forms=step1_forms,
         initial=dict(
             editei=self.election_instance
         ),
         template='backoffice/wizard/editelection/step1.html',
         extra_context={'instance':self.election_instance, }
     )
     #default template is the base, each step can override it as needed (for buttons)
     template = 'backoffice/wizard/editelection/base.html',
     super(EditElectionInstanceWizard, self).__init__(step1, template, *args, **kwargs)
Пример #6
0
    def __init__(self, eip, *args, **kwargs):
        self.eip = eip
        self.election_instance = self.eip.election_instance
        step1_forms = dict(
            election_party_contact_form=ElectionPartyContactForm)
        step2_forms = dict(
            election_party_additional_form=ElectionPartyAdditionalForm)
        step3_forms = dict(
            election_party_description_form=ElectionPartyDescriptionForm)

        initial = copy.deepcopy(eip.party.__dict__)
        initial.update({'list_length': eip.list_length})
        initial.update({'address': eip.party.address})

        step1 = Step(
            'election_party_contact_form',
            forms=step1_forms,
            initial={'election_party_contact_form': initial},
            template='backoffice/wizard/setupelectionparty/step1.html',
            extra_context={
                'instance': self.election_instance,
                'eip': self.eip
            })
        step2 = Step(
            'election_party_additional_form',
            forms=step2_forms,
            initial={'election_party_additional_form': initial},
            template='backoffice/wizard/setupelectionparty/step2.html',
            extra_context={
                'instance': self.election_instance,
                'eip': self.eip
            },
        )
        step3 = Step(
            'election_party_description_form',
            forms=step3_forms,
            initial={'election_party_description_form': initial},
            template='backoffice/wizard/setupelectionparty/step3.html',
            extra_context={
                'instance': self.election_instance,
                'eip': self.eip
            })

        template = 'backoffice/wizard/election_party_setup/base.html',
        super(ElectionPartyEditWizard,
              self).__init__(step1.next(step2.next(step3)), template, *args,
                             **kwargs)
Пример #7
0
    def __init__(self, *args, **kwargs):
        # Getting "user_id"
        try:
            self.user_id = kwargs['user_id']
            self.connection_id = kwargs['connection_id']
            self.eip_id = kwargs['eip_id']
            self.election_instance_party = get_object_or_404(
                ElectionInstanceParty, pk=self.eip_id)
            self.user = get_object_or_404(
                self.election_instance_party.candidates,
                candidate__pk=self.user_id).candidate

            if self.connection_id:
                self.connection = self.user.profile.connections.get(
                    pk=self.connection_id)
            else:
                self.connection = None

        except Exception:
            raise

        step1_forms = dict(connection=ConnectionForm, )
        step1 = Step(
            'candidate_edit_connection',
            forms=step1_forms,
            template=
            'backoffice/wizard/politician_profile/connections-add.html',
            initial={'connection': self.connection},
            extra_context={
                'questions':
                range(0, get_question_count(self.election_instance_party)),
                'eip_id':
                self.eip_id,
                'user_id':
                self.user_id
            },
        )
        scenario_tree = step1
        #default template is the base, each step can override it as needed (for buttons)
        template = 'backoffice/wizard/politician_profile/base.html',
        super(PoliticianProfileConnectionWizard,
              self).__init__(scenario_tree, template)
Пример #8
0
 def __init__(self, instance, position, *args, **kwargs):
     self.election_instance = instance
     step1_forms = dict(initial_ep=InitialElectionPartyForm, )
     self.position = position
     idx = 0
     for profile_form in get_profile_forms('party_admin', 'invite'):
         step1_forms.update({'invite_contact_%s' % idx: profile_form})
         idx += 1
     step1 = Step('electionparty',
                  forms=step1_forms,
                  template='backoffice/wizard/addelectionparty/step1.html',
                  initial={'initial_ep': {
                      'position': position
                  }},
                  extra_context={
                      'instance': self.election_instance,
                  })
     #default template is the base, each step can override it as needed (for buttons)
     template = 'backoffice/wizard/addelectionparty/base.html',
     super(AddElectionPartyWizard, self).__init__(step1, template, *args,
                                                  **kwargs)
Пример #9
0
    def __init__(self, id, pos, *args, **kwargs):
        self.election_instance_party_id = id
        self.position = pos
        self.eip = get_object_or_404(ElectionInstanceParty,
                                     pk=self.election_instance_party_id)

        step1_forms = dict()
        idx = 0
        for profile_form in get_profile_forms('candidate', 'invite'):
            step1_forms.update({'invite_contact_%s' % idx: profile_form})
            idx += 1

        step1 = Step('candidate',
                     forms=step1_forms,
                     template='backoffice/wizard/addcandidate/step1.html',
                     extra_context={
                         'instance': self.eip.election_instance,
                         'eip': self.eip
                     })
        template = 'backoffice/wizard/addcandidate/base.html'
        super(AddCandidateWizard, self).__init__(step1, template)
Пример #10
0
    def __init__(self, *args, **kwargs):
        self.user_id, self.election_instance_party_id = kwargs['user_id'], kwargs['election_instance_party_id']
        self.election_instance_party = ElectionInstanceParty.objects.get(id=self.election_instance_party_id)

        self.user = User.objects.get(id=self.user_id)

        self.candidate_profile = self.user.profile

        # Candidacy to whom the answers are coupled.
        self.candidacy = Candidacy.objects.get(election_party_instance=self.election_instance_party,
                                               candidate=self.user)

        candidate_question_answers = self.candidacy.answers.all()
        candidate_question_answers = map(lambda x: (x.id, x.question_id), candidate_question_answers)

        CandidateProfileClass = get_profile_model('candidate')
        if CandidateProfileClass.__name__ != self.user.profile.__class__.__name__:
            raise Exception

        # Getting all the questions applicable
        questions = self.election_instance_party.election_instance.questions.filter(question_type__in=BACKOFFICE_QUESTION_TYPES).order_by('-electioninstancequestion__position')

        steps_tree = []

        # Looping through the questions
        idx = 1;
        for question in questions:
            try:
                # Here we need to get the answer given for the step
                question_answers = []
                for answer_id, question_id in candidate_question_answers:
                    if question_id == question.id:
                        # I realise that it's kind of stupid loop, 'cause I could use simply filter on the initial list
                        # TODO: rewrite when have time, but it works so as well, although it could be done nicer.
                        # In case of multiple answers we make a list of those.
                        if question.question_type in MULTIPLE_ANSWER_TYPES:
                            question_answers.append(answer_id)
                        else:
                            question_answers = answer_id

            except Exception:

                # Otherwise we shall specify an initial value for it
                question_answers = ''

            if not question.question_type in FRONTOFFICE_QUESTION_TYPES:
                secret = 'secret'
            else:
                secret = 'not secret'

            step = Step(str(question.id),
                     forms={str(question.id): AnswerQuestionForm},
                     template='backoffice/wizard/question/answer_add/step.html',
                     initial={str(question.id): {'value': question_answers}}, # TODO: Fix this = load the data!
                     extra_context={'questions': range(0, questions.count()), 'current_question': questions.count() - idx, 'question_title': question.title, 'initial': question_answers, 'secret': secret},
                     form_kwargs={str(question.id): {'question_instance_id': question.id}})
            steps_tree.append(step)
            idx += 1

        scenario_tree = None
        for step in steps_tree:
            if None == scenario_tree:
                scenario_tree = step.next()
            else:
                scenario_tree = step.next(scenario_tree)

        template = 'backoffice/wizard/council/edit/base.html',
        super(AnswerQuestion, self).__init__(scenario_tree, template)
Пример #11
0
    def __init__(self, eip_id, user_id, *args, **kwargs):
        self.eip = get_object_or_404(ElectionInstanceParty, pk=eip_id)
        self.election_instance = self.eip.election_instance
        if user_id is None:
            self.user = self.eip.party.contacts.all()[0]
        else:
            self.user = get_object_or_404(self.eip.party.contacts, pk=user_id)

        if not self.user.profile or self.user.profile.type != 'party_admin':
            raise PermissionDeniedException('Wrong user profile type')

        workingdays = self.user.profile.workingdays or ''
        self.user_profile_dict = {
            'name': {
                'first_name': self.user.profile.first_name,
                'middle_name': self.user.profile.middle_name,
                'last_name': self.user.profile.last_name,
            },
            'gender': self.user.profile.gender,
            #'picture': self.user.profile.picture,
            'telephone': self.user.profile.telephone,
            'workingdays': workingdays.split(','),
        }

        step1_forms = dict(party_contact=ContactProfileForm)
        step2_forms = dict(
            election_party_contact_form=ElectionPartyContactForm)
        step3_forms = dict(
            election_party_additional_form=ElectionPartyAdditionalForm)
        step4_forms = dict(
            election_party_description_form=ElectionPartyDescriptionForm)

        initial = copy.deepcopy(self.eip.party.__dict__)
        initial.update({'list_length': self.eip.list_length})
        initial.update({'address': self.eip.party.address})

        step1 = Step('party_contact',
                     forms=step1_forms,
                     template='backoffice/wizard/partycontact/step1.html',
                     initial={'party_contact': self.user_profile_dict},
                     extra_context={
                         'instance': self.election_instance,
                         'eip': self.eip
                     })
        step2 = Step('election_party_contact_form',
                     forms=step2_forms,
                     initial={'election_party_contact_form': initial},
                     template='backoffice/wizard/partycontact/step2.html',
                     extra_context={
                         'instance': self.election_instance,
                         'eip': self.eip
                     })
        step3 = Step(
            'election_party_additional_form',
            forms=step3_forms,
            initial={'election_party_additional_form': initial},
            template='backoffice/wizard/partycontact/step3.html',
            extra_context={
                'instance': self.election_instance,
                'eip': self.eip
            },
        )
        step4 = Step('election_party_description_form',
                     forms=step4_forms,
                     initial={'election_party_description_form': initial},
                     template='backoffice/wizard/partycontact/step4.html',
                     extra_context={
                         'instance': self.election_instance,
                         'eip': self.eip
                     })

        template = 'backoffice/wizard/partycontact/base.html',
        super(PartyContactWizard,
              self).__init__(step1.next(step2.next(step3.next(step4))),
                             template, *args, **kwargs)
Пример #12
0
    def __init__(self, *args, **kwargs):
        self.election_instance_id = kwargs['election_instance_id']
        self.iframe = kwargs['iframe']
        self.election_instance = get_object_or_404(ElectionInstance, id=self.election_instance_id)
        eips = ElectionInstanceParty.objects.filter(election_instance=self.election_instance)

        elections_candidates = Candidacy.objects.filter(election_party_instance__in=eips)
        self.elections_candidacies = elections_candidates

        # get a list of candidate ids
        self.user_ids=[] # this is a list of user ids
        for elections_candidate in  elections_candidates:
            self.user_ids.append(elections_candidate.candidate_id)
        users = User.objects.filter(pk__in=self.user_ids)
        #candidates = PoliticianProfile.objects.filter(user__in=users).order_by('?')
        #self.candidates = candidates # list of Politician Profiles in this election instance

        #Get all questions
        questions = self.election_instance.questions.filter(question_type__in=FRONTOFFICE_QUESTION_TYPES).order_by('-electioninstancequestion__position')
        steps_tree = []

        # Looping through the questions
        idx = 1;
        for question in questions:
            # Finds out if you should add a no preference option to the question
            if question.has_no_preference:
                empty_label = _('Geen voorkeur')
            else:
                empty_label=None

            if question.question_type in BACKOFFICE_QUESTION_TYPES:
                form = {str(question.id): VisitorAnswerQuestionForm}
                fkwargs={str(question.id): {'question_instance_id': question.id}}

            elif QTYPE_MODEL_PARTY == question.question_type:
                form = {str(question.id): PartyQuestionForm}

                fkwargs= {str(question.id): {'queryset': self.election_instance.parties, 'empty_label':empty_label}}

            elif QTYPE_MODEL_POLITICAL_EXPERIENCE_YEARS == question.question_type:
                form = {str(question.id): VisitorAnswerQuestionForm}
                fkwargs={str(question.id): {'question_instance_id': question.id}}

            elif QTYPE_MODEL_EDUCATION_LEVEL == question.question_type:
                form = {str(question.id): VisitorAnswerQuestionForm}
                fkwargs={str(question.id): {'question_instance_id': question.id}}

            elif QTYPE_MODEL_PROFILE_RELIGION == question.question_type:
                form = {str(question.id): VisitorAnswerQuestionForm}
                fkwargs={str(question.id): {'question_instance_id': question.id}}

            elif QTYPE_MODEL_PROFILE_AGE == question.question_type:
                form = {str(question.id): VisitorAnswerQuestionForm}
                fkwargs={str(question.id): {'question_instance_id': question.id}}

            elif QTYPE_MODEL_PROFILE_GENDER == question.question_type:
                form = {str(question.id): VisitorAnswerQuestionForm}
                fkwargs={str(question.id): {'question_instance_id': question.id}}
            elif QTYPE_MODEL_PROFILE_QUESTION_WEIGHT == question.question_type:
                form = {str(question.id): ThemeAnswerForm}
                fkwargs= {str(question.id): {'queryset': self.election_instance.questions.filter(question_type__in=FRONTOFFICE_QUESTION_TYPES).order_by('electioninstancequestion__position'), 'empty_label':empty_label}}

            elif QTYPE_MODEL_WORK_EXPERIENCE_TYPE == question.question_type:
                form = {str(question.id): WorkTypeQuestionForm}
                fkwargs= {str(question.id): {'queryset': WorkExperienceSector.objects.all(), 'empty_label' :empty_label}}
            elif QTYPE_MODEL_POLITICAL_EXPERIENCE_TYPE == question.question_type:
                form = {str(question.id): PolTypeQuestionForm}
                fkwargs= {str(question.id): {'queryset': PoliticalExperienceType.objects.all(), 'empty_label' :empty_label}}
            else:
                pass

            if self.iframe:
                parent = 'frontoffice/iframe.html'
            else:
                parent = 'frontoffice/wizard/base.html'

            step = Step(str(question.id),
                     forms=form,
                     template='frontoffice/wizard/test/step1.html',
                     extra_context={'questions': range(0, questions.count()), 'current_question': questions.count() - idx, 'question_title': question.get_frontend_title(), 'parent':parent, 'election_instance': self.election_instance},
                     form_kwargs=fkwargs)
            steps_tree.append(step)
            idx += 1

        scenario_tree = None
        for step in steps_tree:
            if None == scenario_tree:
                scenario_tree = step.next()
            else:
                scenario_tree = step.next(scenario_tree)

        template = 'frontoffice/wizard/base.html',
        super(BestCandidate, self).__init__(scenario_tree, template)
Пример #13
0
    def __init__(self, *args, **kwargs):
        # Getting "user_id"
        try:
            self.user_id = kwargs['user_id']
            self.eip_id = kwargs['eip_id']

            self.election_instance_party = get_object_or_404(
                ElectionInstanceParty, pk=self.eip_id)
            self.user = get_object_or_404(
                self.election_instance_party.candidates,
                candidate__pk=self.user_id).candidate

            if self.user.profile is None or self.user.profile.type != 'candidate':
                raise PermissionDeniedException('Wrong profile type')

            self.user_profile_dict = {
                'name': {
                    'first_name': self.user.profile.first_name,
                    'middle_name': self.user.profile.middle_name,
                    'last_name': self.user.profile.last_name,
                },
                'email': self.user.email,
                'initials': self.user.profile.initials,
                'dateofbirth': self.user.profile.dateofbirth,
                'introduction': self.user.profile.introduction,
                'gender': self.user.profile.gender,
                'picture': self.user.profile.picture,
                'movie': self.user.profile.movie,
                'marital_status': self.user.profile.marital_status,
                'num_children': self.user.profile.num_children,
                'religion': self.user.profile.religion,
                'religious_group': self.user.profile.religious_group,
                'province': self.user.profile.province,
                'smoker': self.user.profile.smoker,
                'diet': self.user.profile.diet,
                'fav_news': self.user.profile.fav_news,
                'transport': self.user.profile.transport,
                'charity': self.user.profile.charity,
                'fav_media': self.user.profile.fav_media,
                'fav_sport': self.user.profile.fav_sport,
                'hobby': self.user.profile.hobby,
                'fav_club': self.user.profile.fav_club,
                'fav_pet': self.user.profile.fav_pet,
            }

        except Exception:
            raise

        step1_forms = dict(initial_candidate=PoliticianProfileForm)
        step2_forms = dict(life_candidate=PoliticianProfileLifeForm)
        step3_forms = dict(extra_candidate=PoliticianProfileExtraForm)
        step4_forms = dict(political_candidate=PoliticianProfilePoliticalForm)
        step1 = Step(
            'initial_candidate',
            forms=step1_forms,
            template='backoffice/wizard/politician_profile/step1.html',
            initial={'initial_candidate': self.user_profile_dict},
            extra_context={
                'questions':
                range(0, get_question_count(self.election_instance_party)),
                'eip_id':
                self.eip_id,
                'user_id':
                self.user_id
            },
        )
        step2 = Step(
            'life_candidate',
            forms=step2_forms,
            template='backoffice/wizard/politician_profile/step2.html',
            initial={'life_candidate': self.user_profile_dict},
            extra_context={
                'questions':
                range(0, get_question_count(self.election_instance_party)),
                'eip_id':
                self.eip_id,
                'user_id':
                self.user_id
            },
        )
        step3 = Step(
            'extra_candidate',
            forms=step3_forms,
            template='backoffice/wizard/politician_profile/step3.html',
            initial={'extra_candidate': self.user_profile_dict},
            extra_context={
                'questions':
                range(0, get_question_count(self.election_instance_party)),
                'eip_id':
                self.eip_id,
                'user_id':
                self.user_id
            },
        )
        step4 = Step(
            'political_candidate',
            forms=step4_forms,
            template='backoffice/wizard/politician_profile/step4.html',
            initial={'political_candidate': self.user_profile_dict},
            extra_context={
                'questions':
                range(0, get_question_count(self.election_instance_party)),
                'eip_id':
                self.eip_id,
                'user_id':
                self.user_id
            },
        )

        scenario_tree = step1.next(step2.next(step3.next(step4)))
        #default template is the base, each step can override it as needed (for buttons)

        template = 'backoffice/wizard/politician_profile/base.html',
        super(PoliticianProfileWizard, self).__init__(scenario_tree, template)
Пример #14
0
    def __init__(self, *args, **kwargs):
        # Getting "user_id" and "election_instance_id" passed to the Wizard.
        self.user_id, self.election_instance_id = kwargs['user_id'], kwargs['election_instance_id']
        
        self.election_instance = get_object_or_404(ElectionInstance, pk=self.election_instance_id)
        self.user = get_object_or_404(self.election_instance.council.chanceries, pk=self.user_id)
        
        if self.user.profile is None or self.user.profile.type != 'council_admin':
            raise PermissionDeniedException('Wrong profile type')
        self.chancery_profile = self.user.profile
        '''
        Loading forms and models from other applications.
        '''
        try:
            ChanceryProfileForm = get_profile_forms('council_admin', 'edit')[0]
            ChanceryContactInformationForm = get_profile_forms('council_admin', 'contact_information')[0]
        except Exception:
            raise

        '''
        TODO for checkboxes we need to populate the data properly, because now it doesn't happen.
        '''
        step1_forms = {}
        step1_initial = {}
         # Get the form(s) for chancery profile and add them to step1_forms
        idx = 0
        for profile_form in get_profile_forms('council_admin', 'edit'):
            step1_forms.update({'chancery_registration%s' % idx : profile_form})
            workingdays = self.chancery_profile.workingdays or ''
            step1_initial.update({'chancery_registration%s' % idx : {
                'name': {
                    'first_name': self.chancery_profile.first_name,
                    'middle_name': self.chancery_profile.middle_name,
                    'last_name': self.chancery_profile.last_name,
                },
                'gender': self.chancery_profile.gender,
                'telephone': self.chancery_profile.telephone,
                'workingdays': workingdays.split(','),
            }})
            idx += 1

        #FIXME:  step5_forms = {}
        #         step5_initial = {}
        #          # Get the form(s) for chancery profile and add them to step5_forms
        #         idx = 0
        #         for profile_form in get_profile_forms('council_admin', 'contact_information'):
        #             step5_forms.update({'chancery_contact_information%s' % idx : profile_form})
        #             step5_initial.update({'chancery_contact_information%s' % idx : {
        #                 'website': self.chancery_profile.website,
        #                 'address': {
        #                     'street': self.chancery_profile.street,
        #                     'number': self.chancery_profile.house_num,
        #                     'postalcode': self.chancery_profile.postcode,
        #                     'city': self.chancery_profile.town,
        #                 }
        #             }})
        #             idx += 1

        # Updates ChanceryProfile
        step1 = Step('chancery_registration',
                     forms=step1_forms,
                     template='backoffice/wizard/election_setup/step1.html',
                     initial=step1_initial,
                     extra_context={'instance':self.election_instance, })
        # Updates ElectionInstance
        step2 = Step('election_details',
                     forms={'election_details': ElectionInstanceForm},
                     template='backoffice/wizard/election_setup/step2.html',
                     initial={'election_details': self.election_instance},
                     extra_context={'instance':self.election_instance, })
        # Updates Council
        step3 = Step('council_contact_information',
                     forms={'council_contact_information': CouncilContactInformationForm},
                     template='backoffice/wizard/election_setup/step3.html',
                     initial={'council_contact_information': {
                        'name': self.election_instance.council.name,
                        'address': {
                            'street': self.election_instance.council.street,
                            'number': self.election_instance.council.house_num,
                            'postalcode': self.election_instance.council.postcode,
                            'city': self.election_instance.council.town,
                        },
                        'website': self.election_instance.council.website,
                        'email': self.election_instance.council.email,
                     }},
                     extra_context={'instance':self.election_instance, })
        # Updates Council
        step4 = Step('council_additional_information',
                     forms={'council_additional_information': CouncilForm},
                     template='backoffice/wizard/election_setup/step4.html',
                     initial={'council_additional_information': self.election_instance.council},
                     extra_context={'instance':self.election_instance, })
        # Updates ChanceryProfile
        #FIXME: step5 = Step('chancery_contact_information',
        #                      forms=step5_forms,
        #                      template='backoffice/wizard/election_setup/step5.html',
        #                      initial=step5_initial)
        # Updates Council
        # step6 = Step('council_styling_setup',
        #                      forms={'council_styling_setup': CouncilStylingSetupForm},
        #                      template='backoffice/wizard/election_setup/step6.html',
        #                      initial={'council_styling_setup': self.election_instance.council},
        #                      extra_context={'instance':self.election_instance, })
        #FIXME: scenario_tree = step1.next(step2.next(step3.next(step4.next(step5.next(step6)))))
        #FIXME: scenario_tree = step1.next(step2.next(step3.next(step4.next(step6))))
        scenario_tree = step1.next(step2.next(step3.next(step4)))

        template = 'backoffice/wizard/election_setup/base.html',
        super(self.__class__, self).__init__(scenario_tree, template)
Пример #15
0
    def __init__(self, eip_id, user_id, *args, **kwargs):
        self.eip = get_object_or_404(ElectionInstanceParty, pk=eip_id)
        self.election_instance = self.eip.election_instance
        if user_id is None:
            self.user = self.eip.party.contacts.all()[0]
        else:
            self.user = get_object_or_404(self.eip.party.contacts, pk=user_id)
        
        if not self.user.profile or self.user.profile.type != 'party_admin':
            raise PermissionDeniedException('Wrong user profile type')
                        
        workingdays = self.user.profile.workingdays or ''
        self.user_profile_dict = {
            'name': {'first_name': self.user.profile.first_name, 'middle_name': self.user.profile.middle_name, 'last_name': self.user.profile.last_name, },
            'gender': self.user.profile.gender,
            #'picture': self.user.profile.picture,
            'telephone': self.user.profile.telephone,
            'workingdays': workingdays.split(','),
        }
     

        step1_forms = dict(
            party_contact = ContactProfileForm
        )
        step2_forms = dict(
            election_party_contact_form=ElectionPartyContactForm
        )
        step3_forms = dict(
            election_party_additional_form=ElectionPartyAdditionalForm
        )
        step4_forms = dict(
            election_party_description_form=ElectionPartyDescriptionForm
        )

        initial = copy.deepcopy(self.eip.party.__dict__)
        initial.update({'list_length': self.eip.list_length})
        initial.update({'address': self.eip.party.address})

        step1 = Step('party_contact',
                    forms=step1_forms,
                    template='backoffice/wizard/partycontact/step1.html',
                    initial={'party_contact': self.user_profile_dict },
                    extra_context={'instance':self.election_instance, 'eip':self.eip })
        step2 = Step('election_party_contact_form',
                    forms=step2_forms,
                    initial={'election_party_contact_form': initial},
                    template='backoffice/wizard/partycontact/step2.html',
                    extra_context={'instance':self.election_instance, 'eip':self.eip })
        step3 = Step('election_party_additional_form',
                    forms=step3_forms,
                    initial={'election_party_additional_form': initial},
                    template='backoffice/wizard/partycontact/step3.html',
                    extra_context={'instance':self.election_instance, 'eip':self.eip },
                    )
        step4 = Step('election_party_description_form',
                    forms=step4_forms,
                    initial={'election_party_description_form': initial},
                    template='backoffice/wizard/partycontact/step4.html',
                    extra_context={'instance':self.election_instance, 'eip':self.eip })

        template = 'backoffice/wizard/partycontact/base.html',
        super(PartyContactWizard, self).__init__(step1.next(step2.next(step3.next(step4))), template, *args, **kwargs)
Пример #16
0
    def __init__(self, *args, **kwargs):
        self.user_id, self.election_instance_party_id = kwargs[
            'user_id'], kwargs['election_instance_party_id']
        self.election_instance_party = ElectionInstanceParty.objects.get(
            id=self.election_instance_party_id)

        self.user = User.objects.get(id=self.user_id)

        self.candidate_profile = self.user.profile

        # Candidacy to whom the answers are coupled.
        self.candidacy = Candidacy.objects.get(
            election_party_instance=self.election_instance_party,
            candidate=self.user)

        candidate_question_answers = self.candidacy.answers.all()
        candidate_question_answers = map(lambda x: (x.id, x.question_id),
                                         candidate_question_answers)

        CandidateProfileClass = get_profile_model('candidate')
        if CandidateProfileClass.__name__ != self.user.profile.__class__.__name__:
            raise Exception

        # Getting all the questions applicable
        questions = self.election_instance_party.election_instance.questions.filter(
            question_type__in=BACKOFFICE_QUESTION_TYPES).order_by(
                '-electioninstancequestion__position')

        steps_tree = []

        # Looping through the questions
        idx = 1
        for question in questions:
            try:
                # Here we need to get the answer given for the step
                question_answers = []
                for answer_id, question_id in candidate_question_answers:
                    if question_id == question.id:
                        # I realise that it's kind of stupid loop, 'cause I could use simply filter on the initial list
                        # TODO: rewrite when have time, but it works so as well, although it could be done nicer.
                        # In case of multiple answers we make a list of those.
                        if question.question_type in MULTIPLE_ANSWER_TYPES:
                            question_answers.append(answer_id)
                        else:
                            question_answers = answer_id

            except Exception:

                # Otherwise we shall specify an initial value for it
                question_answers = ''

            if not question.question_type in FRONTOFFICE_QUESTION_TYPES:
                secret = 'secret'
            else:
                secret = 'not secret'

            step = Step(
                str(question.id),
                forms={str(question.id): AnswerQuestionForm},
                template='backoffice/wizard/question/answer_add/step.html',
                initial={str(question.id): {
                             'value': question_answers
                         }},  # TODO: Fix this = load the data!
                extra_context={
                    'questions': range(0, questions.count()),
                    'current_question': questions.count() - idx,
                    'question_title': question.title,
                    'initial': question_answers,
                    'secret': secret
                },
                form_kwargs={
                    str(question.id): {
                        'question_instance_id': question.id
                    }
                })
            steps_tree.append(step)
            idx += 1

        scenario_tree = None
        for step in steps_tree:
            if None == scenario_tree:
                scenario_tree = step.next()
            else:
                scenario_tree = step.next(scenario_tree)

        template = 'backoffice/wizard/council/edit/base.html',
        super(AnswerQuestion, self).__init__(scenario_tree, template)
Пример #17
0
    def __init__(self, *args, **kwargs):
        # Getting "user_id"
        try:
            self.user_id = kwargs['user_id']
            self.eip_id =  kwargs['eip_id']
            
            self.election_instance_party = get_object_or_404(ElectionInstanceParty, pk=self.eip_id)
            self.user = get_object_or_404(self.election_instance_party.candidates, candidate__pk=self.user_id).candidate

            if self.user.profile is None or self.user.profile.type != 'candidate':
                raise PermissionDeniedException('Wrong profile type')

            self.user_profile_dict = {
                'name': {'first_name': self.user.profile.first_name, 'middle_name': self.user.profile.middle_name, 'last_name': self.user.profile.last_name, },
                'email': self.user.email,
                'initials': self.user.profile.initials,
                'dateofbirth': self.user.profile.dateofbirth,
                'introduction': self.user.profile.introduction,
                'gender': self.user.profile.gender,
                'picture': self.user.profile.picture,
                'movie': self.user.profile.movie,

                'marital_status': self.user.profile.marital_status,
                'num_children': self.user.profile.num_children,
                'religion': self.user.profile.religion,
                'religious_group': self.user.profile.religious_group,
                'province': self.user.profile.province,
                'smoker': self.user.profile.smoker,
                'diet': self.user.profile.diet,
                'fav_news': self.user.profile.fav_news,
                'transport': self.user.profile.transport,
                'charity': self.user.profile.charity,
                'fav_media': self.user.profile.fav_media,
                'fav_sport': self.user.profile.fav_sport,
                'hobby': self.user.profile.hobby,
                'fav_club': self.user.profile.fav_club,
                'fav_pet': self.user.profile.fav_pet,

            }
            
        except Exception:
            raise

        step1_forms = dict(initial_candidate = PoliticianProfileForm)
        step2_forms = dict(life_candidate = PoliticianProfileLifeForm)
        step3_forms = dict(extra_candidate = PoliticianProfileExtraForm)
        step4_forms = dict(political_candidate = PoliticianProfilePoliticalForm)
        step1 = Step('initial_candidate',
                    forms=step1_forms,
                    template='backoffice/wizard/politician_profile/step1.html',
                    initial={'initial_candidate': self.user_profile_dict },
                    extra_context={'questions': range(0, get_question_count(self.election_instance_party)),
                    'eip_id': self.eip_id, 'user_id': self.user_id},
                    )
        step2 = Step('life_candidate',
                    forms=step2_forms,
                    template='backoffice/wizard/politician_profile/step2.html',
                    initial={'life_candidate': self.user_profile_dict },
                    extra_context={'questions': range(0, get_question_count(self.election_instance_party)),
                    'eip_id': self.eip_id, 'user_id': self.user_id},
                    )
        step3 = Step('extra_candidate',
                    forms=step3_forms,
                    template='backoffice/wizard/politician_profile/step3.html',
                    initial={'extra_candidate': self.user_profile_dict },
                    extra_context={'questions': range(0, get_question_count(self.election_instance_party)),
                    'eip_id': self.eip_id, 'user_id': self.user_id},
                    )
        step4 = Step('political_candidate',
                    forms=step4_forms,
                    template='backoffice/wizard/politician_profile/step4.html',
                    initial={'political_candidate': self.user_profile_dict },
                    extra_context={'questions': range(0, get_question_count(self.election_instance_party)),
                    'eip_id': self.eip_id, 'user_id': self.user_id},
                    )
                
        scenario_tree = step1.next(step2.next(step3.next(step4)))
        #default template is the base, each step can override it as needed (for buttons)

        template = 'backoffice/wizard/politician_profile/base.html',
        super(PoliticianProfileWizard, self).__init__(scenario_tree, template)