public
Description: Sample paste bin Django application for the Pinax platform
Homepage: http://fernandoacorreia.wordpress.com/tag/pinax/
Clone URL: git://github.com/fernandoacorreia/oxybeles.git
oxybeles / forms.py
100644 51 lines (42 sloc) 1.839 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from django import forms
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
from oxybeles.models import PastedItem
 
try:
    from notification import models as notification
except ImportError:
    notification = None
 
class PastedItemForm(forms.ModelForm):
    class Meta():
        model = PastedItem
        fields = ('text',)
 
    def __init__(self, user = None, *args, **kwargs):
        self.user = user
        super(PastedItemForm, self).__init__(*args, **kwargs)
 
class SendItemForm(forms.Form):
    uuid = forms.CharField(max_length=36)
    recipient = forms.CharField(max_length=30)
 
    def __init__(self, sender = None, *args, **kwargs):
        super(SendItemForm, self).__init__(*args, **kwargs)
        self.sender = sender
 
    def clean_uuid(self):
        try:
            return PastedItem.objects.get(uuid=self.cleaned_data['uuid'])
        except PastedItem.DoesNotExist:
            raise forms.ValidationError(_("The pasted items was not found."))
 
    def clean_recipient(self):
        recipient = self.cleaned_data['recipient']
        try:
            return User.objects.get(username=recipient)
        except User.DoesNotExist:
            raise forms.ValidationError("There is no user named %s." % recipient)
 
    def save(self):
        self.pasted_item = self.cleaned_data['uuid']
        self.recipient_user = self.cleaned_data['recipient']
        if notification:
            notification.send([self.sender], "pasteditem_sent",
                              {'pasted_item': self.pasted_item,
                               'recipient': self.recipient_user,})
            notification.send([self.recipient_user], "pasteditem_received",
                              {'pasted_item': self.pasted_item,
                               'sender': self.sender,})