diff --git a/__init__.py.tmpl b/__init__.py.tmpl new file mode 100644 index 0000000000..1a1ec22dd5 --- /dev/null +++ b/__init__.py.tmpl @@ -0,0 +1,13 @@ +from __future__ import unicode_literals + +__title__ = 'Mayan EDMS' +__version__ = '{{ version }}' +__build__ = 0x030100 +__build_string__ = '{{ build_string }}' +__author__ = 'Roberto Rosario' +__author_email__ = 'roberto.rosario@mayan-edms.com' +__description__ = 'Free Open Source Electronic Document Management System' +__license__ = 'Apache 2.0' +__copyright_short__ = '2011-2018 Roberto Rosario' +__copyright__ = '{} {}'.format('Copyright', __copyright_short__) +__website__ = 'https://www.mayan-edms.com' diff --git a/generate_setup.py b/generate_setup.py index 37634f0b3d..b31e1867e3 100755 --- a/generate_setup.py +++ b/generate_setup.py @@ -4,14 +4,44 @@ from __future__ import unicode_literals import os +from dateutil import parser +import sh + import django from django.conf import settings from django.template import Template, Context +from django.utils.encoding import force_text + +import mayan + +try: + BUILD = sh.Command('git').bake('describe', '--tags', '--always', 'HEAD') + DATE = sh.Command('git').bake('--no-pager', 'log', '-1', '--format=%cd') +except sh.CommandNotFound: + BUILD = None + DATE = None BASE_DIR = os.path.dirname(os.path.abspath(__file__)) REQUIREMENTS_FILE = 'requirements.txt' SETUP_TEMPLATE = 'setup.py.tmpl' +MAYAN_TEMPLATE = '__init__.py.tmpl' + + +def generate_build_number(): + if BUILD and DATE: + try: + result = '{} {}'.format(BUILD(), DATE()).replace('\n', '') + except sh.ErrorReturnCode_128: + result = '' + else: + result = '' + return result + + +def generate_commit_timestamp(): + datetime = parser.parse(force_text(DATE())) + return datetime.strftime('%y%m%d%H%M') def get_requirements(base_directory, filename): @@ -49,3 +79,24 @@ if __name__ == '__main__': with open('setup.py', 'w') as file_object: file_object.write(result) + + with open(MAYAN_TEMPLATE) as file_object: + template = file_object.read() + + # Ignore local version if any + upstream_version = '.'.join( + mayan.__version__.split('+')[0].split('.') + ) + + result = Template(template).render( + context=Context( + { + 'build_string': generate_build_number(), + 'timestamp': generate_commit_timestamp(), + 'version': upstream_version + } + ) + ) + + with open(os.path.join(BASE_DIR, 'mayan', '__init__.py'), 'w') as file_object: + file_object.write(result) diff --git a/mayan/__init__.py b/mayan/__init__.py index bc0abd8ddf..fad4b140a4 100644 --- a/mayan/__init__.py +++ b/mayan/__init__.py @@ -3,6 +3,7 @@ from __future__ import unicode_literals __title__ = 'Mayan EDMS' __version__ = '3.1b2' __build__ = 0x030100 +__build_string__ = 'v3.0.3-225-g632f4b598 Fri Sep 14 00:21:02 2018 -0400' __author__ = 'Roberto Rosario' __author_email__ = 'roberto.rosario@mayan-edms.com' __description__ = 'Free Open Source Electronic Document Management System' @@ -10,4 +11,3 @@ __license__ = 'Apache 2.0' __copyright_short__ = '2011-2018 Roberto Rosario' __copyright__ = '{} {}'.format('Copyright', __copyright_short__) __website__ = 'https://www.mayan-edms.com' - diff --git a/mayan/apps/appearance/templates/appearance/about.html b/mayan/apps/appearance/templates/appearance/about.html index 1f65748840..e08ed9ae59 100644 --- a/mayan/apps/appearance/templates/appearance/about.html +++ b/mayan/apps/appearance/templates/appearance/about.html @@ -55,7 +55,7 @@ {% endblock stylesheets %} {% block content %} - {% build as build_number %} + {% project_information '__build_string__' as build_number %} {% smart_setting 'COMMON_PROJECT_TITLE' as setting_project_title %} {% project_information '__title__' as project_title %} @@ -102,11 +102,11 @@

- If you found a bug or got a feature idea, visit the forum or open a ticket in the GitLab repository . + If you found a bug or got a feature idea, visit the forum or open a ticket in the GitLab repository .

Spread the word. Talk to your friends and colleagues about how awesome {% project_information '__title__' %} is! - Follow us on Twitter or Facebook + Follow us on Twitter , Facebook , or Instagram

{% endblock %} diff --git a/mayan/apps/common/templatetags/common_tags.py b/mayan/apps/common/templatetags/common_tags.py index 6b19585eb6..87f1cfe215 100644 --- a/mayan/apps/common/templatetags/common_tags.py +++ b/mayan/apps/common/templatetags/common_tags.py @@ -2,8 +2,6 @@ from __future__ import unicode_literals from json import dumps -import sh - from django.template import Context, Library from django.template.loader import get_template from django.utils.encoding import force_text @@ -16,24 +14,6 @@ from ..utils import check_for_sqlite, return_attrib register = Library() -try: - BUILD = sh.Command('git').bake('describe', '--tags', '--always', 'HEAD') - DATE = sh.Command('git').bake('--no-pager', 'log', '-1', '--format=%cd') -except sh.CommandNotFound: - BUILD = None - DATE = None - - -@register.simple_tag -def build(): - if BUILD: - try: - return '{} {}'.format(BUILD(), DATE()) - except sh.ErrorReturnCode_128: - return '' - else: - return '' - @register.simple_tag def check_sqlite():