Ejemplo n.º 1
0
    def test_timeline(self):
        #Test for timeline's form

        date_begin = from_current_timezone(datetime.datetime.today() + datetime.timedelta(days = 1))
        date_end = from_current_timezone(datetime.datetime.today() - datetime.timedelta(days = 30))
        
        # document + part selected + no date specified
        response = self.get("/timeline/", {"part":"on","document":"on"})
        history = response.context["object_history"]
        self.assertEqual(list(history), list(m.History.objects.filter(date__gte = date_end, date__lt = date_begin)))
        # Only document selected + no date specified
        response = self.get("/timeline/", {"document":"on"})
        history2 = response.context["object_history"]
        self.assertEqual(list(history2), list(m.History.objects.filter(date__gte = date_end, date__lt = date_begin, plmobject__type__in = m.document.get_all_documents().keys())))
        # Only part selected + no date specified
        response = self.get("/timeline/", {"part":"on"})
        history3 = response.context["object_history"]
        self.assertEqual(list(history3), list(m.History.objects.filter(date__gte = date_end, date__lt = date_begin, plmobject__type__in = m.part.get_all_parts().keys())))
        # part + document selected and date specified / done_by not informed 
        response = self.get("/timeline/", {"part":"on", "document":"on", "date_history_begin":"2013-06-8", "number_days": "15"})
        history4 = response.context["object_history"]
        date_begin = from_current_timezone(datetime.datetime(2013,6,9))
        date_end = from_current_timezone(date_begin - datetime.timedelta(days = 15))
        self.assertEqual(list(history4), list(m.History.objects.filter(date__gte = date_end, date__lt = date_begin)))
        # part + document selected and date specified + done_by informed 
        response = self.get("/timeline/" , {"part":"on", "document":"on", "date_history_begin":"2013-06-8", "number_days": "15", "done_by": "company"})
        history5 = response.context["object_history"]
        self.assertEqual(list(history5), list(m.History.objects.filter(date__gte = date_end, date__lt = date_begin, user__username="******")))
        # only group selected
        response = self.get("/timeline/" , {"group":"on","date_history_begin":"2013-06-8", "number_days": "15", "done_by": "company"})
        history6 = response.context["object_history"]
        self.assertEqual(list(history6), list(m.GroupHistory.objects.filter(date__gte = date_end, date__lt = date_begin, user__username="******")))
Ejemplo n.º 2
0
    def to_python(self, value):
        if value in validators.EMPTY_VALUES:
            return None

        if isinstance(value, list):
            # This came from SplitDateTimeWidget so the value is two strings
            value = ' '.join(value)

        if isinstance(value, str) or isinstance(value, unicode):
            try:
                v = dateutil.parser.parse(value, tzinfos=all_timezones_map())
            except:
                raise ValidationError('Invalid date/time string: %s' % value)

            return from_current_timezone(v)

        if isinstance(value, datetime.datetime):
            return from_current_timezone(value)

        if isinstance(value, datetime.date):
            result = datetime.datetime(value.year, value.month, value.day)
            return from_current_timezone(result)

        raise ValidationError('Unknown data/time field value type: %s' %
                              type(value))
Ejemplo n.º 3
0
    def to_python(self, value):
        if value in validators.EMPTY_VALUES:
            return None

        if isinstance(value, list):
            # This came from SplitDateTimeWidget so the value is two strings
            value = ' '.join(value)

        if isinstance(value, str) or isinstance(value, unicode):
            try:
                v = dateutil.parser.parse(value, tzinfos=all_timezones_map())
            except:
                raise ValidationError('Invalid date/time string: %s' % value)

            return from_current_timezone(v)

        if isinstance(value, datetime.datetime):
            return from_current_timezone(value)

        if isinstance(value, datetime.date):
            result = datetime.datetime(value.year, value.month, value.day)
            return from_current_timezone(result)

        raise ValidationError('Unknown data/time field value type: %s' %
                              type(value))
Ejemplo n.º 4
0
 def save(self, *args, **kwargs):
     if self.allday == True:
         self.startdatetime = from_current_timezone(datetime(self.startdatetime.year, self.startdatetime.month, self.startdatetime.day))
         self.enddatetime = from_current_timezone(datetime(self.startdatetime.year, self.startdatetime.month, self.startdatetime.day + 1))
     if self.until:
         self.until = from_current_timezone(self.until)
     #self.byweekday = [int(day) for day in self.byweekday]
     super(Event, self).save(*args, **kwargs)
Ejemplo n.º 5
0
 def save(self, *args, **kwargs):
     if self.allday == True:
         self.startdatetime = from_current_timezone(
             datetime(self.startdatetime.year, self.startdatetime.month,
                      self.startdatetime.day))
         self.enddatetime = from_current_timezone(
             datetime(self.startdatetime.year, self.startdatetime.month,
                      self.startdatetime.day + timedelta(days=1)))
     super(Event, self).save(*args, **kwargs)
Ejemplo n.º 6
0
 def clean(self, value):
     value = super(TzAwareTimeField, self).to_python(value)
     print value
     dt = to_current_timezone(timezone.now())
     print dt
     new_time = dt.replace(
         hour=value.hour, minute=value.minute,
         second=value.second, microsecond=value.microsecond)
     print from_current_timezone(new_time)
     return from_current_timezone(new_time)
Ejemplo n.º 7
0
 def save(self, *args, **kwargs):
     if self.allday == True:
         self.startdatetime = from_current_timezone(
             datetime(self.startdatetime.year, self.startdatetime.month,
                      self.startdatetime.day))
         self.enddatetime = from_current_timezone(
             datetime(self.startdatetime.year, self.startdatetime.month,
                      self.startdatetime.day + 1))
     if self.until:
         self.until = from_current_timezone(self.until)
     #self.byweekday = [int(day) for day in self.byweekday]
     super(Event, self).save(*args, **kwargs)
Ejemplo n.º 8
0
	def testHandler(self):
		import decimal
		from django.forms.util import from_current_timezone

		handler = TestHandler(self.request.GET);
		status = handler._is_valid()

		if not status:
			errors = handler.get_error_list()
			print errors, type(errors)
		
		self.assertEqual(status, True)
		self.assertEqual(handler._meta.resource_name, 'test_handler')
		self.assertEqual(handler.test_name, unicode(self.request.GET['test_name']))
		self.assertEqual(handler.test_datetime, from_current_timezone(self.request.now))
		self.assertEqual(handler.test_date, self.now_date)
		self.assertEqual(handler.test_time, self.now_time)
		self.assertEqual(handler.test_integer, int(self.request.GET['test_integer']))
		self.assertEqual(handler.test_decimal, decimal.Decimal(self.request.GET['test_decimal']))
		self.assertEqual(handler.test_float, float(self.request.GET['test_float']))
		self.assertEqual(handler.test_email, unicode(self.request.GET['test_email']))
		self.assertEqual(handler.test_url, unicode('http://' + self.request.GET['test_url'] + '/'))
		self.assertEqual(handler.test_ip, unicode(self.request.GET['test_ip']))
		self.assertEqual(handler.test_slug, unicode(self.request.GET['test_slug']))
		self.assertEqual(handler.test_bool, True)
		self.assertEqual(handler.test_null_bool, None)
Ejemplo n.º 9
0
    def testHandler(self):
        import decimal
        from django.forms.util import from_current_timezone

        handler = TestHandler(self.request.GET)
        status = handler._is_valid()

        if not status:
            errors = handler.get_error_list()
            print errors, type(errors)

        self.assertEqual(status, True)
        self.assertEqual(handler._meta.resource_name, 'test_handler')
        self.assertEqual(handler.test_name,
                         unicode(self.request.GET['test_name']))
        self.assertEqual(handler.test_datetime,
                         from_current_timezone(self.request.now))
        self.assertEqual(handler.test_date, self.now_date)
        self.assertEqual(handler.test_time, self.now_time)
        self.assertEqual(handler.test_integer,
                         int(self.request.GET['test_integer']))
        self.assertEqual(handler.test_decimal,
                         decimal.Decimal(self.request.GET['test_decimal']))
        self.assertEqual(handler.test_float,
                         float(self.request.GET['test_float']))
        self.assertEqual(handler.test_email,
                         unicode(self.request.GET['test_email']))
        self.assertEqual(
            handler.test_url,
            unicode('http://' + self.request.GET['test_url'] + '/'))
        self.assertEqual(handler.test_ip, unicode(self.request.GET['test_ip']))
        self.assertEqual(handler.test_slug,
                         unicode(self.request.GET['test_slug']))
        self.assertEqual(handler.test_bool, True)
        self.assertEqual(handler.test_null_bool, None)
    def is_valid(self, bundle, request=None):
        if not bundle.data:
            return {'__all__': 'Data should be present'}

        errors = {}
        for key, value in bundle.data.items():
            if 'purchase_date' in key and datetime_now() < from_current_timezone(get_date_from_string(value)):
                errors['purchase_date'] = ['Purchase date cannot be more than current date']

        return errors
Ejemplo n.º 11
0
 def to_python(self, value):
     """
     Validates that the input can be converted to a datetime. Returns a
     Python datetime.datetime object.
     """
     if value in validators.EMPTY_VALUES:
         return self.default
     if isinstance(value, datetime.datetime):
         return from_current_timezone(value)
     if isinstance(value, datetime.date):
         result = datetime.datetime(value.year, value.month, value.day)
         return from_current_timezone(result)
     if isinstance(value, list):
         # Input comes from a SplitDateTimeWidget, for example. So, it's two
         # components: date and time.
         if value in validators.EMPTY_VALUES and value[1] in validators.EMPTY_VALUES:
             return self.default
     result = super(DateTimeField, self).to_python(value)
     return from_current_timezone(result)
Ejemplo n.º 12
0
 def compress(self, data_list):
     if data_list:
         # Raise a validation error if time or date is empty
         # (possible if SplitDateTimeField has required=False).
         if data_list[0] in self.empty_values:
             raise ValidationError(self.error_messages['invalid_date'], code='invalid_date')
         if data_list[1] in self.empty_values:
             raise ValidationError(self.error_messages['invalid_time'], code='invalid_time')
         result = datetime.datetime.combine(*data_list)
         return from_current_timezone(result)
     return None
Ejemplo n.º 13
0
 def to_python(self, value):
     try:
         result = super(FlexibleDateTimeField, self).to_python(value)
         return from_current_timezone(result)
     except ValidationError as e:
         pass
     try:
         return datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ')
     except:
         pass
     raise ValidationError("invalid date time, does not match any formats")
Ejemplo n.º 14
0
 def compress(self, data_list):
     if data_list:
         # Raise a validation error if time or date is empty
         # (possible if SplitDateTimeField has required=False).
         if data_list[0] in self.empty_values:
             raise ValidationError(self.error_messages['invalid_date'])
         if data_list[1] in self.empty_values:
             raise ValidationError(self.error_messages['invalid_time'])
         result = datetime.datetime.combine(*data_list)
         return from_current_timezone(result)
     return None
Ejemplo n.º 15
0
 def compress(self, data_list):
     if data_list:
         # Raise a validation error if time or date is empty
         # (possible if SplitDateTimeField has required=False).
         if data_list[0] in validators.EMPTY_VALUES:
             raise ValidationError(self.error_messages["invalid_date"])
         if data_list[1] in validators.EMPTY_VALUES:
             raise ValidationError(self.error_messages["invalid_time"])
         result = datetime.datetime.combine(*data_list)
         return from_current_timezone(result)
     return None
Ejemplo n.º 16
0
 def to_python(self, value):
     """
     Validates that the input can be converted to a datetime. Returns a
     Python datetime.datetime object.
     """
     if value in validators.EMPTY_VALUES:
         return self.default
     if isinstance(value, datetime.datetime):
         return from_current_timezone(value)
     if isinstance(value, datetime.date):
         result = datetime.datetime(value.year, value.month, value.day)
         return from_current_timezone(result)
     if isinstance(value, list):
         # Input comes from a SplitDateTimeWidget, for example. So, it's two
         # components: date and time.
         if value in validators.EMPTY_VALUES and value[
                 1] in validators.EMPTY_VALUES:
             return self.default
     result = super(DateTimeField, self).to_python(value)
     return from_current_timezone(result)
Ejemplo n.º 17
0
 def to_python(self, value):
     """
     Validates that the input can be converted to a datetime. Returns a
     Python datetime.datetime object.
     """
     if value in validators.EMPTY_VALUES:
         return None
     if isinstance(value, datetime.datetime):
         return from_current_timezone(value)
     if isinstance(value, datetime.date):
         result = datetime.datetime(value.year, value.month, value.day)
         return from_current_timezone(result)
     if isinstance(value, list):
         # Input comes from a SplitDateTimeWidget, for example. So, it's two
         # components: date and time.
         if len(value) != 2:
             raise ValidationError(self.error_messages["invalid"])
         if value[0] in validators.EMPTY_VALUES and value[1] in validators.EMPTY_VALUES:
             return None
         value = "%s %s" % tuple(value)
     result = super(DateTimeField, self).to_python(value)
     return from_current_timezone(result)
Ejemplo n.º 18
0
 def to_python(self, value):
     """
     Validates that the input can be converted to a datetime. Returns a
     Python datetime.datetime object.
     """
     if value in self.empty_values:
         return None
     if isinstance(value, datetime.datetime):
         return from_current_timezone(value)
     if isinstance(value, datetime.date):
         result = datetime.datetime(value.year, value.month, value.day)
         return from_current_timezone(result)
     if isinstance(value, list):
         # Input comes from a SplitDateTimeWidget, for example. So, it's two
         # components: date and time.
         if len(value) != 2:
             raise ValidationError(self.error_messages['invalid'])
         if value[0] in self.empty_values and value[1] in self.empty_values:
             return None
         value = '%s %s' % tuple(value)
     result = super(DateTimeField, self).to_python(value)
     return from_current_timezone(result)
Ejemplo n.º 19
0
 def save(self, *args, **kwargs):
     #        if self.byweekday:
     #            self.byweekday = [str(day) for day in self.byweekday]
     if self.until:
         self.until = from_current_timezone(self.until)
     super(Rule, self).save(*args, **kwargs)
Ejemplo n.º 20
0
def display_object_history(request, obj_type="-", obj_ref="-", obj_revi="-", timeline=False,
        template="history.html"):
    """
    History view.

    This view displays a history of the selected object and its revisions.

    :url: :samp:`/object/{obj_type}/{obj_ref}/{obj_revi}/history/`
    :url: :samp:`/user/{username}/history/`
    :url: :samp:`/group/{group_name}/history/`
    :url: :samp:`/timeline/`

    .. include:: views_params.txt

    **Template:**

    :file:`history.html`

    **Context:**

    ``RequestContext``

    ``object_history``
        list of :class:`.AbstractHistory`

    ``show_revisions``
        True if the template should show the revision of each history row

    ``show_identifiers``
        True if the template should show the type, reference and revision
        of each history row
    """


    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)

    form_date = forms.HistoryDateForm(request.GET if request.GET else None)
    if form_date.is_valid():
        date_begin = form_date.cleaned_data["date_history_begin"]
        number_days = form_date.cleaned_data["number_days"]
        done_by = form_date.cleaned_data["done_by"]
    else:
        done_by = ""
        if 'date_history_begin' in request.GET:
            if len(request.GET['date_history_begin']) == 10 :
                date_begin = request.GET['date_history_begin']
                date_begin = datetime.datetime(int(date_begin[:4]), int(date_begin[5:7]), int(date_begin[8:10]))
            else:
                date_begin = datetime.datetime.today()
        else :
            date_begin = datetime.datetime.today()
        number_days = 30
    date_begin = from_current_timezone(date_begin)
    if date_begin >  from_current_timezone(datetime.datetime.today()):
        date_begin = from_current_timezone(datetime.datetime.today())
    date_end = date_begin - datetime.timedelta(days = int(number_days))
    date_end = from_current_timezone(date_end)


    if timeline:
        # global timeline: shows objects owned by the company and readable objects
        ctx["timeline"] = True
        ctx['object_type'] = _("Timeline")

        form_object = forms.HistoryObjectForm(request.GET if request.GET else None)
        if form_object.is_valid():
            display_part = form_object.cleaned_data["part"]
            display_document = form_object.cleaned_data["document"]
            display_group = form_object.cleaned_data["group"]
        else:
            display_part = True
            display_document = True
            display_group = True
        list_display = {"display_document": display_document, "display_part": display_part, "display_group" : display_group}
        history = models.timeline_histories(obj, from_current_timezone(date_begin + datetime.timedelta(days = 1)), date_end, done_by, list_display)
        ctx['form_object'] = form_object

        if display_document:
            display_document = 'on'
        if display_part:
            display_part = 'on'
        if display_group:
            display_group = 'on'

        ctx['display_document'] = display_document
        ctx['display_part'] = display_part
        ctx['display_group'] = display_group


    else:
        history = obj.histories
        history = history.filter(date__gte = date_end, date__lt = from_current_timezone(date_begin + datetime.timedelta(days = 1)))
        if done_by != "":
            if models.User.objects.filter(username= done_by).exists():
                history = history.filter(user__username = done_by)
            else:
                history = history.none()
                messages.error(request, "This user doesn't exist")
        elif hasattr(obj, "revision"):
            # display history of all revisions
            ctx["show_revisions"] = True
        else:
            ctx["show_revisions"] = False
        history = history.select_related("plmobject", "user__profile")



    date_after = from_current_timezone(date_begin + datetime.timedelta(days = 1))

    if date_after < from_current_timezone(datetime.datetime.today()):
        ctx['date_after'] = (date_begin + datetime.timedelta(days = number_days +1)).strftime('%Y-%m-%d')
    ctx.update({
        'date_before' : (date_begin - datetime.timedelta(days = number_days +1)).strftime('%Y-%m-%d'),
        'form_date': form_date,
        'date_begin_period' : date_begin.strftime('%Y-%m-%d'),
        'date_end_period':date_end.strftime('%Y-%m-%d'),
        "number_days" : number_days,
        'current_page' : 'history',
        'object_history' : history,
        'show_identifiers' : timeline
        })
    return r2r(template, ctx, request)
Ejemplo n.º 21
0
    def test_timeline(self):
        #Test for timeline's form

        date_begin = from_current_timezone(datetime.datetime.today() +
                                           datetime.timedelta(days=1))
        date_end = from_current_timezone(datetime.datetime.today() -
                                         datetime.timedelta(days=30))

        # document + part selected + no date specified
        response = self.get("/timeline/", {"part": "on", "document": "on"})
        history = response.context["object_history"]
        self.assertEqual(
            list(history),
            list(
                m.History.objects.filter(date__gte=date_end,
                                         date__lt=date_begin)))
        # Only document selected + no date specified
        response = self.get("/timeline/", {"document": "on"})
        history2 = response.context["object_history"]
        self.assertEqual(
            list(history2),
            list(
                m.History.objects.filter(date__gte=date_end,
                                         date__lt=date_begin,
                                         plmobject__type__in=m.document.
                                         get_all_documents().keys())))
        # Only part selected + no date specified
        response = self.get("/timeline/", {"part": "on"})
        history3 = response.context["object_history"]
        self.assertEqual(
            list(history3),
            list(
                m.History.objects.filter(
                    date__gte=date_end,
                    date__lt=date_begin,
                    plmobject__type__in=m.part.get_all_parts().keys())))
        # part + document selected and date specified / done_by not informed
        response = self.get(
            "/timeline/", {
                "part": "on",
                "document": "on",
                "date_history_begin": "2013-06-8",
                "number_days": "15"
            })
        history4 = response.context["object_history"]
        date_begin = from_current_timezone(datetime.datetime(2013, 6, 9))
        date_end = from_current_timezone(date_begin -
                                         datetime.timedelta(days=15))
        self.assertEqual(
            list(history4),
            list(
                m.History.objects.filter(date__gte=date_end,
                                         date__lt=date_begin)))
        # part + document selected and date specified + done_by informed
        response = self.get(
            "/timeline/", {
                "part": "on",
                "document": "on",
                "date_history_begin": "2013-06-8",
                "number_days": "15",
                "done_by": "company"
            })
        history5 = response.context["object_history"]
        self.assertEqual(
            list(history5),
            list(
                m.History.objects.filter(date__gte=date_end,
                                         date__lt=date_begin,
                                         user__username="******")))
        # only group selected
        response = self.get(
            "/timeline/", {
                "group": "on",
                "date_history_begin": "2013-06-8",
                "number_days": "15",
                "done_by": "company"
            })
        history6 = response.context["object_history"]
        self.assertEqual(
            list(history6),
            list(
                m.GroupHistory.objects.filter(date__gte=date_end,
                                              date__lt=date_begin,
                                              user__username="******")))
Ejemplo n.º 22
0
def display_object_history(request,
                           obj_type="-",
                           obj_ref="-",
                           obj_revi="-",
                           timeline=False,
                           template="history.html"):
    """
    History view.

    This view displays a history of the selected object and its revisions.

    :url: :samp:`/object/{obj_type}/{obj_ref}/{obj_revi}/history/`
    :url: :samp:`/user/{username}/history/`
    :url: :samp:`/group/{group_name}/history/`
    :url: :samp:`/timeline/`

    .. include:: views_params.txt

    **Template:**

    :file:`history.html`

    **Context:**

    ``RequestContext``

    ``object_history``
        list of :class:`.AbstractHistory`

    ``show_revisions``
        True if the template should show the revision of each history row

    ``show_identifiers``
        True if the template should show the type, reference and revision
        of each history row
    """

    obj, ctx = get_generic_data(request, obj_type, obj_ref, obj_revi)

    form_date = forms.HistoryDateForm(request.GET if request.GET else None)
    if form_date.is_valid():
        date_begin = form_date.cleaned_data["date_history_begin"]
        number_days = form_date.cleaned_data["number_days"]
        done_by = form_date.cleaned_data["done_by"]
    else:
        done_by = ""
        if 'date_history_begin' in request.GET:
            if len(request.GET['date_history_begin']) == 10:
                date_begin = request.GET['date_history_begin']
                date_begin = datetime.datetime(int(date_begin[:4]),
                                               int(date_begin[5:7]),
                                               int(date_begin[8:10]))
            else:
                date_begin = datetime.datetime.today()
        else:
            date_begin = datetime.datetime.today()
        number_days = 30
    date_begin = from_current_timezone(date_begin)
    if date_begin > from_current_timezone(datetime.datetime.today()):
        date_begin = from_current_timezone(datetime.datetime.today())
    date_end = date_begin - datetime.timedelta(days=int(number_days))
    date_end = from_current_timezone(date_end)

    if timeline:
        # global timeline: shows objects owned by the company and readable objects
        ctx["timeline"] = True
        ctx['object_type'] = _("Timeline")

        form_object = forms.HistoryObjectForm(
            request.GET if request.GET else None)
        if form_object.is_valid():
            display_part = form_object.cleaned_data["part"]
            display_document = form_object.cleaned_data["document"]
            display_group = form_object.cleaned_data["group"]
        else:
            display_part = True
            display_document = True
            display_group = True
        list_display = {
            "display_document": display_document,
            "display_part": display_part,
            "display_group": display_group
        }
        history = models.timeline_histories(
            obj,
            from_current_timezone(date_begin + datetime.timedelta(days=1)),
            date_end, done_by, list_display)
        ctx['form_object'] = form_object

        if display_document:
            display_document = 'on'
        if display_part:
            display_part = 'on'
        if display_group:
            display_group = 'on'

        ctx['display_document'] = display_document
        ctx['display_part'] = display_part
        ctx['display_group'] = display_group

    else:
        history = obj.histories
        history = history.filter(
            date__gte=date_end,
            date__lt=from_current_timezone(date_begin +
                                           datetime.timedelta(days=1)))
        if done_by != "":
            if models.User.objects.filter(username=done_by).exists():
                history = history.filter(user__username=done_by)
            else:
                history = history.none()
                messages.error(request, "This user doesn't exist")
        elif hasattr(obj, "revision"):
            # display history of all revisions
            ctx["show_revisions"] = True
        else:
            ctx["show_revisions"] = False
        history = history.select_related("plmobject", "user__profile")

    date_after = from_current_timezone(date_begin + datetime.timedelta(days=1))

    if date_after < from_current_timezone(datetime.datetime.today()):
        ctx['date_after'] = (
            date_begin +
            datetime.timedelta(days=number_days + 1)).strftime('%Y-%m-%d')
    ctx.update({
        'date_before':
        (date_begin -
         datetime.timedelta(days=number_days + 1)).strftime('%Y-%m-%d'),
        'form_date':
        form_date,
        'date_begin_period':
        date_begin.strftime('%Y-%m-%d'),
        'date_end_period':
        date_end.strftime('%Y-%m-%d'),
        "number_days":
        number_days,
        'current_page':
        'history',
        'object_history':
        history,
        'show_identifiers':
        timeline
    })
    return r2r(template, ctx, request)
Ejemplo n.º 23
0
    def set_options(self, options):
        """
        Sets which kind of edges should be inserted.

        Options is a dictionary(*option_name* -> boolean)

        The option *only_search_results* enables results filtering.

        If the root is a :class:`.PartController`, valid options are:

            ========== ======================================================
             Name       Description
            ========== ======================================================
             child      If True, adds recursively all children of the root
             parents    If True, adds recursively all parents of the root
             doc        If True, adds documents attached to the parts
             owner      If True, adds the owner of the root
             signer     If True, adds the signers of the root
             notified   If True, adds the notified of the root
            ========== ======================================================

        If the root is a :class:`.DocumentController`, valid options are:

            ========== ======================================================
             Name       Description
            ========== ======================================================
             parts      If True, adds parts attached to the root
             owner      If True, adds the owner of the root
             signer     If True, adds the signers of the root
             notified   If True, adds the notified of the root
            ========== ======================================================

        If the root is a :class:`.UserController`, valid options are:

            ========================== ======================================
             Name                          Description
            ========================== ======================================
             owned                     If True, adds all plmobjects owned by
                                       the root
             to_sign                   If True, adds all plmobjects signed by
                                       the root
             request_notification_from If True, adds all plmobjects which
                                       notifies the root
            ========================== ======================================

        """
        self.options.update(options)
        if self.options["prog"] == "twopi":
            self.graph.graph_attr["ranksep"] = "1.2"
        date = self.options.get("date")
        time = self.options.get("time")
        if date is not None or time is not None:
            if date == datetime.date.today() and time is None:
                self.time = None
            else:
                time = time or datetime.time()
                date = date or datetime.date.today()
                self.time = datetime.datetime.combine(date or datetime.date.today(), time)
                self.time = from_current_timezone(self.time)
        else:
            self.time = None
Ejemplo n.º 24
0
 def compress(self, values):
 	if values:
 		untildate = from_current_timezone(datetime(values[1]))
 		return {'byweekday':values[0],'until':untildate}
 	return {}
Ejemplo n.º 25
0
 def save(self, *args, **kwargs):
     if self.allday == True:
         self.startdatetime = from_current_timezone(datetime(self.startdatetime.year, self.startdatetime.month, self.startdatetime.day))
         self.enddatetime = from_current_timezone(datetime(self.startdatetime.year, self.startdatetime.month, self.startdatetime.day + timedelta(days=1)))
     super(Event, self).save(*args, **kwargs)
Ejemplo n.º 26
0
    def save(self, *args, **kwargs):
#        if self.byweekday:
#            self.byweekday = [str(day) for day in self.byweekday]
        if self.until:
            self.until = from_current_timezone(self.until)
        super(Rule, self).save(*args, **kwargs)