Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
converse.js
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
converse.js
Commits
867d2fca
Commit
867d2fca
authored
Nov 26, 2013
by
Michal Čihař
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Support for Weblate self advertisement
parent
ae9f4828
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
130 additions
and
3 deletions
+130
-3
trans/models/advertisement.py
trans/models/advertisement.py
+52
-3
trans/tests/__init__.py
trans/tests/__init__.py
+1
-0
trans/tests/test_advertisement.py
trans/tests/test_advertisement.py
+74
-0
weblate/appsettings.py
weblate/appsettings.py
+3
-0
No files found.
trans/models/advertisement.py
View file @
867d2fca
...
...
@@ -22,22 +22,69 @@ import random
from
django.utils.translation
import
ugettext
as
_
,
ugettext_lazy
from
django.db
import
models
from
django.utils
import
timezone
from
weblate
import
appsettings
DONATE
=
'http://weblate.org/donate/'
GITTIP
=
'https://www.gittip.com/nijel/'
class
AdvertisementManager
(
models
.
Manager
):
def
get_advertisement
(
self
,
placement
):
'''
Returns random advertisement for given placement.
'''
now
=
timezone
.
now
()
base
=
self
.
filter
(
placement
=
placement
,
date_start__lt
=
now
,
date_end__gt
=
now
date_start__lt
e
=
now
,
date_end__gt
e
=
now
)
count
=
base
.
count
()
if
count
==
0
:
return
None
return
self
.
fallback_advertisement
(
placement
)
offset
=
random
.
randint
(
0
,
count
-
1
)
return
base
[
offset
]
def
fallback_advertisement
(
self
,
placement
):
'''
Returns fallback advertisement.
'''
if
not
appsettings
.
SELF_ADVERTISEMENT
:
return
None
now
=
timezone
.
now
()
if
placement
==
Advertisement
.
PLACEMENT_MAIL_TEXT
:
text
=
random
.
choice
([
_
(
'Donate to Weblate at {0}'
).
format
(
DONATE
),
_
(
'Support Weblate at {0}'
).
format
(
GITTIP
),
])
return
Advertisement
(
date_start
=
now
,
date_end
=
now
,
placement
=
placement
,
text
=
text
)
elif
placement
==
Advertisement
.
PLACEMENT_MAIL_TEXT
:
text
=
random
.
choice
([
'<a href="{0}">{1}</a>'
.
format
(
_
(
'Donate to Weblate'
),
DONATE
,
),
'<a href="{0}">{1}</a>'
.
format
(
_
(
'Support Weblate using GitTip'
),
GITTIP
,
),
])
return
Advertisement
(
date_start
=
now
,
date_end
=
now
,
placement
=
placement
,
text
=
text
)
return
None
class
Advertisement
(
models
.
Model
):
PLACEMENT_MAIL_TEXT
=
1
...
...
@@ -72,6 +119,8 @@ class Advertisement(models.Model):
blank
=
True
)
objects
=
AdvertisementManager
()
class
Meta
(
object
):
app_label
=
'trans'
index_together
=
[
...
...
trans/tests/__init__.py
View file @
867d2fca
...
...
@@ -53,3 +53,4 @@ from trans.tests.test_naturaldate import *
from
trans.tests.test_remote
import
*
from
trans.tests.test_selenium
import
*
from
trans.tests.test_debug
import
*
from
trans.tests.test_advertisement
import
*
trans/tests/test_advertisement.py
0 → 100644
View file @
867d2fca
# -*- coding: utf-8 -*-
#
# Copyright © 2012 - 2013 Michal Čihař <michal@cihar.com>
#
# This file is part of Weblate <http://weblate.org/>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
"""
Tests for translation models.
"""
from
django.test
import
TestCase
from
django.utils
import
timezone
from
trans.models
import
Advertisement
from
weblate
import
appsettings
import
datetime
class
AdvertisementTest
(
TestCase
):
def
test_none
(
self
):
appsettings
.
SELF_ADVERTISEMENT
=
False
adv
=
Advertisement
.
objects
.
get_advertisement
(
Advertisement
.
PLACEMENT_MAIL_TEXT
)
self
.
assertIsNone
(
adv
)
def
test_self
(
self
):
appsettings
.
SELF_ADVERTISEMENT
=
True
adv
=
Advertisement
.
objects
.
get_advertisement
(
Advertisement
.
PLACEMENT_MAIL_TEXT
)
self
.
assertTrue
(
'Weblate'
in
adv
.
text
)
def
test_existing
(
self
):
appsettings
.
SELF_ADVERTISEMENT
=
False
adv_created
=
Advertisement
.
objects
.
create
(
placement
=
Advertisement
.
PLACEMENT_MAIL_TEXT
,
date_start
=
timezone
.
now
(),
date_end
=
timezone
.
now
(),
text
=
'Test ADV'
)
adv
=
Advertisement
.
objects
.
get_advertisement
(
Advertisement
.
PLACEMENT_MAIL_TEXT
)
self
.
assertEquals
(
adv_created
,
adv
)
def
test_outdated
(
self
):
appsettings
.
SELF_ADVERTISEMENT
=
False
Advertisement
.
objects
.
create
(
placement
=
Advertisement
.
PLACEMENT_MAIL_TEXT
,
date_start
=
timezone
.
now
()
-
datetime
.
timedelta
(
days
=
1
),
date_end
=
timezone
.
now
()
-
datetime
.
timedelta
(
days
=
1
),
text
=
'Test ADV'
)
adv
=
Advertisement
.
objects
.
get_advertisement
(
Advertisement
.
PLACEMENT_MAIL_TEXT
)
self
.
assertIsNone
(
adv
)
weblate/appsettings.py
View file @
867d2fca
...
...
@@ -158,3 +158,6 @@ REGISTRATION_CAPTCHA = get('REGISTRATION_CAPTCHA', True)
# Source language
SOURCE_LANGUAGE
=
get
(
'SOURCE_LANGUAGE'
,
'en'
)
# Self advertisement
SELF_ADVERTISEMENT
=
get
(
'SELF_ADVERTISEMENT'
,
False
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment