Beispiel #1
0
    def response_add(self, source, dialog, builder):
        fields = {
            "entry": [
                "name"
            ],
            "combobox": [
                "parent"
            ]
        }

        cleaned_data = utils.get_form_data(LocationForm, builder, fields)
        if cleaned_data is None:
            return

        if cleaned_data["parent_id"] == 0:
            cleaned_data["parent_id"] = None

        Location.objects.create(
            parent_id=cleaned_data["parent_id"],
            name=cleaned_data["name"]
        )

        dialog.destroy()
        self.refresh_grid()

        query_count_all()
Beispiel #2
0
    def response_modify(self, source, location_id, dialog, builder):
        fields = {
            "entry": [
                "name"
            ],
            "combobox": [
                "parent"
            ]
        }

        cleaned_data = utils.get_form_data(LocationForm, builder, fields)
        if cleaned_data is None:
            return

        if cleaned_data["parent_id"] == 0:
            cleaned_data["parent_id"] = None

        location = Location.objects.get(id=location_id)
        location.name = cleaned_data["name"]
        location.parent_id = cleaned_data["parent_id"]
        location.save()

        dialog.destroy()
        self.refresh_grid()

        query_count_all()
Beispiel #3
0
    def response_add(self, source, dialog, equipment, builder):
        fields = {
            "entry": ["name", "exp_date", "nc_packaging", "remark"],
            "combobox": ["location"],
            "spinbutton": ["quantity"],
            "textview": []
        }

        data = {"parent_id": equipment["id"]}

        cleaned_data = utils.get_form_data(forms.AddArticleForm, builder,
                                           fields, data)
        if cleaned_data is None:
            return

        # Add the article
        article = models.Article.objects.create(
            name=cleaned_data['name'],
            exp_date=cleaned_data['exp_date'],
            location_id=cleaned_data['location_id'],
            nc_packaging=cleaned_data['nc_packaging'],
            parent_id=cleaned_data['parent_id'],
            remark=cleaned_data['remark'])
        # Add the quantity
        models.QtyTransaction.objects.create(transaction_type=1,
                                             value=cleaned_data["quantity"],
                                             content_object=article)

        query_count_all()

        # At the end only
        dialog.destroy()
        # Refresh the list!
        self.refresh_grid()
Beispiel #4
0
    def update_vessel(self, source):
        fields = {
            "entry": [
                "name",
                "imo",
                "mmsi",
                "call_sign",
                "flag",
                "port_of_registry",
                "sat_phone",
                "gsm_phone",
                "email",
                "shipowner",
            ],
            "textview": ["address"]
        }

        cleaned_data = utils.get_form_data(VesselSettingsForm, self.builder,
                                           fields)
        if cleaned_data is None:
            return

        for (key, value) in cleaned_data.items():
            setattr(self.vessel, key, value)
        self.params.save()

        self.params.refresh_vessel()

        self.builder.get_object("actionbar").hide()
Beispiel #5
0
    def save_kit(self, source, builder, kit):
        fields = {
            "entry": [
                "name"
            ],
            "combobox": [
                "location"
            ]
        }

        cleaned_data = utils.get_form_data(forms.FirstAidKitForm, builder, fields)

        if cleaned_data is None:
            return

        try:
            kit_obj = models.FirstAidKit.objects.get(id=kit["id"])
        except models.FirstAidKit.DoesNotExist as error:
            log.error("First aid kit (ID %s) not found.", error)
            return False

        kit_obj.name = cleaned_data["name"]
        kit_obj.location_id = cleaned_data["location_id"]
        kit_obj.save()

        child = self.stack.get_child_by_name("first-aid-kit-{0}".format(kit_obj.id))
        self.stack.child_set_property(child, "title", cleaned_data["name"])

        self.cancel(source, builder)
Beispiel #6
0
    def save_bag(self, source, builder, bag):
        fields = {"entry": ["name"], "combobox": ["location"]}

        cleaned_data = utils.get_form_data(RescueBagForm, builder, fields)
        if cleaned_data is None:
            return

        # Save location
        bag.location.parent_id = cleaned_data["location_id"]
        bag.location.name = cleaned_data["name"]
        bag.location.save()
        # Save rescue bag
        bag.name = cleaned_data["name"]
        bag.save()

        child = self.stack.get_child_by_name("rescue-bag-{0}".format(bag.id))
        self.stack.child_set_property(child, "title", cleaned_data["name"])

        self.cancel(source, builder)
Beispiel #7
0
    def response_modify(self, source, dialog, medicine, builder):
        fields = {
            "entry":
            ["name", "exp_date", "nc_composition", "nc_molecule", "remark"],
            "combobox": ["location"],
            "spinbutton": ["quantity"],
            "textview": []
        }

        cleaned_data = utils.get_form_data(forms.ModifyMedicineForm, builder,
                                           fields)
        if cleaned_data is None:
            return

        # Add the medicine
        medicine_obj = models.Medicine.objects.get(id=medicine['id'])
        medicine_obj.name = cleaned_data['name']
        medicine_obj.exp_date = cleaned_data['exp_date']
        medicine_obj.location_id = cleaned_data['location_id']
        medicine_obj.remark = cleaned_data['remark']

        # if cleaned_data['nc_composition']:
        medicine_obj.nc_composition = cleaned_data['nc_composition']
        # if cleaned_data['nc_molecule']:
        medicine_obj.nc_molecule = cleaned_data['nc_molecule']

        medicine_obj.save()

        if cleaned_data["quantity"] != medicine['quantity']:
            # Add the quantity (transaction type STOCK COUNT)
            models.QtyTransaction.objects.create(
                transaction_type=8,
                value=cleaned_data["quantity"],
                content_object=medicine_obj)

        query_count_all()

        # At the end only
        dialog.destroy()
        # Refresh the list!
        self.refresh_grid()
Beispiel #8
0
    def response_modify(self, source, dialog, item, perishable, builder):
        fields = {
            "entry": [
                "exp_date",
                "remark",
                "nc"
            ],
            "spinbutton": [
                "quantity"
            ]
        }

        data = {
            "perishable": perishable
        }

        cleaned_data = utils.get_form_data(forms.ModifySubitemForm, builder, fields, data)
        if cleaned_data is None:
            return

        item_obj = models.FirstAidKitItem.objects.get(id=item["id"])
        item_obj.exp_date = cleaned_data["exp_date"]
        item_obj.remark = cleaned_data["remark"]
        item_obj.nc = cleaned_data["nc"]
        item_obj.save()

        if cleaned_data["quantity"] != item['quantity']:
            # Add the quantity (transaction type STOCK COUNT)
            models.QtyTransaction.objects.create(
                transaction_type=8,
                value=cleaned_data["quantity"],
                content_object=item_obj
                )

        query_count_all()

        # At the end only
        dialog.destroy()
        # Refresh the list!
        self.refresh_grid()
Beispiel #9
0
    def response_modify(self, source, dialog, article, builder):
        fields = {
            "entry": ["name", "exp_date", "nc_packaging", "remark"],
            "combobox": ["location"],
            "spinbutton": ["quantity"]
        }

        cleaned_data = utils.get_form_data(forms.ModifyArticleForm, builder,
                                           fields)
        if cleaned_data is None:
            return

        # Add the article
        article_obj = models.Article.objects.get(id=article['id'])
        article_obj.name = cleaned_data['name']
        article_obj.exp_date = cleaned_data['exp_date']
        article_obj.location_id = cleaned_data['location_id']
        article_obj.remark = cleaned_data['remark']

        article_obj.nc_packaging = cleaned_data['nc_packaging']

        article_obj.save()

        if cleaned_data["quantity"] != article['quantity']:
            # Add the quantity (transaction type STOCK COUNT)
            models.QtyTransaction.objects.create(
                transaction_type=8,
                value=cleaned_data["quantity"],
                content_object=article_obj)

        query_count_all()

        # At the end only
        dialog.destroy()
        # Refresh the list!
        self.refresh_grid()
Beispiel #10
0
    def update_setting(self, source):
        active_allowances = self.get_active_allowance()

        # Bulk update allowances
        Allowance.objects.exclude(id=0).update(active=False)
        Allowance.objects.filter(id__in=active_allowances).update(active=True)

        fields = {
            "spinbutton": [
                "first_aid_kit",
                "rescue_bag",
                "expire_date_warning_delay",
            ],
            "switch": ["has_laboratory", "has_telemedical"]
        }

        cleaned_data = get_form_data(InventorySettingsForm, self.builder,
                                     fields)
        if cleaned_data is None:
            return

        # Show a dialog if the number of rescue bags is decreased in order to
        # select which one to delete
        if cleaned_data["rescue_bag"] < self.setting.rescue_bag:
            self.invalid = False
            self.dialog_delete(cleaned_data["rescue_bag"])
            if self.invalid:
                return

        for (key, value) in cleaned_data.items():
            setattr(self.setting, key, value)

        self.params.save()
        self.params.allowances = self.params.refresh_allowances()

        # Check for rescue bags
        if cleaned_data["rescue_bag"] > self.setting.rescue_bag:
            self.create_rescue_bags(cleaned_data["rescue_bag"])

        # Check for laboratory
        if cleaned_data["has_laboratory"]:
            obj, created = Location.objects.get_or_create(id=10,
                                                          defaults={
                                                              "name":
                                                              "Laboratory",
                                                              "id": 10
                                                          })
            if created:
                self.params.refresh_locations()

        # Check for telemedical
        if cleaned_data["has_telemedical"]:
            obj, created = Location.objects.get_or_create(id=20,
                                                          defaults={
                                                              "name":
                                                              "Telemedical",
                                                              "id": 20
                                                          })
            if created:
                self.params.refresh_locations()

        # Update the action menu
        self.application.lookup_action("laboratory").set_enabled(
            cleaned_data["has_laboratory"])
        self.application.lookup_action("telemedical").set_enabled(
            cleaned_data["has_telemedical"])

        query_count_all()

        self.reset()
Beispiel #11
0
    def response_add(self, source, dialog, item, builder):
        fields = {
            "entry": [
                "remark",
            ],
            "spinbutton": [
                "quantity",
            ],
            "combobox": [
                "item",
            ]
        }

        cleaned_data = utils.get_form_data(forms.AddSubitemForm, builder, fields)
        if cleaned_data is None:
            return

        # Get the FirstAidKit instance
        try:
            id = int(self.stack.get_visible_child_name().split("-")[-1])
        except ValueError as error:
            log.error("First aid kit ID cannot be found! %s", error)
            return

        try:
            first_aid_kit = models.FirstAidKit.objects.get(id=id)
        except models.FirstAidKit.DoesNotExist as error:
            log.error("First aid kit cannot be found! Wrong ID. %s", error)
            return

        selected = None
        for element in item["available"]:
            if element["id"] == cleaned_data["item_id"]:
                selected = element
                break

        if selected is None:
            return
        # Create a duplicate of the reference article/medicine
        article = models.FirstAidKitItem.objects.create(
            name=selected["name"],
            exp_date=selected["exp_date"],
            kit=first_aid_kit,
            nc=json.dumps(selected["nc"]),
            content_type_id=item["parent"]["type"],
            object_id=item["parent"]["id"]
        )

        # Create a quantity transaction for FirstAidKitItem
        models.QtyTransaction.objects.create(
            transaction_type=1,
            value=cleaned_data["quantity"],
            content_object=article
            )

        # Create a quantity transaction for reference article/medicine
        models.QtyTransaction.objects.create(
            transaction_type=10,
            value=cleaned_data["quantity"],
            object_id=cleaned_data["item_id"],
            content_type_id=element["type"]
            )

        dialog.destroy()

        query_count_all()

        self.refresh_grid()