Beispiel #1
0
class AttorneyView(ModelView):  #MasterDetailView, MultipleView
    datamodel = SQLAInterface(Attorney, db.session)
    #add_title =
    #list_title =
    #edit_title =
    #base_order = ("name", "asc")
    search_exclude_columns = person_exclude_columns + biometric_columns + person_search_exclude_columns
    add_exclude_columns = edit_exclude_columns = audit_exclude_columns
    #add_columns = edit_columns = list_columns = person_list_columns + ref_columns + contact_columns
    #list_widget = ListBlock|ListItem|ListThumbnail|ListWidget (default)
    #related_views =[]
    show_fieldsets = edit_fieldsets = add_fieldsets = \
      person_fieldset + contact_fieldset #+  activity_fieldset + place_fieldset + biometric_fieldset + employment_fieldset
Beispiel #2
0
class AttorneyChartView(GroupByChartView):
    datamodel = SQLAInterface(Attorney)
    chart_title = 'Grouped Attorney by Birth'
    label_columns = AttorneyView.label_columns
    chart_type = 'PieChart'

    definitions = [{
        'group': 'age_today',
        "series": [(aggregate_count, "age_today")]
    }, {
        'group': 'gender',
        "series": [(aggregate_count, "age_today")]
    }]
Beispiel #3
0
class DruidClusterModelView(CaravelModelView, DeleteMixin):  # noqa
    datamodel = SQLAInterface(models.DruidCluster)
    add_columns = [
        'cluster_name',
        'coordinator_host',
        'coordinator_port',
        'coordinator_endpoint',
        'broker_host',
        'broker_port',
        'broker_endpoint',
    ]
    edit_columns = add_columns
    list_columns = ['cluster_name', 'metadata_last_refreshed']
Beispiel #4
0
class PolicemanChartView(GroupByChartView):
    datamodel = SQLAInterface(Policeman)
    chart_title = 'Grouped Policeman by Birth'
    label_columns = PolicemanView.label_columns
    chart_type = 'PieChart'

    definitions = [{
        'group': 'age_today',
        "series": [(aggregate_count, "age_today")]
    }, {
        'group': 'gender',
        "series": [(aggregate_count, "age_today")]
    }]
Beispiel #5
0
class ComplaintView(ModelView):
    datamodel = SQLAInterface(Complaint)
    show_exclude_columns = edit_exclude_columns = hide_list
    edit_exclude_columns = hide_list

    add_fieldsets = show_fieldsets = [
        ('Category', {
            'fields': ['report_date', 'case_type', 'case_category']
        }),
        ('Complainant', {
            'fields': [
                'complainant_is_victim', 'complainant', 'comp_phone',
                'comp_email', 'comp_address', 'comp_age', 'comp_dob',
                'comp_is_minor', 'comp_gender'
            ]
        }),
        ('Complaint', {
            'fields': [
                'complainant_role', 'complaint', 'complaint_language',
                'observations'
            ]
        }),
        ('Observations', {
            'fields': [
                'injuries', 'loss', 'damage', 'theft', 'narcotics', 'fraud',
                'domestic_abuse'
            ]
        }),
        ('Victim', {
            'fields': [
                'victim_name', 'victim_phone', 'victim_email',
                'victim_address', 'victim_age', 'victim_dob', 'victim_gender',
                'victim_pwd', 'victim_religion', 'victim_ethnicity'
            ]
        }),
        ('Offender', {
            'fields': [
                'offender_count', 'offenders_known_to_victim',
                'offender_known_to_complainant', 'offender_description',
                'police_interpretation', 'is_a_crime', 'is_a_case',
                'case_number', 'closed'
            ]
        }),
        # ('Responsibility', {'fields': ['reporting_officer', 'investigating_officer'], 'expanded': False}),
        # ('Investigation', {'fields': ['investigating_officer','investigation_status','investigation_outcomes'], 'expanded': False}),
        # ('Arrest', {'fields': ['arresting_officer', 'arrest_location','arrest_narrative','warrant_date','warrant_details'], 'expanded': False}),
        # ('Documentation', {'fields': ['evidence_collected', 'evidence_pictures', 'document_list','document_count','documents'], 'expanded': False}),
        # ('Charge', {'fields': ['charge_date', 'charge_description','document_count','documents'], 'expanded': False}),
        # ('Court', {'fields': ['charge_court','first_hearing_date','hearing_dates','court_outcome','case_duration'], 'expanded': False}),
        # ('Offenders', {'fields': ['offender_picture'], 'expanded': False}),
    ]
class AuditLogChartView(GroupByChartView):
    datamodel = SQLAInterface(AuditLog)

    chart_title = 'Grouped Audit Logs'
    chart_type = 'BarChart'
    definitions = [{
        'group': 'operation',
        'formatter': str,
        'series': [(aggregate_count, 'operation')]
    }, {
        'group': 'username',
        'formatter': str,
        'series': [(aggregate_count, 'username')]
    }]
Beispiel #7
0
class ProjectModelView(CompactCRUDMixin, ModelView):
    datamodel = SQLAInterface(Project)
    related_views = [ProjectFilesModelView]

    show_template = 'appbuilder/general/model/show_cascade.html'
    edit_template = 'appbuilder/general/model/edit_cascade.html'

    add_columns = ['name']
    edit_columns = ['name']
    list_columns = ['name', 'created_by', 'created_on', 'changed_by', 'changed_on']
    show_fieldsets = [
        ('Info', {'fields': ['name']}),
        ('Audit', {'fields': ['created_by', 'created_on', 'changed_by', 'changed_on'], 'expanded': False})
    ]
class CauseofactionView(CompactCRUDMixin, ModelView):#MasterDetailView, MultipleView
	datamodel=SQLAInterface(Causeofaction, db.session)
	#add_title =
	#list_title =
	#edit_title =
	#show_title =
	#base_order = ("name", "asc")
	search_exclude_columns = person_exclude_columns + biometric_columns + person_search_exclude_columns
	add_exclude_columns = edit_exclude_columns = audit_exclude_columns
	#add_columns = edit_columns = list_columns = person_list_columns + ref_columns + contact_columns
	#list_widget = ListBlock|ListItem|ListThumbnail|ListWidget (default)
	#related_views =[]
	#show_fieldsets = person_show_fieldset + contact_fieldset
	edit_fieldsets = add_fieldsets = \
Beispiel #9
0
class TableView(ModelView, DeleteMixin):
    datamodel = SQLAInterface(models.Table)
    list_columns = ['table_link', 'database']
    add_columns = ['table_name', 'database', 'default_endpoint']
    edit_columns = [
        'table_name', 'database', 'main_datetime_column', 'default_endpoint'
    ]
    related_views = [TableColumnInlineView, SqlMetricInlineView]

    def post_add(self, table):
        table.fetch_metadata()

    def post_update(self, table):
        table.fetch_metadata()
Beispiel #10
0
        class Model2View(ModelView):
            datamodel = SQLAInterface(Model2)
            list_columns = [
                'field_integer', 'field_float', 'field_string', 'field_method',
                'group.field_string'
            ]

            edit_form_query_rel_fields = {
                'group': [['field_string', FilterEqual, 'G2']]
            }

            add_form_query_rel_fields = {
                'group': [['field_string', FilterEqual, 'G1']]
            }
Beispiel #11
0
class ContentModelView(CompactCRUDMixin, ModelView):
    datamodel = SQLAInterface(Content)

    related_views = [MediaFilesModelView]

    add_columns = ['name', 'artist', 'created']
    edit_columns = ['name', 'artist', 'created']
    list_columns = ['name', 'artist.name', 'created']
    show_fieldsets = [('Info', {
        'fields': ['name', 'artist_id', 'created']
    }), ('Audit', {
        'fields': ['modified'],
        'expanded': False
    })]
Beispiel #12
0
class MetricInlineView(CompactCRUDMixin, ModelView):
    datamodel = SQLAInterface(models.Metric)
    list_columns = ['metric_name', 'verbose_name', 'metric_type']
    edit_columns = [
        'metric_name', 'description', 'verbose_name', 'metric_type',
        'datasource', 'json'
    ]
    add_columns = [
        'metric_name', 'verbose_name', 'metric_type', 'datasource', 'json'
    ]
    page_size = 100
    validators_columns = {
        'json': [validate_json],
    }
Beispiel #13
0
class EmployeeView(ModelView):
    datamodel = SQLAInterface(Employee)

    list_columns = ['full_name', 'department', 'employee_number']
    # TODO there is a bug: the change of history doens't update employee's department
    edit_form_extra_fields = {
        'department':
        QuerySelectField('Department',
                         query_factory=department_query,
                         widget=Select2Widget(extra_classes="readonly"))
    }

    related_views = [EmployeeHistoryView]
    show_template = 'appbuilder/general/model/show_cascade.html'  # not a tab, but on the same page cascading
Beispiel #14
0
class ContactModelView(ModelView):
    datamodel = SQLAInterface(Contact)

    base_order = ('name', 'desc')
    # pass extra args to Jinja2 template
    #extra_args = {'my_extra_arg':'SOMEVALUE'}
    #show_template = 'my_show_template.html'

    # filter the fields in the adding form
    # {add,edit,search}_form_query_rel_fields
    add_form_query_rel_fields = {
        'contact_group': [['name', FilterStartsWith, 'W']]
    }
    #add_form = AddFormWTF  # customize add/edit forms
    #add_columns = ['my_field1', my_field2]  # customize add/edit form fields

    label_columns = {
        'contact_group': 'Contacts Group'
    }  # define lables of columns

    # use {add,edit,list,show}_columns properties to customize what columns are displayed and orders
    list_columns = ['name', 'personal_celphone', 'birthday', 'contact_group']

    # add an extra field: e.g. confirmation field
    # TODO doesn't work...
    #add_form_extra_fields = {'some_col':BooleanField('Some Col', default=False)}
    add_form_extra_fields = {
        'confirm_name':
        TextField(gettext('Confirm Name'),
                  description=gettext('Confirm Name'),
                  widget=BS3TextFieldWidget())
    }
    #edit_form_extra_fields = {'field2': TextField('field2',
    #                            widget=BS3TextFieldROWidget())}
    validators_columns = {
        'my_field1':
        [EqualTo('my_field2', message=gettext('fields must match'))]
    }

    # show_fieldsets, add_fieldsets, edit_fieldsets to customize show, add and edit views
    show_fieldsets = [
        ('Summary', {
            'fields': ['name', 'address', 'contact_group']
        }),
        ('Personal Info', {
            'fields': ['birthday', 'personal_phone', 'personal_celphone'],
            'expanded': False
        }),
    ]
Beispiel #15
0
class AlertModelView(ModelView):
    datamodel = SQLAInterface(Alert)
    #related_views = [ServiceModelView, ContentModelView, ShortcodeModelView]
    #message,msisdn,shortcode,content_id ,service_id ,sent ,scheduled_time,
    #alert_type_id,time_sent ,created_by ,created
    edit_exclude_columns = [
        'created_by', 'sent', 'modified', 'created', 'time_sent'
    ]
    add_exclude_columns = [
        'created_by', 'sent', 'created', 'modified', 'time_sent'
    ]
    list_columns = [
        'content_id', 'shortcode', 'message', 'service_id', 'alert_type_id',
        'scheduled_time'
    ]
Beispiel #16
0
class ContactTimeChartView(GroupByChartView):
    datamodel = SQLAInterface(Contact)

    chart_title = 'Grouped Birth contacts'
    chart_type = 'AreaChart'
    label_columns = ContactModelView.label_columns
    definitions = [{
        'group': 'month_year',
        'formatter': pretty_month_year,
        'series': [(aggregate_count, 'contact_group')]
    }, {
        'group': 'year',
        'formatter': pretty_year,
        'series': [(aggregate_count, 'contact_group')]
    }]
Beispiel #17
0
class DataStoreModelView(ModelView):
    datamodel = SQLAInterface(DataStore)
    base_permissions = ['can_list', 'can_show']
    base_order = ('timestamp', 'desc')
    label_columns = {'data_type': 'Type'}
    list_columns = ['timestamp', 'data_type', 'data']

    @action("muldelete", "Delete", "Delete all Really?", "fa-trash")
    def muldelete(self, items):
        if isinstance(items, list):
            self.datamodel.delete_all(items)
            self.update_redirect()
        else:
            self.datamodel.delete(items)
        return redirect(self.get_redirect())
Beispiel #18
0
class ContactModelView(ModelView):
    datamodel = SQLAInterface(Contact)

    label_columns = {'contact_group': 'Contacts Group'}
    list_columns = ['name', 'personal_cellphone', 'birthday', 'contact_group']

    show_fieldsets = [
        ('Summary', {
            'fields': ['name', 'address', 'contact_group']
        }),
        ('Personal Info', {
            'fields': ['birthday', 'personal_phone', 'personal_cellphone'],
            'expanded': False
        }),
    ]
Beispiel #19
0
class DefendantTimeChartView(GroupByChartView):
    datamodel = SQLAInterface(Defendant)

    chart_title = 'Grouped Birth Defendant'
    chart_type = 'AreaChart'
    label_columns = DefendantView.label_columns
    definitions = [{
        'group': 'age_today',
        'formatter': pretty_month_year,
        "series": [(aggregate_count, "age_today")]
    }, {
        'group': 'age_today',
        'formatter': pretty_year,
        "series": [(aggregate_count, "age_today")]
    }]
Beispiel #20
0
class DruidColumnInlineView(CompactCRUDMixin, CaravelModelView):  # noqa
    datamodel = SQLAInterface(models.DruidColumn)
    edit_columns = [
        'column_name', 'description', 'datasource', 'groupby',
        'count_distinct', 'sum', 'min', 'max'
    ]
    list_columns = [
        'column_name', 'type', 'groupby', 'filterable', 'count_distinct',
        'sum', 'min', 'max'
    ]
    can_delete = False
    page_size = 500

    def post_update(self, col):
        col.generate_metrics()
Beispiel #21
0
class SqlMetricInlineView(CompactCRUDMixin, CaravelModelView):  # noqa
    datamodel = SQLAInterface(models.SqlMetric)
    list_columns = ['metric_name', 'verbose_name', 'metric_type']
    edit_columns = [
        'metric_name', 'description', 'verbose_name', 'metric_type',
        'expression', 'table'
    ]
    description_columns = {
        'expression':
        utils.markdown(
            "a valid SQL expression as supported by the underlying backend. "
            "Example: `count(DISTINCT userid)`", True),
    }
    add_columns = edit_columns
    page_size = 500
Beispiel #22
0
class JudgeTimeChartView(GroupByChartView):
    datamodel = SQLAInterface(Judge, db.session)

    chart_title = 'Grouped Birth Judge'
    chart_type = 'AreaChart'
    label_columns = JudgeView.label_columns
    definitions = [{
        'group': 'age_today',
        'formatter': pretty_month_year,
        "series": [(aggregate_count, "age_today")]
    }, {
        'group': 'age_today',
        'formatter': pretty_year,
        "series": [(aggregate_count, "age_today")]
    }]
class DefendantChartView(GroupByChartView):
    datamodel = SQLAInterface(Defendant , db.session)
    chart_title = 'Grouped Defendant by Birth'
    label_columns = DefendantView.label_columns
    chart_type = 'PieChart'
 
    definitions = [
        {
            'group' : 'age_today',
            "series" : [(aggregate_count,"age_today")]
        },
        {
            'group' : 'gender',
            "series" : [(aggregate_count,"age_today")]
        }
    ]
Beispiel #24
0
class DatasourceModelView(ModelView):
    datamodel = SQLAInterface(models.Datasource)
    list_columns = ['datasource_link', 'owner', 'is_featured', 'is_hidden']
    related_views = [ColumnInlineView, MetricInlineView]
    edit_columns = [
        'datasource_name', 'description', 'owner', 'is_featured', 'is_hidden',
        'default_endpoint'
    ]
    page_size = 100
    base_order = ('datasource_name', 'asc')

    def post_insert(self, datasource):
        datasource.generate_metrics()

    def post_update(self, datasource):
        datasource.generate_metrics()
class ContactChartView(GroupByChartView):
    datamodel = SQLAInterface(Contact)
    chart_title = 'Grouped contacts'
    label_columns = ContactModelView.label_columns
    chart_type = 'PieChart'

    definitions = [
        {
            'group' : 'contact_group.name',
            'series' : [(aggregate_count,'contact_group')]
        },
        {
            'group' : 'gender.name',
            'series' : [(aggregate_count,'contact_group')]
        }
    ]
Beispiel #26
0
class FeatureSourceModelView(ModelView):
    datamodel = SQLAInterface(models.FeatureSource)
    list_columns = ['name', 'feature_source_type']
    edit_columns = ["name"]
    add_columns = ["name", 'feature_source_type']
    related_views = [FeaturesModelView, TableColumnsModelView]

    def post_add(self, table):
        try:
            table.fetch_table_metadata()
        except Exception as e:
            logging.exception(e)
            utils.flasher('Table not exists!')

    def post_update(self, table):
        self.post_add(table)
Beispiel #27
0
class TableColumnInlineView(CompactCRUDMixin, CaravelModelView):  # noqa
    datamodel = SQLAInterface(models.TableColumn)
    can_delete = False
    edit_columns = [
        'column_name',
        'verbose_name',
        'description',
        'groupby',
        'filterable',
        'table',
        'count_distinct',
        'sum',
        'min',
        'max',
        'expression',
        'is_dttm',
    ]
    add_columns = edit_columns
    list_columns = [
        'column_name', 'type', 'groupby', 'filterable', 'count_distinct',
        'sum', 'min', 'max', 'is_dttm'
    ]
    page_size = 500
    description_columns = {
        'is_dttm':
        (_("Whether to make this column available as a "
           "[Time Granularity] option, column has to be DATETIME or "
           "DATETIME-like")),
        'expression':
        utils.markdown(
            "a valid SQL expression as supported by the underlying backend. "
            "Example: `substr(name, 1, 1)`", True),
    }
    label_columns = {
        'column_name': _("Column"),
        'verbose_name': _("Verbose Name"),
        'description': _("Description"),
        'groupby': _("Groupable"),
        'filterable': _("Filterable"),
        'table': _("Table"),
        'count_distinct': _("Count Distinct"),
        'sum': _("Sum"),
        'min': _("Min"),
        'max': _("Max"),
        'expression': _("Expression"),
        'is_dttm': _("Is temporal"),
    }
Beispiel #28
0
class TableColumnInlineView(CompactCRUDMixin, PanoramixModelView):
    datamodel = SQLAInterface(models.TableColumn)
    can_delete = False
    edit_columns = [
        'column_name', 'description', 'groupby', 'filterable', 'table',
        'count_distinct', 'sum', 'min', 'max', 'expression', 'is_dttm']
    add_columns = edit_columns
    list_columns = [
        'column_name', 'type', 'groupby', 'filterable', 'count_distinct',
        'sum', 'min', 'max', 'is_dttm']
    page_size = 500
    description_columns = {
        'is_dttm': (
            "Whether to make this column available as a "
            "[Time Granularity] option, column has to be DATETIME or "
            "DATETIME-like"),
    }
Beispiel #29
0
class PinView(ModelView):
    datamodel = SQLAInterface(Pin)

    base_permissions = ['can_list', 'can_show', 'can_edit']
    list_columns = [
        'name',
        'type',
        'function',
        'device',
        'room',
    ]
    show_columns = list_columns
    edit_columns = [
        'name',
        'function',
        'device',
        'room',
    ]
Beispiel #30
0
class DruidMetricInlineView(CompactCRUDMixin, CaravelModelView):  # noqa
    datamodel = SQLAInterface(models.DruidMetric)
    list_columns = ['metric_name', 'verbose_name', 'metric_type']
    edit_columns = [
        'metric_name', 'description', 'verbose_name', 'metric_type', 'json',
        'datasource']
    add_columns = edit_columns
    page_size = 500
    validators_columns = {
        'json': [validate_json],
    }
    description_columns = {
        'metric_type': utils.markdown(
            "use `postagg` as the metric type if you are defining a "
            "[Druid Post Aggregation]"
            "(http://druid.io/docs/latest/querying/post-aggregations.html)",
            True),
    }