class BeneficiaryDelete(DeleteView): """ Beneficiary Delete """ model = Beneficiary success_url = reverse_lazy('beneficiary_list') @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): return super(BeneficiaryDelete, self).dispatch(request, *args, **kwargs) def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Beneficiary Deleted!') return self.render_to_response(self.get_context_data(form=form)) form_class = BeneficiaryForm
class TrainingUpdate(UpdateView): """ Training Form """ model = TrainingAttendance guidance = None @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="Training") except FormGuidance.DoesNotExist: self.guidance = None return super(TrainingUpdate, self).dispatch(request, *args, **kwargs) # add the request to the kwargs def get_form_kwargs(self): kwargs = super(TrainingUpdate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Training Updated!') return self.render_to_response(self.get_context_data(form=form)) form_class = TrainingAttendanceForm
class DashboardThemeCreate(CreateView): model = DashboardTheme template_name = 'configurabledashboard/themes/admin/form.html' guidance = None # add the request to the kwargs def get_form_kwargs(self): kwargs = super(DashboardThemeCreate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="DashboardTheme") except FormGuidance.DoesNotExist: self.guidance = None return super(DashboardThemeCreate, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(DashboardThemeCreate, self).get_context_data(**kwargs) return context def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Theme Created!') return self.render_to_response(self.get_context_data(form=form)) form_class = DashboardThemeCreateForm
class CustomDashboardCreate(CreateView): # :param request: # :param id: # """ model = CustomDashboard template_name = 'configurabledashboard/dashboard/form.html' @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="CustomDashboard") except FormGuidance.DoesNotExist: self.guidance = None return super(CustomDashboardCreate, self).dispatch(request, *args, **kwargs) # add the request to the kwargs def get_form_kwargs(self): kwargs = super(CustomDashboardCreate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def get_initial(self): initial = {} return initial def get_context_data(self, **kwargs): context = super(CustomDashboardCreate, self).get_context_data(**kwargs) pk = self.kwargs['pk'] context.update({'pk': pk}) return context def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): if form.is_valid(): data = form.save(commit=False) form_theme = data.theme getSelectedTheme = DashboardTheme.objects.all().filter(id=form_theme.id) parsedLayout = json.loads( getSelectedTheme[0].layout_dictionary, object_pairs_hook=OrderedDict) new_map = {} for key in parsedLayout: new_map[key] = "NONE" data.component_map = json.dumps(new_map) data.save() # save formset from context context = self.get_context_data() messages.success(self.request, 'Success, Dashboard Created!') redirect_url = '/configurabledashboard/' + str(self.kwargs['pk']) return HttpResponseRedirect(redirect_url) form_class = CustomDashboardCreateForm
class DashboardComponentCreate(CreateView): model = DashboardComponent template_name = 'configurabledashboard/components/admin/form.html' guidance = None # add the request to the kwargs def get_form_kwargs(self): kwargs = super(DashboardComponentCreate, self).get_form_kwargs() kwargs['request'] = self.request # id = self.kwargs['id'] return kwargs @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="DashboardComponent") except FormGuidance.DoesNotExist: self.guidance = None return super(DashboardComponentCreate, self).dispatch(request, *args, **kwargs) def get_initial(self): initial = { 'get_custom_dashboard': CustomDashboard.objects.get( id=self.kwargs['id']), 'get_component_data_sources': ComponentDataSource.objects.all(), } return initial def get_context_data(self, **kwargs): context = super(DashboardComponentCreate, self).get_context_data(**kwargs) try: get_custom_dashboard = CustomDashboard.objects.get( id=self.kwargs['id']) except CustomDashboard.DoesNotExist: get_custom_dashboard = None context.update({'get_custom_dashboard': get_custom_dashboard}) return context def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() # context = self.get_context_data() messages.success(self.request, 'Success, Component Created!') latest_component = DashboardComponent.objects.latest('id') get_custom_dashboard = CustomDashboard.objects.get(id=self.kwargs['id']) get_custom_dashboard.components.add(latest_component) return self.render_to_response(self.get_context_data(form=form)) form_class = DashboardComponentCreateForm
class DistributionCreate(CreateView): """ Distribution Form """ model = Distribution guidance = None success_url = '/formlibrary/distribution_list/0/0/' @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="Distribution") except FormGuidance.DoesNotExist: self.guidance = None return super(DistributionCreate, self).dispatch(request, *args, **kwargs) # add the request to the kwargs def get_form_kwargs(self): kwargs = super(DistributionCreate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def get_initial(self): initial = {'program': self.kwargs['id']} return initial def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Distribution Created!') # latest = Distribution.objects.latest('id') redirect_url = '/formlibrary/distribution_list/0/0/' return HttpResponseRedirect(redirect_url) def get_context_data(self, **kwargs): context = super(DistributionCreate, self).get_context_data(**kwargs) context['form_title'] = 'Distribution Create Form' return context form_class = DistributionForm
class TrainingCreate(CreateView): """ Training Form """ model = TrainingAttendance guidance = None @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="Training") except FormGuidance.DoesNotExist: self.guidance = None return super(TrainingCreate, self).dispatch(request, *args, **kwargs) # add the request to the kwargs def get_form_kwargs(self): kwargs = super(TrainingCreate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def get_context_data(self, **kwargs): context = super(TrainingCreate, self).get_context_data(**kwargs) context['form_title'] = 'Training Attendance Create Form' return context def get_initial(self): initial = { 'agreement': self.kwargs['id'], } return initial def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Training Created!') redirect_url = '/formlibrary/training_list/0/0/' return HttpResponseRedirect(redirect_url) form_class = TrainingAttendanceForm
class IndividualCreate(CreateView): """ Individual Form """ model = Individual guidance = None @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="Individual") except FormGuidance.DoesNotExist: self.guidance = None return super(IndividualCreate, self).dispatch(request, *args, **kwargs) def get_initial(self): organization = self.request.user.activity_user.organization initial = { # 'training': self.kwargs['id'], "program": Program.objects.filter(organization=organization).first() } return initial # add the request to the kwargs def get_form_kwargs(self): kwargs = super(IndividualCreate, self).get_form_kwargs() kwargs['organization'] = self.request.user.activity_user.organization kwargs['request'] = self.request return kwargs def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() return HttpResponse({'success': True}) form_class = IndividualForm
class BeneficiaryCreate(CreateView): """ Beneficiary Form """ model = Beneficiary guidance = None @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="Beneficiary") except FormGuidance.DoesNotExist: self.guidance = None return super(BeneficiaryCreate, self).dispatch(request, *args, **kwargs) def get_initial(self): initial = { 'training': self.kwargs['id'], } return initial # add the request to the kwargs def get_form_kwargs(self): kwargs = super(BeneficiaryCreate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Beneficiary Created!') latest = Beneficiary.objects.latest('id') redirect_url = '/formlibrary/beneficiary_update/' + str(latest.id) return HttpResponseRedirect(redirect_url) form_class = BeneficiaryForm
class DistributionUpdate(UpdateView): """ Distribution Form """ model = Distribution success_url = '/formlibrary/distribution_list/0/0/' guidance = None @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="Distribution") except FormGuidance.DoesNotExist: self.guidance = None return super(DistributionUpdate, self).dispatch(request, *args, **kwargs) # add the request to the kwargs def get_form_kwargs(self): kwargs = super(DistributionUpdate, self).get_form_kwargs() kwargs['organization'] = self.request.user.activity_user.organization kwargs['request'] = self.request return kwargs def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Distribution Updated!') return redirect(self.success_url) def get_context_data(self, **kwargs): context = super(DistributionUpdate, self).get_context_data(**kwargs) context['form_title'] = 'Distribution Update Form' distribution = Distribution.objects.get(pk=int(self.kwargs['pk'])) context['distribution_name'] = distribution.distribution_name return context form_class = DistributionForm
class BeneficiaryUpdate(UpdateView): """ Training Form """ model = Beneficiary guidance = None @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="Beneficiary") except FormGuidance.DoesNotExist: self.guidance = None return super(BeneficiaryUpdate, self).dispatch(request, *args, **kwargs) # add the request to the kwargs def get_form_kwargs(self): kwargs = super(BeneficiaryUpdate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def get_context_data(self, **kwargs): context = super(BeneficiaryUpdate, self).get_context_data(**kwargs) beneficiary = Beneficiary.objects.get(pk=int(self.kwargs['pk'])) context['beneficiary_name'] = beneficiary.beneficiary_name context['form_title'] = 'Beneficiary Update Form' return context def form_invalid(self, form): messages.error(self.request, 'Invalid Form', fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): form.save() messages.success(self.request, 'Success, Beneficiary Updated!') return redirect('/formlibrary/beneficiary_list/0/0/0/') form_class = BeneficiaryForm
class CustomDashboardUpdate(UpdateView): model = CustomDashboard form_class = CustomDashboardForm guidance = None @method_decorator(group_excluded('ViewOnly', url='workflow/permission')) def dispatch(self, request, *args, **kwargs): try: self.guidance = FormGuidance.objects.get(form="CustomDashboard") except FormGuidance.DoesNotExist: self.guidance = None return super(CustomDashboardUpdate, self).dispatch(request, *args, **kwargs) def get_initial(self): get_custom_dashboard = CustomDashboard.objects.get(id=self.kwargs['pk']) get_dashboard_components = DashboardComponent.objects.all().filter( componentset=get_custom_dashboard) get_all_component_data_sources = ComponentDataSource.objects.all() initial = { 'get_custom_dashboard': get_custom_dashboard, 'get_dashboard_components': get_dashboard_components, 'get_all_component_data_sources': get_all_component_data_sources, } return initial def get_form(self, form_class): check_form_type = self.request.get_full_path() if check_form_type.startswith('/configurabledashboard/edit'): form = CustomDashboardModalForm else: form = CustomDashboardForm return form(**self.get_form_kwargs()) def get_context_data(self, **kwargs): context = super(CustomDashboardUpdate, self).get_context_data(**kwargs) pk = self.kwargs['pk'] context.update({'pk': pk}) check_path = self.request.get_full_path() if check_path.startswith('/confirgureabledashboard/map'): location = self.kwargs['location'] component_type = self.kwargs['type'] # TODO: If applicable, work through flow for remapping # else if check_form_type.startswith('/confirgureabledashboard/remap'): # location = self.kwargs['location'] # component_type = self.kwargs['type'] else: location = None component_type = None context.update({'location': location}) context.update({'component_type': component_type}) try: get_custom_dashboard = CustomDashboard.objects.get( id=self.kwargs['pk']) except CustomDashboard.DoesNotExist: get_custom_dashboard = None context.update({'get_custom_dashboard': get_custom_dashboard}) try: selected_theme = get_custom_dashboard.theme get_dashboard_theme = DashboardTheme.objects.all().filter( id=selected_theme.id) except DashboardTheme.DoesNotExist: get_dashboard_theme = None context.update({'get_dashboard_theme': get_dashboard_theme}) # This theme layout helps to map the components to their position # on the page # Dashboard layout should be pairs of the # position in # the template (1,2,3...) and the component type that needs to be # slotted into that position if get_dashboard_theme: layout = get_dashboard_theme[0].layout_dictionary get_dashboard_layout_list = json.loads( layout, object_pairs_hook=OrderedDict) else: get_dashboard_layout_list = None context.update({'get_dashboard_layout_list': get_dashboard_layout_list}) try: get_dashboard_components = DashboardComponent.objects.all().filter( componentset=get_custom_dashboard) except DashboardComponent.DoesNotExist: get_dashboard_components = None context.update({'get_dashboard_components': get_dashboard_components}) try: get_component_order = json.loads( get_custom_dashboard.component_map, object_pairs_hook=OrderedDict) except Exception as e: get_component_order = None context.update({'get_component_order': get_component_order}) try: get_all_component_maps = [] for component in get_dashboard_components: if component.data_map: get_all_component_maps[component] = json.loads( component.data_map) except not get_dashboard_components: get_all_component_maps = None context.update({'get_all_component_maps': get_all_component_maps}) try: get_all_component_data_sources = ComponentDataSource.objects.all() except ComponentDataSource.DoesNotExist: get_all_component_data_sources = None context.update( {'get_all_component_data_sources': get_all_component_data_sources}) # try: # getAllDataFilters = {} # for data_source in get_all_component_data_sources: # data_source_filters = import_data_filter_options( # data_source.data_source, data_source.data_filter_key, # data_source.authorization_token) # getAllDataFilters[data_source.id] = data_source_filters # except not get_all_component_data_sources: # getAllDataFilters = None # context.update({'getAllDataFilters': getAllDataFilters}) mapped_location = self.request.GET.get('location') component_type = self.request.GET.get('type') if mapped_location and component_type: context.update({'mapped_location': mapped_location}) context.update({'component_type': component_type}) return context # add the request to the kwargs def get_form_kwargs(self): kwargs = super(CustomDashboardUpdate, self).get_form_kwargs() kwargs['request'] = self.request return kwargs def form_invalid(self, form): messages.error(self.request, self, fail_silently=False) return self.render_to_response(self.get_context_data(form=form)) def form_valid(self, form): # check_form_type = self.request.get_full_path() # TODO: Once refactoring is done, revisit # whether checking form type still needed # if check_form_type.startswith('/confirgureabledashboard/map'): # get_custom_dashboard.component_map = # form.cleaned_data['component_map'] # get_custom_dashboard.save() # for position in get_custom_dashboard.component_map: # mapped_position = form.component_map.0 # if position.0 == mapped_position: # position.1 == form.component_map.1 # mapped = true # if mapped != true: # get_custom_dashboard.component_map.append(form.component_map) # else: form.save() messages.success( self.request, 'Success, CustomDashboard Output Updated!') return self.render_to_response(self.get_context_data(form=form))