Added public pastes list view

Fixed css some more
This commit is contained in:
sebastian 2014-02-08 17:52:33 +01:00
parent ba571914a1
commit 0cef00ca8f
8 changed files with 148 additions and 46 deletions

View File

@ -20,10 +20,8 @@ class STLUploadForm(ModelForm):
stlfile = self.cleaned_data.get("file") stlfile = self.cleaned_data.get("file")
stlfile.open() stlfile.open()
print dir(stlfile)
if stlfile.read(5) != "solid": if stlfile.read(5) != "solid":
print "binary" #print "binary"
#Skip header #Skip header
stlfile.seek(80) stlfile.seek(80)
count = struct.unpack("i",stlfile.read(4))[0] count = struct.unpack("i",stlfile.read(4))[0]
@ -31,7 +29,7 @@ class STLUploadForm(ModelForm):
raise forms.ValidationError("Not a valid binary STL file.") raise forms.ValidationError("Not a valid binary STL file.")
else: else:
print "ascii" #print "ascii"
next_patterns = [facet_pattern] next_patterns = [facet_pattern]
stlfile.readline() stlfile.readline()
line = stlfile.readline().strip() line = stlfile.readline().strip()

View File

@ -0,0 +1,78 @@
{% extends "base.html" %}
{% block title %} All public pastes{% endblock %}
{% block headeraddons %}
{% endblock %}
{% block content %}
<div id="content">
<div id="prompt">
<!-- if IE without GCF, prompt goes here -->
</div>
<h1>All public pastes</h1>
<div class="pure-g-r">
<div class="pure-u-2-3">
<div class="textcontainer">
<table class="pure-table pure-table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Uploader</th>
<th>Size (w x h x d)</th>
<th>Polygons</th>
<th>Expires</th>
<th>Date</th>
</tr>
</thead>
{% for geometry in geometries %}
<tr {% cycle '' 'class="odd-row"' %}>
<td><a href="{{geometry.get_absolute_url}}">{{geometry.name}}</a></td>
<td>
{% if geometry.user %}
{{geometry.user.username}}
{% else %}
Anonymous
{% endif %}
</td>
<td>{{geometry.get_width}} x {{geometry.get_height}} x {{geometry.get_depth}}</td>
<td>{{geometry.get_polycount}}</td>
<td>
{% if geometry.get_expiration_date %}
{{ geometry.get_expiration_date|timeuntil}}
{% else %}
never
{% endif %}
</td>
<td>{{geometry.date}}</td>
</tr>
{% endfor %}
</table>
<br/>
<br/>
{% if geometries.has_previous %}
<a href="?page={{ geometries.previous_page_number }}">previous... </a>
{% endif %}
{% if geometries.number %}
Page {{ geometries.number }} of {{ geometries.paginator.num_pages }}
{% endif %}
{% if geometries.has_next %}
<a href="?page={{ geometries.next_page_number }}"> ..next</a>
{% endif %}
</div>
</div>
<div class="pure-u-1-3">
{% include 'pastebin/latest_geometries.html' %}
</div>
</div>
</div>
{% endblock %}

View File

@ -1,8 +1,11 @@
from django.conf.urls import patterns, include, url from django.conf.urls import patterns, include, url
from views import GeometryView, GeometryCreate, GeometryDelete from views import GeometryView, GeometryListView, GeometryCreate, GeometryDelete
urlpatterns = patterns('', urlpatterns = patterns('',
url(r'^new/$', GeometryCreate.as_view(), name='geometry_create'), url(r'^new/$', GeometryCreate.as_view(), name='geometry_create'),
url(r'^g/delete/(?P<id>\d+)/$', GeometryDelete.as_view(), name='geometry_delete'), url(r'^list/$', GeometryListView.as_view(), name='geometry_list'),
url(r'^g/(?P<id>\d+)/$', GeometryView.as_view(), name='geometry_details')) url(r'^list/page/(?P<page>[0-9]+)/$', GeometryListView.as_view(), name='geometry_list'),
url(r'^delete/(?P<id>\d+)/$', GeometryDelete.as_view(), name='geometry_delete'),
url(r'^(?P<id>\d+)/$', GeometryView.as_view(), name='geometry_details'))

View File

@ -4,7 +4,7 @@ from django.core.urlresolvers import reverse
from django.views.generic.base import ContextMixin from django.views.generic.base import ContextMixin
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.views.generic.base import TemplateView from django.views.generic.base import TemplateView
from django.views.generic.list import ListView
from forms import GeometryForm, AnonymousGeometryForm from forms import GeometryForm, AnonymousGeometryForm
from models import Geometry from models import Geometry
@ -16,6 +16,14 @@ class LastesGeometriesMixin(ContextMixin):
context['latest_geometries'] = Geometry.get_latest() context['latest_geometries'] = Geometry.get_latest()
return context return context
class GeometryListView(ListView, LastesGeometriesMixin):
model = Geometry
paginate_by = 50
paginate_orphans = 25
page_kwarg = 'page'
context_object_name = 'geometries'
template_name = 'pastebin/geometry_list.html'
class GeometryView(DetailView): class GeometryView(DetailView):
model = Geometry model = Geometry

View File

@ -60,27 +60,10 @@ body {
color: #4C5B89; } color: #4C5B89; }
.textcontainer a:hover { .textcontainer a:hover {
color: #7E98E5; } color: #7E98E5; }
.textcontainer .button-green { .textcontainer table {
color: white; background-color: #ffffff; }
background-color: #1CB841; } .textcontainer table .odd-row {
.textcontainer .button-green:visited { background-color: #e4eef2; }
color: white; }
.textcontainer .button-green:hover {
color: white; }
.textcontainer .button-red {
color: white;
background-color: #ca3c3c; }
.textcontainer .button-red:visited {
color: white; }
.textcontainer .button-red:hover {
color: white; }
.textcontainer .button-lightblue {
color: white;
background-color: #42B8DD; }
.textcontainer .button-lightblue:visited {
color: white; }
.textcontainer .button-lightblue:hover {
color: white; }
.textcontainer .uploads-list { .textcontainer .uploads-list {
list-style: none; } list-style: none; }
.textcontainer .pure-form label { .textcontainer .pure-form label {
@ -94,3 +77,27 @@ body {
.textcontainer .resetlink { .textcontainer .resetlink {
font-size: 75%; font-size: 75%;
text-decoration: none; } text-decoration: none; }
#fileinfos .button-green, .textcontainer .button-green {
color: white;
background-color: #1CB841; }
#fileinfos .button-green:visited, .textcontainer .button-green:visited {
color: white; }
#fileinfos .button-green:hover, .textcontainer .button-green:hover {
color: white; }
#fileinfos .button-red, .textcontainer .button-red {
color: white;
background-color: #ca3c3c; }
#fileinfos .button-red:visited, .textcontainer .button-red:visited {
color: white; }
#fileinfos .button-red:hover, .textcontainer .button-red:hover {
color: white; }
#fileinfos .button-lightblue, .textcontainer .button-lightblue {
color: white;
background-color: #42B8DD; }
#fileinfos .button-lightblue:visited, .textcontainer .button-lightblue:visited {
color: white; }
#fileinfos .button-lightblue:hover, .textcontainer .button-lightblue:hover {
color: white; }

View File

@ -100,24 +100,14 @@ body{
} }
} }
table {
background-color: #ffffff;
.button-green { .odd-row {
@include fixlinkcolor(#ffffff); background-color: #e4eef2;
background-color: #1CB841; }
} }
.button-red {
@include fixlinkcolor(#ffffff);
background-color: #ca3c3c;
}
.button-lightblue {
@include fixlinkcolor(#ffffff);
background-color: #42B8DD;
}
.uploads-list { .uploads-list {
list-style: none; list-style: none;
} }
@ -144,4 +134,19 @@ body{
} }
} }
#fileinfos .button-green, .textcontainer .button-green {
@include fixlinkcolor(#ffffff);
background-color: #1CB841;
}
#fileinfos .button-red, .textcontainer .button-red {
@include fixlinkcolor(#ffffff);
background-color: #ca3c3c;
}
#fileinfos .button-lightblue, .textcontainer .button-lightblue {
@include fixlinkcolor(#ffffff);
background-color: #42B8DD;
}

View File

@ -22,6 +22,7 @@
<ul> <ul>
<li><a href="{% url 'home' %}">Home</a></li> <li><a href="{% url 'home' %}">Home</a></li>
<li><a href="{% url 'geometry_create' %}">New Paste</a></li> <li><a href="{% url 'geometry_create' %}">New Paste</a></li>
<li><a href="{% url 'geometry_list' %}">Public Pastes</a></li>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<li><a href="{% url 'user_update' user_id=user.pk %}">Account</a></li> <li><a href="{% url 'user_update' user_id=user.pk %}">Account</a></li>
<li><a href="{% url 'logout' %}">Logout</a></li> <li><a href="{% url 'logout' %}">Logout</a></li>

View File

@ -35,8 +35,10 @@
<li>Models uploaded by registred user stay online indefinitely</li> <li>Models uploaded by registred user stay online indefinitely</li>
</ul> </ul>
<i>Private</i> only means that past3d will not show the link to anyone else. <i>Private</i> only means that past3d will not show the link to anyone else.
Whereas a public paste can be shown at various places on this site, Whereas a public paste can be shown the Latest Uploads sidebar and
e.g. the Latest Uploads sidebar. the list of all public pastes.
So if you want your stuff to stay <i>private</i> don't post the link on twitter
or your favorite 3 printing forum, because once the googlebot has it it's public.
<br/> <br/>
<br/> <br/>
Also note that as an unregistered user your models will only stay online for a limited time span (up to one month maximum).<br/> Also note that as an unregistered user your models will only stay online for a limited time span (up to one month maximum).<br/>