示例#1
0
 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()
示例#2
0
 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()
示例#3
0
 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
示例#4
0
 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
示例#5
0
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
示例#6
0
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
示例#7
0
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
示例#8
0
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()
示例#9
0
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