gitar

Fix display bug of DTL source files

Author
Maarten Vangeneugden
Date
Oct. 25, 2023, 5:09 p.m.
Hash
3a2b27c9e25c258898133eee705e3b5b91b6e03a
Parent
1f07aa88c107c7d4ed2e8dc5de42e2ec5eb3e2b8
Modified files
GitActions/CommitInfo.py
locale/af/LC_MESSAGES/django.po
locale/de/LC_MESSAGES/django.po
locale/eo/LC_MESSAGES/django.po
locale/es/LC_MESSAGES/django.po
locale/fr-be/LC_MESSAGES/django.po
locale/fr/LC_MESSAGES/django.po
locale/nl-be/LC_MESSAGES/django.po
locale/nl/LC_MESSAGES/django.po
syntax.py
templates/gitar/commit.djhtml
templates/gitar/directory.djhtml
templates/gitar/file.djhtml
templates/gitar/index.djhtml
templates/gitar/locale/af/LC_MESSAGES/django.po
templates/gitar/locale/de/LC_MESSAGES/django.po
templates/gitar/locale/eo/LC_MESSAGES/django.po
templates/gitar/locale/es/LC_MESSAGES/django.po
templates/gitar/locale/fr-be/LC_MESSAGES/django.po
templates/gitar/locale/fr/LC_MESSAGES/django.po
templates/gitar/locale/nl-be/LC_MESSAGES/django.po
templates/gitar/locale/nl/LC_MESSAGES/django.po
views.py

GitActions/CommitInfo.py

30 additions and 7 deletions.

View changes Hide changes
1
1
# formatted file in a commit. 
2
2
3
3
# The function returns a list 
4
4
5
5
# If one line is removed, and one line is added, and both have the same line
6
6
# number, then that should be regarded as a changed line, not a removed+added line.
7
7
# This holds for each non-broken list of removed+added lines.
8
8
9
9
from pydriller.domain.commit import ModificationType
10
10
from ..syntax import *
11
11
12
12
""" It's a lot of annoying glue code to transform a modified file object into
13
13
what we actually want: The data that needs to be passed to the Django template.
14
14
This convenience function accepts the modified file object as given by
15
15
Pydriller's Commit class, and returns a list of dicts, each dict representing
16
16
the information needed to properly present a file diff in the template.
17
17
"""
18
18
def prepare_and_process(modified_file):
19
19
    #print(modified_file.source_code)
20
20
    result = dict()
21
21
    result["object"] = modified_file  # Could come in handy
22
22
    result["change_type"] = modified_file.change_type
23
23
    result["html_code_after"] = code_to_HTML(
24
24
        modified_file.source_code,
25
25
        modified_file.filename)
26
26
    result["html_code_before"] = code_to_HTML(
27
27
        modified_file.source_code_before,
28
28
        modified_file.filename)
29
29
30
30
    if modified_file.change_type == ModificationType.ADD:
31
31
        result["path"] = modified_file.new_path
32
32
    elif modified_file.change_type == ModificationType.DELETE:
33
33
        result["path"] = modified_file.old_path
34
34
    elif modified_file.change_type == ModificationType.RENAME:
35
35
        result["path"] = modified_file.old_path +" → "+ modified_file.new_path
36
36
    elif modified_file.change_type == ModificationType.MODIFY:
37
37
        result["path"] = modified_file.old_path
38
38
39
39
    added = dict()
40
40
    deleted = dict()
41
41
    for number, line in modified_file.diff_parsed["added"]:
42
42
        added[number] = line
43
43
    for number, line in modified_file.diff_parsed["deleted"]:
44
44
        if result["path"] == "Challenge 4/Controller.java":
45
45
            print("PING")
46
-
        deleted[number] = line
+
46
            pass
+
47
        deleted[number] = line
47
48
    if result["path"] == "Challenge 4/Controller.java":
48
49
        print("NU CONTROLLER.jAVA")
49
-
        #print(modified_file.diff_parsed)
+
50
        #print("NU CONTROLLER.jAVA")
+
51
        #print(modified_file.diff_parsed)
50
52
        print(deleted)
51
-
    result["rows"] = process_file(
+
53
    result["rows"] = process_file(
52
54
        result["html_code_before"],
53
55
        result["html_code_after"],
54
56
        added,
55
57
        deleted)
56
58
57
59
    # These three lists are going to be empty if the methods couldn't be detected
58
60
    deleted, transferred, new = process_methods(modified_file)
59
61
    if len(deleted) == len(transferred) == len(new) == 0:
60
62
        result["methods_available"] = False
61
63
    else:
62
64
        result["methods_available"] = True
63
65
        result["deleted_methods"] = deleted
64
66
        result["transferred_methods"] = transferred
65
67
        result["new_methods"] = new
66
68
    return result 
67
69
68
70
""" Sometimes, the methods in a file can be detected, which adds some nice
69
71
information """
70
72
def process_methods(modified_file):
71
73
    before_methods = modified_file.methods_before
72
74
    after_methods = modified_file.methods
73
75
    deleted_methods = []
74
76
    transferred_methods = []
75
77
    new_methods = []
76
78
77
79
    # Finding all transferred and deleted methods
78
80
    for before_method in before_methods:
79
81
        transferred = False
80
82
        for after_method in after_methods:
81
83
            if before_method.name == after_method.name:  # Match found
82
84
                transferred_methods.append((before_method, after_method))
83
85
                transferred = True
84
86
                break
85
87
        if not transferred:
86
88
            deleted_methods.append(before_method)
87
89
    # Finding all new methods
88
90
    for after_method in after_methods:
89
91
        transferred = False
90
92
        for _, am in transferred_methods:
91
93
            if after_method == am:
92
94
                transferred = True
93
95
                break
94
96
        if not transferred:
95
97
            new_methods.append(after_method)
96
98
97
99
    return deleted_methods, transferred_methods, new_methods
98
100
    
99
101
100
102
def process_file(source_before, source_after, additions, deletions): 
101
103
    rows = []
102
104
    # Counting from 1, because source code lines are counted from there
103
105
    # NOTE: Deletions komen wel degelijk goed binnen
104
106
    print("deletions:")
105
-
    print(deletions)
106
-
    before_count = 1
+
107
    #print(deletions)
+
108
    before_count = 1
107
109
    after_count = 1
108
110
    while True:
109
111
        row = dict()
110
112
        #print("PROCESS_FILE")
111
113
        #print(deletions)
112
114
        #print(additions)
113
115
        # We check the deletion lines first; if a line was "changed", the
114
116
        # 'deleted' line needs to be listed first, and after that, the 'added'
115
117
        # line
116
118
        #print(str(before_count) + " -- " + str(after_count))
117
119
        if before_count in deletions:
118
120
            row["type"] = "deletion"
119
121
            row["old_num"] = before_count
120
122
            # Why source_before[] and not deletions[]?
121
123
            # Because source_before[] has been processed by Pygments, and thus
122
124
            # has the syntax highlighting in it. deletions[] is just plain text.
123
125
            row["line"] = source_before[before_count]
124
-
            before_count += 1
+
126
+
127
            # Look, I'm tired at the time of writing, and this line seems to be
+
128
            # kind of a dick so I'm just gonna try catch it and leave it like
+
129
            # that for now
+
130
            #try: 
+
131
                #row["line"] = source_before[before_count]
+
132
            print(len(source_before))
+
133
            print(before_count)
+
134
            if before_count == len(source_before):
+
135
                row["line"] = source_before[-1]
+
136
            else:
+
137
                row["line"] = source_before[before_count]
+
138
            #except:
+
139
                #pass
+
140
+
141
            before_count += 1
125
142
        elif after_count in additions:
126
143
            row["type"] = "addition"
127
144
            row["new_num"] = after_count
128
145
            # Idem for additions[]
129
146
            row["line"] = source_after[after_count]
130
-
            after_count += 1
+
147
            # kind of a dick so I'm just gonna try catch it and leave it like
+
148
            # that for now
+
149
            try: 
+
150
                row["line"] = source_after[after_count]
+
151
            except:
+
152
                pass
+
153
            after_count += 1
131
154
        else:  # No change to this particular line
132
155
            row["old_num"] = before_count
133
156
            row["new_num"] = after_count
134
157
            if len(source_before) > before_count:
135
158
                row["line"] = source_before[before_count] 
136
159
            elif len(source_after) > after_count:
137
160
                row["line"] = source_after[after_count] 
138
161
            else:  # No lines left
139
162
                break
140
163
            # If not end of both files, increment both counters anyway
141
164
            before_count += 1
142
165
            after_count += 1
143
166
        # Adding the new row to the list of rows
144
167
        rows.append(row)
145
168
    return rows
146
169
147
170
148
171
149
172
150
173
151
174
        
152
175
153
176
    
154
177

locale/af/LC_MESSAGES/django.po

3 additions and 3 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/views.py:39
21
-
msgid ""
+
21
msgid ""
22
22
"Gitar is a simple web app that allows its users to easily share Git repos in "
23
23
"combination with the Django framework."
24
24
msgstr ""
25
25
26
26
#: gitar/views.py:43
27
-
msgid "Home page"
+
27
msgid "Home page"
28
28
msgstr ""
29
29

locale/de/LC_MESSAGES/django.po

6 additions and 4 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/views.py:39
21
-
msgid ""
+
21
msgid ""
22
22
"Gitar is a simple web app that allows its users to easily share Git repos in "
23
23
"combination with the Django framework."
24
24
msgstr ""
25
25
+
26
"repos in Kombination mit dem Django-Framework einfach zu teilen."
+
27
26
28
#: gitar/views.py:43
27
-
msgid "Home page"
+
29
msgid "Home page"
28
30
msgstr ""
29
-
+
31

locale/eo/LC_MESSAGES/django.po

3 additions and 3 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/views.py:39
21
-
msgid ""
+
21
msgid ""
22
22
"Gitar is a simple web app that allows its users to easily share Git repos in "
23
23
"combination with the Django framework."
24
24
msgstr ""
25
25
26
26
#: gitar/views.py:43
27
-
msgid "Home page"
+
27
msgid "Home page"
28
28
msgstr ""
29
29

locale/es/LC_MESSAGES/django.po

3 additions and 3 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/views.py:39
21
-
msgid ""
+
21
msgid ""
22
22
"Gitar is a simple web app that allows its users to easily share Git repos in "
23
23
"combination with the Django framework."
24
24
msgstr ""
25
25
26
26
#: gitar/views.py:43
27
-
msgid "Home page"
+
27
msgid "Home page"
28
28
msgstr ""
29
29

locale/fr-be/LC_MESSAGES/django.po

0 additions and 32 deletions.

View changes Hide changes
1
-
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
-
# This file is distributed under the same license as the PACKAGE package.
3
-
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
-
#
5
-
#, fuzzy
6
-
msgid ""
7
-
msgstr ""
8
-
"Project-Id-Version: PACKAGE VERSION\n"
9
-
"Report-Msgid-Bugs-To: \n"
10
-
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
-
"Language-Team: LANGUAGE <LL@li.org>\n"
14
-
"Language: \n"
15
-
"MIME-Version: 1.0\n"
16
-
"Content-Type: text/plain; charset=UTF-8\n"
17
-
"Content-Transfer-Encoding: 8bit\n"
18
-
19
-
#: gitar/views.py:35
20
-
msgid ""
21
-
"Gitar is a simple web app that allows its users to easily share Git repos in "
22
-
"combination with the Django framework."
23
-
msgstr ""
24
-
25
-
#: gitar/views.py:40
26
-
msgid "Home page"
27
-
msgstr ""
28
-
29
-
#: gitar/views.py:41
30
-
msgid "Source code"
31
-
msgstr ""
32
-

locale/fr/LC_MESSAGES/django.po

3 additions and 3 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
19
19
20
20
#: gitar/views.py:39
21
-
msgid ""
+
21
msgid ""
22
22
"Gitar is a simple web app that allows its users to easily share Git repos in "
23
23
"combination with the Django framework."
24
24
msgstr ""
25
25
"Gitar est un application qui permet à ses utilisateurs de partager "
26
26
"facilement des repos Git, grace á le cadriciel Django."
27
27
28
28
#: gitar/views.py:43
29
-
msgid "Home page"
+
29
msgid "Home page"
30
30
msgstr "Page d'acceuil"
31
31
32
32
#~ msgid "Source code"
33
33
#~ msgstr "Code source"
34
34

locale/nl-be/LC_MESSAGES/django.po

0 additions and 32 deletions.

View changes Hide changes
1
-
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
-
# This file is distributed under the same license as the PACKAGE package.
3
-
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
-
#
5
-
#, fuzzy
6
-
msgid ""
7
-
msgstr ""
8
-
"Project-Id-Version: PACKAGE VERSION\n"
9
-
"Report-Msgid-Bugs-To: \n"
10
-
"POT-Creation-Date: 2021-11-24 14:00+0100\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
-
"Language-Team: LANGUAGE <LL@li.org>\n"
14
-
"Language: \n"
15
-
"MIME-Version: 1.0\n"
16
-
"Content-Type: text/plain; charset=UTF-8\n"
17
-
"Content-Transfer-Encoding: 8bit\n"
18
-
19
-
#: gitar/views.py:35
20
-
msgid ""
21
-
"Gitar is a simple web app that allows its users to easily share Git repos in "
22
-
"combination with the Django framework."
23
-
msgstr ""
24
-
25
-
#: gitar/views.py:40
26
-
msgid "Home page"
27
-
msgstr ""
28
-
29
-
#: gitar/views.py:41
30
-
msgid "Source code"
31
-
msgstr ""
32
-

locale/nl/LC_MESSAGES/django.po

4 additions and 4 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/views.py:39
21
-
msgid ""
+
21
msgid ""
22
22
"Gitar is a simple web app that allows its users to easily share Git repos in "
23
23
"combination with the Django framework."
24
24
msgstr ""
25
25
"Gitar is een simpele web app dat gebruikers toelaat gemakkelijk Git-repo's "
26
26
"met elkaar te delen, in combinatie met Django."
27
27
28
28
#: gitar/views.py:43
29
-
msgid "Home page"
+
29
msgid "Home page"
30
30
msgstr "Homepage"
31
-
+
31
32
32
#~ msgid "Source code"
33
33
#~ msgstr "Broncode"
34
34

syntax.py

10 additions and 0 deletions.

View changes Hide changes
1
1
2
2
In essence, this means that in this module, a file's contents are being parsed
3
3
to Pygments, which will then return the appropriate HTML output, which can then
4
4
be directly parsed in a Django template.
5
5
"""
6
6
7
7
from pygments import highlight
8
8
from pygments.lexers import get_lexer_by_name
9
9
from pygments.formatters import HtmlFormatter
10
10
from pygments.lexers import guess_lexer_for_filename
11
11
+
12
12
13
def code_to_HTML(code, file_name):
13
14
    """ Turns the given list of code strings in HTML, ready for output.
14
15
15
16
    Please note that the lexer that will be used for the syntax coloring, is
16
17
    determined by the given file name, so assert that the given code comes from
17
18
    the given file.
18
19
    Keyword arguments:
19
20
    code -- A non-empty list of code strings.
20
21
    file_name -- The name of the file from where the given code originates.
21
22
    """
22
23
    # stripall removes whitespace in front, but that also removes file
23
24
    # indentation.
24
25
    if code is None:
25
26
        return []
26
27
    try:
+
28
    # I have to add this lexer manually because djhtml is not recognized as a
+
29
    # filename for the HtmlDjangoLexer
+
30
    if file_name.endswith('.djhtml'):
+
31
        lexer = HtmlDjangoLexer()
+
32
        formatter = HtmlFormatter(linenos=False, cssclass="source")
+
33
        unicode_data = decode_to_unicode(highlight(code, lexer, formatter))
+
34
        return unicode_data
+
35
    try:
27
36
        lexer = guess_lexer_for_filename(file_name, code, stripall=False)
28
37
        # linenos (line-n°'s) adds line numbering to the front of the output. I'm
29
38
        # doing that myself, so False.
30
39
        # cssclass sets the enclosing <div>'s class to the given CSS class name.
31
40
        formatter = HtmlFormatter(linenos=False, cssclass="source")
32
41
        #result = highlight(code, lexer, formatter)
33
42
        unicode_data = decode_to_unicode(highlight(code, lexer, formatter))
+
43
        unicode_data = decode_to_unicode(highlight(code, lexer, formatter))
34
44
        return unicode_data
35
45
    #except pygments.ClassNotFound as exception:
36
46
    except:
37
47
        # This happens with files lacking a file extension, and MarkDown files.
38
48
        # In that case, no lexer should be used, but Simple parse the same code.
39
49
        return no_syntax(code)
40
50
41
51
def no_syntax(data):
42
52
    """ Decodes a given bytearray to a list of unicode strings."""
43
53
    if type(data) is str:
44
54
        decoded_data = data
45
55
    else:
46
56
        decoded_data = data.decode("utf-8")
47
57
    formatted_data = []
48
58
    line = ""
49
59
    for character in decoded_data:
50
60
        if character != "\n":
51
61
            line = line + character
52
62
        else:
53
63
            formatted_data.append(line)
54
64
            line = ""
55
65
    return formatted_data
56
66
57
67
58
68
def decode_to_unicode(data):
59
69
    """ Decodes a given bytearray to a list of unicode strings."""
60
70
    #decoded_data = data.decode("utf-8")
61
71
    decoded_data = data
62
72
    formatted_data = []
63
73
    line = ""
64
74
    for character in decoded_data:
65
75
        if character != "\n":
66
76
            line = line + character
67
77
        else:
68
78
            formatted_data.append(line)
69
79
            line = ""
70
80
    return formatted_data
71
81

templates/gitar/commit.djhtml

18 additions and 3 deletions.

View changes Hide changes
1
1
{% load i18n %}
2
2
{% load humanize %}
3
3
{% load static %}
4
4
5
5
{% block title %}{{ repository_name }} | Gitar{% endblock title %}
6
6
7
7
{% block stylesheets %}
8
8
    {{ block.super }}
9
9
    <link rel="stylesheet" type="text/css" href="/static/website/syntax.css" />
10
10
    <link rel="stylesheet" type="text/css" href="/static/gitar/css/file.css" />
11
11
    <style>
12
12
    table.highlight {
13
13
        border-collapse: collapse;
14
14
    }
15
15
    table.highlight tr {
16
16
        line-height: 1em;
17
17
    }
18
18
19
19
    tr.deletion {
20
20
        background-color: rgba(255, 0, 0, .1);
21
21
    }
22
22
    tr.addition {
23
23
        background-color: rgba(0, 255, 0, .1);
24
24
    }
25
25
26
26
    section {
27
27
        overflow-x: scroll;
28
28
    }
29
29
        
30
30
    .symbol {
31
31
        text-align: right;
32
32
        /*font-weight: bolder;*/
33
33
    /* These vendor prefixes are still necessary, yeah...*/
34
34
    }
35
35
    .line-number {
36
36
        text-align: right;
37
37
        width: 3em;
38
38
        -moz-user-select: none;
39
39
        -webkit-user-select: none;
40
40
        -ms-user-select: none;
41
41
      user-select: none;
42
42
    }
43
43
    .line-number a {
44
44
        color: grey;
45
45
    }
46
46
47
47
    details span.opened {
48
48
        display: none;
49
49
    }
50
50
    details[open] span.opened {
51
51
         display: inline;
52
52
    }
53
53
    details[open] span.closed {
54
54
         display: none;
55
55
    }
56
56
    </style>
57
57
{% endblock stylesheets %}
58
58
59
59
{% block description %}
60
60
{{ repository_name }} {{ commit.hash|truncatechars:10 }}: {{ commit.msg }}
61
61
{% endblock description %}
62
62
63
63
{% block header %}
64
64
<header>
65
65
    <h1>{{ repository_name }}</h1>  
66
-
    <label for="nav-drawer-toggle"></label>
67
66
</header>
+
67
</header>
68
68
{% endblock header %}
69
69
70
70
{% block main %}
+
71
<input id="nav-drawer-toggle" type="checkbox" />
+
72
<nav>
+
73
    <label for="nav-drawer-toggle">🡠</label>
+
74
    <h2>{{ repository_name }}</h2>
+
75
    <a class="nav-link" href="{% url 'gitar-index' %}">Gitar | Index</a>
+
76
    <a class="nav-link" href="{% url 'gitar-repository' repository_name %}">{{ repository_name }} | Index</a>
+
77
    <a class="nav-link" href="{% url 'about-index' %}">{% translate "Front page" %}</a>
+
78
    <hr class="half">
+
79
    {% for mod_file in modified_files %}
+
80
        <a class="nav-link" href="#{{ mod_file.path }}">{{ mod_file.path }}</a>
+
81
    {% endfor %}
+
82
</nav>
+
83
{% endblock nav %}
+
84
+
85
{% block main %}
71
86
72
87
<section class="emphasis">
73
88
    <h2>{{ first_line }}</h2>
74
89
    <p>{{ other_lines|safe }}</p>
75
90
    <dl>
76
91
        <dt>{% translate "Author" %}</dt>
77
92
        <dd>{{ commit.author.name }}</dd>
78
93
79
94
        <dt>{% translate "Date" %}</dt>
80
95
        <dd>{{ commit.committer_date|date:"DATETIME_FORMAT" }}</dd>
81
96
82
97
        <dt>{% translate "Hash" %}</dt>
83
98
        <dd><samp>{{ commit.hash }}</samp></dd>
84
99
85
100
        {% if commit.parents|length_is:"1" %}
86
101
        <dt>{% translate "Parent" %}</dt>
87
102
        {% else %}
88
103
        <dt>{% translate "Parents" %}</dt>
89
104
        {% endif %}
90
105
        {% for parent in commit.parents %}
91
106
        <dd><samp><a href="{% url "gitar-commit" repository_name parent %}">
92
107
        {{ parent }}
93
108
        </a></samp</dd>
94
109
        {% endfor %}
95
110
96
111
        {% if modified_files|length_is:"1" %}
97
112
        <dt>{% translate "Modified file" %}</dt>
98
113
        {% else %}
99
114
        <dt>{% translate "Modified files" %}</dt>
100
115
        {% endif %}
101
116
        {% for mod_file in modified_files %}
102
117
        <dd><a href="#{{ mod_file.path }}">{{ mod_file.path }}</a></dd>
103
118
        {% endfor %}
104
119
        {#<dt>{% translate "Child" %}</dt>#}
105
120
        {# <dd>{{ commit.author_date|date:"DATETIME_FORMAT" }}</dd>#}
106
121
        {# Gonna leave the email out for now, don't like email scrapers #}
107
122
        {# <dt>{% translate "E-mail" %}</dt> #}
108
123
        {# <dl>{{ commit.author.email }}</dl> #}
109
124
    </dl>
110
125
</section>
111
126
112
127
{% for mod_file in modified_files %}
113
128
<section>
114
129
    <h3 id="{{ mod_file.path }}">{{ mod_file.path }} <a href="#{{ mod_file.path }}"></a></h3>
115
130
        <p>
116
131
            {{ mod_file.object.added_lines }}
117
132
            {% blocktranslate count counter=mod_file.object.added_lines %}
118
133
            addition
119
134
            {% plural %}
120
135
            additions
121
136
            {% endblocktranslate %}
122
137
            {% translate "and" %}
123
138
            {{ mod_file.object.deleted_lines }}
124
139
            {% blocktranslate count counter=mod_file.object.deleted_lines %}
125
140
            deletion.
126
141
            {% plural %}
127
142
            deletions.
128
143
            {% endblocktranslate %}
129
144
        </p>
130
145
        {% if mod_file.methods_available %}
131
146
132
147
        {% endif %}
133
148
    <details>
134
-
        <summary><span class="closed">{% translate "View changes" %}</span><span class="opened">{% translate "Hide changes" %}</span>
135
-
        </summary>
+
149
        <summary class="ripple"><span class="closed"> {% translate "View changes" %}</span><span class="opened"> {% translate "Hide changes" %}</span>
+
150
        </summary>
136
151
137
152
        <table class="highlight" style="font-family: 'Fira Code', monospace;">
138
153
        {% for row in mod_file.rows %}
139
154
        {% if row.type == "deletion" %}
140
155
        <tr class="deletion">
141
156
            <td id="{{ mod_file.path }}-A{{ row.old_num }}" class="line-number">
142
157
                <a href="#{{ mod_file.path }}-A{{ row.old_num }}" class="accent-on-hover-only"><pre>{{ row.old_num }}</pre>
143
158
            </a></td>
144
159
            <td class="line-number symbol">-</td>
145
160
        {% elif row.type == "addition" %}
146
161
        <tr class="addition">
147
162
            <td class="line-number symbol">+</td>
148
163
            <td id="{{ mod_file.path }}-B{{ row.new_num }}" class="line-number">
149
164
                <a href="#{{ mod_file.path }}-B{{ row.new_num }}" class="accent-on-hover-only"><pre>{{ row.new_num }}</pre>
150
165
            </a></td>
151
166
        {% else %}
152
167
        <tr class="nochange">
153
168
            <td id="{{ mod_file.path }}-A{{ row.old_num }}" class="line-number">
154
169
                <a href="#{{ mod_file.path }}-A{{ row.old_num }}" class="accent-on-hover-only"><pre>{{ row.old_num }}</pre>
155
170
            <td id="{{ mod_file.path }}-B{{ row.new_num }}" class="line-number">
156
171
                <a href="#{{ mod_file.path }}-B{{ row.new_num }}" class="accent-on-hover-only"><pre>{{ row.new_num }}</pre>
157
172
            </a></td>
158
173
        {% endif %}
159
174
            <td style="padding-left: 1em;"><pre>{{ row.line|safe }}</pre></td>
160
175
        </tr>
161
176
        {% endfor %}
162
177
        </table>
163
178
    </details>
164
179
</section>
165
180
{% endfor %}
166
181
167
182
{% endblock main %}
168
183

templates/gitar/directory.djhtml

99 additions and 81 deletions.

View changes Hide changes
1
1
{% load i18n %}
2
2
{% load humanize %}
3
3
{% load static %}
4
4
5
5
{% block title %}{{ repository_name }} | Gitar{% endblock title %}
6
6
7
7
{% block stylesheets %}
8
8
    {{ block.super }}
9
9
{% endblock stylesheets %}
+
10
    td {
+
11
    padding-right: 1em;
+
12
    }
+
13
    </style>
+
14
{% endblock stylesheets %}
10
15
11
16
{% block description %}
12
17
{{repository_description}}
13
18
{% endblock description %}
14
19
15
20
{% block header %}
16
21
<header>
17
22
    <h1>{{ repository_name }}</h1>  
18
-
    <label for="nav-drawer-toggle"></label>
19
23
</header>
+
24
</header>
20
25
{% endblock header %}
21
26
22
27
{% block main %}
+
28
<input id="nav-drawer-toggle" type="checkbox" />
+
29
<nav>
+
30
    <label for="nav-drawer-toggle">🡠</label>
+
31
    <h2>{{ repository_name }}</h2>
+
32
    <a class="nav-link" href="{% url 'gitar-index' %}">Gitar | Index</a>
+
33
    <a class="nav-link" href="{% url 'about-index' %}">{% translate "Front page" %}</a>
+
34
    {% if subdirectories %}
+
35
    <hr class="half">
+
36
    {% endif %}
+
37
    {% for subdirectory in subdirectories %}
+
38
        <a class="nav-link" href="{% url 'gitar-path-explorer' repository_name branch subdirectory.path %}">
+
39
            {{ subdirectory.name }}
+
40
        </a>
+
41
    {% endfor %}
+
42
    <hr class="half">
+
43
    {% for file in files %}
+
44
        <a class="nav-link" href="{% url 'gitar-path-explorer' repository_name branch file.path %}">
+
45
        {{ file.name }}
+
46
        </a>
+
47
    {% endfor %}
+
48
</nav>
+
49
{% endblock nav %}
+
50
+
51
{% block main %}
23
52
<section>
+
53
    <!-- Add tertiary information such as branches and licensing here.  -->
+
54
    <h2>{{repository_name}}</h2>
+
55
    <p>{{ repository_description }}</p>
+
56
    <h3>{% trans "Branches" %}</h3>
+
57
    {% for bbranch in branches %}
+
58
    <a href="{% url 'gitar-repository' repository_name bbranch %}">
+
59
        {{ bbranch }}
+
60
    </a><br>
+
61
    {% endfor %}
+
62
    {% comment %}<h5 class="{{mdc}}-text">{% trans "Extra information" %}</h5>
+
63
    <div class="chip">
+
64
        {{repository_language}}
+
65
        <i class="material-icons {{mdac}}-text text-accent-3">code</i>
+
66
    </div><br />
+
67
    <div class="chip">
+
68
        {{repository_license}}
+
69
        <i class="material-icons {{mdac}}-text text-accent-3">copyright</i>
+
70
    </div>
+
71
    {% endcomment %}
+
72
</aside>
+
73
<section>
24
74
    
25
-
    <!--Tree contents-->
+
75
    <!--Tree contents-->
26
76
    <table>
+
77
    {% if subdirectories %}
+
78
    <table>
27
79
        <thead>
28
80
            <tr>
29
81
                <th scope="col">{% translate "Name" %}</th>
30
-
                <th scope="col">{% translate "Latest commit" %}</th>
31
-
                <th scope="col">{% translate "Latest update" %}</th>
32
-
            </tr>
+
82
            </tr>
33
83
        </thead>
34
84
        <tbody>
35
85
            {% if subdirectories %}
36
-
            {% for subdirectory in subdirectories %}
37
86
            {% endfor %}
+
87
                <th>
+
88
                <a href="{% url 'gitar-path-explorer' repository_name branch subdirectory.path %}">
+
89
                    {{subdirectory.name}}
+
90
                </a>
+
91
                </th>
+
92
            </tr>
+
93
            {% endfor %}
38
94
            {% endif %}
39
-
40
-
            {% for file in files %}
+
95
    </table>
+
96
    {% endif %}
+
97
    <!-- Files -->
+
98
    <table>
+
99
        <thead>
+
100
            <tr>
+
101
                <th scope="col">{% translate "File name" %}</th>
+
102
                <th scope="col">{% translate "Latest commit" %}</th>
+
103
                <th scope="col">{% translate "Latest update" %}</th>
+
104
            </tr>
+
105
        </thead>
+
106
        <tbody>
+
107
            {% for file in files %}
41
108
            <tr>
42
109
                <td><a href="{% url 'gitar-path-explorer' repository_name branch file.path %}">
43
110
                    {{ file.name }}</a></td>
44
111
                <td><a href="{% url 'gitar-commit' repository_name file.commit.hash %}">
45
112
                    {{ file.commit.msg }}</a></td>
46
-
                <td>{% if file.older_than_one_month %}
+
113
                <td>{% if file.older_than_one_month %}
47
114
                    {{ file.commit.committer_date|date }}
48
115
                    {% else %}
49
116
                    {{ file.commit.committer_date|naturaltime }}
50
117
                    {% endif %}
51
118
                    </td>
52
119
            </tr>
53
120
            {% endfor %}
54
121
        </tbody>
55
122
    </table>
56
123
57
-
    <div class="row">
58
-
        <div class="col hide-on-med-and-down l4">
59
-
            <!-- Add tertiary information such as branches and licensing here.  -->
60
-
            <h3 class="{{mdc}}-text">{{repository_name}}</h3>
61
-
            <h5 class="{{mdc}}-text">{% trans "Description" %}</h5>
62
-
            {{repository_description}}
63
-
            <h5 class="{{mdc}}-text">{% trans "Branches" %}</h5>
64
-
            {% for bbranch in branches %}
65
-
            <a class="{{mdac}}-text text-accent-3" href="{% url 'gitar-repository' repository_name bbranch %}">
66
-
                {{bbranch}}
67
-
            </a><br />
68
-
            {% endfor %}
69
-
            <h5 class="{{mdc}}-text">{% trans "Extra information" %}</h5>
70
-
            <div class="chip">
71
-
                {{repository_language}}
72
-
                <i class="material-icons {{mdac}}-text text-accent-3">code</i>
73
-
            </div><br />
74
-
            <div class="chip">
75
-
                {{repository_license}}
76
-
                <i class="material-icons {{mdac}}-text text-accent-3">copyright</i>
77
-
            </div><br />
78
-
        </div>
79
-
        <div class="col s12 m8 l5">
80
-
            <!-- Main area with links to files and subdirectories -->
81
-
            <h3 class="{{mdc}}-text">{% trans "Files" %}</h3>
82
-
            <table class="highlight">
83
-
                {% if subdirectories %}
84
-
                <thead>
85
-
                    {% for subdirectory in subdirectories %}
86
-
                    <tr>
87
-
                        <th>
88
-
                        <a class="{{mdac}}-text text-accent-4" href="{% url 'gitar-path-explorer' repository_name branch subdirectory.path %}">
89
-
                            {{subdirectory.name}}
90
-
                        </a>
91
-
                        </th>
92
-
                    </tr>
93
-
                    {% endfor %}
94
-
                </thead>
95
-
                {% endif %}
96
-
                <tbody>
97
-
                    {% for file in files %}
98
-
                    <tr>
99
-
                        <td>
100
-
                        <a class="{{mdac}}-text text-accent-3" href="{% url 'gitar-path-explorer' repository_name branch file.path %}">
101
-
                            {{file.name}}
102
-
                        </a>
103
-
                        </td>
104
-
                            <td>{{file.commit|truncatechars:6}}</td>
105
-
                    </tr>
106
-
                    {% endfor %}
107
-
                </tbody>
108
-
            </table>
109
-
        </div>
110
-
        <div class="col hide-on-small-only m4 l3">
111
-
            <!-- List of commits on the current branch, chronologically. -->
112
-
            <h3 class="{{mdc}}-text">{% trans "Commits" %}</h3>
113
-
            {% for commit in commits %}
+
124
    <h2>{% translate "Commits" %}</h2>
+
125
    <table>
+
126
        <thead>
+
127
            <tr>
+
128
                <th scope="col">{% translate "Hash" %}</th>
+
129
                <th scope="col">{% translate "Author" %}</th>
+
130
                <th scope="col">{% translate "Description" %}</th>
+
131
                <th scope="col">{% translate "Date" %}</th>
+
132
            </tr>
+
133
        </thead>
+
134
        <tbody>
+
135
            {% for commit in commits %}
114
136
            <hr />
115
-
            <a
116
-
                class="{{mdac}}-text text-accent-3 tooltipped"
117
-
                {# href="{% url 'gitar-commit' repository_name commit.hash %}" #}
118
-
                data-position="left"
119
-
                data-delay="50"
120
-
                data-tooltip="Viewing commits is not implemented yet!">
121
-
                {{commit.hash|truncatechars:15}}
122
-
            </a>
123
-
            <span class="{{mdc}}-text text-lighten-2">
124
-
                {% trans "by" %} {{commit.author}}
125
-
            </span><br />
126
-
            {{commit.description|lower|capfirst}}{% if commit.description|last != "." %}.{% endif %}
127
-
            {% endfor %}
+
137
            <td><a href="{% url 'gitar-commit' repository_name commit.hash %}">
+
138
                <code>{{ commit.hash|truncatechars:15 }}</code>
+
139
            </a></td>
+
140
            <td>{{ commit.author|truncatewords:2 }}</td>
+
141
            <td>
+
142
                {{ commit.description|lower|capfirst|truncatewords:10|truncatechars:80 }}{% if commit.description|last != "." %}.{% endif %}
+
143
            </td>
+
144
            <td>{{ commit.date|date:"SHORT_DATETIME_FORMAT" }}</td>
+
145
            {% endfor %}
128
146
        </div>
129
-
    </div>
130
-
</section>
+
147
    </table>
+
148
</section>
131
149
{% endblock main %}
132
150

templates/gitar/file.djhtml

3 additions and 3 deletions.

View changes Hide changes
1
1
{% load i18n %}
2
2
{% load static %}
3
3
4
4
{% block title %}{{repository_name}}/{{file_name}} | Gitar{% endblock title %}
5
5
6
6
{% block stylesheets %}
7
7
    {{ block.super }}
8
8
    <link rel="stylesheet" type="text/css" href="/static/website/syntax.css" />
9
9
    <link rel="stylesheet" type="text/css" href="/static/gitar/css/file.css" />
10
10
    <style>
11
11
    table.highlight tr {
12
12
        line-height: 15px;
13
13
    }
14
14
15
15
    /* These vendor prefixes are still necessary, yeah...*/
16
16
    .line-number {
17
17
      -moz-user-select: none;
18
18
      -webkit-user-select: none;
19
19
      -ms-user-select: none;
20
20
      user-select: none;
21
21
    }
22
22
    </style>
23
23
{% endblock stylesheets %}
24
24
25
25
{% block description %}
26
26
Content of {{file_name}} in {{repository_name}}
27
-
{% endblock description %}
+
27
{% endblock description %}
28
28
29
29
{% block header %}
30
30
<header>                                                                                                                                                                                         
31
-
    <h1>{{ repository_name }}</h1>  
+
31
    <a href="https://maartenv.be"><label for="nav-drawer-toggle"></label></a>
+
32
    <h1>{{ repository_name }}</h1>  
32
33
    <label for="nav-drawer-toggle"></label>
33
-
</header>
34
34
{% endblock header %}
35
35
36
36
{% comment %}
37
37
{% block stylesheets %}
38
38
<link href="/static/website/materialize/css/google-icons.css" rel="stylesheet" />
39
39
<link href="/static/website/materialize/css/materialize.css" rel="stylesheet" media="screen, projection" />
40
40
<!--<link rel="stylesheet href="https://cdn.rawgit.com/tonsky/FiraCode/1.204/distr/fira_code.css">-->
41
41
<!-- TODO: Download Fira Code stylesheet and serve via the static folder!
42
42
    This is necessary BEFORE activating the Fira Code ligature font, because
43
43
    using a CDN I do not controll brings in tonnes of JS code from Google,
44
44
    Amazon, and whatnot. -->
45
45
<!--<style>
46
46
td {
47
47
	padding: 0 0 0 0;
48
48
}
49
49
pre {
50
50
	margin-top: 10px;
51
51
	margin-bottom: 10px;
52
52
}
53
53
table {
54
54
	line-height: 0px;
55
55
	padding-top: 0px;
56
56
	padding-bottom: 0px;
57
57
	border-spacing: 0 0;
58
58
	margin-top: 0px;
59
59
	margin-bottom: 0px;
60
60
}
61
61
</style>-->
62
62
{# For the syntax coloring of Gitar. TODO for later. #}
63
63
<link rel="stylesheet" type="text/css" href="/static/website/syntax.css" />
64
64
<link rel="stylesheet" type="text/css" href="/static/gitar/css/file.css" />
65
65
{% endblock stylesheets %}
66
66
{% endcomment %}
67
67
68
68
<!-- NOTE: Currently I'm using an ordered list to get numbers, but now I can't
69
69
link to the different lines. So until I figure out a way to make tables behave
70
70
correctly, this ought to be the temporary solution-->
71
71
{% block main %}
72
72
<section style="font-family: 'Fira Code', monospace;">
73
73
    <h3>{{file_name}}</h3>
74
74
	<table class="highlight">
75
75
		{% for line in content %}
76
76
		<tr>
77
77
            <td id="{{ forloop.counter }}" class="line-number" style=":hover { background-color: #00E676;}">
78
78
                <a style=":hover { background-color: #00e676;}" href="#{{ forloop.counter }}">
79
79
                <pre>{{ forloop.counter }}</pre></a></td>
80
80
			<td><pre>{{ line|safe }}</pre></td>
81
81
		</tr>
82
82
		{% endfor %}
83
83
	</table>
84
84
</section>
85
85
{% endblock main %}
86
86

templates/gitar/index.djhtml

14 additions and 12 deletions.

View changes Hide changes
1
1
{% load i18n %}
2
2
{% load static %}
3
3
4
4
{% block title %}{% trans "Gitar | Index page" %}{% endblock title %}
5
5
6
6
{% block description %}
7
7
{% trans "My personal answer to GitHub." %}
8
8
{% endblock description %}
9
9
10
10
{% block header %}
11
11
<header>
12
12
    <h1>Gitar</h1>  
13
-
    <label for="nav-drawer-toggle"></label>
14
13
</header>
+
14
</header>
15
15
{% endblock header %}
16
16
17
17
{% block nav %}
18
18
<input id="nav-drawer-toggle" type="checkbox" />
19
19
<nav>
20
20
    <label for="nav-drawer-toggle"><!--🡨-->🡠</label>
21
21
    <h2></h2>
22
-
    {% for repository in repositories %}
+
22
    <a class="nav-link" href="{% url 'about-index' %}">{% trans "Front page" %}</a>
+
23
    <hr class="half" />
+
24
    {% for repository in repositories %}
23
25
    <a class="nav-link" href="{% url 'gitar-repository' repository_name=repository.name %}">
24
26
        {{ repository.name }}
25
27
    </a>
26
28
    {% endfor %}
27
29
    <hr class="half" />
28
-
    <a class="nav-link" href="{% url 'about-index' %}">{% trans "Front page" %}</a>
29
-
  </nav>
30
30
{% endblock nav %}
31
31
32
32
33
33
{% block main %}
34
34
35
35
{# with mdac=materialDesign_accentColor %} {# You'll see why this is handy shortly. #}
36
-
{# with mdc=materialDesign_color #}
37
-
<section class="emphasis">
38
36
    <h1>{% trans "About Gitar" %}</h1>
39
37
    <p>
40
38
        {% blocktrans %}
41
39
		Gitar is a simple web app to easily host Git repositories using the Django framework.
42
40
        It's a hobby project of me, to make it easy for
43
41
        people to scroll through the code I publish, in a read-only fashion. It
44
42
        makes use of
45
43
        <a href="https://pygments.org/" target="_blank">Pygments</a>
46
44
        to read the source files, and apply the appropriate syntax coloring.
47
45
        {% endblocktrans %}
48
46
	</p>
49
47
    <p>
50
48
        {% blocktrans %}All repositories are automatically updated when changes
51
49
        have been pushed to the server, without any manual intervention from me.
52
50
        Special attention goes to clean URL design, adhering to web standards,
53
51
        and responsive design across all screen types.{% endblocktrans %}
54
52
    </p>
55
53
    <p>
56
54
        {% blocktrans %}Gitar <b>is a project under development!</b>
57
55
        While it's certainly presentable, there's still a lot of room for improvement.<br />
58
56
        Also, if you happen to walk in while I'm working, it's possible you'll
59
57
        fall through the floor, so be warned =D{% endblocktrans %}
60
58
    </p>
61
59
</section>
62
60
<section>
63
61
    <h3>{% trans "Public repositories" %}</h3>
64
62
		{% for repository in repositories %} {# ARGH DON'T YOU LOVE THE READABILITY #}
65
63
            <p>
66
64
                <a class="btn fill" href="{% url 'gitar-repository' repository_name=repository.name %}">
67
65
                    {{ repository.name }}
68
66
                </a>
69
-
                {{ repository.description }} 
70
-
            </p>
+
67
                {{ repository.description }} <br>
+
68
                <strong>{% trans "Primary programming language(s)" %}:</strong> {{ repository.programmingLanguage }}<br>
+
69
                <strong>{% trans "License" %}:</strong> {{ repository.license }}
+
70
            </p>
71
71
            <dl>
+
72
            <dl>
72
73
            <dt>🅿️</dt>
73
-
            <dd>{{ repository.programmingLanguage }}</dd>
+
74
            <dd>{{ repository.programmingLanguage }}</dd>
74
75
                <!--<li><i class="material-icons">description</i> 
75
-
                    {{ repository.fileCount }}</li>-->
76
-
            <dt>©️</dt>
+
76
                    {{ repository.fileCount }}</li>
+
77
            <dt>©️</dt>
77
78
            <dd>{{ repository.license }}</dd>
78
79
            </dl>
79
80
            <hr class="half">
80
-
		{% endfor %}
+
81
            <!--<hr class="half">-->
+
82
		{% endfor %}
81
83
</section>
82
84
{% endblock main %}
83
85

templates/gitar/locale/af/LC_MESSAGES/django.po

52 additions and 39 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/templates/gitar/commit.djhtml:77
21
-
msgid "Author"
+
21
#: gitar/templates/gitar/directory.djhtml:34
+
22
#: gitar/templates/gitar/index.djhtml:23
+
23
msgid "Front page"
+
24
msgstr ""
+
25
+
26
#: gitar/templates/gitar/commit.djhtml:92
+
27
#: gitar/templates/gitar/directory.djhtml:131
+
28
msgid "Author"
22
29
msgstr ""
23
30
24
31
#: gitar/templates/gitar/commit.djhtml:80
25
-
msgid "Date"
+
32
#: gitar/templates/gitar/directory.djhtml:133
+
33
msgid "Date"
26
34
msgstr ""
27
35
28
36
#: gitar/templates/gitar/commit.djhtml:83
29
-
msgid "Hash"
+
37
#: gitar/templates/gitar/directory.djhtml:130
+
38
msgid "Hash"
30
39
msgstr ""
31
40
32
41
#: gitar/templates/gitar/commit.djhtml:87
33
-
msgid "Parent"
+
42
msgid "Parent"
34
43
msgstr ""
35
44
36
45
#: gitar/templates/gitar/commit.djhtml:89
37
-
msgid "Parents"
+
46
msgid "Parents"
38
47
msgstr ""
39
48
40
49
#: gitar/templates/gitar/commit.djhtml:98
41
-
msgid "Modified file"
+
50
msgid "Modified file"
42
51
msgstr ""
43
52
44
53
#: gitar/templates/gitar/commit.djhtml:100
45
-
msgid "Modified files"
+
54
msgid "Modified files"
46
55
msgstr ""
47
56
48
57
#: gitar/templates/gitar/commit.djhtml:118
49
-
msgid ""
+
58
msgid ""
50
59
"\n"
51
60
"            addition\n"
52
61
"            "
53
62
msgid_plural ""
54
63
"\n"
55
64
"            additions\n"
56
65
"            "
57
66
msgstr[0] ""
58
67
msgstr[1] ""
59
68
60
69
#: gitar/templates/gitar/commit.djhtml:123
61
-
msgid "and"
+
70
msgid "and"
62
71
msgstr ""
63
72
64
73
#: gitar/templates/gitar/commit.djhtml:125
65
-
msgid ""
+
74
msgid ""
66
75
"\n"
67
76
"            deletion.\n"
68
77
"            "
69
78
msgid_plural ""
70
79
"\n"
71
80
"            deletions.\n"
72
81
"            "
73
82
msgstr[0] ""
74
83
msgstr[1] ""
75
84
76
85
#: gitar/templates/gitar/commit.djhtml:135
77
-
msgid "View changes"
+
86
msgid "View changes"
78
87
msgstr ""
79
88
80
89
#: gitar/templates/gitar/commit.djhtml:135
81
-
msgid "Hide changes"
+
90
msgid "Hide changes"
82
91
msgstr ""
83
92
84
93
#: gitar/templates/gitar/directory.djhtml:30
85
-
msgid "Name"
86
-
msgstr ""
87
-
88
-
#: gitar/templates/gitar/directory.djhtml:31
89
-
msgid "Latest commit"
90
-
msgstr ""
+
94
msgid "Branches"
+
95
msgstr ""
91
96
92
97
#: gitar/templates/gitar/directory.djhtml:32
93
-
msgid "Latest update"
94
-
msgstr ""
+
98
msgid "Content"
+
99
msgstr ""
95
100
96
101
#: gitar/templates/gitar/directory.djhtml:62
97
-
msgid "Description"
98
-
msgstr ""
+
102
msgid "Subdirectories"
+
103
msgstr ""
99
104
100
105
#: gitar/templates/gitar/directory.djhtml:64
101
-
msgid "Branches"
102
-
msgstr ""
+
106
msgid "File name"
+
107
msgstr ""
103
108
104
109
#: gitar/templates/gitar/directory.djhtml:70
105
-
msgid "Extra information"
106
-
msgstr ""
+
110
msgid "Latest commit"
+
111
msgstr ""
107
112
108
113
#: gitar/templates/gitar/directory.djhtml:82
109
-
msgid "Files"
110
-
msgstr ""
+
114
msgid "Latest update"
+
115
msgstr ""
111
116
112
117
#: gitar/templates/gitar/directory.djhtml:113
113
-
msgid "Commits"
+
118
msgid "Commits"
114
119
msgstr ""
115
120
116
121
#: gitar/templates/gitar/directory.djhtml:125
117
-
msgid "by"
118
-
msgstr ""
+
122
msgid "Description"
+
123
msgstr ""
119
124
120
125
#: gitar/templates/gitar/index.djhtml:5
121
126
msgid "Gitar | Index page"
122
127
msgstr ""
123
128
124
129
#: gitar/templates/gitar/index.djhtml:8
125
130
msgid "My personal answer to GitHub."
126
131
msgstr ""
127
132
128
133
#: gitar/templates/gitar/index.djhtml:29
129
-
msgid "Front page"
130
-
msgstr ""
+
134
msgid "Navigation"
+
135
msgstr ""
131
136
132
137
#: gitar/templates/gitar/index.djhtml:39
133
-
msgid "About Gitar"
+
138
msgid "About Gitar"
134
139
msgstr ""
135
140
136
141
#: gitar/templates/gitar/index.djhtml:41
137
-
msgid ""
+
142
msgid ""
138
143
"\n"
139
144
"\t\tGitar is a simple web app to easily host Git repositories using the "
140
145
"Django framework.\n"
141
146
"        It's a hobby project of me, to make it easy for\n"
142
147
"        people to scroll through the code I publish, in a read-only fashion. "
143
148
"It\n"
144
149
"        makes use of\n"
145
150
"        <a href=\"https://pygments.org/\" target=\"_blank\">Pygments</a>\n"
146
151
"        to read the source files, and apply the appropriate syntax "
147
152
"coloring.\n"
148
153
"        "
149
154
msgstr ""
150
155
151
156
#: gitar/templates/gitar/index.djhtml:51
152
-
msgid ""
+
157
msgid ""
153
158
"All repositories are automatically updated when changes\n"
154
159
"        have been pushed to the server, without any manual intervention from "
155
160
"me.\n"
156
161
"        Special attention goes to clean URL design, adhering to web "
157
162
"standards,\n"
158
163
"        and responsive design across all screen types."
159
164
msgstr ""
160
165
161
166
#: gitar/templates/gitar/index.djhtml:57
162
-
msgid ""
+
167
msgid ""
163
168
"Gitar <b>is a project under development!</b>\n"
164
169
"        While it's certainly presentable, there's still a lot of room for "
165
170
"improvement.<br />\n"
166
171
"        Also, if you happen to walk in while I'm working, it's possible "
167
172
"you'll\n"
168
173
"        fall through the floor, so be warned =D"
169
174
msgstr ""
170
175
171
176
#: gitar/templates/gitar/index.djhtml:64
172
-
msgid "Public repositories"
+
177
msgid "Public repositories"
173
178
msgstr ""
174
179
+
180
#: gitar/templates/gitar/index.djhtml:69
+
181
msgid "Primary programming language(s)"
+
182
msgstr ""
+
183
+
184
#: gitar/templates/gitar/index.djhtml:70
+
185
msgid "License"
+
186
msgstr ""
+
187

templates/gitar/locale/de/LC_MESSAGES/django.po

88 additions and 67 deletions.

View changes Hide changes
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/templates/gitar/commit.djhtml:77
21
-
msgid "Author"
+
21
#: gitar/templates/gitar/directory.djhtml:34
+
22
#: gitar/templates/gitar/index.djhtml:23
+
23
msgid "Front page"
+
24
msgstr "Hauptseite"
+
25
+
26
#: gitar/templates/gitar/commit.djhtml:92
+
27
#: gitar/templates/gitar/directory.djhtml:131
+
28
msgid "Author"
22
29
msgstr ""
23
-
+
30
24
31
#: gitar/templates/gitar/commit.djhtml:80
25
-
msgid "Date"
+
32
#: gitar/templates/gitar/directory.djhtml:133
+
33
msgid "Date"
26
34
msgstr ""
27
-
+
35
28
36
#: gitar/templates/gitar/commit.djhtml:83
29
-
msgid "Hash"
+
37
#: gitar/templates/gitar/directory.djhtml:130
+
38
msgid "Hash"
30
39
msgstr ""
31
-
+
40
32
41
#: gitar/templates/gitar/commit.djhtml:87
33
-
msgid "Parent"
+
42
msgid "Parent"
34
43
msgstr ""
35
-
+
44
36
45
#: gitar/templates/gitar/commit.djhtml:89
37
-
msgid "Parents"
+
46
msgid "Parents"
38
47
msgstr ""
39
-
+
48
40
49
#: gitar/templates/gitar/commit.djhtml:98
41
-
msgid "Modified file"
+
50
msgid "Modified file"
42
51
msgstr ""
43
-
+
52
44
53
#: gitar/templates/gitar/commit.djhtml:100
45
-
msgid "Modified files"
+
54
msgid "Modified files"
46
55
msgstr ""
47
-
+
56
48
57
#: gitar/templates/gitar/commit.djhtml:118
49
-
msgid ""
+
58
msgid ""
50
59
"\n"
51
60
"            addition\n"
52
61
"            "
53
62
msgid_plural ""
54
63
"\n"
55
64
"            additions\n"
56
65
"            "
57
66
msgstr[0] ""
58
-
msgstr[1] ""
59
-
+
67
msgstr[1] "Zufügungen"
+
68
60
69
#: gitar/templates/gitar/commit.djhtml:123
61
-
msgid "and"
+
70
msgid "and"
62
71
msgstr ""
63
-
+
72
64
73
#: gitar/templates/gitar/commit.djhtml:125
65
-
msgid ""
+
74
msgid ""
66
75
"\n"
67
76
"            deletion.\n"
68
77
"            "
69
78
msgid_plural ""
70
79
"\n"
71
80
"            deletions.\n"
72
81
"            "
73
82
msgstr[0] ""
74
-
msgstr[1] ""
75
-
+
83
msgstr[1] "Entfernungen"
+
84
76
85
#: gitar/templates/gitar/commit.djhtml:135
77
-
msgid "View changes"
+
86
msgid "View changes"
78
87
msgstr ""
79
-
+
88
80
89
#: gitar/templates/gitar/commit.djhtml:135
81
-
msgid "Hide changes"
+
90
msgid "Hide changes"
82
91
msgstr ""
83
-
+
92
84
93
#: gitar/templates/gitar/directory.djhtml:30
85
-
msgid "Name"
86
-
msgstr ""
87
-
88
-
#: gitar/templates/gitar/directory.djhtml:31
89
-
msgid "Latest commit"
90
-
msgstr ""
91
-
+
94
msgid "Branches"
+
95
msgstr "Äste"
+
96
92
97
#: gitar/templates/gitar/directory.djhtml:32
93
-
msgid "Latest update"
94
-
msgstr ""
95
-
+
98
msgid "Content"
+
99
msgstr "Inhalt"
+
100
96
101
#: gitar/templates/gitar/directory.djhtml:62
97
-
msgid "Description"
98
-
msgstr ""
99
-
+
102
msgid "Subdirectories"
+
103
msgstr "Unterverzeichnis"
+
104
100
105
#: gitar/templates/gitar/directory.djhtml:64
101
-
msgid "Branches"
102
-
msgstr ""
103
-
+
106
msgid "File name"
+
107
msgstr "Dateiname"
+
108
104
109
#: gitar/templates/gitar/directory.djhtml:70
105
-
msgid "Extra information"
106
-
msgstr ""
107
-
+
110
msgid "Latest commit"
+
111
msgstr "Letzte Commit"
+
112
108
113
#: gitar/templates/gitar/directory.djhtml:82
109
-
msgid "Files"
110
-
msgstr ""
111
-
+
114
msgid "Latest update"
+
115
msgstr "Aktualisierung"
+
116
112
117
#: gitar/templates/gitar/directory.djhtml:113
113
-
msgid "Commits"
+
118
msgid "Commits"
114
119
msgstr ""
115
-
+
120
116
121
#: gitar/templates/gitar/directory.djhtml:125
117
-
msgid "by"
118
-
msgstr ""
119
-
+
122
msgid "Description"
+
123
msgstr "Beschreibung"
+
124
120
125
#: gitar/templates/gitar/index.djhtml:5
121
126
msgid "Gitar | Index page"
122
127
msgstr ""
123
-
+
128
124
129
#: gitar/templates/gitar/index.djhtml:8
125
130
msgid "My personal answer to GitHub."
126
131
msgstr ""
127
-
+
132
128
133
#: gitar/templates/gitar/index.djhtml:29
129
-
msgid "Front page"
130
-
msgstr ""
131
-
+
134
msgid "Navigation"
+
135
msgstr "Navigation"
+
136
132
137
#: gitar/templates/gitar/index.djhtml:39
133
-
msgid "About Gitar"
+
138
msgid "About Gitar"
134
139
msgstr ""
135
-
+
140
136
141
#: gitar/templates/gitar/index.djhtml:41
137
-
msgid ""
+
142
msgid ""
138
143
"\n"
139
144
"\t\tGitar is a simple web app to easily host Git repositories using the "
140
145
"Django framework.\n"
141
146
"        It's a hobby project of me, to make it easy for\n"
142
147
"        people to scroll through the code I publish, in a read-only fashion. "
143
148
"It\n"
144
149
"        makes use of\n"
145
150
"        <a href=\"https://pygments.org/\" target=\"_blank\">Pygments</a>\n"
146
151
"        to read the source files, and apply the appropriate syntax "
147
152
"coloring.\n"
148
153
"        "
149
154
msgstr ""
150
155
+
156
"mit dem Django-Framework.  Es ist ein Hobby-Projekt von mir, um es den "
+
157
"Menschen leicht zu machen, durch den Code zu scrollen, den ich "
+
158
"veröffentliche, auf schreibgeschützte Weise. Es nutzt Pygments, um die "
+
159
"Quelldateien zu lesen und die entsprechende Syntax-Färbung anzuwenden."
+
160
151
161
#: gitar/templates/gitar/index.djhtml:51
152
-
msgid ""
+
162
msgid ""
153
163
"All repositories are automatically updated when changes\n"
154
164
"        have been pushed to the server, without any manual intervention from "
155
165
"me.\n"
156
166
"        Special attention goes to clean URL design, adhering to web "
157
167
"standards,\n"
158
168
"        and responsive design across all screen types."
159
169
msgstr ""
160
170
161
171
#: gitar/templates/gitar/index.djhtml:57
162
-
msgid ""
+
172
msgid ""
163
173
"Gitar <b>is a project under development!</b>\n"
164
174
"        While it's certainly presentable, there's still a lot of room for "
165
175
"improvement.<br />\n"
166
176
"        Also, if you happen to walk in while I'm working, it's possible "
167
177
"you'll\n"
168
178
"        fall through the floor, so be warned =D"
169
179
msgstr ""
170
-
+
180
171
181
#: gitar/templates/gitar/index.djhtml:64
172
-
msgid "Public repositories"
+
182
msgid "Public repositories"
173
183
msgstr ""
174
-
+
184
+
185
#: gitar/templates/gitar/index.djhtml:69
+
186
msgid "Primary programming language(s)"
+
187
msgstr "Primäre Programmiersprache(n)"
+
188
+
189
#: gitar/templates/gitar/index.djhtml:70
+
190
msgid "License"
+
191
msgstr "Lizenzierung"
+
192
+
193
#~ msgid "by"
+
194
#~ msgstr "Tür"
+
195

templates/gitar/locale/eo/LC_MESSAGES/django.po

52 additions and 39 deletions.

View changes Hide changes </
1
1
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
2
2
# This file is distributed under the same license as the PACKAGE package.
3
3
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
4
#
5
5
#, fuzzy
6
6
msgid ""
7
7
msgstr ""
8
8
"Project-Id-Version: PACKAGE VERSION\n"
9
9
"Report-Msgid-Bugs-To: \n"
10
10
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
11
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+
11
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12
12
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
13
"Language-Team: LANGUAGE <LL@li.org>\n"
14
14
"Language: \n"
15
15
"MIME-Version: 1.0\n"
16
16
"Content-Type: text/plain; charset=UTF-8\n"
17
17
"Content-Transfer-Encoding: 8bit\n"
18
18
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19
19
20
20
#: gitar/templates/gitar/commit.djhtml:77
21
-
msgid "Author"
+
21
#: gitar/templates/gitar/directory.djhtml:34
+
22
#: gitar/templates/gitar/index.djhtml:23
+
23
msgid "Front page"
+
24
msgstr ""
+
25
+
26
#: gitar/templates/gitar/commit.djhtml:92
+
27
#: gitar/templates/gitar/directory.djhtml:131
+
28
msgid "Author"
22
29
msgstr ""
23
30
24
31
#: gitar/templates/gitar/commit.djhtml:80
25
-
msgid "Date"
+
32
#: gitar/templates/gitar/directory.djhtml:133
+
33
msgid "Date"
26
34
msgstr ""
27
35
28
36
#: gitar/templates/gitar/commit.djhtml:83
29
-
msgid "Hash"
+
37
#: gitar/templates/gitar/directory.djhtml:130
+
38
msgid "Hash"
30
39
msgstr ""
31
40
32
41
#: gitar/templates/gitar/commit.djhtml:87
33
-
msgid "Parent"
+
42
msgid "Parent"
34
43
msgstr ""
35
44
36
45
#: gitar/templates/gitar/commit.djhtml:89
37
-
msgid "Parents"
+
46
msgid "Parents"
38
47
msgstr ""
39
48
40
49
#: gitar/templates/gitar/commit.djhtml:98
41
-
msgid "Modified file"
+
50
msgid "Modified file"
42
51
msgstr ""
43
52
44
53
#: gitar/templates/gitar/commit.djhtml:100
45
-
msgid "Modified files"
+
54
msgid "Modified files"
46
55
msgstr ""
47
56
48
57
#: gitar/templates/gitar/commit.djhtml:118
49
-
msgid ""
+
58
msgid ""
50
59
"\n"
51
60
"            addition\n"
52
61
"            "
53
62
msgid_plural ""
54
63
"\n"
55
64
"            additions\n"
56
65
"            "
57
66
msgstr[0] ""
58
67
msgstr[1] ""
59
68
60
69
#: gitar/templates/gitar/commit.djhtml:123
61
-
msgid "and"
+
70
msgid "and"
62
71
msgstr ""
63
72
64
73
#: gitar/templates/gitar/commit.djhtml:125
65
-
msgid ""
+
74
msgid ""
66
75
"\n"
67
76
"            deletion.\n"
68
77
"            "
69
78
msgid_plural ""
70
79
"\n"
71
80
"            deletions.\n"
72
81
"            "
73
82
msgstr[0] ""
74
83
msgstr[1] ""
75
84
76
85
#: gitar/templates/gitar/commit.djhtml:135
77
-
msgid "View changes"
+
86
msgid "View changes"
78
87
msgstr ""
79
88
80
89
#: gitar/templates/gitar/commit.djhtml:135
81
-
msgid "Hide changes"
+
90
msgid "Hide changes"
82
91
msgstr ""
83
92
84
93
#: gitar/templates/gitar/directory.djhtml:30
85
-
msgid "Name"
86
-
msgstr ""
87
-
88
-
#: gitar/templates/gitar/directory.djhtml:31
89
-
msgid "Latest commit"
90
-
msgstr ""
+
94
msgid "Branches"
+
95
msgstr ""
91
96
92
97
#: gitar/templates/gitar/directory.djhtml:32
93
-
msgid "Latest update"
94
-
msgstr ""
+
98
msgid "Content"
+
99
msgstr ""
95
100
96
101
#: gitar/templates/gitar/directory.djhtml:62
97
-
msgid "Description"
98
-
msgstr ""
+
102
msgid "Subdirectories"
+
103
msgstr ""
99
104