class Problems(dd.Table): "The base table for :class:`Problem` objects." model = 'plausibility.Problem' column_names = "user owner message #fixable checker *" auto_fit_column_widths = True editable = False cell_edit = False parameters = dict( user=models.ForeignKey( 'users.User', blank=True, null=True, verbose_name=_("Responsible"), help_text=_("""Only problems for this responsible.""")), checker=Checkers.field(blank=True, help_text=_("Only problems by this checker.")), ) params_layout = "user checker" # simple_parameters = ('user', 'checker') detail_layout = dd.DetailLayout(""" user owner checker id message""", window_size=(70, 'auto')) @classmethod def get_simple_parameters(cls): s = super(Problems, cls).get_simple_parameters() s.add('user') s.add('checker') return s
class Deployments(dd.Table): model = 'deploy.Deployment' parameters = mixins.ObservedDateRange(show_closed=dd.YesNo.field( blank=True, default=dd.YesNo.as_callable('no'), help_text=_("Show deployments on closed milestones."))) params_layout = "start_date end_date show_closed" stay_in_grid = True detail_layout = dd.DetailLayout(""" milestone wish_type ticket remark """, window_size=(50, 15)) @classmethod def unused_get_request_queryset(self, ar): qs = super(Deployments, self).get_request_queryset(ar) pv = ar.param_values cls = dd.plugins.tickets.milestone_model.workflow_state_field.choicelist closed = cls.filter(invoiceable=True) if pv.show_closed == dd.YesNo.no: qs = qs.filter(milestone__state__in=closed) # qs = qs.filter(milestone__closed=False) elif pv.show_closed == dd.YesNo.yes: qs = qs.exclude(milestone__state__in=closed) # qs = qs.filter(milestone__closed=True) return qs
class Members(dd.Table): required_roles = dd.login_required(ContactsUser) model = 'lists.Member' detail_layout = dd.DetailLayout(""" list partner remark """, window_size=(60, 'auto'))
class Companies(dd.Table): model = 'Company' column_names = 'name address_column *' detail_layout = dd.DetailLayout(""" id name addr1 street_prefix street street_no street_box addr2""", window_size=(50, 'auto'))
class SalesRules(dd.Table): model = 'invoicing.SalesRule' required_roles = dd.login_required(LedgerStaff) detail_layout = dd.DetailLayout(""" partner invoice_recipient paper_type """, window_size=(40, 'auto'))
class Links(dd.Table): model = 'humanlinks.Link' required_roles = dd.required(ContactsStaff) stay_in_grid = True detail_layout = dd.DetailLayout(""" parent type child """, window_size=(40, 'auto'))
class Persons(dd.Table): model = Person detail_layout = dd.DetailLayout(""" name country city """, window_size=(50, 'auto')) insert_layout = """
class Interests(dd.Table): required_roles = dd.login_required(TopicsUser) model = 'topics.Interest' column_names = "partner topic *" detail_layout = dd.DetailLayout(""" partner topic owner remark """, window_size=(60, 15))
class Links(dd.Table): model = 'tickets.Link' required_roles = dd.login_required(TicketsStaff) stay_in_grid = True detail_layout = dd.DetailLayout(""" parent type child """, window_size=(40, 'auto'))
class AnswerRemarks(dd.Table): required_roles = dd.required(PollsUser) model = 'polls.AnswerRemark' detail_layout = dd.DetailLayout(""" remark response question """, window_size=(60, 10)) hidden_elements = dd.fields_list(AnswerRemark, 'response question') stay_in_grid = True
class Offers(dd.Table): model = 'skills.Competence' required_roles = dd.login_required(dd.SiteStaff) # required_roles = dd.login_required(SocialStaff) column_names = 'id user faculty description affinity *' order_by = ["id"] detail_layout = dd.DetailLayout(""" user end_user faculty affinity description """, window_size=(60, 15))
class Demands(dd.Table): model = 'skills.Demand' required_roles = dd.login_required(dd.SiteStaff) # required_roles = dd.login_required(SocialStaff) column_names = 'id demander skill importance *' order_by = ["id"] stay_in_grid = True detail_layout = dd.DetailLayout(""" demander skill importance id """, window_size=(40, 'auto'))
class Declarations(dd.Table): model = Declaration column_names = 'year period workflow_buttons * state id' insert_layout = dd.InsertLayout(""" entry_date year period """, window_size=(40, 'auto')) detail_layout = dd.DetailLayout(""" entry_date year period user workflow_buttons fields VouchersByDeclaration """, fields=DeclarationFields.fields_layout)
class Memberships(dd.Table): model = 'groups.Membership' insert_layout = dd.InsertLayout(""" user group remark """, window_size=(60, 'auto')) detail_layout = dd.DetailLayout(""" user group remark """, window_size=(60, 'auto'))
class MyVotes(My, Votes): """Show all my votes.""" label = _("My votes") column_names = "votable_overview workflow_buttons *" # hide_top_toolbar = True detail_layout = dd.DetailLayout(""" user #project workflow_buttons mail_mode priority nickname """, window_size=(40, 'auto'), hidden_elements='user')
class CommentsByX(Comments): required_roles = dd.login_required(CommentsReader) order_by = ["-created"] # order_by = ["-modified"] display_mode = "summary" card_layout = dd.DetailLayout(""" card_summary CommentsByComment """) @classmethod def get_card_title(self, ar, obj): """Overrides the default behaviour """ return ar.actor.get_comment_header(obj, ar)
class LanguageKnowledgesByPerson(LanguageKnowledges): """Shows the languages known by this person.""" master_key = 'person' column_names = "language native spoken written cef_level" required_roles = dd.required(CareerUser) auto_fit_column_widths = True slave_grid_format = "summary" detail_layout = dd.DetailLayout(""" language native cef_level spoken_passively spoken written """, window_size=(50, 'auto')) @classmethod def do_setup(self): super(LanguageKnowledgesByPerson, self).do_setup() self.detail_action.action.hide_top_toolbar = True @classmethod def get_detail_title(self, ar, obj): """Overrides the default behaviour. """ return u"{} / {}".format(obj.person, obj.language) # return str(obj.language) @classmethod def get_slave_summary(self, obj, ar): """The :meth:`summary view <lino.core.actors.Actor.get_slave_summary>` for this table. """ sar = self.request_from(ar, master_instance=obj) html = [] items = [sar.obj2html(o) for o in sar] sar = self.insert_action.request_from(sar) if sar.get_permission(): btn = sar.ar2button() items.append(btn) if len(items) > 0: html += join_elems(items, sep=', ') return E.p(*html)
class LanguageKnowledgesByPerson(LanguageKnowledges): """Shows the languages known by this person.""" master_key = 'person' column_names = "language native spoken written cef_level has_certificate entry_date *" required_roles = dd.login_required(CareerUser) auto_fit_column_widths = True display_mode = "summary" window_size = (70, 15) detail_layout = dd.DetailLayout(""" language native has_certificate cef_level spoken_passively spoken written entry_date """, window_size=(50, 'auto')) insert_layout = dd.InsertLayout(""" language native has_certificate cef_level spoken_passively spoken written entry_date """, window_size=(50, 'auto')) @classmethod def do_setup(self): super(LanguageKnowledgesByPerson, self).do_setup() self.detail_action.action.hide_top_toolbar = True @classmethod def get_detail_title(self, ar, obj): # Overrides the default behaviour. return u"{} / {}".format(obj.person, obj.language) # return str(obj.language) @classmethod def get_table_summary(self, obj, ar): sar = self.request_from(ar, master_instance=obj) sar = self.insert_action.request_from(sar) if sar.get_permission(): # lst = [sar.ar2button(label=u"⊕", icon_name=None)] lst = [sar.ar2button()] else: lst = [] return obj.get_language_knowledge(*lst)
class TrendStages(dd.Table): required_roles = dd.login_required(TrendsUser) model = 'trends.TrendStage' column_names = 'ref trend_area name subject_column *' order_by = ['ref', 'trend_area', 'name'] stay_in_grid = True insert_layout = """ name ref trend_area """ detail_layout = dd.DetailLayout(""" ref trend_area id name EventsByStage """)
class ContactDetails(dd.Table): model = 'phones.ContactDetail' required_roles = dd.login_required(SiteStaff) column_names = ( "value:30 detail_type:10 remark:10 partner id " "primary *") insert_layout = """ detail_type value remark """ detail_layout = dd.DetailLayout(""" partner detail_type value remark """, window_size=(60, 'auto'))
class ChatGroups(dd.Table): model = 'chat.ChatGroup' column_names = "created user title description *" required_roles = set([]) # cell_edit = False detail_layout = dd.DetailLayout(""" title ticket created user description ChatMembers """, window_size=(50, 15)) insert_layout = dd.InsertLayout(""" title description """)
class DemandsByDemander(Demands): label = _("Wanted skills") required_roles = dd.login_required() master_key = 'demander' # column_names = 'skill importance user *' column_names = 'skill importance *' order_by = ["-importance", "-skill__id"] # exclude_vote_states = 'author' detail_layout = dd.DetailLayout(""" skill importance """, window_size=(40, 'auto')) insert_layout = """ skill importance """ display_mode = 'summary' @classmethod def get_table_summary(self, obj, ar): """Customized :meth:`summary view <lino.core.actors.Actor.get_table_summary>` for this table. """ sar = self.request_from(ar, master_instance=obj) html = [] items = [ ar.obj2html(o, str(o.skill)) for o in sar] sar = self.insert_action.request_from(sar) if sar.get_permission(): btn = sar.ar2button() items.append(btn) if len(items) > 0: html += join_elems(items, sep=', ') return E.p(*html)
class Lists(dd.Table): required_roles = dd.required(OfficeUser) model = 'lists.List' column_names = 'ref name list_type *' order_by = ['ref'] insert_layout = dd.InsertLayout(""" ref list_type name remarks """, window_size=(60, 12)) detail_layout = dd.DetailLayout(""" ref list_type id name remarks MembersByList """)
class Uploads(dd.Table): model = 'uploads.Upload' required_roles = dd.login_required((OfficeUser, OfficeOperator)) column_names = "file type user owner description *" order_by = ['-id'] detail_layout = dd.DetailLayout(""" file user volume:10 library_file:40 upload_area type description owner """, window_size=(80, 'auto')) insert_layout = """ type description file volume library_file user """ parameters = mixins.ObservedDateRange( # user=dd.ForeignKey( # 'users.User', blank=True, null=True, # verbose_name=_("Uploaded by")), upload_type=dd.ForeignKey('uploads.UploadType', blank=True, null=True)) params_layout = "start_date end_date user upload_type" # simple_parameters = ['user'] @classmethod def get_request_queryset(cls, ar, **filter): qs = super(Uploads, cls).get_request_queryset(ar, **filter) pv = ar.param_values if pv.user: qs = qs.filter(user=pv.user) if pv.upload_type: qs = qs.filter(type=pv.upload_type) return qs
class Lists(dd.Table): required_roles = dd.login_required(ContactsUser) model = 'lists.List' # column_names = 'ref designation list_type *' column_names = 'ref overview list_type *' order_by = ['ref'] insert_layout = dd.InsertLayout(""" ref list_type designation remarks """, window_size=(60, 12)) detail_layout = dd.DetailLayout(""" id ref list_type print_actions designation remarks MembersByList """)
class Addresses(dd.Table): model = 'addresses.Address' required_roles = dd.required(dd.SiteStaff) column_names = ("partner address_type:10 remark:10 " "address_column:30 primary data_source *") insert_layout = """ country city street street_no street_box address_type remark """ detail_layout = dd.DetailLayout(""" country city zip_code addr1 street street_no street_box addr2 address_type remark data_source partner """, window_size=(60, 'auto'))
class Mails(dd.Table): #~ read_access = dd.login_required(user_level='manager') required_roles = dd.login_required(OfficeStaff) model = Mail column_names = "sent recipients subject * body" hidden_columns = 'body' order_by = ["sent"] detail_layout = dd.DetailLayout(""" subject project date user sent #build_time id owner RecipientsByMail:50x5 AttachmentsByMail:20x5 uploads.UploadsByController:20x5 body:90x10 """) insert_layout = dd.InsertLayout(""" project subject body """, window_size=(60, 20))
class InvoiceItems(dd.Table): """Shows all sales invoice items.""" model = 'sales.InvoiceItem' auto_fit_column_widths = True column_names = "product title discount unit_price qty total_incl *" # hidden_columns = "seqno description total_base total_vat" detail_layout = dd.DetailLayout(""" seqno product discount unit_price qty total_base total_vat total_incl title description""", window_size=(80, 20)) insert_layout = """ product discount qty title """ stay_in_grid = True
class Problems(dd.Table): "The base table for :class:`Problem` objects." model = 'checkdata.Problem' column_names = "user owner message #fixable checker *" auto_fit_column_widths = True editable = False cell_edit = False # parameters = dict( # # user=models.ForeignKey( # # 'users.User', blank=True, null=True, # # verbose_name=_("Responsible"), # # help_text=_("""Only problems for this responsible.""")), # ) params_layout = "user checker" # simple_parameters = ('user', 'checker') detail_layout = dd.DetailLayout(""" checker owner message user id """, window_size=(70, 'auto'))
class ChatMessages(dd.Table): model = 'chat.ChatMessage' column_names = "created user body *" # required_roles = [UserRole] # cell_edit = False detail_layout = dd.DetailLayout(""" user group body """, window_size=(50, 15)) #parameters = ObservedDateRange( # user=dd.ForeignKey( # settings.SITE.user_model, # blank=True, null=True), # show_seen=dd.YesNo.field(_("Seen"), blank=True), #) #params_layout = "user start_date end_date" # @classmethod # def get_simple_parameters(cls): # for p in super(Messages, cls).get_simple_parameters(): # yield p # yield 'user' @classmethod def get_request_queryset(self, ar, **filter): qs = super(ChatMessages, self).get_request_queryset(ar, **filter) # pv = ar.param_values # # if pv.show_seen == dd.YesNo.yes: # qs = qs.filter(seen__isnull=False) # elif pv.show_seen == dd.YesNo.no: # qs = qs.filter(seen__isnull=True) return qs