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
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/es/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/fr-be/LC_MESSAGES/django.po

0 additions and 97 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/templates/gitar/directory.djhtml:29
20
-
msgid "Description"
21
-
msgstr ""
22
-
23
-
#: gitar/templates/gitar/directory.djhtml:31
24
-
msgid "Branches"
25
-
msgstr ""
26
-
27
-
#: gitar/templates/gitar/directory.djhtml:37
28
-
msgid "Extra information"
29
-
msgstr ""
30
-
31
-
#: gitar/templates/gitar/directory.djhtml:49
32
-
msgid "Files"
33
-
msgstr ""
34
-
35
-
#: gitar/templates/gitar/directory.djhtml:80
36
-
msgid "Commits"
37
-
msgstr ""
38
-
39
-
#: gitar/templates/gitar/directory.djhtml:92
40
-
msgid "by"
41
-
msgstr ""
42
-
43
-
#: gitar/templates/gitar/index.djhtml:5
44
-
msgid "Gitar | Index page"
45
-
msgstr ""
46
-
47
-
#: gitar/templates/gitar/index.djhtml:8
48
-
msgid "My personal answer to GitHub."
49
-
msgstr ""
50
-
51
-
#: gitar/templates/gitar/index.djhtml:29
52
-
msgid "Front page"
53
-
msgstr ""
54
-
55
-
#: gitar/templates/gitar/index.djhtml:39
56
-
msgid "About Gitar"
57
-
msgstr ""
58
-
59
-
#: gitar/templates/gitar/index.djhtml:41
60
-
msgid ""
61
-
"\n"
62
-
"\t\tGitar is a simple web app to easily host Git repositories using the "
63
-
"Django framework.\n"
64
-
"        It's a hobby project of me, to make it easy for\n"
65
-
"        people to scroll through the code I publish, in a read-only fashion. "
66
-
"It\n"
67
-
"        makes use of\n"
68
-
"        <a href=\"https://pygments.org/\" target=\"_blank\">Pygments</a>\n"
69
-
"        to read the source files, and apply the appropriate syntax "
70
-
"coloring.\n"
71
-
"        "
72
-
msgstr ""
73
-
74
-
#: gitar/templates/gitar/index.djhtml:51
75
-
msgid ""
76
-
"All repositories are automatically updated when changes\n"
77
-
"        have been pushed to the server, without any manual intervention from "
78
-
"me.\n"
79
-
"        Special attention goes to clean URL design, adhering to web "
80
-
"standards,\n"
81
-
"        and responsive design across all screen types."
82
-
msgstr ""
83
-
84
-
#: gitar/templates/gitar/index.djhtml:57
85
-
msgid ""
86
-
"Gitar <b>is a project under development!</b>\n"
87
-
"        While it's certainly presentable, there's still a lot of room for "
88
-
"improvement.<br />\n"
89
-
"        Also, if you happen to walk in while I'm working, it's possible "
90
-
"you'll\n"
91
-
"        fall through the floor, so be warned =D"
92
-
msgstr ""
93
-
94
-
#: gitar/templates/gitar/index.djhtml:64
95
-
msgid "Public repositories"
96
-
msgstr ""
97
-

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

89 additions and 78 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
msgid ""
6
6
msgstr ""
7
7
"Project-Id-Version: \n"
8
8
"Report-Msgid-Bugs-To: \n"
9
9
"POT-Creation-Date: 2022-04-04 23:18+0000\n"
10
-
"PO-Revision-Date: 2021-10-30 16:05+0200\n"
+
10
"PO-Revision-Date: 2021-10-30 16:05+0200\n"
11
11
"Last-Translator: \n"
12
12
"Language-Team: \n"
13
13
"Language: fr\n"
14
14
"MIME-Version: 1.0\n"
15
15
"Content-Type: text/plain; charset=UTF-8\n"
16
16
"Content-Transfer-Encoding: 8bit\n"
17
17
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
18
18
"X-Generator: Poedit 3.0\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 "Page d'acceuil"
+
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] "additions"
+
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] "suppressions"
+
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
-
84
-
#: gitar/templates/gitar/directory.djhtml:30
85
-
msgid "Name"
86
-
msgstr ""
87
-
+
92
88
93
#: gitar/templates/gitar/directory.djhtml:31
89
-
msgid "Latest commit"
90
-
msgstr ""
91
-
+
94
msgid "Branches"
+
95
msgstr "Rameaux"
+
96
92
97
#: gitar/templates/gitar/directory.djhtml:32
93
-
msgid "Latest update"
94
-
msgstr ""
95
-
+
98
msgid "Content"
+
99
msgstr "Contenu"
+
100
96
101
#: gitar/templates/gitar/directory.djhtml:62
97
-
msgid "Description"
98
-
msgstr "Description"
99
-
+
102
msgid "Subdirectories"
+
103
msgstr "Repositories public"
+
104
100
105
#: gitar/templates/gitar/directory.djhtml:64
101
-
msgid "Branches"
102
-
msgstr "Branches"
103
-
+
106
msgid "File name"
+
107
msgstr "Nom du fichier"
+
108
104
109
#: gitar/templates/gitar/directory.djhtml:70
105
-
msgid "Extra information"
106
-
msgstr "Information additionel"
107
-
+
110
msgid "Latest commit"
+
111
msgstr "Dernière validation"
+
112
108
113
#: gitar/templates/gitar/directory.djhtml:82
109
-
msgid "Files"
110
-
msgstr "Fichiers"
111
-
+
114
msgid "Latest update"
+
115
msgstr "Dernière mise à jour"
+
116
112
117
#: gitar/templates/gitar/directory.djhtml:113
113
-
msgid "Commits"
+
118
msgid "Commits"
114
119
msgstr "Commits"
115
-
+
120
116
121
#: gitar/templates/gitar/directory.djhtml:125
117
-
msgid "by"
118
-
msgstr "par"
119
-
+
122
msgid "Description"
+
123
msgstr "Description"
+
124
120
125
#: gitar/templates/gitar/index.djhtml:5
121
126
msgid "Gitar | Index page"
122
127
msgstr "Gitar | Page d'acceuil"
123
128
124
129
#: gitar/templates/gitar/index.djhtml:8
125
130
msgid "My personal answer to GitHub."
126
131
msgstr "Mon réponse personnel á GitHub."
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 "À propos de Gitar"
135
140
136
141
#: gitar/templates/gitar/index.djhtml:41
137
-
#, fuzzy
138
-
#| msgid ""
139
-
#| "Gitar is a hobby project of me, to make it easy for\n"
140
-
#| "        people to scroll through the code I publish, in a read-only "
141
-
#| "fashion. It\n"
142
-
#| "        makes use of\n"
143
-
#| "        <a class=\"%(mdac)s-text text-accent-3\" href=\"http://pygments."
144
-
#| "org/\">Pygments</a>\n"
145
-
#| "        to read the source files, and apply the appropriate syntax "
146
-
#| "coloring.\n"
147
-
#| "        "
148
-
msgid ""
+
142
msgid ""
149
143
"\n"
150
144
"\t\tGitar is a simple web app to easily host Git repositories using the "
151
145
"Django framework.\n"
152
146
"        It's a hobby project of me, to make it easy for\n"
153
147
"        people to scroll through the code I publish, in a read-only fashion. "
154
148
"It\n"
155
149
"        makes use of\n"
156
150
"        <a href=\"https://pygments.org/\" target=\"_blank\">Pygments</a>\n"
157
151
"        to read the source files, and apply the appropriate syntax "
158
152
"coloring.\n"
159
153
"        "
160
154
msgstr ""
161
155
"Gitar est un projet hobby de moi, pour rendre facile pour les gens de faire "
162
156
"défiler le code que je publie, d'une manière simple. Il utilise <a class="
163
-
"\"%(mdac)s-text text-accent-3\" href=\"http://pygments.org/\">Pygments</a> "
164
-
"pour lire les fichiers sources, et appliquer la coloration de syntaxe "
165
-
"appropriée."
166
-
+
157
"class=\"%(mdac)s-text text-accent-3\" href=\"http://pygments.org/"
+
158
"\">Pygments</a> pour lire les fichiers sources, et appliquer la coloration "
+
159
"de syntaxe appropriée."
+
160
167
161
#: gitar/templates/gitar/index.djhtml:51
168
-
msgid ""
+
162
msgid ""
169
163
"All repositories are automatically updated when changes\n"
170
164
"        have been pushed to the server, without any manual intervention from "
171
165
"me.\n"
172
166
"        Special attention goes to clean URL design, adhering to web "
173
167
"standards,\n"
174
168
"        and responsive design across all screen types."
175
169
msgstr ""
176
170
"Tous les dépôts sont automatiquement mis à jour lorsque des changements ont "
177
171
"été poussés sur le serveur, sans aucune intervention manuelle de moi. Une "
178
172
"attention particulière va à la conception d'URL propre, adhérant aux normes "
179
173
"Web, et la conception réactive de tous les types d'écran."
180
174
181
175
#: gitar/templates/gitar/index.djhtml:57
182
-
msgid ""
+
176
msgid ""
183
177
"Gitar <b>is a project under development!</b>\n"
184
178
"        While it's certainly presentable, there's still a lot of room for "
185
179
"improvement.<br />\n"
186
180
"        Also, if you happen to walk in while I'm working, it's possible "
187
181
"you'll\n"
188
182
"        fall through the floor, so be warned =D"
189
183
msgstr ""
190
184
"Gitar est un projet <strong>en cours de développement!</strong> Bien qu'il "
191
185
"soit certainement présentable, il y a encore beaucoup de place pour "
192
186
"l'amélioration.<br>\n"
193
187
"Aussi, si vous arrivez à marcher pendant que je travaille, il est possible "
194
188
"que vous allez\n"
195
189
"tombez par terre, alors soyez prudent =D"
196
190
197
191
#: gitar/templates/gitar/index.djhtml:64
198
-
msgid "Public repositories"
+
192
msgid "Public repositories"
199
193
msgstr "Repositories public"
200
-
+
194
+
195
#: gitar/templates/gitar/index.djhtml:69
+
196
msgid "Primary programming language(s)"
+
197
msgstr "Langage(s) de programmation primaire(s)"
+
198
+
199
#: gitar/templates/gitar/index.djhtml:70
+
200
msgid "License"
+
201
msgstr "Licence"
+
202
+
203
#~ msgid "by"
+
204
#~ msgstr "par"
+
205
+
206
#~ msgid "Extra information"
+
207
#~ msgstr "Information additionel"
+
208
+
209
#~ msgid "Files"
+
210
#~ msgstr "Fichiers"
+
211
201
212
#, fuzzy
202
213
#~| msgid "Commits"
203
214
#~ msgid "Commited by"
204
215
#~ msgstr "Commits"
205
216
206
217
#~ msgid ""
207
218
#~ "Gitar is a simple web app to easily host Git repositories using the "
208
219
#~ "Django framework."
209
220
#~ msgstr ""
210
221
#~ "Gitar est une simple application web pour héberger facilement les dépôts "
211
222
#~ "Git en utilisant le cadre logiciel Django."
212
223

templates/gitar/locale/nl-be/LC_MESSAGES/django.po

0 additions and 97 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/templates/gitar/directory.djhtml:29
20
-
msgid "Description"
21
-
msgstr ""
22
-
23
-
#: gitar/templates/gitar/directory.djhtml:31
24
-
msgid "Branches"
25
-
msgstr ""
26
-
27
-
#: gitar/templates/gitar/directory.djhtml:37
28
-
msgid "Extra information"
29
-
msgstr ""
30
-
31
-
#: gitar/templates/gitar/directory.djhtml:49
32
-
msgid "Files"
33
-
msgstr ""
34
-
35
-
#: gitar/templates/gitar/directory.djhtml:80
36
-
msgid "Commits"
37
-
msgstr ""
38
-
39
-
#: gitar/templates/gitar/directory.djhtml:92
40
-
msgid "by"
41
-
msgstr ""
42
-
43
-
#: gitar/templates/gitar/index.djhtml:5
44
-
msgid "Gitar | Index page"
45
-
msgstr ""
46
-
47
-
#: gitar/templates/gitar/index.djhtml:8
48
-
msgid "My personal answer to GitHub."
49
-
msgstr ""
50
-
51
-
#: gitar/templates/gitar/index.djhtml:29
52
-
msgid "Front page"
53
-
msgstr ""
54
-
55
-
#: gitar/templates/gitar/index.djhtml:39
56
-
msgid "About Gitar"
57
-
msgstr ""
58
-
59
-
#: gitar/templates/gitar/index.djhtml:41
60
-
msgid ""
61
-
"\n"
62
-
"\t\tGitar is a simple web app to easily host Git repositories using the "
63
-
"Django framework.\n"
64
-
"        It's a hobby project of me, to make it easy for\n"
65
-
"        people to scroll through the code I publish, in a read-only fashion. "
66
-
"It\n"
67
-
"        makes use of\n"
68
-
"        <a href=\"https://pygments.org/\" target=\"_blank\">Pygments</a>\n"
69
-
"        to read the source files, and apply the appropriate syntax "
70
-
"coloring.\n"
71
-
"        "
72
-
msgstr ""
73
-
74
-
#: gitar/templates/gitar/index.djhtml:51
75
-
msgid ""
76
-
"All repositories are automatically updated when changes\n"
77
-
"        have been pushed to the server, without any manual intervention from "
78
-
"me.\n"
79
-
"        Special attention goes to clean URL design, adhering to web "
80
-
"standards,\n"
81
-
"        and responsive design across all screen types."
82
-
msgstr ""
83
-
84
-
#: gitar/templates/gitar/index.djhtml:57
85
-
msgid ""
86
-
"Gitar <b>is a project under development!</b>\n"
87
-
"        While it's certainly presentable, there's still a lot of room for "
88
-
"improvement.<br />\n"
89
-
"        Also, if you happen to walk in while I'm working, it's possible "
90
-
"you'll\n"
91
-
"        fall through the floor, so be warned =D"
92
-
msgstr ""
93
-
94
-
#: gitar/templates/gitar/index.djhtml:64
95
-
msgid "Public repositories"
96
-
msgstr ""
97
-

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

87 additions and 77 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 "Hoofdpagina"
+
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] "toevoegingen"
+
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] "verwijderingen"
+
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
-
84
-
#: gitar/templates/gitar/directory.djhtml:30
85
-
msgid "Name"
86
-
msgstr ""
87
-
+
92
88
93
#: gitar/templates/gitar/directory.djhtml:31
89
-
msgid "Latest commit"
90
-
msgstr ""
91
-
+
94
msgid "Branches"
+
95
msgstr "Takken"
+
96
92
97
#: gitar/templates/gitar/directory.djhtml:32
93
-
msgid "Latest update"
94
-
msgstr ""
95
-
+
98
msgid "Content"
+
99
msgstr "Inhoud"
+
100
96
101
#: gitar/templates/gitar/directory.djhtml:62
97
-
msgid "Description"
98
-
msgstr "Beschrijving"
99
-
+
102
msgid "Subdirectories"
+
103
msgstr "Submappen"
+
104
100
105
#: gitar/templates/gitar/directory.djhtml:64
101
-
msgid "Branches"
102
-
msgstr "Takken"
103
-
+
106
msgid "File name"
+
107
msgstr "Bestandsnaam"
+
108
104
109
#: gitar/templates/gitar/directory.djhtml:70
105
-
msgid "Extra information"
106
-
msgstr "Extra informatie"
107
-
+
110
msgid "Latest commit"
+
111
msgstr "Laatste validatie"
+
112
108
113
#: gitar/templates/gitar/directory.djhtml:82
109
-
msgid "Files"
110
-
msgstr "Bestanden"
111
-
+
114
msgid "Latest update"
+
115
msgstr "Laatste update"
+
116
112
117
#: gitar/templates/gitar/directory.djhtml:113
113
-
msgid "Commits"
+
118
msgid "Commits"
114
119
msgstr "Commits"
115
-
+
120
116
121
#: gitar/templates/gitar/directory.djhtml:125
117
-
msgid "by"
118
-
msgstr "door"
119
-
+
122
msgid "Description"
+
123
msgstr "Beschrijving"
+
124
120
125
#: gitar/templates/gitar/index.djhtml:5
121
126
msgid "Gitar | Index page"
122
127
msgstr "Gitar | Hoofdpagina"
123
-
+
128
124
129
#: gitar/templates/gitar/index.djhtml:8
125
130
msgid "My personal answer to GitHub."
126
131
msgstr "Mijn persoonlijke antwoord op Github."
127
132
128
133
#: gitar/templates/gitar/index.djhtml:29
129
-
msgid "Front page"
130
-
msgstr ""
131
-
+
134
msgid "Navigation"
+
135
msgstr "Navigatie"
+
136
132
137
#: gitar/templates/gitar/index.djhtml:39
133
-
msgid "About Gitar"
+
138
msgid "About Gitar"
134
139
msgstr "Over Gitar"
135
140
136
141
#: gitar/templates/gitar/index.djhtml:41
137
-
#, fuzzy
138
-
#| msgid ""
139
-
#| "Gitar is a hobby project of me, to make it easy for\n"
140
-
#| "        people to scroll through the code I publish, in a read-only "
141
-
#| "fashion. It\n"
142
-
#| "        makes use of\n"
143
-
#| "        <a class=\"%(mdac)s-text text-accent-3\" href=\"http://pygments."
144
-
#| "org/\">Pygments</a>\n"
145
-
#| "        to read the source files, and apply the appropriate syntax "
146
-
#| "coloring.\n"
147
-
#| "        "
148
-
msgid ""
+
142
msgid ""
149
143
"\n"
150
144
"\t\tGitar is a simple web app to easily host Git repositories using the "
151
145
"Django framework.\n"
152
146
"        It's a hobby project of me, to make it easy for\n"
153
147
"        people to scroll through the code I publish, in a read-only fashion. "
154
148
"It\n"
155
149
"        makes use of\n"
156
150
"        <a href=\"https://pygments.org/\" target=\"_blank\">Pygments</a>\n"
157
151
"        to read the source files, and apply the appropriate syntax "
158
152
"coloring.\n"
159
153
"        "
160
154
msgstr ""
161
155
"Gitar is een persoonlijk hobbyproject, om het makkelijk te maken voor mensen "
162
156
"om door mijn code te scrollen, zoals deze in mijn repo's te zien is. Het "
163
157
"maakt gebruik van <a class=\"%(mdac)s-text text-accent-3\" href=\"http://"
164
-
"pygments.org/\">Pygments</a> om de code te lezen, en de juiste "
165
-
"syntaxkleuring toe te passen."
166
-
+
158
"te lezen, en de juiste syntaxkleuring toe te passen."
+
159
167
160
#: gitar/templates/gitar/index.djhtml:51
168
-
msgid ""
+
161
msgid ""
169
162
"All repositories are automatically updated when changes\n"
170
163
"        have been pushed to the server, without any manual intervention from "
171
164
"me.\n"
172
165
"        Special attention goes to clean URL design, adhering to web "
173
166
"standards,\n"
174
167
"        and responsive design across all screen types."
175
168
msgstr ""
176
169
"Alle repositories worden automatisch geüpdatet als er veranderingen naar de "
177
170
"server gestuurd worden, zonder manuele toedracht van mijn kant. Er wordt "
178
171
"aandacht besteedt aan het maken van propere en duidelijke URL's, het volgen "
179
172
"van de juiste webstandaarden, en een gebruiksvriendelijk ontwerp op alle "
180
173
"soorten schermen."
181
174
182
175
#: gitar/templates/gitar/index.djhtml:57
183
-
msgid ""
+
176
msgid ""
184
177
"Gitar <b>is a project under development!</b>\n"
185
178
"        While it's certainly presentable, there's still a lot of room for "
186
179
"improvement.<br />\n"
187
180
"        Also, if you happen to walk in while I'm working, it's possible "
188
181
"you'll\n"
189
182
"        fall through the floor, so be warned =D"
190
183
msgstr ""
191
184
"Gitar <b>is een project dat nog niet af is!</b>\n"
192
185
"Alheowel het presentabel is, is er nog meer dan genoeg ruimte voor "
193
186
"verbetering. Het kan dus zijn dat ik aan het prullen ben, en de website "
194
187
"plots ineenstort, je bent gewaarschuwd. ;)"
195
188
196
189
#: gitar/templates/gitar/index.djhtml:64
197
-
msgid "Public repositories"
+
190
msgid "Public repositories"
198
191
msgstr "Publieke repositories"
199
192
200
193
#, fuzzy
+
194
msgid "Primary programming language(s)"
+
195
msgstr "Primaire programmeertaal of -talen"
+
196
+
197
#: gitar/templates/gitar/index.djhtml:70
+
198
msgid "License"
+
199
msgstr "Licentie"
+
200
+
201
#~ msgid "by"
+
202
#~ msgstr "door"
+
203
+
204
#~ msgid "Extra information"
+
205
#~ msgstr "Extra informatie"
+
206
+
207
#~ msgid "Files"
+
208
#~ msgstr "Bestanden"
+
209
+
210
#, fuzzy
201
211
#~| msgid "Commits"
202
212
#~ msgid "Commited by"
203
213
#~ msgstr "Commits"
204
214
205
215
#~ msgid ""
206
216
#~ "Gitar is a simple web app to easily host Git repositories using the "
207
217
#~ "Django framework."
208
218
#~ msgstr ""
209
219
#~ "Gitar is een simpele web app om gemakkelijk Git-repo's te hosten met "
210
220
#~ "behulp van het Django-framework."
211
221

views.py

3 additions and 3 deletions.

View changes Hide changes
1
1
    Copyright © 2016 Maarten "Vngngdn" Vangeneugden
2
2
3
3
    This program is free software: you can redistribute it and/or modify
4
4
    it under the terms of the GNU Affero General Public License as
5
5
    published by the Free Software Foundation, either version 3 of the
6
6
    License, or (at your option) any later version.
7
7
8
8
    This program is distributed in the hope that it will be useful,
9
9
    but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
    GNU Affero General Public License for more details.
12
12
13
13
    You should have received a copy of the GNU Affero General Public License
14
14
    along with this program. If not, see https://www.gnu.org/licenses/agpl.html.
15
15
"""
16
16
17
17
from django.shortcuts import get_object_or_404, render  # This allows to render the template with the view here. It's pretty cool and important.
18
18
from django.http import HttpResponseRedirect, HttpResponse
19
19
from django.urls import reverse
20
20
from .models import *
21
21
22
22
from .GitActions import RepoInfo, FileInfo, CommitInfo
23
23
from django.utils.translation import ugettext as _
24
-
+
24
25
25
from django.utils.translation import ugettext as _
26
-
from git import Repo  # GitPython functionality.
27
26
import git
28
27
import pydriller
29
28
30
29
import datetime
31
30
32
31
from .syntax import *
33
32
34
33
35
34
# First, I list some standard variables that are common for most of the sites of this app.
36
35
37
36
def footer_description():
38
37
    return _("Gitar is a simple web app that allows its users to easily share Git repos in combination with the Django framework.")
39
38
40
39
def footer_links():
41
40
    footer_links = [
42
41
            [_('Home page'), reverse('about-index')],
43
42
            #[_('Source code'), reverse('gitar-repository', kwargs={'repository_name':'gitar'})],
44
43
            ]
45
44
    return footer_links
46
45
47
46
def standard_context():
48
47
    context = {
49
48
            'navbar_title': "Gitar",
50
49
            'navbar_backArrow': False,
51
50
            'footer_title': "Gitar",
52
51
            'footer_description': footer_description(),
53
52
            'footer_links': footer_links(),
54
53
            'stylesheet_name': "gitar",
55
54
            }
56
55
    return context
57
56
58
57
def download_tar(request):
59
58
    pass
60
59
def download_git(request):
61
60
    pass
62
61
def commit(request, repository_name, commit_hash):
63
62
    template = "gitar/commit.djhtml"
64
63
65
64
    repository_model = RepoInfo.get_repository_model(repository_name)
66
65
    commit_repo = pydriller.Repository(repository_model.directory_path, single=commit_hash)
67
66
    context = standard_context()
68
67
    #file_html_code = dict()
69
68
    context["modified_files"] = list()
70
69
    # NOTE: Although this looks like a for loop, it's not: It's a generator that
71
70
    # will only produce a single commit. But since it's a generator, I can't
72
71
    # extract the first element with indexing. So this will have to do.
73
72
    for c in commit_repo.traverse_commits():
74
73
        context["commit"] = c
75
74
        # Splitting up the message file correctly
76
75
        # case: Only summary line, no \n:
77
76
        if '\n' not in c.msg:
78
77
            context["first_line"] = c.msg
79
78
        # case: Summary line split by two \n:
80
79
        elif '\n' not in c.msg.split('\n\n', maxsplit=1)[0]:
81
80
            parts = c.msg.split('\n\n', maxsplit=1)
82
81
            context["first_line"] = parts[0]
83
82
            context["other_lines"] = parts[1]
84
83
        # case: Badly formatted message
85
84
        else:
86
85
            parts = c.msg.split('\n', maxsplit=1)
87
86
            context["first_line"] = parts[0]
88
87
            context["other_lines"] = parts[1]
89
88
        # Final formatting:
90
89
        if "other_lines" in context:
91
90
            context["other_lines"] = context["other_lines"].replace('\n\n','<br>').replace('\n', ' ')
92
91
        # Processing the modified files
93
92
        for modified_file in c.modified_files:
94
93
            #print("FILE")
95
94
            processed = CommitInfo.prepare_and_process(modified_file)
96
95
            #print(processed)
97
96
            context["modified_files"].append(processed)
98
97
            #html_code_before = None
99
98
            #html_code_after = None
100
99
            #if modified_file.source_code_before is not None:
101
100
                #html_code_before = code_to_HTML(
102
101
                    #modified_file.source_code_before,
103
102
                    #modified_file.filename)
104
103
            #if modified_file.source_code is not None:
105
104
                #html_code_after = code_to_HTML(
106
105
                    #modified_file.source_code,
107
106
                    #modified_file.filename)
108
107
            # XXX: This function WILL OVERWRITE the presented code of a file if
109
108
            # this particular commit includes multiple files with the same name,
110
109
            # but a different path. I'll update this in the future...
111
110
            #file_html_code[modified_file.filename] = (html_code_before, html_code)
112
111
    #context["file_html_code"] = file_html_code
113
112
            
114
113
    #context["subdirectories"] = subdirectories
115
114
    #context["commits"] = commits
116
115
    #context["branch"] = branch
117
116
    context["repository_name"] = repository_name
118
117
    # Adding the html code for the files
119
118
    #context["file_html_code"]
120
119
    #context["repository_description"] = repository.description
121
120
    #html_code = code_to_HTML(raw_file_data, file.name)
122
121
123
122
    return render(request, template, context)
124
123
             
125
124
def file_commit(request):
126
125
    pass
127
126
128
127
# From here, the actual views start.
129
128
def index(request):
130
129
    """ The start page of Gitar.
131
130
132
131
    The goal of this view, is to collect all the available repositories,
133
132
    including some additional information, such as programming language,
134
133
    license, description, ... in order to give a fast overview of the most
135
134
    prominent information.
136
135
    """
137
136
138
137
    # Collecting the available repositories:
139
138
    # Template:
140
139
    template = "gitar/index.djhtml"
141
140
    # Requesting the repositories:
142
141
    modelRepos = Repository.objects.all()
143
142
    # From here, we start collecting info about all the repositories:
144
143
    class BlankRepository: pass  # Blank object in which all data will be collected.
145
144
    repositories = []
146
145
    for modelRepo in modelRepos:
147
146
        repository = BlankRepository()
148
147
        # TODO: Find a way to add all of modelRepo's fields without having to
149
148
        # hardcode them. This is prone to errors and is redundant.
150
149
        repository.name = str(modelRepo)
151
150
        repository.programmingLanguage = modelRepo.programmingLanguage
152
151
        repository.license = modelRepo.license
153
152
        repository.description = RepoInfo.get_description(modelRepo)
154
153
155
154
        #gitRepo = Repo.init(modelRepo.directory(), bare=True)  # Connects to the Git Repo.
156
155
        # See tests.py, which assures all repositories exist. Tests are handy.
157
156
        #repository.description = gitRepo.description
158
157
        # This is mostly personal taste, but I like to show the amount of files.
159
158
        #repoTree = gitRepo.heads.master.commit.tree
160
159
        #repository.fileCount = len(repoTree.blobs)  # blobs are files.
161
160
        repositories.append(repository)
162
161
    # After that, I extend the standard context with the repositories:
163
162
    context = standard_context()
164
163
    context['repositories'] = repositories
165
164
    # And finally, sending everything back.
166
165
    return render(request, template, context)
167
166
168
167
def repositories(request, repository_name, branch="master"):
169
168
    # A repo's root is a directory by default, so this will automatically return
170
169
    # a directory view. But still, this is a bit nicer.
171
170
    return path_explorer(request, repository_name, branch, "")
172
171
173
172
def path_explorer(request, repository_name, branch, path=""):
174
173
    """ Checks whether the given path is a file or a directory, and calls the
175
174
    appropriate view function accordingly.
176
175
    """
177
176
    repository = RepoInfo.get_repository_object(repository_name)
178
177
    # From the GitPython documentation:
179
178
    # You can obtain the tree object of a repository, which is the directory of
180
179
    # that repo. This tree can be accessed as if it were a native Python list,
181
180
    # where the elements are the subdirectories and files. So, the idea to
182
181
    # determine whether a file, or a directory was requested, is simple:
183
182
    # 1. Split the path with "/" as seperator.
184
183
    # 2. Replace the current tree variable with the one retrieved from the
185
184
    # subtree element
186
185
    # 3. Repeat 2. until all parts of the given path are exhausted.
187
186
    # If we now still have a tree, we're looking at a directory, so display the
188
187
    # files (and subdirectories) of this directory.
189
188
    # Else, if we hit a blob, display the file contents.
190
189
    path_parts = path.split(sep="/")
191
190
    # FIXME: This is a bug at the URL regex part that I haven't been able to fix
192
191
    # yet. This serves as a temporary fix:
193
192
    # If the last part of the path is an empty string (which happens when the
194
193
    # last symbol was a '/'), remove that part from the list.
195
194
    # Of course, this is bad monkeypatching, but I suck at regex, so as long as
196
195
    # I don't find the solution, this'll have to do.
197
196
198
197
199
198
    #print(path_parts)
200
199
201
200
    if path_parts[len(path_parts)-1] == "":
202
201
        path_parts.pop()
203
202
204
203
    if len(path_parts) == 0:
205
204
        directory = repository.heads[branch].commit.tree
206
205
        return directory_view(request, repository_name, branch, path, directory)
207
206
208
207
    assert len(path_parts) != 0
209
208
210
209
    # FIXME: If the user gives a "<something>/../<somethingElse>", that should
211
210
    # become "<something>". Obviously, although I think that's done by default
212
211
    # already.
213
212
    directory = repository.heads[branch].commit.tree
214
213
    for i in range(len(path_parts)):
215
214
        subdirectories = directory.trees
216
215
        #if len(subdirectories) == 0:
217
216
            # This can't happen, as this would imply there is a directory inside
218
217
            # a file.
219
218
        #    assert False
220
219
        #else:
221
220
        for subdirectory in subdirectories:
222
221
            if subdirectory.name == path_parts[i]:
223
222
                directory = subdirectory
224
223
                #break  # Useless optimization
225
224
    # When there are no more directories to traverse, check if the last part of
226
225
    # the path is either a file, or a directory:
227
226
    blobs = directory.blobs
228
227
    #print(path_parts)
229
228
    last_part = path_parts[len(path_parts)-1]
230
229
    for blob in directory.blobs:
231
230
        #print(blob.name)
232
231
        if blob.name == last_part:
233
232
            file_blob = blob
234
233
            #print("Returning file view")
235
234
            return file_view(request, repository_name, branch, path, file_blob)
236
235
        else:
237
236
            pass
238
237
            #print("blob name: " + blob.name)
239
238
            #print("last part: " + last_part)
240
239
    return directory_view(request, repository_name, branch, path, directory)
241
240
242
241
def directory_view(request, repository_name, branch, path, directory):
243
242
    """ Collects the given directories's files and subdirectories, and renders a
244
243
    template to display this data.
245
244
    """
246
245
247
246
    # Collecting files in this directory
248
247
    repository = RepoInfo.get_repository_object(repository_name)
249
248
    files = []
250
249
    for file in directory.blobs:
251
250
        latest_commit_object = FileInfo.last_commit(repository_name, branch, file.path)
252
251
        older_than_one_month = (datetime.datetime.now(datetime.timezone.utc) - latest_commit_object.committer_date).days > 30
253
252
        print(latest_commit_object)
254
-
        files.append({
+
253
        files.append({
255
254
            "name":file.name,
256
255
            "path":file.path,
257
256
            #"commit":"",#FileInfo.last_commit(repository, file).hexsha[:20],
258
257
            "commit": latest_commit_object,
259
258
            "older_than_one_month": older_than_one_month,
260
259
            })
261
260
        #print(FileInfo.last_commit(repository_name, branch, file))
262
261
    # Collecting commits for this branch
263
262
    commits = []
264
263
    for commit in repository.iter_commits(branch):
265
264
        commits.append({
266
265
            "hash":commit.hexsha[:20],
267
266
            "author":commit.author,
268
267
            "description":commit.summary,
269
268
            })
+
269
            })
270
270
    # Collecting subdirectories
271
271
    subdirectories = []
272
272
    for subdirectory in directory.trees:
273
273
        subdirectories.append({
274
274
            "path":subdirectory.path,
275
275
            "name":subdirectory.name,
276
276
            })
277
277
    # Collecting rendering information:
278
278
    template = "gitar/directory.djhtml"
279
279
    context = standard_context()
280
280
    context["files"] = files
281
281
    context["subdirectories"] = subdirectories
282
282
    context["commits"] = commits
283
283
    context["branch"] = branch
284
284
    context["repository_name"] = repository_name
285
285
    context["repository_description"] = repository.description
286
286
    # Collection repo information
287
287
    for repo in Repository.objects.all():
288
288
        if str(repo) == repository_name:
289
289
            context["repository_language"] = repo.programmingLanguage
290
290
            context["repository_license"] = repo.license
291
291
            break
292
292
    branches = []
293
293
    for bbranch in repository.heads:
294
294
        branches.append(bbranch.name)
295
295
    context["branches"] = branches
296
296
    return render(request, template, context)
297
297
298
298
299
299
def file_view(request, repository_name, branch, path, file):
300
300
    """ Collects the file contents of the given file path, and returns it to the
301
301
    template, with the file contents already formatted in HTML using Pygments.
302
302
    """
303
303
304
304
    # Turning the file's contents in HTML ready output:
305
305
    raw_file_data = file.data_stream.read()
306
306
    html_code = code_to_HTML(raw_file_data, file.name)
307
307
    # Collecting rendering information:
308
308
    template = "gitar/file.djhtml"
309
309
    context = standard_context()
310
310
    context["content"] = html_code
311
311
    context["file_name"] = file.name
312
312
    context["repository_name"] = repository_name
313
313
    return render(request, template, context)
314
314
    
315
315