示例#1
0
 def weekdays_text(self, ar):
     if self.every_unit == Recurrencies.once:
         if self.end_date and self.end_date != self.start_date:
             return _("{0}-{1}").format(
                 dd.fds(self.start_date), dd.fds(self.end_date))
             # return _("From {0} until {1}").format(
             #     dd.fdf(self.start_date), dd.fdf(self.end_date))
         return _("On {0}").format(dd.fdf(self.start_date))
     elif self.every_unit == Recurrencies.weekly:
         weekdays = []
         for wd in Weekdays.objects():
             if getattr(self, wd.name):
                 weekdays.append(str(wd.text))
         if len(weekdays) == 0:
             return ''
         every_text = ', '.join(weekdays)
     elif self.every_unit == Recurrencies.daily:
         every_text = _("day")
     elif self.every_unit == Recurrencies.monthly:
         every_text = _("month")
     elif self.every_unit in (Recurrencies.yearly, Recurrencies.easter):
         every_text = _("year")
     else:
         return ''
     if self.every == 1:
         return _("Every %s") % every_text
     return _("Every %snd %s") % (self.every, every_text)
示例#2
0
文件: mixins.py 项目: einarfelix/xl
 def weekdays_text(self, ar=None):
     if self.every_unit == Recurrencies.once:
         if self.end_date and self.end_date != self.start_date:
             return gettext("{0}-{1}").format(dd.fds(self.start_date),
                                              dd.fds(self.end_date))
             # return _("From {0} until {1}").format(
             #     dd.fdf(self.start_date), dd.fdf(self.end_date))
         return gettext("On {0}").format(dd.fdf(self.start_date))
     elif self.every_unit == Recurrencies.weekly:
         every_text = self.weekdays_text_(', ')
     elif self.every_unit == Recurrencies.daily:
         every_text = gettext("day")
     elif self.every_unit == Recurrencies.monthly:
         if self.positions:
             positions = []
             for i in self.positions.split():
                 positions.append(str(POSITION_TEXTS.get(i, "?!")))
             every_text = " {} ".format(gettext("and")).join(positions) \
                 + " " + self.weekdays_text_(gettext(' and '), gettext("day")) \
                 + " " + gettext("of the month")
         else:
             every_text = gettext("month")
     elif self.every_unit in (Recurrencies.yearly, Recurrencies.easter):
         every_text = gettext("year")
     else:
         return ''
     if self.every == 1:
         return gettext("Every %s") % every_text
     return gettext("Every %snd %s") % (self.every, every_text)
示例#3
0
 def weekdays_text(self, ar):
     if self.every_unit == Recurrencies.once:
         if self.end_date:
             return _("{0}-{1}").format(dd.fds(self.start_date),
                                        dd.fds(self.end_date))
             # return _("From {0} until {1}").format(
             #     dd.fdf(self.start_date), dd.fdf(self.end_date))
         return _("On {0}").format(dd.fdf(self.start_date))
     elif self.every_unit == Recurrencies.weekly:
         weekdays = []
         for wd in Weekdays.objects():
             if getattr(self, wd.name):
                 weekdays.append(str(wd.text))
         if len(weekdays) == 0:
             return ''
         every_text = ', '.join(weekdays)
     elif self.every_unit == Recurrencies.daily:
         every_text = _("day")
     elif self.every_unit == Recurrencies.monthly:
         every_text = _("month")
     elif self.every_unit in (Recurrencies.yearly, Recurrencies.easter):
         every_text = _("year")
     else:
         return ''
     if self.every == 1:
         return _("Every %s") % every_text
     return _("Every %snd %s") % (self.every, every_text)
示例#4
0
文件: models.py 项目: zhuangyan/lino
    def get_slave_summary(self, response, ar):
        """Presents this response as a table with one row per question and one
        column for each response of the same poll.  The answers for
        this response are editable if this response is not registered.
        The answers of other responses are never editable.

        """
        if response is None:
            return
        if response.poll_id is None:
            return
        AnswerRemarks = rt.modules.polls.AnswerRemarksByAnswer
        all_responses = rt.modules.polls.Response.objects.filter(poll=response.poll).order_by("date")
        if response.partner:
            all_responses = all_responses.filter(partner=response.partner)
        ht = xghtml.Table()
        ht.attrib.update(cellspacing="5px", bgcolor="#ffffff", width="100%")
        cellattrs = dict(align="left", valign="top", bgcolor="#eeeeee")
        headers = [_("Question")]
        for r in all_responses:
            if r == response:
                headers.append(dd.fds(r.date))
            else:
                headers.append(ar.obj2html(r, dd.fds(r.date)))
        ht.add_header_row(*headers, **cellattrs)
        ar.master_instance = response  # must set it because
        # get_data_rows() needs it.
        editable = Responses.update_action.request_from(ar).get_permission(response)
        kv = dict(response=response)
        insert = AnswerRemarks.insert_action.request_from(ar, known_values=kv)
        detail = AnswerRemarks.detail_action.request_from(ar)
        # editable = insert.get_permission(response)
        for answer in self.get_data_rows(ar):
            cells = [self.question.value_from_object(answer, ar)]
            for r in all_responses:
                if editable and r == response:
                    insert.known_values.update(question=answer.question)
                    detail.known_values.update(question=answer.question)
                    items = [self.answer_buttons.value_from_object(answer, ar)]
                    if answer.remark.remark:
                        items += [E.br(), answer.remark.remark]
                    if answer.remark.pk:
                        items += [" ", detail.ar2button(answer.remark, _("Remark"), icon_name=None)]
                        # ar.obj2html(answer.remark, _("Remark"))]
                    else:
                        btn = insert.ar2button(answer.remark, _("Remark"), icon_name=None)
                        # sar = RemarksByAnswer.request_from(ar, answer)
                        # btn = sar.insert_button(_("Remark"), icon_name=None)
                        items += [" (", btn, ")"]

                else:
                    other_answer = AnswersByResponseRow(r, answer.question)
                    items = [unicode(other_answer)]
                    if other_answer.remark.remark:
                        items += [E.br(), answer.remark.remark]
                cells.append(E.p(*items))
            ht.add_body_row(*cells, **cellattrs)

        return E.div(ht.as_element(), class_="htmlText")
示例#5
0
文件: models.py 项目: TonisPiip/xl
 def __str__(self):
     if self.name:
         return self.name
     if self.room is None:
         return "%s (%s)" % (self.line, dd.fds(self.start_date))
     # Note that we cannot use super() with
     # python_2_unicode_compatible
     return "%s (%s %s)" % (self.line, dd.fds(self.start_date), self.room)
示例#6
0
文件: models.py 项目: khchine5/cosi
 def __str__(self):
     if self.name:
         return self.name
     if self.room is None:
         return "%s (%s)" % (self.line, dd.fds(self.start_date))
     # Note that we cannot use super() with
     # python_2_unicode_compatible
     return "%s (%s %s)" % (
         self.line,
         dd.fds(self.start_date),
         self.room)
示例#7
0
文件: models.py 项目: forexblog/xl
    def __str__(self):
        if self.name:
            return self.name
        if self.line_id is None:
            line = self._meta.verbose_name
        else:
            line = self.line

        if self.room is None:
            return "%s (%s)" % (line, dd.fds(self.start_date))
        return "%s (%s %s)" % (line, dd.fds(self.start_date), self.room)
示例#8
0
 def message_html(self, ar):
     from django.utils.translation import ugettext as _
     elems = []
     # elems += [_("Date"), dd.fds(self.transaction_date), " "]
     # elems += [_("Amount"), ' ', E.b(unicode(self.amount)), " "]
     # self.booking_date
     elems += self.message  # .splitlines()
     elems.append(E.br())
     # elems += [_("ref:"), ': ', self.ref, ' ']
     elems += [_("eref:"), ': ', self.eref]
     elems.append(E.br())
     elems += [E.b(self.txcd_text), ' ']
     elems += [_("Value date"), ': ', E.b(dd.fds(self.value_date)), " "]
     elems += [_("Booking date"), ': ', E.b(dd.fds(self.booking_date)), " "]
     return E.div(*elems)
示例#9
0
文件: models.py 项目: khchine5/cosi
    def get_vat_rule(cls, vat_regime, vat_class, country, date):
        """Return the first VatRule object to be applied for the given
        criteria.

        """
        qs = cls.objects.order_by('seqno')
        qs = qs.filter(Q(country__isnull=True) | Q(country=country))
        if vat_class is not None:
            # qs = qs.filter(Q(vat_class='') | Q(vat_class=vat_class))
            qs = qs.filter(Q(vat_class__in=('', vat_class)))
        if vat_regime is not None:
            qs = qs.filter(
                # Q(vat_regime='') | Q(vat_regime=vat_regime))
                Q(vat_regime__in=('', vat_regime)))
        qs = PeriodEvents.active.add_filter(qs, date)
        if qs.count() > 0:
            return qs[0]
        # rt.show(VatRules)
        msg = _("Found {num} VAT rules for %{context}!)").format(
            num=qs.count(), context=dict(
                vat_regime=vat_regime, vat_class=vat_class,
                country=country.isocode, date=dd.fds(date)))
        msg += " (SQL query was {0})".format(qs.query)
        dd.logger.info(msg)
        # raise Warning(msg)
        return None
示例#10
0
文件: utils.py 项目: DarioGT/lino
def when_text(d, t=None):
    """Return a string with a concise representation of the given date
    and time combination.

    Examples:

    >>> when_text(datetime.date(2013,12,25))
    u'Wed 12/25/13'
    
    >>> when_text(datetime.date(2013,12,25),datetime.time(17,15,00))
    u'Wed 12/25/13 (17:15)'
    
    >>> when_text(None)
    u''

    """
    if d is None:
        return ""
    # fmt = 'yyyy MMM dd (EE)'
    # txt = d.strftime(settings.SITE.date_format_strftime)
    txt = format_date(d, "EE ")
    txt += dd.fds(d)
    if t is not None:
        txt += " (%s)" % t.strftime(settings.SITE.time_format_strftime)
    return txt
示例#11
0
 def dtfmt(dt):
     if isinstance(dt, float):
         dt = datetime.datetime.fromtimestamp(dt)
         # raise ValueError("Expected float, go %r" % dt)
     return str(_("%(date)s at %(time)s")) % dict(
         date=dd.fds(dt.date()),
         time=settings.SITE.strftime(dt.time()))
示例#12
0
文件: models.py 项目: DarioGT/lino
    def get_slave_summary(self, obj, ar):
        """Displays a summary of all responses for a given partner using a
        bullet list grouped by poll.

        """
        if obj is None:
            return

        visible_polls = Poll.objects.filter(
            state__in=(PollStates.published,
                       PollStates.closed)).order_by('ref')

        qs = Response.objects.filter(partner=obj).order_by('date')
        polls_responses = {}
        for resp in qs:
            polls_responses.setdefault(resp.poll.pk, []).append(resp)

        items = []
        for poll in visible_polls:
            iar = self.insert_action.request_from(ar,
                                                  obj,
                                                  known_values=dict(poll=poll))
            elems = [unicode(poll), ' : ']
            responses = polls_responses.get(poll.pk, [])
            elems += join_elems(
                [ar.obj2html(r, dd.fds(r.date)) for r in responses], sep=', ')
            if poll.state == PollStates.published:
                elems += [' ', iar.ar2button()]
                #elems += [' ', iar.insert_button()]
            items.append(E.li(*elems))
        return E.div(E.ul(*items))
示例#13
0
    def get_vat_rule(cls, vat_regime, vat_class, country, date):
        """Return the first VatRule object to be applied for the given
        criteria.

        """
        qs = cls.objects.order_by('seqno')
        qs = qs.filter(Q(country__isnull=True) | Q(country=country))
        if vat_class is not None:
            # qs = qs.filter(Q(vat_class='') | Q(vat_class=vat_class))
            qs = qs.filter(Q(vat_class__in=('', vat_class)))
        if vat_regime is not None:
            qs = qs.filter(
                # Q(vat_regime='') | Q(vat_regime=vat_regime))
                Q(vat_regime__in=('', vat_regime)))
        qs = PeriodEvents.active.add_filter(qs, date)
        if qs.count() > 0:
            return qs[0]
        # rt.show(VatRules)
        msg = _("Found {num} VAT rules for %{context}!)").format(
            num=qs.count(),
            context=dict(vat_regime=vat_regime,
                         vat_class=vat_class,
                         country=country.isocode,
                         date=dd.fds(date)))
        msg += " (SQL query was {0})".format(qs.query)
        dd.logger.info(msg)
        # raise Warning(msg)
        return None
示例#14
0
 def get_vat_rule(
         cls, vat_area,
         trade_type=None, vat_regime=None, vat_class=None,
         date=None, default=models.NOT_PROVIDED):
     for i in cls.get_list_items():
         if i.vat_area is not None and vat_area != i.vat_area:
             continue
         if i.trade_type is not None and trade_type != i.trade_type:
             continue
         if i.vat_class is not None and vat_class != i.vat_class:
             continue
         if i.vat_regime is not None and vat_regime != i.vat_regime:
             continue
         if date is not None:
             if i.start_date and i.start_date > date:
                 continue
             if i.end_date and i.end_date < date:
                 continue
         return i
     if default is models.NOT_PROVIDED:
         msg = _("No VAT rule for ({!r},{!r},{!r},{!r},{!r})").format(
                 trade_type, vat_class, vat_area, vat_regime, 
                 dd.fds(date))
         if False:
             dd.logger.info(msg)
         else:
             raise Warning(msg)
     return default
示例#15
0
 def get_vat_rule(
         cls, vat_area,
         trade_type=None, vat_regime=None, vat_class=None,
         date=None, default=models.NOT_PROVIDED):
     for i in cls.get_list_items():
         if i.vat_area is not None and vat_area != i.vat_area:
             continue
         if i.trade_type is not None and trade_type != i.trade_type:
             continue
         if i.vat_class is not None and vat_class != i.vat_class:
             continue
         if i.vat_regime is not None and vat_regime != i.vat_regime:
             continue
         if date is not None:
             if i.start_date and i.start_date > date:
                 continue
             if i.end_date and i.end_date < date:
                 continue
         return i
     if default is models.NOT_PROVIDED:
         msg = _("No VAT rule for ({!r},{!r},{!r},{!r},{!r})").format(
                 trade_type, vat_class, vat_area, vat_regime,
                 dd.fds(date))
         if False:
             dd.logger.info(msg)
         else:
             raise Warning(msg)
     return default
示例#16
0
    def get_table_summary(self, obj, ar):
        if obj is None:
            return

        visible_polls = Poll.objects.filter(state__in=(
            PollStates.active, PollStates.closed)).order_by('ref')

        qs = Response.objects.filter(partner=obj).order_by('date')
        polls_responses = {}
        for resp in qs:
            polls_responses.setdefault(resp.poll.pk, []).append(resp)

        items = []
        for poll in visible_polls:
            iar = self.insert_action.request_from(
                ar, obj, known_values=dict(poll=poll))
            elems = [str(poll), ' : ']
            responses = polls_responses.get(poll.pk, [])
            elems += join_elems(
                [ar.obj2html(r, dd.fds(r.date))
                 for r in responses], sep=', ')
            if poll.state == PollStates.active:
                elems += [' ', iar.ar2button()]
                #elems += [' ', iar.insert_button()]
            items.append(E.li(*elems))
        return E.div(E.ul(*items))
示例#17
0
文件: models.py 项目: zhuangyan/lino
    def get_slave_summary(self, obj, ar):
        """Displays a summary of all responses for a given partner using a
        bullet list grouped by poll.

        """
        if obj is None:
            return

        visible_polls = Poll.objects.filter(state__in=(PollStates.published, PollStates.closed)).order_by("ref")

        qs = Response.objects.filter(partner=obj).order_by("date")
        polls_responses = {}
        for resp in qs:
            polls_responses.setdefault(resp.poll.pk, []).append(resp)

        items = []
        for poll in visible_polls:
            iar = self.insert_action.request_from(ar, obj, known_values=dict(poll=poll))
            elems = [unicode(poll), " : "]
            responses = polls_responses.get(poll.pk, [])
            elems += join_elems([ar.obj2html(r, dd.fds(r.date)) for r in responses], sep=", ")
            if poll.state == PollStates.published:
                elems += [" ", iar.ar2button()]
                # elems += [' ', iar.insert_button()]
            items.append(E.li(*elems))
        return E.div(E.ul(*items))
示例#18
0
文件: utils.py 项目: DarioGT/lino
def when_text(d, t=None):
    """Return a string with a concise representation of the given date
    and time combination.

    Examples:

    >>> when_text(datetime.date(2013,12,25))
    u'Wed 12/25/13'
    
    >>> when_text(datetime.date(2013,12,25),datetime.time(17,15,00))
    u'Wed 12/25/13 (17:15)'
    
    >>> when_text(None)
    u''

    """
    if d is None:
        return ''
    # fmt = 'yyyy MMM dd (EE)'
    # txt = d.strftime(settings.SITE.date_format_strftime)
    txt = format_date(d, 'EE ')
    txt += dd.fds(d)
    if t is not None:
        txt += ' (%s)' % t.strftime(settings.SITE.time_format_strftime)
    return txt
示例#19
0
文件: models.py 项目: einarfelix/xl
    def get_table_summary(self, obj, ar):
        if obj is None:
            return

        visible_polls = Poll.objects.filter(
            state__in=(PollStates.active, PollStates.closed)).order_by('ref')

        qs = Response.objects.filter(partner=obj).order_by('date')
        polls_responses = {}
        for resp in qs:
            polls_responses.setdefault(resp.poll.pk, []).append(resp)

        items = []
        for poll in visible_polls:
            iar = self.insert_action.request_from(ar,
                                                  obj,
                                                  known_values=dict(poll=poll))
            elems = [str(poll), ' : ']
            responses = polls_responses.get(poll.pk, [])
            elems += join_elems(
                [ar.obj2html(r, dd.fds(r.date)) for r in responses], sep=', ')
            if poll.state == PollStates.active:
                elems += [' ', iar.ar2button()]
                #elems += [' ', iar.insert_button()]
            items.append(E.li(*elems))
        return E.div(E.ul(*items))
示例#20
0
 def dtfmt(dt):
     if isinstance(dt, float):
         dt = datetime.datetime.fromtimestamp(dt)
         # raise ValueError("Expected float, go %r" % dt)
     return str(_("%(date)s at %(time)s")) % dict(
         date=dd.fds(dt.date()),
         time=settings.SITE.strftime(dt.time()))
示例#21
0
文件: models.py 项目: khchine5/cosi
 def message_html(self, ar):
     from django.utils.translation import ugettext as _
     elems = []
     # elems += [_("Date"), dd.fds(self.transaction_date), " "]
     # elems += [_("Amount"), ' ', E.b(unicode(self.amount)), " "]
     # self.booking_date
     elems += self.message  # .splitlines()
     elems.append(E.br())
     # elems += [_("ref:"), ': ', self.ref, ' ']
     elems += [_("eref:"), ': ', self.eref]
     elems.append(E.br())
     elems += [E.b(self.txcd_text), ' ']
     elems += [_("Value date"), ': ', E.b(dd.fds(self.value_date)), " "]
     elems += [_("Booking date"), ': ',
               E.b(dd.fds(self.booking_date)), " "]
     return E.div(*elems)
示例#22
0
 def __str__(self):
     if self.partner is None:
         return _("%(user)s's response to %(poll)s") % dict(
             user=self.user, poll=self.poll)
     return _("{poll} {partner} {date}").format(
         user=self.user.initials,
         date=dd.fds(self.date),
         partner=self.partner.get_full_name(salutation=False),
         poll=self.poll)
示例#23
0
文件: models.py 项目: einarfelix/xl
 def __str__(self):
     if self.partner is None:
         return _("%(user)s's response to %(poll)s") % dict(user=self.user,
                                                            poll=self.poll)
     return _("{poll} {partner} {date}").format(
         user=self.user.initials,
         date=dd.fds(self.date),
         partner=self.partner.get_full_name(salutation=False),
         poll=self.poll)
示例#24
0
文件: mixins.py 项目: forexblog/xl
    def weekdays_text(self, ar=None):
        if self.every_unit == Recurrencies.once:
            if self.end_date and self.end_date != self.start_date:
                return gettext("{0}-{1}").format(dd.fds(self.start_date),
                                                 dd.fds(self.end_date))
                # return _("From {0} until {1}").format(
                #     dd.fdf(self.start_date), dd.fdf(self.end_date))
            return gettext("On {0}").format(dd.fdf(self.start_date))
        elif self.every_unit == Recurrencies.daily:
            day_text = gettext("day")
        elif self.every_unit == Recurrencies.weekly:
            day_text = self.weekdays_text_(', ')
            if not day_text:
                return gettext("Every week")
        elif self.every_unit == Recurrencies.monthly:
            if self.positions:
                # assert self.every == 1
                # day_text = " {} ".format(gettext("and")).join(positions) \
                #     + " " + self.weekdays_text_(gettext(' and '), gettext("day")) \
                #     + " " + gettext("of the month")
                day_text = self.positions_text_(" {} ".format(gettext("and"))) \
                    + " " + self.weekdays_text_(" {} ".format(gettext("and")), gettext("day"))
                return gettext("Every {day} of the month").format(day=day_text)
            else:
                s = ngettext("Every month", "Every {count} months", self.every)
                return s.format(count=self.every)

        elif self.every_unit == Recurrencies.yearly:
            s = ngettext("Every year", "Every {count} years", self.every)
            return s.format(count=self.every)
        elif self.every_unit == Recurrencies.easter:
            s = ngettext("Every year (with Easter)",
                         "Every {count} years (with Easter)", self.every)
            return s.format(count=self.every)
        else:
            return "Invalid recurrency unit {}".format(self.every_unit)
        s = ngettext("Every {day}", "Every {ord_count} {day}", self.every)
        return s.format(ord_count=num2words(self.every,
                                            to='ordinal',
                                            lang=translation.get_language()),
                        day=day_text)
示例#25
0
文件: models.py 项目: forexblog/xl
 def summary_row(cls, ar, obj, **kwargs):
     # s = super(NotesByX, cls).summary_row(ar, obj)
     s = [dd.fds(obj.date)]
     if obj.time is not None:
         s += [" ", obj.time.strftime(
             settings.SITE.time_format_strftime)]
     s+= [" ", obj.obj2href(ar)]
     if obj.user != ar.get_user():
         s += [' (', obj.user.initials or str(obj.user), ")"]
     if obj.subject:
         s += [' ', obj.subject]
     return s
示例#26
0
 def summary_row(cls, ar, obj, **kwargs):
     # s = super(NotesByX, cls).summary_row(ar, obj)
     s = [dd.fds(obj.date)]
     if obj.time is not None:
         s += [" ", obj.time.strftime(
             settings.SITE.time_format_strftime)]
     s+= [" ", obj.obj2href(ar)]
     if obj.user != ar.get_user():
         s += [' (', obj.user.initials or str(obj.user), ")"]
     if obj.subject:
         s += [' ', obj.subject]
     return s
示例#27
0
    def when_text(self, ar):
        # Overrides `lino_xl.lib.cal.models_event.Event.when_text`.
        # It is a bit of redundant code, but making it configurable
        # would be nitpicky.
        if ar is None:
            return ''
        # txt = naturalday(self.start_date)
        txt = format_date(self.start_date, 'EE ')
        txt += dd.fds(self.start_date)
        if self.start_time is not None:
            txt = "%s %s %s" % (
                txt, pgettext("(time)", "at"),
                self.start_time.strftime(settings.SITE.time_format_strftime))

        #~ logger.info("20130802a when_text %r",txt)
        return ar.obj2html(self, txt)
示例#28
0
    def get_slave_summary(self, obj, ar):
        """The summary view for this table.

        See :meth:`lino.core.actors.Actor.get_slave_summary`.

        """
        if ar is None:
            return ''
        sar = self.request_from(ar, master_instance=obj)

        elems = []
        for guest in sar:
            lbl = dd.fds(guest.event.start_date)
            if guest.state.button_text:
                lbl = "{0}{1}".format(lbl, guest.state.button_text)
            elems.append(ar.obj2html(guest.event, lbl))
        elems = join_elems(elems, sep=', ')
        return ar.html_text(E.div(*elems))
示例#29
0
 def get_notify_subject(self, ar, obj):
     return self.notify_subject % dict(
         guest=obj.partner,
         day=dd.fds(obj.event.start_date),
         time=str(obj.event.start_time))
示例#30
0
文件: models.py 项目: einarfelix/xl
    def get_table_summary(self, response, ar):
        if response is None:
            return
        if response.poll_id is None:
            return
        AnswerRemarks = rt.models.polls.AnswerRemarksByAnswer
        all_responses = rt.models.polls.Response.objects.filter(
            poll=response.poll).order_by('date')
        if response.partner:
            all_responses = all_responses.filter(partner=response.partner)
        ht = xghtml.Table()
        ht.attrib.update(cellspacing="5px", bgcolor="#ffffff", width="100%")
        cellattrs = dict(align="left", valign="top", bgcolor="#eeeeee")
        headers = [str(_("Question"))]
        for r in all_responses:
            if r == response:
                headers.append(dd.fds(r.date))
            else:
                headers.append(ar.obj2html(r, dd.fds(r.date)))
        ht.add_header_row(*headers, **cellattrs)
        ar.master_instance = response  # must set it because
        # get_data_rows() needs it.
        # 20151211
        # editable = Responses.update_action.request_from(ar).get_permission(
        #     response)
        sar = Responses.update_action.request_from(ar)
        sar.selected_rows = [response]
        editable = sar.get_permission()
        # editable = insert.get_permission(response)
        kv = dict(response=response)
        insert = AnswerRemarks.insert_action.request_from(ar, known_values=kv)
        detail = AnswerRemarks.detail_action.request_from(ar)
        for answer in self.get_data_rows(ar):
            cells = [self.question.value_from_object(answer, ar)]
            for r in all_responses:
                if editable and r == response:
                    insert.known_values.update(question=answer.question)
                    detail.known_values.update(question=answer.question)
                    items = [self.answer_buttons.value_from_object(answer, ar)]
                    if answer.remark.remark:
                        items += [E.br(), answer.remark.remark]
                    if answer.remark.pk:
                        items += [
                            ' ',
                            detail.ar2button(answer.remark,
                                             _("Remark"),
                                             icon_name=None)
                        ]
                        # ar.obj2html(answer.remark, _("Remark"))]
                    else:
                        btn = insert.ar2button(answer.remark,
                                               _("Remark"),
                                               icon_name=None)
                        # sar = RemarksByAnswer.request_from(ar, answer)
                        # btn = sar.insert_button(_("Remark"), icon_name=None)
                        items += [" (", btn, ")"]

                else:
                    other_answer = AnswersByResponseRow(r, answer.question)
                    items = [str(other_answer)]
                    if other_answer.remark.remark:
                        items += [E.br(), answer.remark.remark]
                cells.append(E.p(*items))
            ht.add_body_row(*cells, **cellattrs)

        return ar.html_text(ht.as_element())
示例#31
0
 def __str__(self):
     if self.aid_type_id is not None:
         t1 = self.aid_type.short_name or unicode(self.aid_type)
         return "%s/%s/%s" % (t1, dd.fds(self.start_date), self.client.id)
     return '%s #%s' % (self._meta.verbose_name, self.pk)
示例#32
0
    def get_data_rows(self, ar):
        """
        """
        data_rows = self.get_request_queryset(ar)

        today = ar.param_values.date or settings.SITE.today()
        period = (today, today)

        def UL(items):
            # ~ return E.ul(*[E.li(i) for i in items])
            newitems = []
            first = True
            for i in items:
                if first:
                    first = False
                else:
                    newitems.append(E.br())
                newitems.append(i)
            return E.p(*newitems)

        for job in data_rows:
            showit = False
            working = []
            qs = job.contract_set.order_by("applies_from")
            if ar.param_values.contract_type:
                qs = qs.filter(type=ar.param_values.contract_type)
            for ct in qs:
                if ct.applies_from:
                    until = ct.date_ended or ct.applies_until
                    if not until or (ct.applies_from <= today and until >= today):
                        working.append(ct)
            if len(working) > 0:
                job._working = UL(
                    [
                        E.span(
                            # ~ ar.obj2html(ct.person,ct.person.last_name.upper()),
                            ar.obj2html(ct.person),
                            # pgettext("(place)", " at ")
                            # + unicode(ct.company.name),
                            " bis %s" % dd.fds(ct.applies_until),
                        )
                        for ct in working
                    ]
                )
                showit = True
            else:
                job._working = ""

            candidates = []
            qs = job.candidature_set.order_by("date_submitted").filter(state=CandidatureStates.active)
            qs = only_coached_on(qs, period, "person")
            for cand in qs:
                candidates.append(cand)
            if candidates:
                job._candidates = UL(
                    [
                        # ~ ar.obj2html(i.person,i.person.last_name.upper())
                        ar.obj2html(i.person)
                        for i in candidates
                    ]
                )
                showit = True
            else:
                job._candidates = ""

            probation = []
            qs = job.candidature_set.order_by("date_submitted").filter(state=CandidatureStates.probation)
            qs = only_coached_on(qs, period, "person")
            for cand in qs:
                probation.append(cand)
            if probation:
                job._probation = UL(
                    [
                        # ~ E.span(ar.obj2html(i.person,i.person.last_name.upper()))
                        E.span(ar.obj2html(i.person))
                        for i in probation
                    ]
                )
                showit = True
            else:
                job._probation = ""

            if showit:
                yield job
示例#33
0
文件: feedback.py 项目: forexblog/xl
 def get_notify_subject(self, ar, obj):
     return self.notify_subject % dict(guest=obj.partner,
                                       event_type=obj.event.event_type,
                                       day=dd.fds(obj.event.start_date),
                                       time=str(obj.event.start_time))
示例#34
0
 def __str__(self):
     s = unicode(self.designation)
     if self.date:
         s += ' (%s)' % dd.fds(self.date)
     return s
示例#35
0
文件: models.py 项目: DarioGT/lino
    def get_slave_summary(self, response, ar):
        """Presents this response as a table with one row per question and one
        column for each response of the same poll.  The answers for
        this response are editable if this response is not registered.
        The answers of other responses are never editable.

        """
        if response is None:
            return
        if response.poll_id is None:
            return
        AnswerRemarks = rt.modules.polls.AnswerRemarksByAnswer
        all_responses = rt.modules.polls.Response.objects.filter(
            poll=response.poll).order_by('date')
        if response.partner:
            all_responses = all_responses.filter(partner=response.partner)
        ht = xghtml.Table()
        ht.attrib.update(cellspacing="5px", bgcolor="#ffffff", width="100%")
        cellattrs = dict(align="left", valign="top", bgcolor="#eeeeee")
        headers = [_("Question")]
        for r in all_responses:
            if r == response:
                headers.append(dd.fds(r.date))
            else:
                headers.append(ar.obj2html(r, dd.fds(r.date)))
        ht.add_header_row(*headers, **cellattrs)
        ar.master_instance = response  # must set it because
        # get_data_rows() needs it.
        editable = Responses.update_action.request_from(ar).get_permission(
            response)
        kv = dict(response=response)
        insert = AnswerRemarks.insert_action.request_from(ar, known_values=kv)
        detail = AnswerRemarks.detail_action.request_from(ar)
        # editable = insert.get_permission(response)
        for answer in self.get_data_rows(ar):
            cells = [self.question.value_from_object(answer, ar)]
            for r in all_responses:
                if editable and r == response:
                    insert.known_values.update(question=answer.question)
                    detail.known_values.update(question=answer.question)
                    items = [self.answer_buttons.value_from_object(answer, ar)]
                    if answer.remark.remark:
                        items += [E.br(), answer.remark.remark]
                    if answer.remark.pk:
                        items += [
                            ' ',
                            detail.ar2button(answer.remark,
                                             _("Remark"),
                                             icon_name=None)
                        ]
                        # ar.obj2html(answer.remark, _("Remark"))]
                    else:
                        btn = insert.ar2button(answer.remark,
                                               _("Remark"),
                                               icon_name=None)
                        # sar = RemarksByAnswer.request_from(ar, answer)
                        # btn = sar.insert_button(_("Remark"), icon_name=None)
                        items += [" (", btn, ")"]

                else:
                    other_answer = AnswersByResponseRow(r, answer.question)
                    items = [unicode(other_answer)]
                    if other_answer.remark.remark:
                        items += [E.br(), answer.remark.remark]
                cells.append(E.p(*items))
            ht.add_body_row(*cells, **cellattrs)

        return E.div(ht.as_element(), class_="htmlText")