コード例 #1
0
 def test_formfield(self):
     d = DictField()
     f = d.formfield()
     self.failUnless(isinstance(f, DictFormField))
コード例 #2
0
 def test_to_python_can_empty(self):
     d = DictField(blank=True, null=True)
     self.failUnlessEqual(d.to_python(None), None)
コード例 #3
0
 def test_get_db_prep_save_can_empty(self):
     d = DictField(blank=True, null=True)
     self.failUnlessEqual(d.get_db_prep_save(None), None)
コード例 #4
0
ファイル: log.py プロジェクト: xuanxu11/PyLucid
class LogEntry(UpdateInfoBaseModel):
    """
    PyLucid action log entries.

    inherited attributes from UpdateInfoBaseModel:
        createtime     -> datetime of creation
        lastupdatetime -> datetime of the last change
        createby       -> ForeignKey to user who creaded this entry
        lastupdateby   -> ForeignKey to user who has edited this entry
    """
    class RequestTooFast(Exception):
        pass

    objects = LogEntryManager()

    site = models.ForeignKey(Site, default=Site.objects.get_current)
    on_site = CurrentSiteManager()

    # Log information:
    app_label = models.CharField(
        _('App Label'),
        max_length=255,
        db_index=True,
        help_text="The App name witch has created this log entry.")
    action = models.CharField(
        _('Action'),
        max_length=128,
        db_index=True,
        help_text="Short action key. (e.g.: 'do search', 'login')")
    message = models.CharField(
        _('Message'),
        max_length=255,
        blank=True,
        null=True,
        help_text="Short/one line log message. (e.g.: 'user FooBar login')")
    long_message = models.TextField(_('long Message'),
                                    blank=True,
                                    null=True,
                                    help_text="Complete log message.")
    # From django-dbpreferences
    data = DictField(blank=True,
                     null=True,
                     help_text="serialized dictionary data")

    # Own meta data:
    uri = models.CharField(
        _('URL'),
        max_length=255,
        help_text="absolute URI form request.build_absolute_uri()")
    used_language = models.ForeignKey("pylucid.Language",
                                      blank=True,
                                      null=True)

    # Data from request.META
    remote_addr = models.IPAddressField(
        _('Remote IP Address'),
        blank=True,
        null=True,
        db_index=True,
        help_text=
        "The IP address of the client. From request.META['REMOTE_ADDR']")
    remote_user = models.CharField(
        _('Remote User'),
        max_length=255,
        blank=True,
        null=True,
        help_text=
        "The user authenticated by the web server, if any. From request.META['REMOTE_USER']"
    )
    request_method = models.CharField(
        _('Request Method'),
        max_length=8,
        blank=True,
        null=True,
        help_text=
        "Request method, e.g.: 'GET', 'POST'. From request.META['REQUEST_METHOD']"
    )
    query_string = models.CharField(
        _('Query String'),
        max_length=255,
        blank=True,
        null=True,
        help_text=
        "The query string, as a single **unparsed** string. From request.META['QUERY_STRING']"
    )
    http_referer = models.CharField(
        _('Referer'),
        max_length=255,
        blank=True,
        null=True,
        help_text=
        "The referring page, if any. From request.META['HTTP_REFERER']")
    http_user_agent = models.CharField(
        _('User Agent'),
        max_length=255,
        blank=True,
        null=True,
        help_text=
        "The client's user-agent string. From request.META['HTTP_USER_AGENT']")
    http_accept_encoding = models.CharField(
        _('Accept Encoding'),
        max_length=255,
        blank=True,
        null=True,
        help_text="from request.META['HTTP_ACCEPT_ENCODING']")
    http_accept_language = models.CharField(
        _('Accept Language'),
        max_length=255,
        blank=True,
        null=True,
        help_text="from request.META['HTTP_ACCEPT_LANGUAGE']")

    def get_absolute_url(self):
        return self.uri

    def pformat(self):
        """ Usefull for debugging """
        output = ""
        for field in self._meta.fields:
            value = repr(getattr(self, field.name))
            if isinstance(value, basestring):
                value = value.replace("\\n", "\\n\n")
                value = "\n ... ".join([line for line in value.split("\n")])
            output += "%-21s: %s\n" % (field.name, value)
        return output

    def __unicode__(self):
        return u"LogEntry %s %s %s" % (self.createby, self.createtime,
                                       self.action)

    class Meta:
        app_label = 'pylucid'
        verbose_name = _('log entry')
        verbose_name_plural = _('log entries')
        ordering = ('-createtime', )