def get(self, *args, **kwargs): if self.check_perm(): return self.check_perm() self.initialize_vars() try: ci_id = self.get_ci_id() except: # editing/viewing Ci which doesn's exists. return HttpResponseRedirect('/cmdb/ci/jira_ci_unknown') if ci_id: self.ci = get_object_or_404(db.CI, id=ci_id) # preview only for devices if self.ci.content_object and self.ci.content_type.name == 'device': self.show_in_ralph = True self.ralph_ci_link = "/ui/search/info/%d" % self.ci.content_object.id self.service_name = self.get_first_parent_venture_name(ci_id) self.problems = db.CIProblem.objects.filter( ci=self.ci).order_by('-time').all() self.incidents = db.CIIncident.objects.filter( ci=self.ci).order_by('-time').all() self.git_changes = [ x.content_object for x in db.CIChange.objects.filter( ci=self.ci, type=db.CI_CHANGE_TYPES.CONF_GIT.id) ] self.device_attributes_changes = [ x.content_object for x in db.CIChange.objects.filter( ci=self.ci, type=db.CI_CHANGE_TYPES.DEVICE.id) ] reps = db.CIChangePuppet.objects.filter(ci=self.ci).all() for report in reps: puppet_logs = db.PuppetLog.objects.filter( cichange=report).all() self.puppet_reports.append( dict(report=report, logs=puppet_logs)) self.zabbix_triggers = db.CIChangeZabbixTrigger.objects.filter( ci=self.ci).order_by('-lastchange') self.so_events = db.CIChange.objects.filter( type=db.CI_CHANGE_TYPES.STATUSOFFICE.id, ci=self.ci).all() self.calculate_relations(ci_id) self.form_options['instance'] = self.ci self.form_options['initial'] = self.form_initial(self.ci) self.form_attributes_options['initial'] = self.custom_form_initial( self.ci) self.form_attributes = EditAttributeFormFactory( ci=self.ci).factory(**self.form_attributes_options) self.form = self.Form(**self.form_options) return super(Edit, self).get(*args, **kwargs)
def post(self, *args, **kwargs): self.initialize_vars() ci_id = self.kwargs.get('ci_id') if ci_id: self.ci = get_object_or_404(db.CI, id=ci_id) if self.Form: self.form = self.Form(self.request.POST, **self.form_options) self.form_attributes = EditAttributeFormFactory( ci=self.ci).factory(self.request.POST, **self.form_attributes_options) if self.form.is_valid() and self.form_attributes.is_valid(): self.form.data['base-id'] = self.ci.id model = self.form.save(commit=False) model.uid = self.ci.uid model.save(user=self.request.user) self.form_attributes.ci = model model_attributes = self.form_attributes.save() messages.success(self.request, "Changes saved.") return HttpResponseRedirect(self.request.path) else: messages.error(self.request, "Correct the errors.") return super(Edit, self).get(*args, **kwargs)