示例#1
0
    def customise_event_event_controller(**attr):

        # Default Filter: Only open Events
        from s3 import s3_set_default_filter
        s3_set_default_filter("~.closed", False, tablename="event_event")

        return attr
示例#2
0
文件: work.py 项目: nburazor/eden
    def prep(r):
        # @todo: for assigments, filter person_id to persons not
        #        currently assigned to this job

        # @todo: for assigments, set default to current user if
        #        not assigned to this job yet

        if r.method == "datalist":
            # Filter to open jobs by default
            from s3 import s3_set_default_filter
            s3_set_default_filter(
                "~.status",
                "OPEN",
                tablename="work_job",
            )
            if r.representation == "html":
                # Set default formstyle for side filter form
                # (=labels above fields)
                filter_formstyle = settings.get_ui_formstyle()
                s3db.configure(
                    "work_job",
                    filter_formstyle=filter_formstyle,
                )

        if not r.component:
            r.resource.configure(
                create_next=r.url(method=""),
                update_next=r.url(method=""),
            )
        return True
示例#3
0
文件: work.py 项目: nck0405/MyOwn
    def prep(r):
        # @todo: for assigments, filter person_id to persons not
        #        currently assigned to this job

        # @todo: for assigments, set default to current user if
        #        not assigned to this job yet

        if r.method == "datalist":
            # Filter to open jobs by default
            from s3 import s3_set_default_filter
            s3_set_default_filter("~.status", "OPEN",
                                  tablename = "work_job",
                                  )
            if r.representation == "html":
                # Set default formstyle for side filter form
                # (=labels above fields)
                filter_formstyle = settings.get_ui_formstyle()
                s3db.configure("work_job",
                               filter_formstyle = filter_formstyle,
                               )

        if not r.component:
            r.resource.configure(create_next = r.url(method=""),
                                 update_next = r.url(method=""),
                                 )
        return True
示例#4
0
def monitor_task():

    from s3 import S3OptionsFilter, s3_set_default_filter

    tablename = "setup_monitor_task"

    filter_widgets = [S3OptionsFilter("enabled",
                                      label = T("Enabled"),
                                      options = {True: T("Yes"),
                                                 False: T("No"),
                                                 },
                                      cols = 2,
                                      ),
                      ]

    s3db.configure(tablename,
                   filter_widgets = filter_widgets,
                   orderby = "setup_monitor_task.status desc",
                   )

    # Only show Enabled Tasks by default
    # @ToDo: Also hide those from disabled Servers
    s3_set_default_filter("~.enabled",
                          lambda selector, tablename: True,
                          tablename = tablename)

    def postp(r, output):
        if r.interactive and not r.id:
            # Normal Action Buttons
            s3_action_buttons(r)
            # Custom Action Buttons for Enable/Disable
            table = r.table
            rows = db(table.deleted == False).select(table.id,
                                                     table.enabled,
                                                     )
            restrict_e = [str(row.id) for row in rows if not row.enabled]
            restrict_d = [str(row.id) for row in rows if row.enabled]
            s3.actions += [{"url": URL(args=["[id]", "enable"]),
                            "_class": "action-btn",
                            "label": s3_str(T("Enable")),
                            "restrict": restrict_e,
                            },
                           {"url": URL(args = ["[id]", "disable"]),
                            "_class": "action-btn",
                            "label": s3_str(T("Disable")),
                            "restrict": restrict_d,
                            },
                           ]
            if not s3task._is_alive():
                # No Scheduler Running
                s3.actions.append({"url": URL(args = ["[id]", "check"]),
                                   "_class": "action-btn",
                                   "label": s3_str(T("Check")),
                                   })
        return output
    s3.postp = postp

    return s3_rest_controller(rheader = s3db.setup_rheader,
                              )
示例#5
0
    def customise_event_event_controller(**attr):

        # Default Filter: Only open Events
        from s3 import s3_set_default_filter

        s3_set_default_filter("~.closed", False, tablename="event_event")

        return attr
示例#6
0
    def customise_project_project_controller(**attr):

        # Default Filter: Only open Projects
        # @ToDo: Fix (not activating for some reason)
        stable = current.s3db.project_status
        active = current.db(stable.name.belongs("Active", "Proposed")).select(
            stable.id,
            stable.name,
        )
        active = {row.id: row.name for row in active}

        from s3 import s3_set_default_filter
        s3_set_default_filter("~.status_id",
                              active,
                              tablename="project_project")

        has_role = current.auth.s3_has_role
        ERT_LEADER = has_role("ERT_LEADER") and not has_role("ADMIN")

        s3 = current.response.s3
        standard_postp = s3.postp

        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if ERT_LEADER:
                # Don't open Projects: Open Activities
                from gluon import URL
                from s3 import s3_str
                s3.actions = [
                    dict(label=s3_str(T("Open")),
                         _class="action-btn",
                         url=URL(args=["[id]", "activity"])),
                ]

            return output

        s3.postp = custom_postp

        if ERT_LEADER:
            # Simplified RHeader for Operational Requirements
            attr["rheader"] = lambda r: project_rheader(r, ert=True)
        else:
            # Tweaked RHeader
            attr["rheader"] = lambda r: project_rheader(r, ert=False)

        return attr
示例#7
0
    def customise_project_project_controller(**attr):

        stable = current.s3db.project_status
        statuses = current.db(stable.name.belongs(("Current",
                                                   "Proposed"))).select(stable.id,
                                                                        limitby = (0, 2)
                                                                        )
        statuses = [s.id for s in statuses]

        # Default Filter
        from s3 import s3_set_default_filter
        s3_set_default_filter("~.status_id",
                              statuses,
                              tablename = "project_project")

        return attr
示例#8
0
    def customise_doc_sitrep_controller(**attr):

        # Default Filter: Only open Events
        etable = current.s3db.event_event
        query = (etable.closed == False) & (etable.deleted == False)
        open = current.db(query).select(etable.id, etable.name)
        len_open = len(open)
        if len_open:
            if len_open == 1:
                current.session.s3.event = open.first().id
            else:
                current.session.s3.event = None
            open = {row.id: row.name for row in open}

            from s3 import s3_set_default_filter

            s3_set_default_filter("event_sitrep.event_id", open, tablename="doc_sitrep")

        return attr
示例#9
0
    def customise_project_project_controller(**attr):

        # Default Filter: Only open Projects
        # @ToDo: Fix (not activating for some reason)
        stable = current.s3db.project_status
        active = current.db(stable.name.belongs("Active", "Proposed")).select(stable.id, stable.name)
        active = {row.id: row.name for row in active}

        from s3 import s3_set_default_filter

        s3_set_default_filter("~.status_id", active, tablename="project_project")

        has_role = current.auth.s3_has_role
        ERT_LEADER = has_role("ERT_LEADER") and not has_role("ADMIN")

        s3 = current.response.s3
        standard_postp = s3.postp

        def custom_postp(r, output):
            # Call standard postp
            if callable(standard_postp):
                output = standard_postp(r, output)

            if ERT_LEADER:
                # Don't open Projects: Open Activities
                from gluon import URL
                from s3 import s3_str

                s3.actions = [dict(label=s3_str(T("Open")), _class="action-btn", url=URL(args=["[id]", "activity"]))]

            return output

        s3.postp = custom_postp

        if ERT_LEADER:
            # Simplified RHeader for Operational Requirements
            attr["rheader"] = lambda r: project_rheader(r, ert=True)
        else:
            # Tweaked RHeader
            attr["rheader"] = lambda r: project_rheader(r, ert=False)

        return attr
示例#10
0
    def prep(r):
        if r.method == "assign":

            f = s3db.org_site_shift.site_id
            f.label = T("Site")
            f.represent = s3db.org_site_represent
            s3db.hrm_human_resource_shift.human_resource_id.label = T("Currently Assigned")

            # Default Filters
            from s3 import s3_set_default_filter
            tablename = "hrm_human_resource"
            record = r.record
            job_title_id = record.job_title_id
            if job_title_id:
                s3_set_default_filter("~.job_title_id",
                                      job_title_id,
                                      tablename = tablename)
            skill_id = record.skill_id
            if skill_id:
                s3_set_default_filter("competency.skill_id",
                                      skill_id,
                                      tablename = tablename)
            # NB Availability Filter is custom,
            # so needs the pr_availability_filter applying manually to take effect
            s3_set_default_filter("available",
                                  {"ge": record.start_date,
                                   "le": record.end_date,
                                   },
                                  tablename = tablename)

        return True
示例#11
0
文件: work.py 项目: sungkomp/SAMBRO-1
    def prep(r):

        if r.method == "datalist":
            # Filter to open jobs by default
            from s3 import s3_set_default_filter
            s3_set_default_filter("~.status", "OPEN",
                                  tablename = "work_job",
                                  )
            if r.representation == "html":
                # Set default formstyle for side filter form
                # (=labels above fields)
                filter_formstyle = settings.get_ui_formstyle()
                s3db.configure("work_job",
                               filter_formstyle = filter_formstyle,
                               )

        if not r.component:
            # Return to list after create/update
            r.resource.configure(create_next = r.url(method=""),
                                 update_next = r.url(method=""),
                                 )

        elif r.component_name == "assignment":
            ctable = r.component.table
            field = ctable.person_id

            # Set default to current user if not assigned yet
            logged_in_person = auth.s3_logged_in_person()
            if logged_in_person:
                query = (ctable.job_id == r.id) & \
                        (ctable.person_id == logged_in_person) & \
                        (ctable.deleted != True)
                existing = db(query).select(ctable.id, limitby=(0, 1)).first()
                if not existing:
                    field.default = logged_in_person
                else:
                    field.default = None

        return True
示例#12
0
    def customise_doc_sitrep_controller(**attr):

        # Default Filter: Only open Events
        etable = current.s3db.event_event
        query = (etable.closed == False) & \
                (etable.deleted == False)
        open = current.db(query).select(
            etable.id,
            etable.name,
        )
        len_open = len(open)
        if len_open:
            if len_open == 1:
                current.session.s3.event = open.first().id
            else:
                current.session.s3.event = None
            open = {row.id: row.name for row in open}

            from s3 import s3_set_default_filter
            s3_set_default_filter("event_sitrep.event_id",
                                  open,
                                  tablename="doc_sitrep")

        return attr
示例#13
0
def shelter():
    """
        RESTful CRUD controller
    """

    tablename = "cr_shelter"

    # Filter to just Open shelters (status=2)
    from s3 import s3_set_default_filter
    s3_set_default_filter("shelter_details.status",
                          [2, None],
                          tablename = tablename)

    # Pre-processor
    def prep(r):
        # Function to call for all Site Instance Types
        from s3db.org import org_site_prep
        org_site_prep(r)

        method = r.method
        if method == "create":
            dtable = s3db.cr_shelter_details
            dtable.population_day.readable = False
            dtable.population_night.readable = False

        elif method == "import":
            s3db.cr_shelter.organisation_id.default = None

        elif method == "profile":
            name = r.record.name
            site_id = r.record.site_id

            profile_header = settings.get_ui_profile_header(r)

            map_widget = {"label": T("Housing Units"),
                          "type": "map",
                          "icon": "globe",
                          "colspan": 2,
                          "height": 500,
                          #"bbox": bbox,
                          }
            ftable = s3db.gis_layer_feature
            query = (ftable.controller == "cr") & \
                    (ftable.function == "shelter_unit")
            layer = db(query).select(ftable.layer_id,
                                     limitby = (0, 1),
                                     ).first()
            try:
                layer = {"active": True,
                         "layer_id": layer.layer_id,
                         "filter": "~.site_id=%s" % site_id,
                         "name": T("Housing Units"),
                         "id": "profile-header-%s-%s" % (tablename, site_id),
                         }
            except:
                # No suitable prepop found
                layer = None

            profile_widgets = [map_widget,
                               ]
            s3db.configure(tablename,
                           profile_header = profile_header,
                           profile_layers = (layer,),
                           profile_title = "%s : %s" % (s3_str(s3.crud_strings["cr_shelter"].title_display),
                                                        name),
                           profile_widgets = profile_widgets,
                           )

        if r.interactive:
            if r.component:
                component_name = r.component_name
                if component_name == "shelter_registration":
                    if settings.get_cr_shelter_housing_unit_management():
                        # Filter housing units to units of this shelter
                        from s3 import IS_ONE_OF
                        field = s3db.cr_shelter_registration.shelter_unit_id
                        dbset = db(s3db.cr_shelter_unit.site_id == r.record.site_id)
                        field.requires = IS_EMPTY_OR(IS_ONE_OF(dbset, "cr_shelter_unit.id",
                                                               field.represent,
                                                               sort = True,
                                                               ))
                    s3db.pr_person.pe_label.label = T("Registration Number")
                    s3.crud_strings.cr_shelter_registration = Storage(
                        label_create = T("Register Person"),
                        title_display = T("Registration Details"),
                        title_list = T("Registered People"),
                        title_update = T("Edit Registration"),
                        label_list_button = T("List Registrations"),
                        msg_record_created = T("Registration added"),
                        msg_record_modified = T("Registration updated"),
                        msg_record_deleted = T("Registration entry deleted"),
                        msg_list_empty = T("No people currently registered in this shelter"),
                        )

                elif component_name == "shelter_allocation":
                    s3.crud_strings.cr_shelter_allocation = Storage(
                        label_create = T("Allocate Group"),
                        title_display = T("Allocation Details"),
                        title_list = T("Allocated Groups"),
                        title_update = T("Edit Allocation"),
                        label_list_button = T("List Allocations"),
                        msg_record_created = T("Reservation done"),
                        msg_record_modified = T("Reservation updated"),
                        msg_record_deleted = T("Reservation entry deleted"),
                        msg_list_empty = T("No groups currently allocated for this shelter"),
                        )

        return True
    s3.prep = prep

    from s3db.cr import cr_shelter_rheader
    return s3_rest_controller(rheader = cr_shelter_rheader)