Skip to content

Commit e19edfa

Browse files
Derechochulsupark
authored andcommitted
Keep track of fork history kylef-archive#18
1 parent 2e325a1 commit e19edfa

File tree

5 files changed

+92
-11
lines changed

5 files changed

+92
-11
lines changed

paste/forms.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,13 @@ class SnippetForm(forms.ModelForm):
5555
'rows': 15,
5656
'class': 'input-xxlarge'
5757
}))
58+
parent = forms.ModelChoiceField(widget=forms.widgets.HiddenInput(),
59+
queryset=Snippet.objects.all(),
60+
empty_label="(None)", required=False)
5861

5962
class Meta:
6063
model = Snippet
61-
fields = ('title', 'content', 'private')
64+
fields = ('title', 'content', 'private', 'parent',)
6265

6366
def save(self, *args, **kwargs):
6467
# Add expire datestamp
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# encoding: utf-8
2+
import datetime
3+
from south.db import db
4+
from south.v2 import SchemaMigration
5+
from django.db import models
6+
7+
class Migration(SchemaMigration):
8+
9+
def forwards(self, orm):
10+
11+
# Adding field 'Snippet.parent'
12+
db.add_column('paste_snippet', 'parent', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['paste.Snippet'], null=True, blank=True), keep_default=False)
13+
14+
15+
def backwards(self, orm):
16+
17+
# Deleting field 'Snippet.parent'
18+
db.delete_column('paste_snippet', 'parent_id')
19+
20+
21+
models = {
22+
'auth.group': {
23+
'Meta': {'object_name': 'Group'},
24+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
25+
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
26+
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
27+
},
28+
'auth.permission': {
29+
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
30+
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
31+
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
32+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
33+
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
34+
},
35+
'auth.user': {
36+
'Meta': {'object_name': 'User'},
37+
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2014, 2, 15, 0, 24, 9, 357823)'}),
38+
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
39+
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
40+
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
41+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
42+
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
43+
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
44+
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
45+
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime(2014, 2, 15, 0, 24, 9, 357747)'}),
46+
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
47+
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
48+
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
49+
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
50+
},
51+
'contenttypes.contenttype': {
52+
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
53+
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
54+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
55+
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
56+
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
57+
},
58+
'paste.snippet': {
59+
'Meta': {'object_name': 'Snippet'},
60+
'author': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'}),
61+
'content': ('django.db.models.fields.TextField', [], {}),
62+
'expires': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
63+
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
64+
'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['paste.Snippet']", 'null': 'True', 'blank': 'True'}),
65+
'private': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
66+
'published': ('django.db.models.fields.DateTimeField', [], {'blank': 'True'}),
67+
'slug': ('django.db.models.fields.CharField', [], {'max_length': '32', 'blank': 'True'}),
68+
'title': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
69+
}
70+
}
71+
72+
complete_apps = ['paste']

paste/models.py

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class Snippet(models.Model):
2626
private = models.BooleanField(default=True)
2727
published = models.DateTimeField(blank=True)
2828
expires = models.DateTimeField(blank=True, null=True)
29+
parent = models.ForeignKey('Snippet', blank=True, null=True)
2930

3031
objects = SnippetManager()
3132

paste/templates/paste/paste.html

+14-10
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,21 @@ <h2>New Snippet</h2>
1010
<form class="form-horizontal" action="/paste/" method="post">{% csrf_token %}
1111
<fieldset>
1212
{% for field in form %}
13-
<div class="control-group{% if field.errors %} error{% endif %}">
14-
<label for="{{ field.auto_id }}" class="control-label">
15-
{{ field.label|safe }}
16-
</label>
17-
<div class="controls">
18-
{{ field }}
19-
{% if field.help_text %}
20-
<p class="help-block">{{ field.help_text }}</p>
21-
{% endif %}
13+
{% if not field.is_hidden %}
14+
<div class="control-group{% if field.errors %} error{% endif %}">
15+
<label for="{{ field.auto_id }}" class="control-label">
16+
{{ field.label|safe }}
17+
</label>
18+
<div class="controls">
19+
{{ field }}
20+
{% if field.help_text %}
21+
<p class="help-block">{{ field.help_text }}</p>
22+
{% endif %}
23+
</div>
2224
</div>
23-
</div>
25+
{% else %}
26+
{{ field }}
27+
{% endif %}
2428
{% endfor %}
2529

2630
<div class="form-actions">

paste/views.py

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ def get_form(self, form_class):
100100
raise Http404('No snippet named {}'.format(slug))
101101

102102
form.fields['content'].initial = object.content
103+
form.fields['parent'].initial = object
103104

104105
lexer_name = get_lexer(self.request, ['fork'])
105106
if lexer_name:

0 commit comments

Comments
 (0)