parent
ba571914a1
commit
0cef00ca8f
|
@ -20,10 +20,8 @@ class STLUploadForm(ModelForm):
|
|||
stlfile = self.cleaned_data.get("file")
|
||||
stlfile.open()
|
||||
|
||||
print dir(stlfile)
|
||||
|
||||
if stlfile.read(5) != "solid":
|
||||
print "binary"
|
||||
#print "binary"
|
||||
#Skip header
|
||||
stlfile.seek(80)
|
||||
count = struct.unpack("i",stlfile.read(4))[0]
|
||||
|
@ -31,7 +29,7 @@ class STLUploadForm(ModelForm):
|
|||
raise forms.ValidationError("Not a valid binary STL file.")
|
||||
|
||||
else:
|
||||
print "ascii"
|
||||
#print "ascii"
|
||||
next_patterns = [facet_pattern]
|
||||
stlfile.readline()
|
||||
line = stlfile.readline().strip()
|
||||
|
|
|
@ -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 %}
|
||||
|
|
@ -1,8 +1,11 @@
|
|||
from django.conf.urls import patterns, include, url
|
||||
|
||||
from views import GeometryView, GeometryCreate, GeometryDelete
|
||||
from views import GeometryView, GeometryListView, GeometryCreate, GeometryDelete
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^new/$', GeometryCreate.as_view(), name='geometry_create'),
|
||||
url(r'^g/delete/(?P<id>\d+)/$', GeometryDelete.as_view(), name='geometry_delete'),
|
||||
url(r'^g/(?P<id>\d+)/$', GeometryView.as_view(), name='geometry_details'))
|
||||
url(r'^list/$', GeometryListView.as_view(), name='geometry_list'),
|
||||
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'))
|
||||
|
|
@ -4,7 +4,7 @@ from django.core.urlresolvers import reverse
|
|||
from django.views.generic.base import ContextMixin
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.views.generic.base import TemplateView
|
||||
|
||||
from django.views.generic.list import ListView
|
||||
|
||||
from forms import GeometryForm, AnonymousGeometryForm
|
||||
from models import Geometry
|
||||
|
@ -16,6 +16,14 @@ class LastesGeometriesMixin(ContextMixin):
|
|||
context['latest_geometries'] = Geometry.get_latest()
|
||||
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):
|
||||
model = Geometry
|
||||
|
|
|
@ -60,27 +60,10 @@ body {
|
|||
color: #4C5B89; }
|
||||
.textcontainer a:hover {
|
||||
color: #7E98E5; }
|
||||
.textcontainer .button-green {
|
||||
color: white;
|
||||
background-color: #1CB841; }
|
||||
.textcontainer .button-green:visited {
|
||||
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 table {
|
||||
background-color: #ffffff; }
|
||||
.textcontainer table .odd-row {
|
||||
background-color: #e4eef2; }
|
||||
.textcontainer .uploads-list {
|
||||
list-style: none; }
|
||||
.textcontainer .pure-form label {
|
||||
|
@ -94,3 +77,27 @@ body {
|
|||
.textcontainer .resetlink {
|
||||
font-size: 75%;
|
||||
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; }
|
||||
|
|
|
@ -100,24 +100,14 @@ body{
|
|||
}
|
||||
}
|
||||
|
||||
table {
|
||||
background-color: #ffffff;
|
||||
|
||||
.button-green {
|
||||
@include fixlinkcolor(#ffffff);
|
||||
background-color: #1CB841;
|
||||
|
||||
.odd-row {
|
||||
background-color: #e4eef2;
|
||||
}
|
||||
}
|
||||
|
||||
.button-red {
|
||||
@include fixlinkcolor(#ffffff);
|
||||
background-color: #ca3c3c;
|
||||
}
|
||||
|
||||
.button-lightblue {
|
||||
@include fixlinkcolor(#ffffff);
|
||||
background-color: #42B8DD;
|
||||
}
|
||||
|
||||
|
||||
.uploads-list {
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
<ul>
|
||||
<li><a href="{% url 'home' %}">Home</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 %}
|
||||
<li><a href="{% url 'user_update' user_id=user.pk %}">Account</a></li>
|
||||
<li><a href="{% url 'logout' %}">Logout</a></li>
|
||||
|
|
|
@ -35,8 +35,10 @@
|
|||
<li>Models uploaded by registred user stay online indefinitely</li>
|
||||
</ul>
|
||||
<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,
|
||||
e.g. the Latest Uploads sidebar.
|
||||
Whereas a public paste can be shown the Latest Uploads sidebar and
|
||||
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/>
|
||||
Also note that as an unregistered user your models will only stay online for a limited time span (up to one month maximum).<br/>
|
||||
|
|
Loading…
Reference in New Issue