Beispiel #1
0
 def _entryline_editor(self, xfer, serial_vals, debit_rest, credit_rest):
     last_row = xfer.get_max_row() + 5
     lbl = XferCompLabelForm('sep1')
     lbl.set_location(0, last_row, 6)
     lbl.set_value("{[center]}{[hr/]}{[/center]}")
     xfer.add_component(lbl)
     lbl = XferCompLabelForm('sep2')
     lbl.set_location(1, last_row + 1, 5)
     lbl.set_value_center(_("Add a entry line"))
     xfer.add_component(lbl)
     entry_line = EntryLineAccount()
     entry_line.editor.edit_line(xfer, 0, last_row + 2, debit_rest, credit_rest)
     if entry_line.has_account:
         btn = XferCompButton('entrybtn')
         btn.set_location(3, last_row + 5)
         btn.set_action(xfer.request, ActionsManage.get_action_url(
             'accounting.EntryLineAccount', 'Add', xfer), close=CLOSE_YES)
         xfer.add_component(btn)
     self.item.editor.show(xfer)
     grid_lines = xfer.get_components('entrylineaccount')
     xfer.remove_component('entrylineaccount')
     new_grid_lines = XferCompGrid('entrylineaccount_serial')
     new_grid_lines.set_model(self.item.get_entrylineaccounts(serial_vals), None, xfer)
     new_grid_lines.set_location(grid_lines.col, grid_lines.row, grid_lines.colspan + 2, grid_lines.rowspan)
     new_grid_lines.add_action_notified(xfer, EntryLineAccount)
     xfer.add_component(new_grid_lines)
     nb_lines = len(new_grid_lines.record_ids)
     return nb_lines
Beispiel #2
0
 def show(self, xfer):
     xfer.move_components('lbl_body', 0, 2)
     xfer.move_components('body', 0, 2)
     obj_recipients = xfer.get_components('recipients')
     new_recipients = XferCompGrid('recipient_list')
     new_recipients.set_location(obj_recipients.col, obj_recipients.row, obj_recipients.colspan)
     new_recipients.add_header("model", _('model'))
     new_recipients.add_header("filter", _('filter'))
     compid = 0
     for model_title, filter_desc in self.item.recipients_description:
         new_recipients.set_value(compid, "model", model_title)
         new_recipients.set_value(compid, "filter", filter_desc)
         compid += 1
     if compid > 0:
         nb_contact = len(self.item.get_contacts())
         contact_nb = XferCompLabelForm('contact_nb')
         contact_nb.set_location(obj_recipients.col, obj_recipients.row + 1, obj_recipients.colspan)
         contact_nb.set_value(_("Message defined for %d contacts") % nb_contact)
         xfer.add_component(contact_nb)
     lbl = XferCompLabelForm('sep_body')
     lbl.set_location(obj_recipients.col - 1, obj_recipients.row + 2, 4)
     lbl.set_value("{[hr/]}")
     xfer.add_component(lbl)
     xfer.remove_component('recipients')
     new_recipients.add_action_notified(xfer, 'recipient_list')
     xfer.add_component(new_recipients)
     return LucteriosEditor.show(self, xfer)
Beispiel #3
0
    def show(self, xfer):
        xfer.move_components('body', 0, 2)
        obj_recipients = xfer.get_components('recipients')
        new_recipients = XferCompGrid('recipient_list')
        new_recipients.tab = obj_recipients.tab
        new_recipients.set_location(obj_recipients.col, obj_recipients.row,
                                    obj_recipients.colspan)
        new_recipients.add_header("model", _('model'))
        new_recipients.add_header("filter", _('filter'))
        compid = 0
        for model_title, filter_desc in self.item.recipients_description:
            new_recipients.set_value(compid, "model", model_title)
            new_recipients.set_value(compid, "filter", filter_desc)
            compid += 1
        if compid == 0:
            xfer.remove_component('contact_nb')
        if not will_mail_send() or (len(self.item.get_contacts(False)) == 0):
            xfer.remove_component('contact_noemail')
        xfer.remove_component('recipients')
        new_recipients.add_action_notified(xfer, 'recipient_list')
        xfer.tab = new_recipients.tab
        xfer.add_component(new_recipients)

        old_documents = xfer.get_components('documents')
        xfer.remove_component('documents')
        new_documents = XferCompGrid('document')
        new_documents.tab = old_documents.tab
        new_documents.set_location(old_documents.col, old_documents.row,
                                   old_documents.colspan)
        new_documents.set_model(self.item.documents.all(),
                                ["name", "description", "date_modification"],
                                xfer)
        new_documents.add_action(xfer.request,
                                 DocumentShow.get_action(
                                     TITLE_EDIT, "images/show.png"),
                                 modal=FORMTYPE_MODAL,
                                 close=CLOSE_NO,
                                 unique=SELECT_SINGLE)
        if self.item.status == 0:
            new_documents.add_action(xfer.request,
                                     MessageRemoveDoc.get_action(
                                         _("Remove"), "images/delete.png"),
                                     modal=FORMTYPE_MODAL,
                                     close=CLOSE_NO,
                                     unique=SELECT_MULTI)
            new_documents.add_action(xfer.request,
                                     MessageInsertDoc.get_action(
                                         _("Insert"), "images/add.png"),
                                     modal=FORMTYPE_MODAL,
                                     close=CLOSE_NO,
                                     unique=SELECT_NONE)
        xfer.tab = new_documents.tab
        xfer.add_component(new_documents)

        return LucteriosEditor.show(self, xfer)
Beispiel #4
0
 def fill_grid(self, row, model, field_id, items):
     grid = XferCompGrid(field_id)
     if self.multi_page:
         xfer = self
     else:
         xfer = None
     grid.set_model(items, self.fieldnames, xfer)
     grid.add_action_notified(self, model=model)
     grid.set_location(0, row + 1, 2)
     grid.set_size(200, 500)
     self.add_component(grid)
Beispiel #5
0
def show_contact_degree(contact, xfer):
    if WrapAction.is_permission(xfer.request, 'event.change_degree'):
        up_contact = contact.get_final_child()
        if isinstance(up_contact, Adherent):
            degrees = Degree.objects.filter(adherent=up_contact)
            xfer.new_tab(_("Degree"))
            grid = XferCompGrid('degrees')
            grid.set_model(degrees, None, xfer)
            grid.add_action_notified(xfer, Degree)
            grid.set_location(0, xfer.get_max_row() + 1, 2)
            grid.set_size(200, 500)
            xfer.add_component(grid)
Beispiel #6
0
def show_contact_degree(contact, xfer):
    if WrapAction.is_permission(xfer.request, 'event.change_degree') and (Params.getvalue("event-degree-enable") == 1):
        up_contact = contact.get_final_child()
        if isinstance(up_contact, Adherent):
            degrees = Degree.objects.filter(adherent=up_contact)
            xfer.new_tab(_("Degree"))
            grid = XferCompGrid('degrees')
            grid.set_model(degrees, None, xfer)
            grid.add_action_notified(xfer, Degree)
            grid.set_location(0, xfer.get_max_row() + 1, 2)
            grid.set_size(200, 500)
            xfer.add_component(grid)
Beispiel #7
0
 def fill_grid(self, row, model, field_id, items):
     grid = XferCompGrid(field_id)
     if self.size_by_page is not None:
         grid.size_by_page = self.size_by_page
     if self.multi_page:
         xfer = self
     else:
         xfer = None
     grid.set_model(items, self.fieldnames, xfer)
     grid.add_action_notified(self, model=model)
     grid.set_location(0, row + 1, 2)
     grid.set_size(200, 500)
     self.add_component(grid)
Beispiel #8
0
 def filltab_from_model(self, col, row, readonly, field_names, prefix=''):
     maxsize_of_lines = self.get_maxsize_of_lines(field_names)
     for line_field_name in field_names:
         if not isinstance(line_field_name, tuple):
             line_field_name = line_field_name,
         offset = 0
         height = 1
         comp_col_addon = 0
         for field_name in line_field_name:
             if field_name is None:
                 continue
             colspan = self.get_current_offset(maxsize_of_lines,
                                               len(line_field_name), offset)
             if field_name[-4:] == '_set':  # field is one-to-many relation
                 child = getattr(self.item, field_name).all()
                 if hasattr(self.item, field_name[:-4] + '_query'):
                     child = child.filter(
                         getattr(self.item, field_name[:-4] + '_query'))
                 comp = XferCompGrid(field_name[:-4])
                 comp.set_model(child, None, self)
                 comp.add_action_notified(self, model=child.model)
                 comp.set_location(col + comp_col_addon + offset, row,
                                   colspan, 1)
                 comp.description = six.text_type(
                     child.model._meta.verbose_name)
                 self.add_component(comp)
                 offset += 1 + comp_col_addon
             else:
                 if isinstance(field_name, tuple):
                     verbose_name, field_name = field_name
                 else:
                     verbose_name = None
                 dep_field = self.item.get_field_by_name(field_name)
                 # field real in model
                 if (dep_field is None
                     ) or not dep_field.auto_created or dep_field.concrete:
                     # field not many-to-many
                     if readonly:
                         comp = self.get_reading_comp(field_name, prefix)
                     else:
                         comp = self.get_writing_comp(field_name)
                     comp.set_location(col + comp_col_addon + offset, row,
                                       colspan, 1)
                     if verbose_name is None:
                         comp.description = six.text_type(
                             dep_field.verbose_name)
                     else:
                         comp.description = six.text_type(verbose_name)
                     self.add_component(comp)
                     offset += 1 + comp_col_addon
         row += height
Beispiel #9
0
    def show(self, xfer):
        obj_body = xfer.get_components('body')
        obj_body.value = "{[div style='border:1px solid black;background-color:#EEE;padding:5px;']}%s{[div]}" % obj_body.value

        xfer.move_components('body', 0, 2)
        obj_recipients = xfer.get_components('recipients')
        new_recipients = XferCompGrid('recipient_list')
        new_recipients.tab = obj_recipients.tab
        new_recipients.set_location(obj_recipients.col, obj_recipients.row, obj_recipients.colspan)
        new_recipients.add_header("model", _('model'))
        new_recipients.add_header("filter", _('filter'))
        compid = 0
        for model_title, filter_desc in self.item.recipients_description:
            new_recipients.set_value(compid, "model", model_title)
            new_recipients.set_value(compid, "filter", filter_desc)
            compid += 1
        if compid == 0:
            xfer.remove_component('contact_nb')
        if not will_mail_send() or (len(self.item.get_contacts(False)) == 0):
            xfer.remove_component('contact_noemail')
        xfer.remove_component('recipients')
        new_recipients.add_action_notified(xfer, 'recipient_list')
        xfer.tab = new_recipients.tab
        xfer.add_component(new_recipients)

        old_documents = xfer.get_components('attachments')
        xfer.remove_component('attachments')
        if xfer.item.is_dynamic:
            xfer.remove_component('__tab_3')
            xfer.remove_component('doc_in_link')
            xfer.remove_component('empty')
        else:
            new_documents = XferCompGrid('attachments')
            new_documents.tab = old_documents.tab
            new_documents.set_location(old_documents.col, old_documents.row, old_documents.colspan)
            new_documents.set_model(self.item.attachments.all(), ["name", "description", "date_modification"], xfer)
            new_documents.add_action(xfer.request, DocumentShow.get_action(TITLE_EDIT, "images/show.png"),
                                     modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE)
            if self.item.status == 0:
                new_documents.add_action(xfer.request, MessageRemoveDoc.get_action(_("Remove"), "images/delete.png"),
                                         modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_MULTI)
                new_documents.add_action(xfer.request, MessageInsertDoc.get_action(_("Insert"), "images/add.png"),
                                         modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_NONE)
            xfer.tab = new_documents.tab
            xfer.add_component(new_documents)
        contact_nb = xfer.get_components('contact_nb')
        if (contact_nb is not None) and (self.item.nb_total > 0):
            xfer.tab = contact_nb.tab
            xfer.fill_from_model(contact_nb.col, contact_nb.row + 1, True, [((_('statistic'), 'statistic'),)])
        return LucteriosEditor.show(self, xfer)
Beispiel #10
0
def thirdaddon_expense(item, xfer):
    if WrapAction.is_permission(xfer.request, 'condominium.change_expense'):
        try:
            status_filter = xfer.getparam('status_filter',
                                          Expense.STATUS_BUILDING)
            date_filter = xfer.getparam('date_filter', 0)
            current_year = FiscalYear.get_current()
            item.get_account(current_year,
                             current_system_account().get_provider_mask())
            xfer.new_tab(_('Expenses'))
            edt = XferCompSelect("status_filter")
            edt.set_select(list(Expense.get_field_by_name('status').choices))
            edt.set_value(status_filter)
            edt.description = _('Filter by type')
            edt.set_location(0, 1)
            edt.set_action(xfer.request,
                           xfer.return_action(),
                           modal=FORMTYPE_REFRESH,
                           close=CLOSE_NO)
            xfer.add_component(edt)
            edt = XferCompSelect("date_filter")
            edt.set_select([(0, _('only current fiscal year')),
                            (1, _('all expenses'))])
            edt.set_value(date_filter)
            edt.set_location(0, 2)
            edt.description = _('Filter by date')
            edt.set_action(xfer.request,
                           xfer.return_action(),
                           modal=FORMTYPE_REFRESH,
                           close=CLOSE_NO)
            xfer.add_component(edt)
            expense_filter = Q(status=status_filter) & Q(third=item)
            if date_filter == 0:
                expense_filter &= Q(date__gte=current_year.begin) & Q(
                    date__lte=current_year.end)
            expenses = Expense.objects.filter(expense_filter).distinct()
            expense_grid = XferCompGrid('expense')
            expense_grid.set_model(expenses,
                                   Expense.get_default_fields(status_filter),
                                   xfer)
            expense_grid.add_action_notified(xfer, Expense)
            expense_grid.set_location(0, 3, 2)
            xfer.add_component(expense_grid)
        except LucteriosException:
            pass
Beispiel #11
0
 def filltab_from_model(self, col, row, readonly, field_names):
     maxsize_of_lines = self.get_maxsize_of_lines(field_names)
     for line_field_name in field_names:
         if not isinstance(line_field_name, tuple):
             line_field_name = line_field_name,
         offset = 0
         height = 1
         comp_col_addon = 0
         for field_name in line_field_name:
             if field_name is None:
                 continue
             colspan = self.get_current_offset(maxsize_of_lines, len(line_field_name), offset)
             if field_name[-4:] == '_set':  # field is one-to-many relation
                 child = getattr(self.item, field_name).all()
                 if hasattr(self.item, field_name[:-4] + '_query'):
                     child = child.filter(getattr(self.item, field_name[:-4] + '_query'))
                 comp = XferCompGrid(field_name[:-4])
                 comp.set_model(child, None, self)
                 comp.add_action_notified(self, model=child.model)
                 comp.set_location(col + comp_col_addon + offset, row, colspan, 1)
                 comp.description = six.text_type(child.model._meta.verbose_name)
                 self.add_component(comp)
                 offset += 1 + comp_col_addon
             else:
                 if isinstance(field_name, tuple):
                     verbose_name, field_name = field_name
                 else:
                     verbose_name = None
                 dep_field = self.item.get_field_by_name(field_name)
                 # field real in model
                 if (dep_field is None) or not dep_field.auto_created or dep_field.concrete:
                     # field not many-to-many
                     if readonly:
                         comp = self.get_reading_comp(field_name)
                     else:
                         comp = self.get_writing_comp(field_name)
                     comp.set_location(col + comp_col_addon + offset, row, colspan, 1)
                     if verbose_name is None:
                         comp.description = six.text_type(dep_field.verbose_name)
                     else:
                         comp.description = six.text_type(verbose_name)
                     self.add_component(comp)
                     offset += 1 + comp_col_addon
         row += height
Beispiel #12
0
 def fillresponse(self):
     self.fields_desc.initial(self.item)
     self.read_criteria_from_params()
     self.fillresponse_add_title()
     self.fillresponse_search_select()
     self.fillresponse_search_values()
     self.fillresponse_show_criteria()
     row = self.get_max_row()
     self.filter_items()
     grid = XferCompGrid(self.field_id)
     grid.set_model(self.items, self.fieldnames, self)
     grid.add_action_notified(self)
     grid.set_location(0, row + 4, 6)
     grid.set_size(200, 500)
     self.add_component(grid)
     for act, opt in ActionsManage.get_actions(
             ActionsManage.ACTION_IDENT_LIST, self, key=action_list_sorted):
         self.add_action(act, **opt)
     self.add_action(WrapAction(_('Close'), 'images/close.png'))
Beispiel #13
0
    def show(self, xfer):
        xfer.move_components('body', 0, 2)
        obj_recipients = xfer.get_components('recipients')
        new_recipients = XferCompGrid('recipient_list')
        new_recipients.tab = obj_recipients.tab
        new_recipients.set_location(obj_recipients.col, obj_recipients.row, obj_recipients.colspan)
        new_recipients.add_header("model", _('model'))
        new_recipients.add_header("filter", _('filter'))
        compid = 0
        for model_title, filter_desc in self.item.recipients_description:
            new_recipients.set_value(compid, "model", model_title)
            new_recipients.set_value(compid, "filter", filter_desc)
            compid += 1
        if compid == 0:
            xfer.remove_component('contact_nb')
        if not will_mail_send() or (len(self.item.get_contacts(False)) == 0):
            xfer.remove_component('contact_noemail')
        xfer.remove_component('recipients')
        new_recipients.add_action_notified(xfer, 'recipient_list')
        xfer.tab = new_recipients.tab
        xfer.add_component(new_recipients)

        old_documents = xfer.get_components('documents')
        xfer.remove_component('documents')
        new_documents = XferCompGrid('document')
        new_documents.tab = old_documents.tab
        new_documents.set_location(old_documents.col, old_documents.row, old_documents.colspan)
        new_documents.set_model(self.item.documents.all(), ["name", "description", "date_modification"], xfer)
        new_documents.add_action(xfer.request, DocumentShow.get_action(TITLE_EDIT, "images/show.png"),
                                 modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_SINGLE)
        if self.item.status == 0:
            new_documents.add_action(xfer.request, MessageRemoveDoc.get_action(_("Remove"), "images/delete.png"),
                                     modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_MULTI)
            new_documents.add_action(xfer.request, MessageInsertDoc.get_action(_("Insert"), "images/add.png"),
                                     modal=FORMTYPE_MODAL, close=CLOSE_NO, unique=SELECT_NONE)
        xfer.tab = new_documents.tab
        xfer.add_component(new_documents)

        return LucteriosEditor.show(self, xfer)