Ejemplo n.º 1
0
    def __init__(self):
        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.add_object'), name='dispatch')
        class ObjectCreateView(CreateView):

            def get_success_url(self, *args, **kwargs):
                redirect = reverse_lazy('laboratory:objectview_list', args=(
                    self.lab,)) + "?type_id=" + self.object.type
                return redirect

            def get_form_kwargs(self):
                kwargs = super(ObjectCreateView, self).get_form_kwargs()
                kwargs['request'] = self.request
                return kwargs

        self.create = view_user_group_perms(login_required(ObjectCreateView.as_view(
            model=self.model,
            form_class=ObjectForm,
            template_name=self.template_name_base + "_form.html"
        )), 'laboratory.add_object')

        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.change_object'), name='dispatch')
        class ObjectUpdateView(UpdateView):

            def get_success_url(self):
                return reverse_lazy(
                    'laboratory:objectview_list',
                    args=(self.lab,)) + "?type_id=" + self.get_object().type

            def get_form_kwargs(self):
                kwargs = super(ObjectUpdateView, self).get_form_kwargs()
                kwargs['request'] = self.request
                return kwargs

        self.edit = view_user_group_perms(login_required(ObjectUpdateView.as_view(
            model=self.model,
            form_class=ObjectForm,
            template_name=self.template_name_base + "_form.html"
        )), 'laboratory.change_object')

        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.delete_object'), name='dispatch')
        class ObjectDeleteView(DeleteView):

            def get_success_url(self):
                return reverse_lazy('laboratory:objectview_list',
                                    args=(self.lab,))

        self.delete = view_user_group_perms(login_required(ObjectDeleteView.as_view(
            model=self.model,
            success_url="/",
            template_name=self.template_name_base + "_delete.html"
        )), 'laboratory.delete_object')

        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.view_object'), name='dispatch')
        class ObjectListView(ListView):

            def get_queryset(self):
                query = ListView.get_queryset(self)
                if 'type_id' in self.request.GET:
                    self.type_id = self.request.GET.get('type_id', '')
                    if self.type_id:
                        filters = Q(type=self.type_id)
                        query = query.filter(filters)
                else:
                    self.type_id = ''

                if 'q' in self.request.GET:
                    self.q = self.request.GET.get('q', '')
                    if self.q:
                        query = query.filter(
                            Q(name__icontains=self.q) | Q(
                                code__icontains=self.q)
                        )
                else:
                    self.q = ''
                return query

            def get_context_data(self, **kwargs):
                context = ListView.get_context_data(self, **kwargs)
                context['q'] = self.q or ''
                context['type_id'] = self.type_id or ''
                return context

        self.list = view_user_group_perms(login_required(ObjectListView.as_view(
            model=self.model,
            paginate_by=10,
            ordering=['code'],
            template_name=self.template_name_base + "_list.html"
        )), 'laboratory.view_object')
Ejemplo n.º 2
0
from django.urls import reverse_lazy
from django.utils import timezone
from django.utils.decorators import method_decorator

from xhtml2pdf import pisa
from laboratory.views.reports import link_callback

from laboratory.decorators import user_group_perms
from laboratory.views import djgeneric
from risk_management.forms import IncidentReportForm
from risk_management.models import IncidentReport
from django.utils.translation import ugettext as _


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='risk_management.view_incidentreport'),
                  name='dispatch')
class IncidentReportList(djgeneric.ListView):
    model = IncidentReport
    ordering = 'pk'
    ordering = ['incident_date']
    paginate_by = 20

    def get_queryset(self):
        queryset = super().get_queryset()
        if 'q' in self.request.GET:
            q = self.request.GET['q']
            queryset = queryset.filter(
                Q(short_description__icontains=q)
                | Q(laboratories__name__icontains=q))
        return queryset
Ejemplo n.º 3
0
    html = template.render(context=context)

    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'attachment; filename="hcode_report.pdf"'
    pisaStatus = pisa.CreatePDF(html,
                                dest=response,
                                link_callback=link_callback,
                                encoding='utf-8')
    if pisaStatus.err:
        return HttpResponse('We had some errors with code %s <pre>%s</pre>' %
                            (pisaStatus.err, html))
    return response


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.view_report'),
                  name='dispatch')
class ObjectList(ListView):
    model = Object
    template_name = 'laboratory/report_object_list.html'

    def get_type(self):
        if 'type_id' in self.request.GET:
            self.type_id = self.request.GET.get('type_id', '')
            if self.type_id:
                return self.type_id
            else:
                return None
        else:
            return None
Ejemplo n.º 4
0

class ShelfObjectFormUpdate(forms.ModelForm):
    col = forms.IntegerField(widget=forms.HiddenInput, required=False)
    row = forms.IntegerField(widget=forms.HiddenInput, required=False)

    class Meta:
        model = ShelfObject
        fields = ['shelf', 'quantity', 'limit_quantity', 'measurement_unit']
        widgets = {
            'shelf': forms.HiddenInput,
        }


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.add_shelfobject'), name='dispatch')
class ShelfObjectCreate(AJAXMixin, CreateView):
    model = ShelfObject
    form_class = ShelfObjectForm
    success_url = "/"

    def get_success_url(self):
        return reverse_lazy('laboratory:list_shelf', args=(self.lab,))

    def form_valid(self, form):
        self.object = form.save()
        row = form.cleaned_data['row']
        col = form.cleaned_data['col']
        return {
            'inner-fragments': {
                '#row_%d_col_%d_shelf_%d' % (row, col, self.object.shelf.pk): list_shelfobject_render(
Ejemplo n.º 5
0

class ShelfForm(forms.ModelForm):
    col = forms.IntegerField(widget=forms.HiddenInput)
    row = forms.IntegerField(widget=forms.HiddenInput)

    class Meta:
        model = Shelf
        fields = ['name', 'type', 'furniture']
        widgets = {
            'furniture': forms.HiddenInput()
        }


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.add_shelf'), name='dispatch')
class ShelfCreate(AJAXMixin, CreateView):
    model = Shelf
    success_url = "/"
    form_class = ShelfForm

    def get_form_kwargs(self):
        kwargs = CreateView.get_form_kwargs(self)
        kwargs['initial']['furniture'] = self.request.GET.get('furniture')
        kwargs['initial']['col'] = self.request.GET.get('col')
        kwargs['initial']['row'] = self.request.GET.get('row')
        return kwargs

    def form_valid(self, form):
        self.object = form.save(commit=False)
        furniture = form.cleaned_data['furniture']
Ejemplo n.º 6
0
def del_admins_user(request, pk, pk_user):
    lab = get_object_or_404(Laboratory, pk=pk)
    lab.lab_admins.filter(pk=pk_user).delete()
    return render_admins_lab(request, lab.laboratorists.all(), lab)


@ajax
def admin_users(request, pk):
    lab = get_object_or_404(Laboratory, pk=pk)
    user_org = OrganizationStructure.os_manager.filter_user(request.user)

    return render_admins_lab(request, lab.laboratorists.all(), lab)


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.change_laboratory'),
                  name='dispatch')
class LaboratoryEdit(UpdateView):
    model = Laboratory
    template_name = 'laboratory/edit.html'
    #fields = ['name', 'phone_number', 'location', 'geolocation']
    form_class = LaboratoryCreate

    def get_context_data(self, **kwargs):
        context = UpdateView.get_context_data(self, **kwargs)
        context['laboratory'] = self.object.pk
        return context

    def get_form_kwargs(self):
        kwargs = super(LaboratoryEdit, self).get_form_kwargs()
        kwargs['user'] = self.request.user
Ejemplo n.º 7
0

class ShelfObjectFormUpdate(forms.ModelForm):
    col = forms.IntegerField(widget=forms.HiddenInput, required=False)
    row = forms.IntegerField(widget=forms.HiddenInput, required=False)

    class Meta:
        model = ShelfObject
        fields = ['shelf', 'quantity', 'limit_quantity', 'measurement_unit']
        widgets = {
            'shelf': forms.HiddenInput,
        }


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.add_shelfobject'),
                  name='dispatch')
class ShelfObjectCreate(AJAXMixin, CreateView):
    model = ShelfObject
    form_class = ShelfObjectForm
    success_url = "/"

    def get_success_url(self):
        return reverse_lazy('laboratory:list_shelf', args=(self.lab, ))

    def form_valid(self, form):
        self.object = form.save()
        row = form.cleaned_data['row']
        col = form.cleaned_data['col']
        return {
            'inner-fragments': {
Ejemplo n.º 8
0
        'laboratory': lab
    }

    html = template.render(
        context=context).encode("UTF-8")

    page = HTML(string=html, encoding='utf-8').write_pdf()

    response = HttpResponse(page, content_type='application/pdf')
    response[
        'Content-Disposition'] = 'attachment; filename="furniture_report.pdf"'
    return response


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.view_report'), name='dispatch')
class ObjectList(ListView):
    model = Object
    template_name = 'laboratory/report_object_list.html'

    def get_type(self):
        if 'type_id' in self.request.GET:
            self.type_id = self.request.GET.get('type_id', '')
            if self.type_id:
                return self.type_id
            else:
                return None
        else:
            return None

    def get_queryset(self):
Ejemplo n.º 9
0
@ajax
def del_admins_user(request, pk, pk_user):
    lab = get_object_or_404(Laboratory, pk=pk)
    lab.lab_admins.filter(pk=pk_user).delete()
    return render_admins_lab(request, lab.lab_admins.all(), lab)


@ajax
def admin_users(request, pk):
    lab = get_object_or_404(Laboratory, pk=pk)
    return render_admins_lab(request, lab.lab_admins.all(), lab)


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.change_laboratory'), name='dispatch')
class LaboratoryEdit(UpdateView):
    model = Laboratory
    template_name = 'laboratory/edit.html'
    fields = ['name']

    def get_context_data(self, **kwargs):
        context = UpdateView.get_context_data(self, **kwargs)
        context['laboratory'] = self.object.pk
        return context


class LaboratoryView(object):
    model = Laboratory
    template_name_base = 'laboratory/laboratory_'
Ejemplo n.º 10
0
    def __init__(self):
        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.add_object'),
                          name='dispatch')
        class ObjectCreateView(CreateView):
            def get_success_url(self, *args, **kwargs):
                redirect = reverse_lazy(
                    'laboratory:objectview_list',
                    args=(self.lab, )) + "?type_id=" + self.object.type
                return redirect

            def get_form_kwargs(self):
                kwargs = super(ObjectCreateView, self).get_form_kwargs()
                kwargs['request'] = self.request
                return kwargs

        self.create = view_user_group_perms(
            login_required(
                ObjectCreateView.as_view(
                    model=self.model,
                    form_class=ObjectForm,
                    template_name=self.template_name_base + "_form.html")),
            'laboratory.add_object')

        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.change_object'),
                          name='dispatch')
        class ObjectUpdateView(UpdateView):
            def get_success_url(self):
                return reverse_lazy(
                    'laboratory:objectview_list',
                    args=(self.lab, )) + "?type_id=" + self.get_object().type

            def get_form_kwargs(self):
                kwargs = super(ObjectUpdateView, self).get_form_kwargs()
                kwargs['request'] = self.request
                return kwargs

        self.edit = view_user_group_perms(
            login_required(
                ObjectUpdateView.as_view(
                    model=self.model,
                    form_class=ObjectForm,
                    template_name=self.template_name_base + "_form.html")),
            'laboratory.change_object')

        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.delete_object'),
                          name='dispatch')
        class ObjectDeleteView(DeleteView):
            def get_success_url(self):
                return reverse_lazy('laboratory:objectview_list',
                                    args=(self.lab, ))

        self.delete = view_user_group_perms(
            login_required(
                ObjectDeleteView.as_view(
                    model=self.model,
                    success_url="/",
                    template_name=self.template_name_base + "_delete.html")),
            'laboratory.delete_object')

        @method_decorator(login_required, name='dispatch')
        @method_decorator(user_group_perms(perm='laboratory.view_object'),
                          name='dispatch')
        class ObjectListView(ListView):
            def get_queryset(self):
                query = ListView.get_queryset(self)
                if 'type_id' in self.request.GET:
                    self.type_id = self.request.GET.get('type_id', '')
                    if self.type_id:
                        filters = Q(type=self.type_id)
                        query = query.filter(filters)
                else:
                    self.type_id = ''

                if 'q' in self.request.GET:
                    self.q = self.request.GET.get('q', '')
                    if self.q:
                        query = query.filter(
                            Q(name__icontains=self.q)
                            | Q(code__icontains=self.q))
                else:
                    self.q = ''
                return query

            def get_context_data(self, **kwargs):
                context = ListView.get_context_data(self, **kwargs)
                context['q'] = self.q or ''
                context['type_id'] = self.type_id or ''
                return context

        self.list = view_user_group_perms(
            login_required(
                ObjectListView.as_view(model=self.model,
                                       paginate_by=10,
                                       ordering=['code'],
                                       template_name=self.template_name_base +
                                       "_list.html")),
            'laboratory.view_object')
Ejemplo n.º 11
0
from django.urls.base import reverse_lazy
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext_lazy as _

from django_ajax.decorators import ajax
from laboratory.models import Furniture, Laboratory, LaboratoryRoom
from laboratory.shelf_utils import get_dataconfig
#from laboratory.decorators import check_lab_permissions, user_lab_perms

from .djgeneric import ListView, CreateView, UpdateView, DeleteView

from laboratory.decorators import user_group_perms


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.do_report'), name='dispatch')
class FurnitureReportView(ListView):
    model = Furniture
    template_name = "laboratory/report_furniture_list.html"

    def get_queryset(self):
        return Furniture.objects.filter(labroom__laboratory=self.lab)


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.add_furniture'), name='dispatch')
class FurnitureCreateView(CreateView):
    model = Furniture
    fields = ("name", "type")

    def get(self, request, *args, **kwargs):
Ejemplo n.º 12
0
        },
    }


class ShelfForm(forms.ModelForm):
    col = forms.IntegerField(widget=forms.HiddenInput)
    row = forms.IntegerField(widget=forms.HiddenInput)

    class Meta:
        model = Shelf
        fields = ['name', 'type', 'furniture']
        widgets = {'furniture': forms.HiddenInput()}


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.add_shelf'),
                  name='dispatch')
class ShelfCreate(AJAXMixin, CreateView):
    model = Shelf
    success_url = "/"
    form_class = ShelfForm

    def get_form_kwargs(self):
        kwargs = CreateView.get_form_kwargs(self)
        kwargs['initial']['furniture'] = self.request.GET.get('furniture')
        kwargs['initial']['col'] = self.request.GET.get('col')
        kwargs['initial']['row'] = self.request.GET.get('row')
        return kwargs

    def form_valid(self, form):
        self.object = form.save(commit=False)
Ejemplo n.º 13
0
from django.contrib.auth.decorators import login_required
from django.db.models import Q
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator
from django.views.generic import ListView, CreateView, UpdateView, DeleteView, DetailView

from laboratory.decorators import user_group_perms
from risk_management.forms import RiskZoneCreateForm
from risk_management.models import RiskZone


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='risk_management.view_riskzone'),
                  name='dispatch')
class ListZone(ListView):
    model = RiskZone
    ordering = 'zone_type'
    ordering = ['priority', 'pk']
    paginate_by = 20

    def get_queryset(self):
        queryset = super().get_queryset()
        if 'q' in self.request.GET:
            q = self.request.GET['q']
            queryset = queryset.filter(
                Q(name__icontains=q)
                | Q(laboratories__name__icontains=q)).distinct()
        return queryset

    def get_context_data(self, **kwargs):
        context = super(ListZone, self).get_context_data()
Ejemplo n.º 14
0
@author: natalia
'''
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator

#from laboratory.decorators import check_lab_permissions, user_lab_perms
from laboratory.views.djgeneric import CreateView, UpdateView, DeleteView
from laboratory.models import ObjectFeatures

from laboratory.decorators import user_group_perms


@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.add_objectfeatures'),
                  name='dispatch')
class FeatureCreateView(CreateView):
    model = ObjectFeatures
    fields = '__all__'

    def get_context_data(self, **kwargs):
        paginator = Paginator(ObjectFeatures.objects.all().distinct(), 10)
        page = self.request.GET.get('page')

        context = super(FeatureCreateView, self).get_context_data(**kwargs)
        context['create'] = True

        try:
            context['object_list'] = paginator.page(page)
        except PageNotAnInteger:
Ejemplo n.º 15
0
        'objform': objform,
        'suschacform': suschacform,
        'instance': instance
    })


@login_required(login_url='login')
@user_group_perms(perm='laboratory.view_object')
def sustance_list(request):
    #object_list = Object.objects.filter(type=Object.REACTIVE)
    return render(request, 'laboratory/sustance/list.html', {
        'object_url': '#'
    })


@method_decorator(user_group_perms(perm='laboratory.delete_object'), name='dispatch')
class SubstanceDelete(DeleteView):
    model = Object
    success_url = reverse_lazy('laboratory:sustance_list')
    template_name = 'laboratory/sustance/substance_deleteview.html'


@method_decorator(user_group_perms(perm='laboratory.view_object'), name='dispatch')
class SustanceListJson(BaseDatatableView):
    model = Object
    columns = ['id','name','cas_code','action']
    max_display_length = 500

    def filter_queryset(self, qs):
        qs = qs.filter(type=Object.REACTIVE)
        search = self.request.GET.get('search[value]', None)
Ejemplo n.º 16
0
@author: natalia
'''
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.urls import reverse_lazy
from django.utils.decorators import method_decorator

#from laboratory.decorators import check_lab_permissions, user_lab_perms
from laboratory.views.djgeneric import CreateView, UpdateView, DeleteView
from laboratory.models import ObjectFeatures

from laboratory.decorators import user_group_perms

@method_decorator(login_required, name='dispatch')
@method_decorator(user_group_perms(perm='laboratory.add_objectfeatures'), name='dispatch')
class FeatureCreateView(CreateView):
    model = ObjectFeatures
    fields = '__all__'

    def get_context_data(self, **kwargs):
        paginator = Paginator(ObjectFeatures.objects.all().distinct(), 10)
        page = self.request.GET.get('page')

        context = super(FeatureCreateView, self).get_context_data(**kwargs)
        context['create'] = True

        try:
            context['object_list'] = paginator.page(page)
        except PageNotAnInteger:
            context['object_list'] = paginator.page(1)