class ListCommentForm(IdeiaForm): content_id = forms.IntegerField(min_value=1, required=True) content_type = forms.CharField(required=True) page = forms.IntegerField(min_value=1, required=False) def __init__(self, itens_per_page=10, *args, **kwargs): self.itens_per_page = itens_per_page super(ListCommentForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(ListCommentForm, self).clean() cleaned_data['page'] = cleaned_data['page']\ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def is_valid(self): valid = super(ListCommentForm, self).is_valid() if 'content_type' in self.cleaned_data and self.cleaned_data[ 'content_type'] not in settings.ENTITY_TO_COMMENT: self.add_error( None, ValidationError( ('ContentType not found in comment contentType list.'), code='comment_content_type_not_found')) return valid def __process__(self): return Business.get_comments_by_content_type_and_id( self.cleaned_data['content_type'], self.cleaned_data['content_id'], self.itens_per_page, self.cleaned_data['page'])
class CoreSearchQuestionsForm(IdeiaForm): criteria = forms.CharField(required=False) deleted = forms.NullBooleanField(required=False) page = forms.IntegerField(required=False) def __init__(self, author=None, items_per_page=10, *args, **kwargs): self.items_per_page = items_per_page self.author = author super(CoreSearchQuestionsForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreSearchQuestionsForm, self).clean() cleaned_data['page'] = cleaned_data['page'] \ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_questions( self.author, self.cleaned_data.get('criteria'), self.cleaned_data.get('deleted'), self.items_per_page, self.cleaned_data.get('page', 1) )
class CoreCommunityFeedFormSearch(IdeiaForm): criterio = forms.CharField(required=False) page = forms.IntegerField(required=False) official = forms.BooleanField(required=False) def __init__(self, community_instance=None, content_types=None, itens_by_page=None, *args, **kwargs): self.community_instance=community_instance self.content_types = content_types self.itens_by_page = itens_by_page super(CoreCommunityFeedFormSearch, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreCommunityFeedFormSearch, self).clean() cleaned_data['page'] = cleaned_data['page']\ if 'page' in cleaned_data and cleaned_data['page'] else 1 cleaned_data['official'] = cleaned_data.get('official', False) return cleaned_data def __process__(self): return Business.get_feed_objects( self.community_instance, self.cleaned_data['criterio'], self.content_types, self.itens_by_page, self.cleaned_data['page'], self.cleaned_data.get('official') )
class CoreUserSearchForm(IdeiaForm): criterio = forms.CharField(required=False) page = forms.IntegerField(required=False) def __init__(self, profile_instance=None, content_types=None, itens_by_page=None, user=None, *args, **kwargs): self.profile_instance = profile_instance self.content_types = content_types self.itens_by_page = itens_by_page self.user = user super(CoreUserSearchForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreUserSearchForm, self).clean() cleaned_data['page'] = cleaned_data['page']\ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_feed_objects( self.profile_instance, self.cleaned_data['criterio'], self.content_types, self.itens_by_page, self.cleaned_data['page'], self.user )
class CoreCommunitySearchMaterialsForm(IdeiaForm): criteria = forms.CharField(required=False) page = forms.IntegerField(required=False) tags = forms.ModelChoiceField(queryset=Business.get_avaiable_tags(), required=False, empty_label=_("All")) def __init__(self, community=None, items_per_page=10, *args, **kwargs): self.community = community self.items_per_page = items_per_page super(CoreCommunitySearchMaterialsForm, self).__init__(*args, **kwargs) def get_avaiable_tags(self): return Business.get_avaiable_tags() def clean(self): cleaned_data = super(CoreCommunitySearchMaterialsForm, self).clean() cleaned_data['page'] = cleaned_data['page'] \ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_articles_with_tags( self.community, self.cleaned_data.get('criteria'), self.items_per_page, self.cleaned_data.get('page', 1), self.cleaned_data.get('tags') )
class CoreCommunityFollowersForm(IdeiaForm): community = forms.ModelChoiceField(queryset=Community.objects.all(), required=True) criteria = forms.CharField(required=False) state = forms.ModelChoiceField(queryset=State.objects.filter(country=1), required=False) city = forms.ModelChoiceField(queryset=City.objects.all(), required=False) page = forms.IntegerField(required=False) def __init__(self, startswith=False, items_per_page=None, *args, **kwargs): self.startswith = startswith self.items_per_page = items_per_page super(CoreCommunityFollowersForm, self).__init__(*args, **kwargs) if self.data and 'state' in self.data and self.data.get('state'): self.fields['city'].queryset = City.objects.filter(state=self.data['state']) def clean(self): cleaned_data = super(CoreCommunityFollowersForm, self).clean() cleaned_data['page'] = cleaned_data['page'] if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_followers( self.cleaned_data, self.items_per_page, self.cleaned_data.get('page'), self.startswith )
class CoreSearchFavouriteForm(IdeiaForm): criteria = forms.CharField(required=False) page = forms.IntegerField(required=False) def __init__(self, author, items_per_page, *args, **kwargs): self.author = author self.items_per_page = items_per_page super(CoreSearchFavouriteForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreSearchFavouriteForm, self).clean() cleaned_data['page'] = cleaned_data['page'] \ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return CoreBusinessSocialActions.get_favourite_content( self.author, self.cleaned_data.get('criteria'), self.items_per_page, self.cleaned_data.get('page', 1) )
class CoreCommunityFormSearch(IdeiaForm): criteria = forms.CharField(required=False) page = forms.IntegerField(required=False) taxonomies = forms.ModelMultipleChoiceField(queryset=Taxonomy.objects.all(), required=False) def __init__(self, items_per_page=None, *args, **kwargs): self.items_per_page = items_per_page super(CoreCommunityFormSearch, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreCommunityFormSearch, self).clean() cleaned_data['page'] = cleaned_data['page'] if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_communities( self.cleaned_data['taxonomies'], self.cleaned_data['criteria'], self.items_per_page, self.cleaned_data['page'] )
class CoreCommunitySearchVideosForm(IdeiaForm): criteria = forms.CharField(required=False) page = forms.IntegerField(required=False) def __init__(self, community=None, items_per_page=10, *args, **kwargs): self.community = community self.items_per_page = items_per_page super(CoreCommunitySearchVideosForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreCommunitySearchVideosForm, self).clean() cleaned_data['page'] = cleaned_data['page'] \ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_articles_with_videos( self.community, self.cleaned_data.get('criteria'), self.items_per_page, self.cleaned_data.get('page', 1) )
class CoreSearchCommunitiesForm(IdeiaForm): criteria = forms.CharField(required=False) __term = None try: __term = Term.objects.get(description__icontains='categoria') except: pass category = forms.ModelChoiceField(queryset=Taxonomy.objects.filter(term=__term), required=False) page = forms.IntegerField(required=False) def __init__(self, author, items_per_page, *args, **kwargs): self.author = author self.items_per_page = items_per_page super(CoreSearchCommunitiesForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreSearchCommunitiesForm, self).clean() cleaned_data['page'] = cleaned_data['page'] \ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return BusinessSocialActions.get_users_acted_by_author_with_parameters( author=self.author, action=settings.SOCIAL_FOLLOW, content_type='community', items_per_page=self.items_per_page, page=self.cleaned_data.get('page', 1), criteria=self.cleaned_data.get('criteria'), category=self.cleaned_data.get('category') )
class CoreSearchArticlesForm(IdeiaForm): criteria = forms.CharField(required=False) status = forms.ChoiceField(required=False, choices=Article.STATUS_CHOICES) page = forms.IntegerField(required=False) def __init__(self, author=None, items_per_page=10, order=None, *args, **kwargs): self.items_per_page = items_per_page self.author = author self.order = order super(CoreSearchArticlesForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreSearchArticlesForm, self).clean() cleaned_data['page'] = cleaned_data['page'] \ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_feed_articles( self.author, self.cleaned_data.get('criteria'), self.cleaned_data.get('status'), self.items_per_page, self.cleaned_data.get('page', 1), )
class GeographyListForm(IdeiaForm): name = forms.CharField(required=False) page = forms.IntegerField(min_value=1, required=False) def __init__(self, itens_per_page=10, model=None, *args, **kwargs): self.itens_per_page = itens_per_page self.model = model super(GeographyListForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(GeographyListForm, self).clean() cleaned_data['page'] = cleaned_data['page']\ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return get_geography( self.model, self.cleaned_data['name'], self.itens_per_page, self.cleaned_data['page'] )
class ComplaintForm(IdeiaForm): description = forms.CharField(max_length=512, required=False) complaint_type = forms.ModelChoiceField(queryset=Business.get_type_complaint(), required=True) content_type = forms.CharField(max_length=20, required=True) object_id = forms.IntegerField(required=True) community_complaint = forms.ModelMultipleChoiceField(queryset=Community.objects.all(), required=False) def __init__(self, user=None, *args, **kwargs): super(ComplaintForm, self).__init__(*args, **kwargs) self.user = user def is_valid(self): valid = super(ComplaintForm, self).is_valid() try: entity_to_complaint = settings.ENTITY_TO_COMPLAINT except AttributeError: entity_to_complaint = False if not entity_to_complaint or self.cleaned_data['content_type'] not in entity_to_complaint: self.add_error(None, ValidationError(('Content Type is not specified.'), code='content_is_not_specified')) valid = False return valid def __process__(self): return Business.create_complaint(parameters=self.cleaned_data, user=self.user)
class CreateCommentForm(IdeiaForm): content = forms.CharField( max_length=settings.COMMENT_TEXT_LIMIT if hasattr( settings, "COMMENT_TEXT_LIMIT") else 10000, required=True, widget=SummernoteWidget(editor_conf='comment', load_init=False)) content_type = forms.CharField(max_length=20, required=True) content_object_id = forms.IntegerField(required=True) def __init__(self, user=None, *args, **kwargs): self.user = user super(CreateCommentForm, self).__init__(*args, **kwargs) def __process__(self): return Business.create_comment(self.user, self.cleaned_data) def clean(self): self.cleaned_data = super(CreateCommentForm, self).clean() if 'content' in self.cleaned_data: self.cleaned_data['content'] = self.cleaned_data['content'].strip() return self.cleaned_data def is_valid(self): valid = super(CreateCommentForm, self).is_valid() if not self.user or not self.user.is_authenticated: self.add_error( None, ValidationError(('User must be authenticated.'), code='is_not_authenticated')) valid = False if 'content' in self.cleaned_data and self.cleaned_data[ 'content'] == '': self.add_error( 'content', ValidationError( ('Is not possible to comment only with white spaces.'), code='white_spaces')) valid = False try: entity_to_comment = settings.ENTITY_TO_COMMENT except AttributeError: entity_to_comment = False if not entity_to_comment or self.cleaned_data[ 'content_type'] not in entity_to_comment: self.add_error( None, ValidationError(('Content Type is not specified.'), code='content_is_not_specified')) valid = False return valid
class ListArticleCommunityForm(IdeiaForm): category_id = forms.IntegerField(min_value=1, required=True) page = forms.IntegerField(min_value=1, required=False) def __init__(self, itens_per_page=10, *args, **kwargs): self.itens_per_page = itens_per_page super(ListArticleCommunityForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(ListArticleCommunityForm, self).clean() cleaned_data['page'] = cleaned_data['page']\ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return business.get_articles_communities_by_category( self.cleaned_data['category_id'], self.itens_per_page, self.cleaned_data['page'])
class SearchUserForm(SearchBaseForm): state = forms.IntegerField(required=False) city = forms.IntegerField(required=False) responsibility = forms.IntegerField(required=False) def __init__(self, items_per_page=None, startswith=False, *args, **kwargs): self.state = int(args[0]['state']) if "state" in args[0] and args[0]['state'] is not u'' else None self.city = int(args[0]['city']) if "city" in args[0] and args[0]['city'] is not u'' else None self.responsibility = int(args[0]['responsibility']) if "responsibility" in args[0] and args[0]['responsibility'] is not u'' else None self.items_per_page = items_per_page self.startswith = startswith super(SearchBaseForm, self).__init__(*args, **kwargs) def __process__(self): return Business.get_users( self.cleaned_data['q'], self.items_per_page, self.cleaned_data['page'], self.startswith, self.state, self.city, self.responsibility )
class ListAnswerForm(IdeiaForm): question_id = forms.IntegerField(min_value=1, required=True) page = forms.IntegerField(min_value=1, required=False) def __init__(self, question=None, itens_by_page=10, *args, **kwargs): self.question = question self.itens_by_page = itens_by_page super(ListAnswerForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(ListAnswerForm, self).clean() cleaned_data['page'] = cleaned_data['page']\ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_answers_by_question( question=self.question, items_per_page=self.itens_by_page, page=self.cleaned_data['page'] )
class SearchBaseForm(IdeiaForm): category = forms.CharField(required=False) q = forms.CharField(required=False) page = forms.IntegerField(required=False) def __init__(self, items_per_page=None, startswith=False, *args, **kwargs): self.items_per_page = items_per_page self.startswith = startswith super(SearchBaseForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(SearchBaseForm, self).clean() cleaned_data['page'] = cleaned_data['page'] if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data
class CoreSearchSocialActionsForm(IdeiaForm): criteria = forms.CharField(required=False) page = forms.IntegerField(required=False) def __init__(self, action, items_per_page, *args, **kwargs): self.action = action self.items_per_page = items_per_page self.author = None self.target_user = None super(CoreSearchSocialActionsForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreSearchSocialActionsForm, self).clean() cleaned_data['page'] = cleaned_data['page'] \ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def is_valid(self): is_valid = super(CoreSearchSocialActionsForm, self).is_valid() action_allowed = [settings.SOCIAL_SUGGEST, settings.SOCIAL_FAVOURITE, settings.SOCIAL_SEE_LATER] if self.action not in action_allowed: is_valid = False return is_valid def set_author(self, author): self.author = author def set_target_user(self, user): self.target_user = user def __process__(self): return CoreBusinessSocialActions.get_content_by_action( self.cleaned_data.get('criteria'), self.action, self.items_per_page, self.cleaned_data.get('page', 1), self.author, self.target_user )
class NotificationForm(IdeiaForm): page = forms.IntegerField(min_value=1, required=False) def __init__(self, *args, **kwargs): self.notification_actions = None self.items_per_page = None self.user = None self.visualized = None self.read = None super(NotificationForm, self).__init__(*args, **kwargs) def set_items_per_page(self, n): self.items_per_page = n if n else 10 def set_to_user(self, user): self.user = user def set_notification_group(self, notification_group): self.notification_actions = notification_group def set_visualized(self, visualized): self.visualized = visualized def set_read(self, read): self.read = read def clean(self): cleaned_data = super(NotificationForm, self).clean() cleaned_data['page'] = cleaned_data[ 'page'] if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_notifications(self.user, self.notification_actions, self.visualized, self.read, self.items_per_page, self.cleaned_data.get('page', 1))
class CoreSearchFollowings(IdeiaForm): criteria = forms.CharField(required=False) page = forms.IntegerField(required=False) def __init__(self, author, items_per_page=None, *args, **kwargs): self.author = author self.items_per_page = items_per_page super(CoreSearchFollowings, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreSearchFollowings, self).clean() cleaned_data['page'] = cleaned_data['page'] if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return Business.get_followings( self.author, self.cleaned_data['criteria'], self.items_per_page, self.cleaned_data.get('page', 0) )
class CoreSearchFollowers(IdeiaForm): criteria = forms.CharField(required=False) page = forms.IntegerField(required=False) def __init__(self, author, items_per_page=None, *args, **kwargs): self.author = author self.items_per_page = items_per_page super(CoreSearchFollowers, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CoreSearchFollowers, self).clean() cleaned_data['page'] = cleaned_data['page'] if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def __process__(self): return self.author.followers_list( Q(author__first_name__icontains=self.cleaned_data['criteria']) | Q(author__last_name__icontains=self.cleaned_data['criteria']), self.items_per_page, self.cleaned_data['page'] )
class CourseListForm(IdeiaForm): CHOICES_TAXONOMY = Taxonomy.objects.filter(term__slug='categoria') CHOICES_ORDER_BY = (('', _('Default')), ('-updatein', _('Recent')), ('updatein', _('Oldest')), ('-rating', _('Better rating')), ('rating', _('Worst rating'))) title = forms.CharField(required=False, max_length=255) category = CategorylChoiceField(required=False, queryset=CHOICES_TAXONOMY, empty_label=_("Category"), to_field_name="slug") community = CommunityTaxonomylChoiceField(required=False, queryset=Taxonomy.objects.none(), to_field_name="slug", empty_label=_("Community")) order = forms.ChoiceField(required=False, choices=CHOICES_ORDER_BY) page = forms.IntegerField(min_value=1, required=False) @property def querystring(self): querystring_dict = {} for key in self.cleaned_data: querystring_dict[key] = unicode(self.cleaned_data[key] or '').encode('utf-8') taxonomy = self.cleaned_data.get("category", None) if taxonomy: querystring_dict['category'] = taxonomy.slug community = self.cleaned_data.get("community", None) if community: querystring_dict['community'] = community.slug return urlencode(querystring_dict) def __init__(self, itens_per_page=10, *args, **kwargs): self.itens_per_page = itens_per_page category = kwargs.get('data', {}).get('category', "") if category: self.declared_fields[ 'community'].queryset = Taxonomy.objects.filter( parent__slug=category, community_related__isnull=False) super(CourseListForm, self).__init__(*args, **kwargs) def clean(self): cleaned_data = super(CourseListForm, self).clean() cleaned_data['page'] = cleaned_data['page']\ if 'page' in cleaned_data and cleaned_data['page'] else 1 return cleaned_data def is_valid(self): valid = super(CourseListForm, self).is_valid() return valid def __process__(self): return course_business.get_courses(self.itens_per_page, **self.cleaned_data)
class WizardBase(IdeiaForm): step = forms.IntegerField(max_value=settings.WIZARD_STEPS_TOTAL)