예제 #1
0
        #~ return self.summary

    def update_cal_rset(self):
        return self

    def update_cal_from(self, ar):
        return self.start_date

    def update_cal_calendar(self):
        return self.event_type

    def update_cal_summary(self, i):
        return unicode(self)

dd.update_field(
    RecurrentEvent, 'every_unit',
    default=Recurrencies.yearly, blank=False, null=False)


class RecurrentEvents(dd.Table):

    model = 'cal.RecurrentEvent'
    required = dd.required(user_groups='office', user_level='manager')
    column_names = "start_date end_date name every_unit event_type *"
    auto_fit_column_widths = True
    order_by = ['start_date']

    insert_layout = """
    name
    start_date end_date every_unit event_type
    """
예제 #2
0
파일: models.py 프로젝트: cuchac/lino
    #~ cities = models.ManyToManyField('countries.Place')
    #~ description = dd.BabelTextField(format='plain',blank=True)
    url = models.URLField(blank=True)


class Stage(dd.Sequenced):
    event = dd.ForeignKey('events.Event', related_name="stages")
    city = dd.ForeignKey('countries.Place', related_name="stages")

    def __unicode__(self):
        return unicode(self.city)

    def get_siblings(self):
        return self.event.stages.order_by('seqno')

dd.update_field(Event, 'name', blank=True)


class StagesByEvent(dd.Table):
    model = Stage  # Event.cities.through
    master_key = 'event'


class FeaturesByEvent(dd.Table):
    model = Event.features.through
    master_key = 'event'


class Events(dd.Table):
    model = Event
    order_by = ['date']
예제 #3
0
    def get_print_language(self):
        if settings.SITE.project_model is not None and self.project:
            return self.project.get_print_language()
        return self.user.language
        
    @classmethod
    def get_default_table(cls):
        return OneEvent

    @classmethod
    def on_analyze(cls,lino):
        cls.DISABLED_AUTO_FIELDS = dd.fields_list(cls,
            '''summary''')
            

dd.update_field(Event,'user',verbose_name=_("Responsible user"))


class EventDetail(dd.FormLayout):
    start = "start_date start_time"
    end = "end_date end_time"
    main = """
    event_type summary user assigned_to
    start end #all_day #duration state
    room priority access_class transparent #rset 
    owner created:20 modified:20  
    description
    GuestsByEvent outbox.MailsByController
    """
class EventInsert(EventDetail):
    main = """
예제 #4
0
    #~ register_action = None
    #~ deregister_action = None

    def before_state_change(self, ar, old, new):
        if new.name == 'registered':
            if self.get_existing_auto_events().count() == 0:
                #~ ar.confirm("Booking has no events! Are you sure?")
                raise Warning("Booking has no events!")

    def after_ui_save(self, ar):
        super(Booking, self).after_ui_save(ar)
        if self.state.editable:
            self.update_reminders(ar)


dd.update_field(Booking, 'contact_person', verbose_name=_("Contact person"))
dd.update_field(Booking, 'company', verbose_name=_("Organizer"))
dd.update_field(Booking, 'every_unit', default=Recurrencies.once)
dd.update_field(Booking, 'every', default=1)


class BookingDetail(dd.FormLayout):
    #~ start = "start_date start_time"
    #~ end = "end_date end_time"
    #~ freq = "every every_unit"
    #~ start end freq
    main = "general sales.InvoicingsByInvoiceable"
    general = dd.Panel("""
    start_date start_time end_date end_time
    room event_type workflow_buttons
    max_events max_date every_unit every 
예제 #5
0
파일: mixins.py 프로젝트: raffas/lino
    def find_start_date(self, date):
        for i in range(7):
            if self.is_available_on(date):
                return date
            date += ONE_DAY
        return None

    def is_available_on(self, date):
        wd = date.isoweekday()  # Monday:1, Tuesday:2 ... Sunday:7
        wd = Weekdays.get_by_value(str(wd))
        rv = getattr(self, wd.name)
        #~ logger.info('20130529 is_available_on(%s) -> %s -> %s',date,wd,rv)
        return rv

dd.update_field(RecurrenceSet, 'start_date', default=datetime.date.today)


class Reservation(RecurrenceSet, EventGenerator, dd.Registrable):

    class Meta:
        abstract = True

    room = dd.ForeignKey('cal.Room', blank=True, null=True)
    max_date = models.DateField(
        blank=True, null=True,
        verbose_name=_("Generate events until"))

    def update_cal_until(self):
        return self.max_date
예제 #6
0
파일: models_event.py 프로젝트: raffas/lino
    # ~ return self.summary

    def update_cal_rset(self):
        return self

    def update_cal_from(self, ar):
        return self.start_date

    def update_cal_calendar(self):
        return self.event_type

    def update_cal_summary(self, i):
        return unicode(self)


dd.update_field(RecurrentEvent, "every_unit", default=Recurrencies.yearly)


class RecurrentEvents(dd.Table):

    """
    The list of all :class:`Recurrence Sets <RecurrenceSet>`.
    """

    model = "cal.RecurrentEvent"
    required = dd.required(user_groups="office", user_level="manager")
    column_names = "start_date end_date name every_unit event_type *"
    auto_fit_column_widths = True
    order_by = ["start_date"]

    insert_layout = """
예제 #7
0
        dd.Hierarizable,
        dd.Controllable):
    """The model definition."""

    class Meta:
        abstract = dd.is_abstract_model(__name__, 'Comment')
        verbose_name = _("Comment")
        verbose_name_plural = _("Comment")

    #~ text = dd.RichTextField(_("Text"),blank=True,format='html')
    text = dd.RichTextField(_("Text"), format='plain')

    def __unicode__(self):
        return u'%s #%s' % (self._meta.verbose_name, self.pk)

dd.update_field(Comment, 'user', editable=False)


class Comments(dd.Table):
    required = dd.required(user_level='admin')
    slave_grid_format = "summary"

    model = 'comments.Comment'

    insert_layout = dd.FormLayout("""
    text
    """, window_size=(40, 10))

    detail_layout = """
    id user created modified owner
    text
예제 #8
0
        return EnrolmentsByCourse.request(
            self, param_values=dict(state=EnrolmentStates.requested))

    @dd.requestfield(_("Confirmed"))
    def confirmed(self, ar):
        return EnrolmentsByCourse.request(
            self, param_values=dict(state=EnrolmentStates.confirmed))

    @dd.requestfield(_("Enrolments"))
    def enrolments(self, ar):
        return EnrolmentsByCourse.request(self)


# customize fields coming from mixins to override their inherited
# default verbose_names
dd.update_field(Course, 'every_unit', default=models.NOT_PROVIDED)
dd.update_field(Course, 'every', default=models.NOT_PROVIDED)


if Course.FILL_EVENT_GUESTS:

    @dd.receiver(dd.post_save, sender=cal.Event,
                 dispatch_uid="fill_event_guests_from_course")
    def fill_event_guests_from_course(sender=None, instance=None, **kw):
        #~ logger.info("20130528 fill_event_guests_from_course")
        if settings.SITE.loading_from_dump:
            return
        event = instance
        if event.is_user_modified():
            return
        if event.is_fixed_state():
예제 #9
0
파일: models.py 프로젝트: raffas/lino
    def on_analyze(cls, lino):
        cls.PRINTABLE_FIELDS = dd.fields_list(
            cls,
            "project company contact_person contact_role \
            excerpt_type language \
            user build_method",
        )
        super(Excerpt, cls).on_analyze(lino)

    def disabled_fields(self, ar):
        if not self.build_time:
            return set()
        return self.PRINTABLE_FIELDS


dd.update_field(Excerpt, "company", verbose_name=_("Recipient (Organization)"))
dd.update_field(Excerpt, "contact_person", verbose_name=_("Recipient (Person)"))


class ExcerptDetail(dd.FormLayout):
    main = """
    id excerpt_type:25 project
    company contact_person contact_role
    user:10 language:8 owner build_method build_time
    preview
    """


class Excerpts(dd.Table):
    required = dd.required(user_groups="office", user_level="admin")
    label = _("Excerpts history")
예제 #10
0
파일: models.py 프로젝트: cuchac/lino
    remarks
    MembersByList
    """)


class Member(ContactRelated, dd.Sequenced):

    class Meta:
        verbose_name = _("List Member")
        verbose_name_plural = _("List Members")

    list = dd.ForeignKey('lists.List')
    remark = models.CharField(_("Remark"), max_length=200, blank=True)


dd.update_field(Member, 'contact_person', verbose_name=_("Person"))
dd.update_field(Member, 'contact_role', verbose_name=_("Role"))


class Members(dd.Table):
    required = dd.required(user_level='manager')
    model = 'lists.Member'


class MembersByList(Members):
    master_key = 'list'
    order_by = ['seqno']
    column_names = "seqno company contact_person contact_role remark"


class MembersByPerson(Members):
예제 #11
0
        #~ mixins.AutoUser.update_owned_instance(self,task)
        #~ contacts.PartnerDocument.update_owned_instance(self,task)
        #~ super(ContractBase,self).update_owned_instance(other)

    def get_mailable_type(self):
        return self.type

    #~ def get_person(self):
        #~ return self.project
    #~ person = property(get_person)

    def get_print_language(self):
        return self.language


dd.update_field(Note, 'company', verbose_name=_("Recipient (Organization)"))
dd.update_field(Note, 'contact_person', verbose_name=_("Recipient (Person)"))


def html_text(s):
    return '<div class="htmlText">' + s + '</div>'


class NoteDetail(dd.FormLayout):
    main = """
    date:10 time event_type:25 type:25
    subject project
    company contact_person contact_role
    id user:10 language:8 build_time
    body outbox.MailsByController
    """
예제 #12
0
    Represents a physical person.
    """

    class Meta(Person.Meta):
        verbose_name = _("Person")
        verbose_name_plural = _("Persons")
        #~ ordering = ['last_name','first_name']

    def get_queryset(self, ar):
        return self.model.objects.select_related('country', 'city')

    def get_print_language(self):
        "Used by DirectPrintAction"
        return self.language

dd.update_field(Person, 'first_name', blank=False)
dd.update_field(Person, 'last_name', blank=False)


class PersonDetail(PersonDetail):

    main = "general contact misc"

    general = dd.Panel("""
    overview:20 general2:40 general3:40
    contacts.RolesByPerson:20 households.MembersByPerson:40 \
    humanlinks.LinksByHuman
    """, label=_("General"))

    general2 = """
    title first_name:15 middle_name:15
예제 #13
0
class AttachmentsByController(Attachments):
    master_key = 'owner'


MODULE_LABEL = _("Outbox")

system = dd.resolve_app('system')


def setup_main_menu(site, ui, profile, m):
    m = m.add_menu("office", system.OFFICE_MODULE_LABEL)
    m.add_action(MyOutbox)


#~ def setup_config_menu(site,ui,user,m):
    #~ if user.level >= UserLevels.manager:
    #~ m  = m.add_menu("outbox",MODULE_LABEL)
    #~ m.add_action(MailTypes)


def setup_explorer_menu(site, ui, profile, m):
    #~ if user.level >= UserLevels.manager:
    m = m.add_menu("office", system.OFFICE_MODULE_LABEL)
    #~ m  = m.add_menu("outbox",MODULE_LABEL)
    m.add_action(Mails)
    m.add_action(Attachments)


dd.update_field(Mail, 'user', verbose_name=_("Sender"))
예제 #14
0

class Board(dd.BabelNamed, dd.DatePeriod):

    class Meta:
        verbose_name = _("Board")
        verbose_name_plural = _("Boards")

    def full_clean(self, *args, **kw):
        if not self.start_date:
            self.start_date = dd.today()
        super(Board, self).full_clean(*args, **kw)


dd.update_field(
    Board, 'start_date',
    verbose_name=_("Works since"),
    null=False)
dd.update_field(Board, 'end_date', verbose_name=_("Worked until"))


class Boards(dd.Table):
    model = 'boards.Board'
    required = dd.required(user_level='admin', user_groups='office')
    column_names = 'name *'
    order_by = ["name"]

    insert_layout = """
    name
    """

    detail_layout = """
예제 #15
0
    def find_start_date(self, date):
        if date is not None:
            for i in range(7):
                if self.is_available_on(date):
                    return date
                date += ONE_DAY
        return None

    def is_available_on(self, date):
        wd = date.isoweekday()  # Monday:1, Tuesday:2 ... Sunday:7
        wd = Weekdays.get_by_value(str(wd))
        rv = getattr(self, wd.name)
        #~ logger.info('20130529 is_available_on(%s) -> %s -> %s',date,wd,rv)
        return rv

dd.update_field(RecurrenceSet, 'start_date', default=settings.SITE.today)


class Reservation(RecurrenceSet, EventGenerator, dd.Registrable):

    class Meta:
        abstract = True

    room = dd.ForeignKey('cal.Room', blank=True, null=True)
    max_date = models.DateField(
        blank=True, null=True,
        verbose_name=_("Generate events until"))

    def update_cal_until(self):
        return self.max_date