def update_work(self, request): from koalixcrm.crm.reporting.work import Work if self.has_changed(): if self.cleaned_data['work_id']: work = Work.objects.get(id=self.cleaned_data['work_id']) else: work = Work() if self.cleaned_data['DELETE']: work.delete() else: work.task = self.cleaned_data['task'] work.reporting_period = ReportingPeriod.get_reporting_period(project=self.cleaned_data['task'].project, search_date=self.cleaned_data['date']) work.human_resource = HumanResource.objects.get(user=UserExtension.get_user_extension(request.user)) work.date = self.cleaned_data['date'] if bool(self.cleaned_data['start_time']) & bool(self.cleaned_data['stop_time']): work.start_time = datetime.datetime.combine(self.cleaned_data['date'], self.cleaned_data['start_time']) work.stop_time = datetime.datetime.combine(self.cleaned_data['date'], self.cleaned_data['stop_time']) else: work.worked_hours = self.cleaned_data['worked_hours'] work.description = self.cleaned_data['description'] work.short_description = limit_string_length(work.description, 100) work.save()
def update_work(self, request): from koalixcrm.crm.reporting.work import Work if self.has_changed(): if self.cleaned_data['work_id']: work = Work.objects.get(id=self.cleaned_data['work_id']) else: work = Work() if self.cleaned_data['DELETE']: work.delete() else: work.task = self.cleaned_data['task'] work.reporting_period = ReportingPeriod.get_reporting_period(project=self.cleaned_data['task'].project, search_date=self.cleaned_data['date']) work.employee = UserExtension.get_user_extension(request.user) work.date = self.cleaned_data['date'] if bool(self.cleaned_data['start_time']) & bool(self.cleaned_data['stop_time']): work.start_time = datetime.datetime.combine(self.cleaned_data['date'], self.cleaned_data['start_time']) work.stop_time = datetime.datetime.combine(self.cleaned_data['date'], self.cleaned_data['stop_time']) else: work.worked_hours = self.cleaned_data['worked_hours'] work.description = self.cleaned_data['description'] work.short_description = limit_string_length(work.description, 100) work.save()
def create_from_reference(self, calling_model, staff): staff_user_extension = UserExtension.get_user_extension(staff.id) self.default_customer = calling_model self.default_currency = staff_user_extension.defaultCurrency self.default_template_set = staff_user_extension.defaultTemplateSet self.last_modified_by = staff self.staff = staff self.save() return self
def work_report(request): try: human_resource = HumanResource.objects.filter(user=UserExtension.get_user_extension(request.user)) if len(human_resource) == 0: error_message = "User "+request.user.__str__()+" is not registered as human resource" raise UserIsNoHumanResource(error_message) if request.POST.get('post'): if 'cancel' in request.POST: return HttpResponseRedirect('/admin/') elif 'save' in request.POST: range_selection_form = RangeSelectionForm(request.POST) if range_selection_form.is_valid(): formset = BaseWorkEntryFormset.load_formset(range_selection_form, request) if not formset.is_valid(): c = {'range_selection_form': range_selection_form, 'formset': formset} c.update(csrf(request)) return render(request, 'crm/admin/time_reporting.html', c) else: for form in formset: form.update_work(request) messages.success(request, _('you have successfully updated your work')) formset = BaseWorkEntryFormset.create_updated_formset(range_selection_form, human_resource) range_selection_form.update_from_input() c = {'range_selection_form': range_selection_form, 'formset': formset} c.update(csrf(request)) return render(request, 'crm/admin/time_reporting.html', c) return HttpResponseRedirect('/admin/') else: datetime_now = datetime.datetime.today() to_date = (datetime_now + datetime.timedelta(days=30)).date() from_date = datetime_now.date() range_selection_form = RangeSelectionForm.create_range_selection_form(from_date, to_date) formset = BaseWorkEntryFormset.create_new_formset(from_date, to_date, human_resource) c = {'formset': formset, 'range_selection_form': range_selection_form} c.update(csrf(request)) return render(request, 'crm/admin/time_reporting.html', c) except (UserExtensionMissing, ReportingPeriodNotFound, TooManyUserExtensionsAvailable, UserIsNoHumanResource) as e: if isinstance(e, UserExtensionMissing): return HttpResponseRedirect(e.view) elif isinstance(e, ReportingPeriodNotFound): return HttpResponseRedirect(e.view) elif isinstance(e, TooManyUserExtensionsAvailable): return HttpResponseRedirect(e.view) elif isinstance(e, UserIsNoHumanResource): return HttpResponseRedirect(e.view) else: raise Http404
def create_new_formset(from_date, to_date, request): WorkEntryFormSet = forms.formset_factory(WorkEntry, extra=1, max_num=60, can_delete=True, formset=BaseWorkEntryFormset) employee = UserExtension.get_user_extension(request.user) initial_formset_data = generate_initial_data(from_date, to_date, employee) form_kwargs = compose_form_kwargs(from_date, to_date) formset = WorkEntryFormSet(initial=initial_formset_data, form_kwargs=form_kwargs) return formset
def create_updated_formset(range_selection_form, request): WorkEntryFormSet = forms.formset_factory(WorkEntry, extra=1, max_num=60, can_delete=True, formset=BaseWorkEntryFormset) employee = UserExtension.get_user_extension(request.user) from_date = range_selection_form.cleaned_data['from_date'] to_date = range_selection_form.cleaned_data['to_date'] initial_formset_data = generate_initial_data(from_date, to_date, employee) form_kwargs = compose_form_kwargs(from_date, to_date) formset = WorkEntryFormSet(initial=initial_formset_data, form_kwargs=form_kwargs) return formset
def update_work(form, request): from koalixcrm.crm.reporting.work import Work if form.has_changed(): if form.cleaned_data['work_id']: work = Work.objects.get(id=form.cleaned_data['work_id']) else: work = Work() if form.cleaned_data['DELETE']: work.delete() else: work.task = form.cleaned_data['task'] work.employee = UserExtension.get_user_extension(request.user) work.date = form.cleaned_data['date'] work.start_time = datetime.datetime.combine( form.cleaned_data['date'], form.cleaned_data['start_time']) work.stop_time = datetime.datetime.combine( form.cleaned_data['date'], form.cleaned_data['stop_time']) work.description = form.cleaned_data['description'] work.save()
def work_report(request): try: human_resource = HumanResource.objects.filter( user=UserExtension.get_user_extension(request.user)) if len(human_resource) == 0: error_message = "User " + request.user.__str__( ) + " is not registered as human resource" raise UserIsNoHumanResource(error_message) if request.POST.get('post'): if 'cancel' in request.POST: return HttpResponseRedirect('/admin/') elif 'save' in request.POST: range_selection_form = RangeSelectionForm(request.POST) if range_selection_form.is_valid(): formset = BaseWorkEntryFormset.load_formset( range_selection_form, request) if not formset.is_valid(): c = { 'range_selection_form': range_selection_form, 'formset': formset } c.update(csrf(request)) return render(request, 'crm/admin/time_reporting.html', c) else: for form in formset: form.update_work(request) messages.success( request, _('you have successfully updated your work')) formset = BaseWorkEntryFormset.create_updated_formset( range_selection_form, human_resource) range_selection_form.update_from_input() c = { 'range_selection_form': range_selection_form, 'formset': formset } c.update(csrf(request)) return render(request, 'crm/admin/time_reporting.html', c) return HttpResponseRedirect('/admin/') else: datetime_now = datetime.datetime.today() to_date = (datetime_now + datetime.timedelta(days=30)).date() from_date = datetime_now.date() range_selection_form = RangeSelectionForm.create_range_selection_form( from_date, to_date) formset = BaseWorkEntryFormset.create_new_formset( from_date, to_date, human_resource) c = { 'formset': formset, 'range_selection_form': range_selection_form } c.update(csrf(request)) return render(request, 'crm/admin/time_reporting.html', c) except (UserExtensionMissing, ReportingPeriodNotFound, TooManyUserExtensionsAvailable, UserIsNoHumanResource) as e: if isinstance(e, UserExtensionMissing): return HttpResponseRedirect(e.view) elif isinstance(e, ReportingPeriodNotFound): return HttpResponseRedirect(e.view) elif isinstance(e, TooManyUserExtensionsAvailable): return HttpResponseRedirect(e.view) elif isinstance(e, UserIsNoHumanResource): return HttpResponseRedirect(e.view) else: raise Http404