def settings_groups_delete(self):
        _ = self.request.translate

        group_id = self.request.matchdict['group_id']
        if group_id != 1:
            group = DBSession.query(Group).get(group_id)
            DBSession.delete(group)

        return HTTPFound(location='/settings/groups/')
    def settings_users_delete(self):
        if self.request.redirect_forbidden:
            return HTTPFound(location='/forbidden/')
        elif userhelpers.checkUserPasswordChangeNeed(self.request):
            return HTTPFound(location='/settings/me/edit/')
        _ = self.request.translate
        
        user_id = self.request.matchdict['user_id']
        if user_id != 1:
            user = DBSession.query(User).get(user_id)

            userAudit = UserAudit(self.request.user.id)
            userAudit.model = 'User'
            userAudit.model_id = user.id
            userAudit.action = 'Deleted'
            userAudit.revision = user.metadata_revision
            DBSession.add(userAudit)
            DBSession.flush()
            
            DBSession.delete(user)
            
            self.request.session.flash(_(u"User deleted."), 'success')
        
        return HTTPFound(location='/settings/users/')
    def medical_card_edit(self):
        if self.request.redirect_forbidden:
            return HTTPFound(location='/forbidden/')
        elif userhelpers.checkUserPasswordChangeNeed(self.request):
            return HTTPFound(location='/settings/me/edit/')
        _ = self.request.translate

        card_id = self.request.matchdict['card_id']
        
        medicalCard = DBSession.query(MedicalCard).filter(MedicalCard.id==card_id).first()
        
        participant_id = medicalCard.participant_id

        participant = DBSession.query(Participant).filter(Participant.id==participant_id).first()
        participant.getParticipantMedicalData()

        medicalCardEvents = DBSession.query(MedicalCardEvent).filter(MedicalCardEvent.card_id==card_id).order_by(MedicalCardEvent.event_time).all()
        
        medicalParticipantAdditional = DBSession.query(MedicalParticipantAdditional).filter(MedicalParticipantAdditional.participant_id==participant_id).first()        

        reasons = DBSession.query(MedicalReason).order_by(MedicalReason.title).all()
        treatmenttypes = DBSession.query(MedicalTreatmentType).order_by(MedicalTreatmentType.title).all()
        methodsofarrival = DBSession.query(MedicalMethodOfArrival).order_by(MedicalMethodOfArrival.title).all()

        if self.request.method == 'POST':
            # save card
            medicalCard.hospital_in = helpers.parseFinnishDateFromString(self.request.POST.get('hospital_in'), True)
            medicalCard.hospital_out = helpers.parseFinnishDateFromString(self.request.POST.get('hospital_out'))
            medicalCard.method_of_arrival = int(self.request.POST.get('method_of_arrival'))
            medicalCard.medications = int(self.request.POST.get('medications'))
            medicalCard.medications_info = self.request.POST.get('medications_info').strip()
            medicalCard.treatment_type = int(self.request.POST.get('treatment_type'))
            medicalCard.reason_id = int(self.request.POST.get('reason_id'))
            medicalCard.diagnose = self.request.POST.get('diagnose').strip()
            medicalCard.followup_going = self.request.POST.get('followup_going').strip()
            medicalCard.followup_notes = self.request.POST.get('followup_notes').strip()
            medicalCard.card_status = int(self.request.POST.get('card_status').strip())
            
            DBSession.add(medicalCard)
            DBSession.flush()
                        
            #save participant additional
            medicalParticipantAdditional.hetu = self.request.POST.get('additional_hetu').strip()
            medicalParticipantAdditional.notes = self.request.POST.get('additional_notes').strip()
            medicalParticipantAdditional.insurance = int(self.request.POST.get('additional_insurance'))
            medicalParticipantAdditional.insurance_company = self.request.POST.get('additional_insurance_company').strip()
            medicalParticipantAdditional.insurance_number = self.request.POST.get('additional_insurance_number').strip()
            DBSession.add(medicalParticipantAdditional)
            DBSession.flush()
            
            #save card event
            
            if len(self.request.POST.getall('event_id')) > 0:
                event_ids = self.request.POST.getall('event_id')
                if len(medicalCardEvents) > 0:
                    for medicalCardEvent in medicalCardEvents:
                        if str(medicalCardEvent.id) not in event_ids:
                            DBSession.delete(medicalCardEvent)
                    DBSession.flush()
                
                event_times = self.request.POST.getall('event_time')
                event_writers = self.request.POST.getall('event_writer')
                event_types = self.request.POST.getall('event_type')
                event_notes = self.request.POST.getall('event_notes')

                for key, event_note in enumerate(event_notes):
                    if event_note != '':
                        event_time = event_times[key]
                        event_id = event_ids[key]
                        event_writer = event_writers[key]
                        event_type = event_types[key]
                        
                        event_time_dt = helpers.parseFinnishDateFromString(event_time)

                        if int(event_ids[key]) == 0:
                            tmp_event = MedicalCardEvent()
                            tmp_event.card_id = medicalCard.id
                        else:
                            tmp_event = DBSession.query(MedicalCardEvent).get(event_ids[key])
                        tmp_event.notes = event_note
                        tmp_event.event_time = helpers.parseFinnishDateFromString(event_time)
                        tmp_event.writer = event_writer
                        tmp_event.event_type = event_type

                        DBSession.add(tmp_event)
                        DBSession.flush()

            elif len(medicalCardEvents) > 0:
                for event in medicalCardEvents:
                    DBSession.delete(event)
                DBSession.flush()
            
            # save participant medical
            if len(self.request.POST.getall('medical_diet'))>0:
                participant.medical_data.diets = DBSession.query(ParticipantMedicalDiet).filter(ParticipantMedicalDiet.id.in_(self.request.POST.getall('medical_diet'))).all()
                            
            if len(self.request.POST.getall('medical_food_allergy'))>0:
                participant.medical_data.food_allergies = DBSession.query(ParticipantMedicalFoodAllergy).filter(ParticipantMedicalFoodAllergy.id.in_(self.request.POST.getall('medical_food_allergy'))).all()

            participant.medical_data.additional_food = self.request.POST.get('medical_additional_food').strip()
            participant.medical_data.drugs_help = int(self.request.POST.get('medical_drugs_help'))
            participant.medical_data.illnesses = self.request.POST.get('medical_illnesses').strip()

            if len(self.request.POST.getall('medical_allergy'))>0:
                participant.medical_data.allergies = DBSession.query(ParticipantMedicalAllergy).filter(ParticipantMedicalAllergy.id.in_(self.request.POST.getall('medical_allergy'))).all()

            participant.medical_data.additional_health = self.request.POST.get('medical_additional_health').strip()
            participant.medical_data.week_of_pregnancy = self.request.POST.get('medical_week_of_pregnancy').strip()

            participant.medical_data.participant_id = participant_id
            DBSession.add(participant.medical_data)
            DBSession.flush()
            

            return HTTPFound(location='/medical/card/view/'+str(medicalCard.id)+'/')


        self.request.bread.append({'url':'/medical/', 'text':_('Medical')})
        self.request.bread.append({'url':'/medical/card/edit/'+str(card_id)+'/', 'text':_('Edit card')})
        return {'medicalCard':medicalCard, 'participant':participant, 'medicalParticipantAdditional':medicalParticipantAdditional, 'medicalCardEvents':medicalCardEvents, 'reasons':reasons, 'treatmenttypes':treatmenttypes, 'methodsofarrival':methodsofarrival}