diff options
-rw-r--r-- | bn_django/git_browse/models.py | 12 | ||||
-rw-r--r-- | bn_django/git_browse/templates/git_browse/full_log.html | 3 | ||||
-rw-r--r-- | bn_django/git_browse/templates/git_browse/tree.html | 20 | ||||
-rw-r--r-- | bn_django/git_browse/templates/git_browse/tree_table | 52 | ||||
-rw-r--r-- | bn_django/git_browse/views.py | 11 | ||||
-rw-r--r-- | static/style/git_browse.css | 46 |
6 files changed, 87 insertions, 57 deletions
diff --git a/bn_django/git_browse/models.py b/bn_django/git_browse/models.py index db69bfc..edddf60 100644 --- a/bn_django/git_browse/models.py +++ b/bn_django/git_browse/models.py @@ -119,6 +119,8 @@ class Blob(models.Model): path = models.CharField("relative path from repo base", maxlength=512) id = models.CharField("hash", maxlength=40,blank=False,primary_key=True) name = models.CharField("name of dir", maxlength=128,blank=False) + size = models.IntField("filesize in byte", maxlength=128,blank=False) + contents = models.TextField("ASCII contents of the file") type='blob' class Admin: @@ -130,6 +132,16 @@ class Blob(models.Model): return "/code/%s/%s" % (self.repo.slug, self.hash) def get_admin_url(self): return "%s/code/tree/%s/" % (ADMIN_URL, self.id) + + def update(self): + import commands + + if not self.id: return + self.id = self.id.strip() + self.contents = commands.getoutput(GITPREFIX + ' cat-file -p ' + self.id) + self.size = commands.getoutput(GITPREFIX + ' cat-file -s ' + hash) + + def blob_from_str(s): s = s.split(); diff --git a/bn_django/git_browse/templates/git_browse/full_log.html b/bn_django/git_browse/templates/git_browse/full_log.html index a467ae8..75ea2ab 100644 --- a/bn_django/git_browse/templates/git_browse/full_log.html +++ b/bn_django/git_browse/templates/git_browse/full_log.html @@ -8,7 +8,8 @@ <b>Hash: </b>{{ item.hash }} <br /><b>Author: </b>{{ item.author }} <br /><b>Date: </b>{{ item.date }} - <br /><b>Comment: </b><pre>{{ item.comment }}</pre> + <br /><b>Comment: </b> + <pre class="large">{{ item.comment|wordwrap:80 }}</pre> {% endfor %} {% endif %} {% endblock %} diff --git a/bn_django/git_browse/templates/git_browse/tree.html b/bn_django/git_browse/templates/git_browse/tree.html index 3c8c294..79a8f39 100644 --- a/bn_django/git_browse/templates/git_browse/tree.html +++ b/bn_django/git_browse/templates/git_browse/tree.html @@ -2,22 +2,8 @@ {% block gitbrowse %} - <h3>Tree sha1 hash:</h3><br /> {{ hash }}<br /> + <h3>Tree sha1 hash:</h3> + <span class="hash">{{ hash }}</span> <h3>Directory listing:</h3> - {% include tree_table %} - {% if tree_objs %} - {% for o in tree_objs %} - [{{o.type}}] {{ o.mode }} - {% ifequal o.type 'blob' %} - <a href='/code/{{ object.slug }}/blob/{{ o.id }}/'>{{o.name}}</a> - {% else %} - {% ifequal o.type 'tree' %} - <a href='/code/{{object.slug}}/tree/{{ o.id }}/'>{{o.name}}</a> - {% else %} - <a href='/code/{{object.slug}}/obj/{{ o.id }}/'>{{o.name}}</a> - {% endifequal %}{% endifequal %} - <br /> - {% endfor %} - {% else %}No contents! - {% endif %} + {% include "git_browse/tree_table" %} {% endblock %} diff --git a/bn_django/git_browse/templates/git_browse/tree_table b/bn_django/git_browse/templates/git_browse/tree_table index 7df504a..a472283 100644 --- a/bn_django/git_browse/templates/git_browse/tree_table +++ b/bn_django/git_browse/templates/git_browse/tree_table @@ -1,23 +1,33 @@ -{% if tags %} +{% if tree_objs %} <table class="gitbrowser"> -{% for t in tags.iteritems %} -<tr> - <td class="tag"> - <a href="/code/{{object.slug}}/tag/{{ h.1 }}" class="subtle"> - {{ t.0 }}</a></td> - <td class="links"> - <a href="/code/{{object.slug}}/tag/{{ t.1 }}">tag</a> | - <a href="/code/{{object.slug}}/commit/{{ t.1 }}">commit</a> | - <a href="/code/{{object.slug}}/commit/{{ t.1 }}/zip"> zip </a></td> - <td class="hash"> - {% for h in heads.iteritems %} - {% ifequal h.1 t.1 %} - <a href="/code/{{object.slug}}/head/{{ h.1 }}/" class="head"> - [{{ h.0 }}]</a> - {% endifequal %} - {% endfor %} - <a href="/code/{{object.slug}}/obj/{{ t.1 }}" class="subtle"> - <span class="hash">{{ t.1 }}</span></a></td></tr> -{% endfor %} + {% for o in tree_objs %} + <tr> <td class="objtype"> + {{o.type}}</td> + <td class="filemode"> + {{ o.mode }} </td> + <td class="filename"> + {% ifequal o.type 'blob' %} + <a href='/code/{{ object.slug }}/blob/{{ o.id }}/' class="blob"> + {{o.name}}</a> + </td><td type="links"> + <a href='/code/{{object.slug}}/tree/{{ o.id }}/'>log</a> | + <a href='/code/{{object.slug}}/tree/{{ o.id }}/zip/'>zip</a> + </td> + {% else %} {% ifequal o.type 'tree' %} + <a href='/code/{{object.slug}}/tree/{{ o.id }}/' class="tree"> + {{o.name}}/</a> + </td><td type="links"> + <a href='/code/{{object.slug}}/tree/{{ o.id }}/'>browse</a> | + <a href='/code/{{object.slug}}/tree/{{ o.id }}/zip/'>zip</a> + </td> + {% else %} + <a href='/code/{{object.slug}}/obj/{{ o.id }}/' class="blob"> + {{o.name}}</a> + </td><td type="links"> + </td> + {% endifequal %}{% endifequal %} + </tr> + {% endfor %} </table> -{% else %}No tags!{% endif %} +{% else %}No contents! +{% endif %} diff --git a/bn_django/git_browse/views.py b/bn_django/git_browse/views.py index 8a84241..e27d949 100644 --- a/bn_django/git_browse/views.py +++ b/bn_django/git_browse/views.py @@ -96,6 +96,17 @@ def view_log(request, repo, tree_hash=None, branch=None): return render_to_response('git_browse/full_log.html', dict(object=therepo, log_objs=log_objs,)) +def view_blob(request, repo, hash, branch=None): + therepo = get_object_or_404(Repository, slug=repo) + (GITPREFIX, heads, tags) = therepo.scan() + blob = Blob(hash=hash,repo=therepo) + blob.update() + + return render_to_response('git_browse/obj.html', + dict(object=therepo, + hash=blob.id, + size=blob.size, + contents=blob.contents)) def view_obj(request, repo, hash, branch=None): therepo = get_object_or_404(Repository, slug=repo) diff --git a/static/style/git_browse.css b/static/style/git_browse.css index bf9974d..7fc04e8 100644 --- a/static/style/git_browse.css +++ b/static/style/git_browse.css @@ -9,49 +9,59 @@ pre.large { table.gitbrowser { width: 100%; border-spacing: 0px; - font-size: 11px; -} + font-size: 11px; } table.gitbrowser tr { width: 100%; - background-color: #EEEEEE; -} + background-color: #EEEEEE; } td.head { font-weight: bold; padding-left: 13px; width: 130px; - overflow: hidden; -} + overflow: hidden; } +td.links { + width: 90px; + overflow: hidden; } +td.objtype { + width: 35px; + font-style: italic; } +td.filemode { + width: 55px; + font-family: courier; } +td.filename { + width: 450px; } +td.filename a.tree { + font-weight: bold; } +td.filename a.blob { + font-weight: normal; } td.tag { font-weight: bold; padding-left: 13px; width: 130px; - overflow: hidden; -} + overflow: hidden; } td.date { font-style: italic; width: 90px; - overflow: hidden; -} + overflow: hidden; } td.author { font-style: italic; width: 100px; - overflow: hidden; -} + overflow: hidden; } td.description { - overflow: hidden; -} + overflow: hidden; } td.shorthash { width: 60px; overflow: hidden; text-align: right; - font-family: courier; -} + font-family: courier; } td.hash { width: 100px; overflow: hidden; text-align: right; - font-family: courier; -} + font-family: courier; } + +span.hash { + font-family: courier; } + a.head { color: green; } |